about summary refs log tree commit diff stats
path: root/core/reboot.html
blob: ea174a20e0f7284515500c3ad4192ec20bce988a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<!DOCTYPE html>
<html dir="ltr" lang="en">
    <head>
        <meta charset='utf-8'>
        <title>1.4. Prepare Reboot</title>
    </head>
    <body>

        <a href="index.html">Core OS Index</a>

        <h1>1.4. Prepare for Reboot</h1>

        <p>Follow this instructions with active chroot,
        first <a href="configure.html#chroot">mount partitions</a>
        and before chroot mount follow file systems;</p>

        <pre>
        $ sudo mount --bind /dev $CHROOT/dev
        $ sudo mount -vt devpts devpts $CHROOT/dev/pts
        $ sudo mount -vt tmpfs shm $CHROOT/dev/shm
        $ sudo mount -vt proc proc $CHROOT/proc
        $ sudo mount -vt sysfs sysfs $CHROOT/sys
        </pre>

        <p>Now you can chroot;</p>

        <pre>
        $ sudo chroot $CHROOT /usr/bin/env -i \
          HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
          PATH=/bin:/usr/bin:/sbin:/usr/sbin \
          /bin/bash --login
        </pre>

        <h2 id="linux">1.4.1. Kernel</h2>

        <p>Install <a href="ports/linux-gnu">linux-gnu</a> port,
        linux libre kernel is a true source based kernel that
        respects your freedoms. Read <a href="linux.html">linux kernel</a> 
        for more information.</p>

	<p>Default crux configuration can be obtained from iso,
	kernel port depend on <a href="reboot.html#dracut">dracut</a>, grub2
	and grub2-efi. You don't need them to build with pkgmk, to install
	boot related tools use prt-get;</p>

	<pre>
	$ prt-get depinst linux-gnu
	</pre>

        <p>If you don't have the port binary package build it;</p>

        <pre>
        # cd /usr/ports/c9-ports/linux-gnu
        # pkgmk -d
        </pre>

        <p>Install kernel;</p>

        <pre>
        # pkgadd /usr/ports/packages/linux-gnu#4.9.86-2.pkg.tar.gz
        </pre>

        <h2 id="dracut">1.4.2. Dracut</h2>

        <p>Install dracut;</p>

        <pre>
        # cd /usr/ports/c9-ports/dracut
        # pkgmk -d
        # pkgadd /usr/ports/packages/dracut#044-2.pkg.tar.gz
        </pre>

        <p>Review configuration file;</p>

        <pre>
        # PUT YOUR CONFIG IN separate files
        # in /etc/dracut.conf.d named "<name>.conf"

        # Equivalent to -H
        hostonly="no"

        # Mount / and /usr read-only by default.
        ro_mnt="no"

        # Equivalent to -m "module module module"
        dracutmodules+="dash kernel-modules rootfs-block udev-rules usrmount base fs-lib shutdown"

        # Equivalent to -a "module"
        add_dracutmodules+="caps debug"

        # Equivalent to -o "module"
        #omit_dracutmodules+="systemd systemd-bootchart systemd-networkd systemd-initrd"

        # SEE man dracut.conf(5) for options
        </pre>

        <p>Run dracut to create init ram filesystem for
        port linux-blob kernel;</p>

        <pre>
        # dracut --kver 4.9.86-gnu
        </pre>

        <h2 id="grub">1.4.3. Grub</h2>

        <p>Create grub file in /etc/default/grub with values;</p>

        <pre>
        GRUB_DISABLE_LINUX_UUID=false
        GRUB_ENABLE_LINUX_LABEL=false
        </pre>

        <p><a href="http://www.gnu.org/software/grub/manual/grub.html">Grub Manual</a>,
        install grub on MBR of disk sdb;</p>

        <pre>
        # grub-install /dev/sdb
        Installation finished. No error reported.
        </pre>

        <p>If you are installing on removable media;</p>

        <pre>
        # grub-install --removable /dev/sdb
        Installation finished. No error reported.
        </pre>

        <p>grub-mkconfig generates grub.cfg, it will try to discover
        available kernels and attempt to generate menu entries for
        them;</p>

        <pre>
        # grub-mkconfig -o /boot/grub/grub.cfg
        Generating grub.cfg ...
        Found linux image: /boot/vmlinuz-4.9.86-gnu
        Found initrd image: /boot/initramfs-4.9.86-gnu.img
        done
        #
        </pre>

        <p>Check /boot/grub/grub.cfg, if is wrong add menu to
        /etc/grub.d/40_custom, replace correct partition from grub-prob
        output and correct UUID from fstab or blkid</p>

        <pre>
        # grub-probe --target=hints_string /
        </pre>

        <h3>1.4.3.1. Rescue iso</h3>

        <p>Simple way to have "resque" system is to mount boot as read only,
        this assures that even as root nothing can be changed without remount.
        To have different system independent from host grub will have entry to
        boot small iso on /boot partition;</p>

        <p>Crux iso is not used because at the moment it fails to
        find "crux-media" during or after init.</p>

        <pre>
        $ wget http://ftp.nluug.nl/os/Linux/distr/tinycorelinux/7.x/x86/release/CorePlus-current.iso
        $ sudo mv CorePlus-current.iso /boot/tinycore.iso
        </pre>

        <p>Edit /etc/grub.d/40_custom</p>

        <pre>

        menuentry "Rescue" {
            load_video
            set gfxpayload=keep

            set isofile="/tinycore.iso"
            loopback loop $isofile
            linux (loop)/boot/vmlinuz64 loglevel=3 cde
            initrd (loop)/boot/corepure64.gz
        }
        </pre>

        <h2 id="checkup">1.4.4. Checkup</h2>

        <p>If you have qemu installed you can see if it boots, in this
        example sdb is usb external drive;</p>

        <pre>
        # qemu-system-x86_64 -kernel /boot/vmlinuz-linux -initrd /boot/initramfs-linux.img -append root=/dev/sdb /dev/sdb2
        </pre>

        <h3>Debug Grub</h3>

        <h3>Debug initram</h3>

        <pre>
        /usr/lib/dracut/skipcpio /boot/initramfs-4.9.86-gnu.img | gunzip -c | cpio -i -d
        36875 blocks
        </pre>

        <a href="index.html">Core OS Index</a>
        <p>This is part of the c9-doc Manual.
        Copyright (C) 2017
        c9 team.
        See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
        for copying conditions.</p>
    </body>
</html>