From 3092746bfef4d38d1c6358c1420b767313599187 Mon Sep 17 00:00:00 2001 From: Gerardo Exequiel Pozzi Date: Wed, 25 Apr 2012 00:55:27 -0300 Subject: [archiso] README: add: alternative boot methods Signed-off-by: Gerardo Exequiel Pozzi --- README | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/README b/README index 5f1d253..07bc019 100644 --- a/README +++ b/README @@ -16,6 +16,13 @@ INDEX * PC-BIOS (MBR) * PC-BIOS (ISOHYBRID-MBR) * PC-EFI (GPT) [x86_64 only] +* Alternative boot methods (configs/releng) + * ISO in loopback mode + * ISO in memdisk mode + * Network booting (PXE) [first stage] + * DHCP + TFTP + * DHCP + HTTP + * HTTP/NFS/NBD [second stage] * Build requirements * Image types generated by mkarchiso. * File format for aitab. @@ -273,6 +280,113 @@ Note: Using here a GPT partition mode as example, but MBR should also works +*** Alternative boot methods (configs/releng) + +** ISO in loopback mode. + +Note: Described method is for using with GRUB2. + GRUB2 is installed on target media and archlinux-..
--.iso + is at path on disk and partition

, + where filesystem is labeled as . + +menuentry "Arch Linux (x86_64)" { + set isofile="//archlinux-..

--.iso" + loopback loop (hd,

)$isofile + linux (loop)/arch/boot/x86_64/vmlinuz archisolabel= img_label= img_loop=$isofile + initrd (loop)/arch/boot/x86_64/archiso.img +} + +menuentry "Arch Linux (i686)" { + set isofile="//archlinux-..

--.iso" + loopback loop (hd,

)$isofile + linux (loop)/arch/boot/i686/vmlinuz archisolabel= img_label= img_loop=$isofile + initrd (loop)/arch/boot/i686/archiso.img +} + + +** ISO in memdisk mode. + +Note: Described method is for using with SYSLINUX. Anyway MEMDISK from SYSLINUX can work + with other bootloaders. + SYSLINUX is installed on target media and archlinux-..

--.iso + is at path . + On 32-bit systems, is needed to pass vmalloc=nnM to the kernel, where nn is the size + of the ISO image plus 64 MiB (or 128 MiB). + + +LABEL arch_x64 + LINUX memdisk + INITRD //archlinux-..
--.iso + APPEND iso + +LABEL arch_x32 + LINUX memdisk + INITRD //archlinux-..
--.iso + APPEND iso + + +** Network booting (PXE). + +All ISOs are ready to act as PXE server, some manual steps are needed +to setup the desired PXE boot mode. +Alternatively it is possible to use an existing PXE server following the same logic. +Note: Setup network first, adjust IP adresses, and respect all slashes "/". + +First stage is for loading kernel and initramfs via PXE, two methods described here: + +* DHCP + TFTP + +Note: All NIC firmwares should support this. + +# dnsmasq --port=0 \ + --enable-tftp \ + --tftp-root=/run/archiso/bootmnt \ + --dhcp-range=192.168.0.2,192.168.0.254,86400 \ + --dhcp-boot=/arch/boot/syslinux/gpxelinux.0 \ + --dhcp-option-force=209,boot/syslinux/archiso.cfg \ + --dhcp-option-force=210,/arch/ + +* DHCP + HTTP + +Note: Not all NIC firmware supports HTTP and DNS (if domain name is used). + At least this works with iPXE and gPXE. + +# dnsmasq --port=0 \ + --dhcp-range=192.168.0.2,192.168.0.254,86400 \ + --dhcp-boot=http://192.168.0.7/arch/boot/syslinux/gpxelinux.0 \ + --dhcp-option-force=209,boot/syslinux/archiso.cfg \ + --dhcp-option-force=210,http://192.168.0.7/arch/ + + +Once the kernel is started from PXE, SquashFS files and other misc files +inside "arch" directory must be loaded (second stage). One of the following +methods can be used to serve the rest of live-medium. + +* HTTP + +# darkhttpd /run/archiso/bootmnt + + +* NFS + +# echo "/run/archiso/bootmnt 192.168.0.*(ro,no_subtree_check,no_root_squash)" >> /etc/exports +# rc.d start rpcbind nfs-common nfs-server + + +* NBD + +Note: Adjust ARCH_201204 as needed. + +# cat << EOF > /tmp/nbd-server.conf +[generic] +[archiso] + readonly = true + exportname = /dev/disk/by-label/ARCH_201204 +EOF +# nbd-server -C /tmp/nbd-server.conf + + + *** Build requirements ** For mkarchiso script needs these packages (build host): -- cgit v1.2.2