d35d87f252
Currently, when booting loopmounted iso file, it is necessary to specify not only img_dev and img_loop (which should be sufficient), but also archisolabel or archisodevice. With this patch, archisodevice is directly populated with the correct loop device, and it is not necessary to specify the label when booting from loopmounted iso, which makes for leaner and cleaner grub.cfg.
126 lines
3.5 KiB
Plaintext
126 lines
3.5 KiB
Plaintext
INDEX
|
|
-----
|
|
|
|
* 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]
|
|
|
|
|
|
|
|
*** Alternative boot methods (configs/releng)
|
|
|
|
ISO images names consist of: archlinux-<YYYY>.<MM>.<DD>-dual.iso
|
|
|
|
Where:
|
|
<YYYY> Year
|
|
<MM> Month
|
|
<DD> Day
|
|
|
|
|
|
** ISO in loopback mode.
|
|
|
|
Note: Described method is for using with GRUB2.
|
|
GRUB2 is installed on target media and archlinux-<YYYY>.<MM>.<DD>-dual.iso
|
|
is at path <TARGET-PATH> on disk <D> and partition <P>,
|
|
where filesystem is labeled as <TARGET-FS-LABEL>.
|
|
|
|
menuentry "Arch Linux (x86_64)" {
|
|
set isofile="/<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso"
|
|
loopback loop (hd<D>,<P>)$isofile
|
|
linux (loop)/arch/boot/x86_64/vmlinuz img_label=<TARGET-FS-LABEL> img_loop=$isofile
|
|
initrd (loop)/arch/boot/x86_64/archiso.img
|
|
}
|
|
|
|
menuentry "Arch Linux (i686)" {
|
|
set isofile="/<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso"
|
|
loopback loop (hd<D>,<P>)$isofile
|
|
linux (loop)/arch/boot/i686/vmlinuz img_label=<TARGET-FS-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-<YYYY>.<MM>.<DD>-dual.iso
|
|
is at path <TARGET-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 /<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso
|
|
APPEND iso
|
|
|
|
LABEL arch_x32
|
|
LINUX memdisk
|
|
INITRD /<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.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/lpxelinux.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/lpxelinux.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
|
|
# systemctl start nfs-server.service
|
|
|
|
|
|
* NBD
|
|
|
|
Note: Adjust ARCH_201408 as needed.
|
|
|
|
# cat << EOF > /tmp/nbd-server.conf
|
|
[generic]
|
|
[archiso]
|
|
readonly = true
|
|
exportname = /dev/disk/by-label/ARCH_201408
|
|
EOF
|
|
# nbd-server -C /tmp/nbd-server.conf
|