about summary refs log tree commit diff stats
path: root/linux/reboot.html
diff options
context:
space:
mode:
Diffstat (limited to 'linux/reboot.html')
-rw-r--r--linux/reboot.html232
1 files changed, 232 insertions, 0 deletions
diff --git a/linux/reboot.html b/linux/reboot.html
new file mode 100644
index 0000000..1a4783b
--- /dev/null
+++ b/linux/reboot.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html dir="ltr" lang="en">
+    <head>
+        <meta charset='utf-8'>
+        <title>1.3. Boot</title>
+    </head>
+    <body>
+
+        <a href="index.html">Core OS Index</a>
+
+        <h1>1.3. Boot</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.3.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/machine-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.3.2. Dracut</h2>
+
+        <p>Install dracut;</p>
+
+        <pre>
+        # cd /usr/ports/machine-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.3.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.3.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="recover">1.3.4. Recover</h2>
+
+        <h3>Root password</h3>
+
+        <p>On grub boot menu press e to edit boot options, change;</p>
+
+        <pre>
+        linux   /vmlinuz-4.9.92-gnu root=UUID=3bab76f8-e714-45f1-8e30-04cc8a09c3d1 ro single
+        </pre>
+
+        <p>to;</p>
+
+        <pre>
+        linux   /vmlinuz-4.9.92-gnu root=UUID=3bab76f8-e714-45f1-8e30-04cc8a09c3d1 ro init=/bin/bash
+        </pre>
+
+        <p>Boot and mount;</p>
+
+        <pre>
+        # mount -a
+        # mount -o remount,rw /
+        # passwd root
+        # mount -o remount,ro /
+        # sync
+        </pre>
+
+        <p>Reboot computer using power / reset.</p>
+
+        <h2 id="checkup">1.3.5. 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 Tribu System Documentation.
+        Copyright (C) 2020
+        Tribu Team.
+        See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
+        for copying conditions.</p>
+    </body>
+</html>