Preparing to Boot KaarPux

After bootstrapping KaarPux as described in Bootstrapping KaarPux, now prepare KaarPux for booting.

GRUB setup

If you want the target system boot to be controlled by KaarPux you must set up GRUB.

Enter the chroot:

MNT=/mnt/kxmnt
cd ${MNT}/home/kaarpux/kaarpux
bootstrap/host_scripts/enter_chroot.sh

Now install GRUB on the target disk.

Warning

Be very careful here. If you specify the wrong partition, you may brick the host system.

If you are using legacy MBR partitioning:

DEV=/dev/sdb   # replace with the device name of your target disk
CFG=/boot/grub/grub.cfg

grub-install ${DEV}

If you are using GPT partitioning:

CFG=/boot/efi/EFI/kaarpux/grub/grub.cfg

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=kaarpux --boot-directory=/boot/efi/EFI/kaarpux/ --recheck

Finally, create the GRUB configuration, and verify that it is OK.

You may also edit the configuration file, but it will be overwritten next time grub-mkconfig is run.:

grub-mkconfig -o ${CFG}
cp ${CFG} ${CFG}.ORIG
vi ${CFG}

If you have an UEFI system, you need to register the new bootloader:

FDEV=/dev/sdb   # replace with the device name of your target disk
FPART=1      # replace with the partition number on your target disk

efibootmgr --create --gpt --disk ${FDEV} --part ${FPART} --write-signature --label "KaarPux" --loader "\\\\EFI\\\\kaarpux\\\\grubx86.efi"

Exit the chroot:

exit

Final preparations

Enter the chroot:

MNT=/mnt/kxmnt
cd ${MNT}/home/kaarpux/kaarpux
bootstrap/host_scripts/enter_chroot.sh

Setup passwords:

passwd root
passwd kaarpux

Change ownership:

chown -R kaarpux:kaarpux /home/kaarpux

Clean out /tmp:

rm -rf /tmp/*

Optionally, if you are short on diskspace:

rm -rf /home/kaarpux/kaarpux/bootstrap/build

or even:

rm -rf /home/kaarpux/kaarpux/bootstrap

Exit the chroot:

exit

Unmount virtual file systems:

bootstrap/host_scripts/umount_virtual_kernel_fs.sh
cd /
umount ${MNT}

Create a snapshot

If you want a “snapshot” of the system, create a tarball as described in Create a KaarPux tarball.

Make sure $MNT is mounted, but that the virtual file systems are not mounted. Use settings similar to the following:

MNT=/mnt/kxmnt
TARBALL=/somewhere/kaarpux-boot.tar.gz

Boot into the new system

That’s it! You should now be able to boot into the new system!

When you reboot, you should have a system which obtains it’s IP-address by DHCP, is protected by by iptables, and which allows remote login with ssh, as well as console login.