[[!meta title="Bootless: barebones tutorial"]] This tutorial helps you to build a Grub USB stick to boot your operating systems. Create basic folder structure ----------------------------- mkdir -p /tmp/bootless/{grub,custom} ln -s . /tmp/bootless/boot wget https://git.fluxo.info/bootless/plain/templates/grub.cfg -O /tmp/bootless/grub/grub.cfg wget https://git.fluxo.info/bootless/plain/templates/custom.cfg -O /tmp/bootless/grub/custom.cfg Edit the config files --------------------- Please check and customize the downloaded configuration above. The defaults allows you to load into Grub and boot your OS using the grub shell. Example: Full Disk Encryption ----------------------------- Here is an example of a Full Disk Encryption with an entry loaded into `custom.cfg`: menuentry 'darkstar full disk encryption' { # Loads luks and lvm modules so you can access kernel # and initrd from inside your encrypted OS! insmod luks insmod lvm # This opens the encrypted volume /dev/mapper/darkstar-root # and sets it as the root in the grub shell. cryptomount lvm/darkstar-root set root=(crypto0) # This loads the kernel and initramfs echo "Loading ${volume}..." linux /boot/vmlinuz-3.16.0-4-amd64 root=/dev/mapper/root cryptopts=target=root,source=/dev/mapper/darkstar-root ro quiet echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.16.0-4-amd64 } Example: boot with images loaded into the USB stick --------------------------------------------------- You may also place custom images into the USB stick -- with the drawback to have to keep them up-to-date: cp -r /boot /tmp/bootless/custom/debian menuentry 'darkstar: preloaded images' { # This loads the kernel and initramfs using images preloaded into the USB stick. echo "Loading ${volume}..." linux /boot/custom/debian/vmlinuz-3.16.0-4-amd64 root=/dev/mapper/root cryptopts=target=root,source=/dev/mapper/darkstar-root ro quiet echo 'Loading initial ramdisk ...' initrd /boot/custom/debian/initrd.img-3.16.0-4-amd64 } Example: builtin bootless functions ----------------------------------- The supplied configuration provides two functions, `bootfde` and `bootimg` that simplify the two previous examples into: menuentry 'darkstar: full disk encryption' { bootfde darkstar-root } menuentry 'darkstar: preloaded images' { bootimg darkstar-root } Create a bootable image ----------------------- grub-mkrescue -o output.img /tmp/bootless Record the image into the USB stick ----------------------------------- *WARNING!* This will irrevocably replace the contents of your USB stick. Pay attention to get the right device. If your USB stick is attached to your computer and reachable through `/dev/sdb`, you just have to run sudo dd if=output.img of=/dev/sdb