blob: fbf9cc1186e754f56aebbe1d9346c3b5cdf58497 (
plain) (
tree)
|
|
<!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 Hive System Documentation.
Copyright (C) 2018
Hive Team.
See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
for copying conditions.</p>
</body>
</html>
|