The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "User:Pnoecker/Undead USB Install/undead2live"
(update to gesis' known working bios+uefi grub-mkrescue command.) |
(remove genkernel next, move slim to lightdm since slim doesn't support unpassworded root login.) |
||
(25 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{warning|this is an experimental page without resolving conclusion. this is just exploration and experimentation with the goal of making live media. the grubiso drop in replacement for isolinux within this document is functional, and tested working.}} | |||
{{warning|at the time of writing this document lacks a working kernel initramfs, i am using [[Cd_remastering]] of gentoo minimal as a temporary work around. | |||
}} | |||
*on your host funtoo system emerge tools for cd mastering: | |||
{{console|body= | |||
###i## emerge cdrtools squashfs-tools isomaster libisoburn mtools | |||
}} | |||
{{note|catalyst uses virtual/cdrtools}} | |||
make an undead usb from a stage 3 containing networkmanager, xfce4, x11-xorg, fchroot, | make an undead usb from a stage 3 containing networkmanager, xfce4, x11-xorg, fchroot, lightdm, mtools, virtualbox guest additions, and set to auto login as root terminals. setup lightdm to boot root so the entire undead key does not have to have a password. tidy up the undead key delete the stage3 tarball, delete the sources directory. insert auto as root's file system in /etc/fstab so it will load in both ext2 & squashfs modes. partuuid survives the dd procedure so label by that. patch and rebuild your initramfs to support loading squashfs and rebuild your initramfs. change the sources version number to reflect your installation. | ||
{{console|body= | {{console|body= | ||
###i## sed '/MODULES_FS/ s/\"$/ isofs overlay squashfs\"/' -i /usr/share/genkernel/arch/$(arch)/modules_load | ###i## emerge livecd-tools && rc-update add autoconfig default | ||
###i## sed '/MODULES_FS/ s/\"$/ loop hfsplus isofs overlay squashfs\"/' -i /usr/share/genkernel/arch/$(arch)/modules_load | |||
###i## genkernel initramfs --clean --disklabel --ramdisk-modules --fullname=debian-sources-x86_64-5.10.28_p1 | ###i## genkernel initramfs --clean --disklabel --ramdisk-modules --fullname=debian-sources-x86_64-5.10.28_p1 | ||
}} | }} | ||
squashfs is read only and requires | ====automated grub setup==== | ||
*setup grub to pass the kernel parameters: | |||
{{file|name=/etc/default/grub|desc=bootlive|body= | |||
GRUB_CMDLINE_LINUX="dokeymap overlayfs cdroot quiet" | |||
}} | |||
squashfs is read only and requires a tmpfs or overlay filesystem to run properly. the overlay fstab statement is usually implemented from the overlay upper file system. | |||
{{console|body= | {{console|body= | ||
###i## echo "overlay / overlay rw 0 0" > /etc/fstab | ###i## echo "overlay / overlay rw 0 0" > /etc/fstab | ||
Line 16: | Line 33: | ||
or | or | ||
###i## echo 'tmpfs / tmpfs defaults 0 0' > /etc/fstab | ###i## echo 'tmpfs / tmpfs defaults 0 0' > /etc/fstab | ||
}} | }} | ||
Line 31: | Line 42: | ||
}} | }} | ||
edit /mnt/funtoo/etc/fstab | edit /mnt/funtoo/etc/fstab | ||
{{console|body= | {{console|body= | ||
Line 37: | Line 48: | ||
}} | }} | ||
* unmount before pushing squash image to be the new root: | |||
{{console|body= | |||
###i## umount -lr funtoo | |||
}} | |||
*copy the squash image to the cd root: | |||
{{console|body= | {{console|body= | ||
###i## | ###i## mkdir /mnt/funtoo/live | ||
###i## cp /mnt/filesystem.squashfs /mnt/funtoo/image.squashfs | |||
}} | }} | ||
Line 61: | Line 75: | ||
}} | }} | ||
evaluate autogenerated configuration: | |||
{{console|body= | {{console|body= | ||
###i## grub-mkconfig | |||
###i## grub-mkconfig | |||
}} | }} | ||
====basic grub==== | |||
*write basic grub config: | |||
{{file|name=/mnt/funtoo/boot/grub/grub.cfg|desc=basic grub configuration|body= | |||
if loadfont /boot/grub/font.pf2 ; then | |||
insmod all_video | |||
else | |||
set gfxmode=auto | |||
insmod efi_gop | |||
insmod efi_uga | |||
insmod gfxterm | |||
terminal_output gfxterm | |||
insmod ieee1275_fb | |||
insmod vbe | |||
insmod vga | |||
insmod video_bochs | |||
insmod video_cirrus | |||
fi | |||
menuentry "funtoo" { | |||
set gfxpayload=keep | |||
linux /boot/vmlinuz root=/dev/ram0 dokeymap init=/linuxrc overlayfs looptype=squashfs loop=/image.squashfs cdroot quiet -- | |||
initrd /boot/amd-uc.img /boot/early_ucode.cpio /boot/initramfs | |||
} | |||
}} | |||
*generate mbr/bios eltorito boot image: | |||
*make grubiso, the isolinux drop in replacement: | |||
{{console|body= | {{console|body= | ||
###i## grub-mkimage -p /boot -o tmp_core.img -O i386-pc biosdisk iso9660 multiboot normal ls cat help | ###i## grub-mkimage -p /boot -o tmp_core.img -O i386-pc biosdisk iso9660 multiboot normal ls cat help | ||
Line 75: | Line 113: | ||
}} | }} | ||
*make boot efi image. | |||
{{console|body= | |||
###i## grub-mkimage -o bootx64.efi -O x86_64-efi -p /boot/grub boot linux linux16 normal configfile part_gpt part_msdos fat iso9660 udf test keystatus loopback regexp probe efi_gop efi_uga all_video gfxterm font echo read help ls cat halt reboot | |||
}} | |||
*generate uefi eltorito alternate boot image: | |||
{{console|body= | |||
###i## dd if=/dev/zero of=EFI/BOOT/efiboot.img bs=512 count=2880 | |||
###i## mkfs.msdos -F 12 -n 'FUNTOO' EFI/BOOT/efiboot.img | |||
###i## mmd -i EFI/BOOT/efiboot.img ::EFI | |||
###i## mmd -i EFI/BOOT/efiboot.img ::EFI/BOOT | |||
###i## mcopy -i EFI/BOOT/efiboot.img EFI/BOOT/bootx64.efi ::EFI/BOOT/bootx64.efi | |||
###i## mv EFI/BOOT/efiboot.img uefi.img | |||
}} | |||
exit chroot | *exit chroot, remount without the /dev & sys so on directories so we can write the iso output: | ||
{{console|body= | {{console|body= | ||
###i## exit | ###i## exit | ||
###i## umount -lr funtoo | |||
###i## mount /dev/funtoo2 /mnt/funtoo | |||
###i## mount /dev/funtoo1 /mnt/funtoo/boot | |||
###i## cd /mnt/funtoo | ###i## cd /mnt/funtoo | ||
}} | }} | ||
Line 89: | Line 141: | ||
generate iso image, and make it hybrid mode so it can be read from both cd/dvd, and usb key. | generate iso image, and make it hybrid mode so it can be read from both cd/dvd, and usb key. | ||
{{console|body= | {{console|body= | ||
###i## xorrisofs -D -r -V " | ###i## xorrisofs -D -r -V "FUNTOO" -cache-inodes -J -l -b boot/grubiso.img -c boot/boot.cat -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/uefi.img -no-emul-boot -o ../custom.iso . | ||
###i## isohybrid --uefi ../custom.iso | ###i## isohybrid --uefi ../custom.iso | ||
}} | }} | ||
or use grubs framework to generate the ISO image. | ====or use grubs framework to generate the ISO image.==== | ||
{{console|body= | {{console|body= | ||
Line 101: | Line 153: | ||
== Testing == | == Testing == | ||
Test your iso booting in both bios and uefi mode in virtualbox, or qemu or vmware virtualization. Once you're satisfied that it works well under virtualization, burn it to a usb key using etcher and test booting on real hardware. | Test your iso booting in both bios and uefi mode in virtualbox, or qemu or vmware virtualization. Once you're satisfied that it works well under virtualization, burn it to a usb key using etcher and test booting on real hardware. | ||
== sources used == | |||
https://help.ubuntu.com/community/LiveCDCustomization#Assembling_the_file_system | |||
[https://wiki.osdev.org/UEFI#Creating_disk_images alternate boot image osdev guide] | |||
https://github.com/syzdek/efibootiso |
Latest revision as of 17:35, June 16, 2023
this is an experimental page without resolving conclusion. this is just exploration and experimentation with the goal of making live media. the grubiso drop in replacement for isolinux within this document is functional, and tested working.
at the time of writing this document lacks a working kernel initramfs, i am using Cd_remastering of gentoo minimal as a temporary work around.
- on your host funtoo system emerge tools for cd mastering:
root # emerge cdrtools squashfs-tools isomaster libisoburn mtools
catalyst uses virtual/cdrtools
make an undead usb from a stage 3 containing networkmanager, xfce4, x11-xorg, fchroot, lightdm, mtools, virtualbox guest additions, and set to auto login as root terminals. setup lightdm to boot root so the entire undead key does not have to have a password. tidy up the undead key delete the stage3 tarball, delete the sources directory. insert auto as root's file system in /etc/fstab so it will load in both ext2 & squashfs modes. partuuid survives the dd procedure so label by that. patch and rebuild your initramfs to support loading squashfs and rebuild your initramfs. change the sources version number to reflect your installation.
root # emerge livecd-tools && rc-update add autoconfig default root # sed '/MODULES_FS/ s/\"$/ loop hfsplus isofs overlay squashfs\"/' -i /usr/share/genkernel/arch/$(arch)/modules_load root # genkernel initramfs --clean --disklabel --ramdisk-modules --fullname=debian-sources-x86_64-5.10.28_p1
automated grub setup
- setup grub to pass the kernel parameters:
/etc/default/grub
- bootliveGRUB_CMDLINE_LINUX="dokeymap overlayfs cdroot quiet"
squashfs is read only and requires a tmpfs or overlay filesystem to run properly. the overlay fstab statement is usually implemented from the overlay upper file system.
root # echo "overlay / overlay rw 0 0" > /etc/fstab root # echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> /etc/fstab or root # echo 'tmpfs / tmpfs defaults 0 0' > /etc/fstab
mount your undead usb key, but not dev sys or any of the other stuff because were going to package it with squashfs.
root # mount /dev/funtoo2 /mnt/funtoo root # mount /dev/funtoo1 /mnt/funtoo/boot
edit /mnt/funtoo/etc/fstab
root # mksquashfs /mnt/funtoo /mnt/filesystem.squashfs
- unmount before pushing squash image to be the new root:
root # umount -lr funtoo
- copy the squash image to the cd root:
root # mkdir /mnt/funtoo/live root # cp /mnt/filesystem.squashfs /mnt/funtoo/image.squashfs
root # mount /dev/funtoo2 /mnt/funtoo root # mount /dev/funtoo1 /mnt/funtoo/boot
chroot into the squashfs image to manipulate grub on the read write fat partition.
root # cd /mnt/funtoo mount -t proc none /mnt/funtoo/proc mount --rbind /sys /mnt/funtoo/sys mount --rbind /dev /mnt/funtoo/dev env -i HOME=/root TERM=$TERM $(which chroot) /mnt/funtoo bash -l
evaluate autogenerated configuration:
root # grub-mkconfig
basic grub
- write basic grub config:
/mnt/funtoo/boot/grub/grub.cfg
- basic grub configurationif loadfont /boot/grub/font.pf2 ; then
insmod all_video
else
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
menuentry "funtoo" {
set gfxpayload=keep
linux /boot/vmlinuz root=/dev/ram0 dokeymap init=/linuxrc overlayfs looptype=squashfs loop=/image.squashfs cdroot quiet --
initrd /boot/amd-uc.img /boot/early_ucode.cpio /boot/initramfs
}
- generate mbr/bios eltorito boot image:
- make grubiso, the isolinux drop in replacement:
root # grub-mkimage -p /boot -o tmp_core.img -O i386-pc biosdisk iso9660 multiboot normal ls cat help root # cat /usr/lib/grub/i386-pc/cdboot.img tmp_core.img > /boot/grubiso.img
- make boot efi image.
root # grub-mkimage -o bootx64.efi -O x86_64-efi -p /boot/grub boot linux linux16 normal configfile part_gpt part_msdos fat iso9660 udf test keystatus loopback regexp probe efi_gop efi_uga all_video gfxterm font echo read help ls cat halt reboot
- generate uefi eltorito alternate boot image:
root # dd if=/dev/zero of=EFI/BOOT/efiboot.img bs=512 count=2880 root # mkfs.msdos -F 12 -n 'FUNTOO' EFI/BOOT/efiboot.img root # mmd -i EFI/BOOT/efiboot.img ::EFI root # mmd -i EFI/BOOT/efiboot.img ::EFI/BOOT root # mcopy -i EFI/BOOT/efiboot.img EFI/BOOT/bootx64.efi ::EFI/BOOT/bootx64.efi root # mv EFI/BOOT/efiboot.img uefi.img
- exit chroot, remount without the /dev & sys so on directories so we can write the iso output:
root # exit root # umount -lr funtoo root # mount /dev/funtoo2 /mnt/funtoo root # mount /dev/funtoo1 /mnt/funtoo/boot root # cd /mnt/funtoo
generate iso image, and make it hybrid mode so it can be read from both cd/dvd, and usb key.
root # xorrisofs -D -r -V "FUNTOO" -cache-inodes -J -l -b boot/grubiso.img -c boot/boot.cat -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/uefi.img -no-emul-boot -o ../custom.iso . root # isohybrid --uefi ../custom.iso
or use grubs framework to generate the ISO image.
root # grub-mkrescue -J -R -V "${ISO_VOLUME}" -quiet -o ../output.iso .
Testing
Test your iso booting in both bios and uefi mode in virtualbox, or qemu or vmware virtualization. Once you're satisfied that it works well under virtualization, burn it to a usb key using etcher and test booting on real hardware.
sources used
https://help.ubuntu.com/community/LiveCDCustomization#Assembling_the_file_system alternate boot image osdev guide https://github.com/syzdek/efibootiso