Go to file
Gerardo Exequiel Pozzi 85d243ff58 [archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit")
* Use device mapper + snapshot module, instead union layer filesystem.
  * A block-level approach vs vfs-level.
  * No more unofficial (Linux) things.
  * More memory is needed.
* Refactor mkarchiso.
* Refactor hooks/archiso.
* Fix install/archiso_pxe_nbd
  (due recent change in mkinitcpio-0.6.15 on checked_modules()/all_modules())
  [Thanks Dave for the improved workaround]
* New configs/releng to build official images.
  * Works with a Bash script instead of Makefile.
    (better control and easy to maintain)
* Remove configs/syslinux-iso.
* Remove archiso2dual script. Integrate functionality in configs/releng.
* New configs/baseline to build the most basic live medium or use as template.
* New README (draft). [Thanks Dieter for fixing english grammar]

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
2011-06-18 18:38:27 -03:00
archiso [archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit") 2011-06-18 18:38:27 -03:00
configs [archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit") 2011-06-18 18:38:27 -03:00
README [archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit") 2011-06-18 18:38:27 -03:00
README.old [archiso] Use dm-snapshot instead of aufs2 (A.K.A. "The Big Commit") 2011-06-18 18:38:27 -03:00
TODO Update TODO 2011-04-18 14:11:39 -03:00

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.

# <img>         <mnt>                 <arch>   <sfs_comp>  <fs_type>  <fs_size>

<img>      Image name without extension (.fs .fs.sfs .sfs).
<mnt>      Mount point.
<arch>     Architecture { i686 | x86_64 | any }.
<sfs_comp> SquashFS compression type { gzip | lzo | xz }.
           A special value of "none" denotes no usage of SquashFS.
<fs_type>  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.
<fs_size>  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