INDEX ----- * Boot parameters (initramfs stage) * hooks/archiso * hooks/archiso_pxe_nbd * hooks/archiso_loop_mnt * Boot parameters (only for configs/releng) * etc/rc.conf * Build requirements * Image types generated by mkarchiso. * File format for aitab. * Why the /isolinux and /arch/boot/syslinux directories? * Building the most basic Arch Linux live media. (configs/baseline) * Building official Arch Linux live media. (configs/releng) *** Boot parameters (initramfs stage) ** hooks/archiso * archisolabel= Set the filesystem label where archiso files reside. Default: (unset) * archisodevice= Set the device node where archiso medium is located. Default: "/dev/disk/by-label/${archisolabel}" * archisobasedir= Set the base directory where all files reside. Default: "arch" * aitab= Set the path for "aitab" file. Default: ${archisobasedir}/aitab * copytoram= If set to "y" or just "copytoram" without arguments, all SquashFS are copied to "RAM". Default: (unset) * checksum= If set to "y" or just "checksum" without arguments, performs a self-test of all files inside ${install_dir}, and continue booting if ok. Default: (unset) * cow_label= Set the filesystem label where COW (dm-snapshot) files must be stored. Default: (unset) * cow_device= Set the device node where COW (dm-snapshot) files must be stored. Default: (unset) or "/dev/disk/by-label/${cow_label}" * cow_directory= Set a directory inside ${cow_device}. Default: "/persistent_${archisolabel}/${arch}" * cow_persistent= Set if snapshots are persistent "P" or non-persistent "N". Default: "N" (if no ${cow_device} is used) otherwise "P". * cowspace_size= Set the size of tmpfs /cowspace. This space is used for Copy-On-Write files of dm-snapshot. Size is in bytes (suffix with "k", "m" and "g") or in percentage of available RAM. Default: "75%" * copytoram_size= Set the size of tmpfs. This space is used for copy of all SquashFS images used, if copytoram=y. Size is in bytes (suffix with "k", "m" and "g") or in percentage of available RAM. Default: "75%" * dm_snap_prefix= Set a prefix for device-mapper snapshot node names. Default: "arch" * arch= Force an architecture type (i686 | x86_64). Do not set it for normal operations. Useful for running a 64 bit kernel / 32 bit userspace. Default: (architecture of running kernel) ** hooks/archiso_pxe_common * ip= This parameter is setup automatically by PXELINUX when option "IPAPPEND" is set to 1 or 2 in config. ip=::: Default: (set via PXE server) * BOOTIF= This parameter is setup automatically by PXELINUX when option "IPAPPEND" is set to 2 or 3 in config. BOOTIF= Default: (set via PXELINUX) ** hooks/archiso_pxe_nbd * archiso_nbd_name= Set NBD export name used by the server. Default: archiso * archiso_nbd_srv= Set an IP address where NBD reside. Default: "${pxeserver}" (The Image name without extension (.fs .fs.sfs .sfs). Mount point. Architecture { i686 | x86_64 | any }. SquashFS compression type { gzip | lzo | xz }. A special value of "none" denotes no usage of SquashFS. Set the filesystem type of the image { ext4 | ext3 | ext2 | xfs }. A special value of "none" denotes no usage of a filesystem. In that case all files are pushed directly to SquashFS filesystem. An absolute value of file system image size in MiB. (example: 100, 1000, 4096, etc) A relative value of file system free space [in percent]. {1%..99%} (example 50%, 10%, 7%). This is an estimation, and calculated in a simple way. Space used + 10% (estimated for metadata overhead) + desired % Note: Some combinations are invalid, example: sfs_comp=none and fs_type=none *** Why the /isolinux and /arch/boot/syslinux directories? The /isolinux directory holds files needed for the ISOLINUX boot loader module of SYSLINUX. ISOLINUX can not find config files on /arch/boot/syslinux, like other boot loaders modules (EXTLINUX, SYSLINUX, etc). When make your custom boot-pendrive, you need to copy /arch directory to it. /isolinux/isolinux.cfg just holds /arch/boot/syslinux/syslinux.cfg *** Building the most basic Arch Linux live media. (configs/baseline) * Install devtools if needed, mkarchroot needs it [host] # pacman -S devtools --needed * Create a base chroot to work on it. (prefix with linux32 if you want to build a 32 bits enviroment under 64 bits) [host] # mkarchroot /tmp/chroot base * Install archiso on chroot (needs git and make) [host] # pacman -S git make --needed [host] # git clone git://projects.archlinux.org/archiso.git [host] # make -C archiso/archiso DESTDIR=/tmp/chroot install * Enter to chroot (prefix with linux32 if needed). [host] # mkarchroot -r bash /tmp/chroot * Create a loopback device. (mkarchroot does not create it, use other number if not available) [chroot] # mknod /dev/loop0 b 7 0 * Setup a mirror. [chroot] # echo 'Server = MIRROR/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist * Install aditional packages needed for mkarchiso. [chroot] # pacman -S devtools squashfs-tools libisoburn * Build a basic iso. [chroot] # cp -r /usr/share/archiso/configs/baseline /tmp [chroot] # cd /tmp/baseline [chroot] # ./build.sh * Exit from chroot. [chroot] # exit Note: If you want to customize, just see the configs/releng directory which is used to build official images with much more things. *** Building official Arch Linux live media. (configs/releng) Note: These steps should be done with 64 bits support. * Prepare a 32 bit chroot enviroment. [host64] # linux32 mkarchroot /tmp/chroot32 base [host64] # linux32 mkarchroot -r bash /tmp/chroot32 [chroot32] # echo 'Server = MIRROR/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist [chroot32] # pacman -S devtools squashfs-tools libisoburn [chroot32] # exit * Prepare a 64 bits chroot enviroment. [host64] # mkarchroot /tmp/chroot64 base [host64] # mkarchroot -r bash /tmp/chroot64 [chroot64] # echo 'Server = MIRROR/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist [chroot64] # pacman -S devtools squashfs-tools libisoburn [chroot64] # exit * Install archiso on both chroots. [host64] # git clone git://projects.archlinux.org/archiso.git [host64] # make -C archiso/archiso DESTDIR=/tmp/chroot32 install [host64] # make -C archiso/archiso DESTDIR=/tmp/chroot64 install * Create a shared /tmp directory between two chroots for working. [host64] # mkdir /tmp/shared [host64] # chmod 1777 /tmp/shared [host64] # mount --bind /tmp/shared /tmp/chroot32/tmp [host64] # mount --bind /tmp/shared /tmp/chroot64/tmp * Enter 32 bits chroot enviroment then build core and netinstall single images. [chroot32] # linux32 mkarchroot -r bash /tmp/chroot32 [chroot32] # mknod /dev/loop1032 b 7 1032 # assumed loop.max_part=0 (by default) [chroot32] # cp -r /usr/share/archiso/configs/releng /tmp [chroot32] # cd /tmp/releng [chroot32] # ./build.sh build single all [chroot32] # ./build.sh purge single # optional step * Enter 64 bits chroot enviroment then build core and netinstall single images. [chroot64] # mkarchroot -r bash /tmp/chroot64 [chroot64] # mknod /dev/loop1064 b 7 1064 # assumed loop.max_part=0 (by default) [chroot64] # cp -r /usr/share/archiso/configs/releng /tmp [chroot64] # cd /tmp/releng [chroot64] # ./build.sh build single all [chroot64] # ./build.sh purge single # optional step * Build core and netinstall dual images from any of the chroot enviroments. [host64] # mkarchroot -r bash /tmp/chroot64 [chroot64] # cd /tmp/releng [chroot64] # ./build.sh build dual all [chroot64] # ./build.sh purge dual # optional step