INDEX ----- * 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) *** Image types generated by mkarchiso. * image-name.sfs SquashFS image with all files directly on it. * image-name.fs.sfs SquashFS with only one file inside (image-name.fs), which is an image of some type of filesystem (ext4, ext3, ext2, xfs), all files reside on it. * image-name.fs Like image-name.fs.sfs but without SquashFS. (For testing purposes only. The option copytoram for archiso hook does not have any effect on these images) *** File format for aitab. The aitab file holds information about the filesystems images that must be created by mkarchiso and mounted at initramfs stage from the archiso hook. It consists of some fields which define the behaviour of images. # 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) * First install devtools if needed, mkarchroot needs it. [host] # pacman -S devtools * Create a 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 * Enter it. (prefix with linux32 if needed). [host] # mkarchroot -r bash /tmp/chroot * Create a loopback device. (mkarchiso 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. (git is only needed to get a copy of archiso.git) [chroot] # pacman -S git squashfs-tools syslinux devtools cdrkit make * Install archiso. [chroot] # cd /tmp [chroot] # git clone git://projects.archlinux.org/archiso.git [chroot] # cd archiso/archiso [chroot] # make install-program * Build a basic iso. [chroot] # cd /tmp/archiso/configs/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. linux32 mkarchroot /tmp/chroot32 base linux32 mkarchroot -r bash /tmp/chroot32 echo 'Server = MIRROR/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist pacman -S squashfs-tools syslinux devtools cdrkit make mkinitcpio-nfs-utils nbd --noconfirm --needed exit * Prepare a 64 bits chroot enviroment. mkarchroot /tmp/chroot64 base mkarchroot -r bash /tmp/chroot64 echo 'Server = MIRROR/archlinux/$repo/os/$arch' >> /etc/pacman.d/mirrorlist pacman -S squashfs-tools syslinux devtools cdrkit make mkinitcpio-nfs-utils nbd --noconfirm --needed exit * Create a shared directory which archiso can access from both chroot enviroments. mkdir /tmp/shared cd /tmp/shared git clone git://github.com/djgera/archiso.git -b dm-snapshot cd mount --bind /tmp/shared /tmp/chroot32/tmp mount --bind /tmp/shared /tmp/chroot64/tmp * Enter 32 bits chroot enviroment, install mkarchiso, then build core and netinstall single images. linux32 mkarchroot -r bash /tmp/chroot32 mknod /dev/loop1032 b 7 1032 cd /tmp/archiso/archiso make install-program cd ../configs/releng/ ./build.sh all_iso_single * Enter 64 bits chroot enviroment, install mkarchiso, then build core and netinstall single images. mkarchroot -r bash /tmp/chroot64 mknod /dev/loop1064 b 7 1064 cd /tmp/archiso/archiso make install-program cd ../configs/releng/ ./build.sh all_iso_single * Finally build core and netinstall dual images from any of the chroot enviroments. (The final result is the same). mkarchroot -r bash /tmp/chroot64 cd /tmp/archiso/configs/releng/ ./build.sh all_iso_dual