README.build 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. INDEX
  2. -----
  3. * Build requirements
  4. * Image types generated by mkparabolaiso.
  5. * File format for aitab.
  6. * Why the /isolinux and /parabola/boot/syslinux directories?
  7. * Git branches and build configurations.
  8. * Building Parabola GNU/Linux-libre live media.
  9. *** Build requirements
  10. ** For mkparabolaiso script needs these packages (build host):
  11. + squashfs-tools for mksquashfs
  12. + libisoburn for xorriso
  13. + btrfs-progs for mkfs.btrfs (optional)
  14. ** For configs/releng build.sh needs theses packages (build host):
  15. + dosfstools for mkfs.vfat
  16. + lynx for fetching the latest installation guide
  17. ** For these hooks needs these packages (on target root-image)
  18. * parabolaiso
  19. + (none)
  20. * parabolaiso_loop_mnt
  21. + (none)
  22. * parabolaiso_pxe_common
  23. + mkinitcpio-nfs-utils for ipconfig
  24. * parabolaiso_pxe_nbd
  25. + nbd for nbd-client
  26. * parabolaiso_pxe_http
  27. + curl for curl
  28. * parabolaiso_pxe_nfs
  29. + mkinitcpio-nfs-utils for nfsmount
  30. * parabolaiso_shutdown
  31. + (none)
  32. *** Temporary filesystems generated by mkparabolaiso.
  33. TODO:
  34. * work/x86_64/root-image/
  35. => # x86_64 chroot install target
  36. * work/i686/root-image/
  37. => # i686 chroot install target
  38. * work/root-image/
  39. => # source for ./work/root-image.fs
  40. * work/root-image.fs
  41. => # source for root-image.fs.sfs
  42. * work/mnt/root-image/
  43. => # mountpoint of work/root-image.fs
  44. * work/iso/parabola/x86_64/root-image.fs.sfs or
  45. work/iso/parabola/x86_64/root-image.sfs
  46. => # filesystem for live x86_64 environment (see "Image types " section)
  47. * work/iso/parabola/i686/root-image.fs.sfs or
  48. work/iso/parabola/i686/root-image.sfs
  49. => # filesystem for live i686 environment (see "Image types " section)
  50. "
  51. [mkparabolaiso] INFO: Target './work/iso/parabola/i686/root-image.fs.sfs' does not exist, making it from './work/root-image'
  52. [mkparabolaiso] INFO: Mounting './work/root-image.fs' on './work/mnt/root-image'
  53. [mkparabolaiso] INFO: Copying './work/root-image/' to './work/mnt/root-image/'...
  54. [mkparabolaiso] INFO: Unmounting './work/mnt/root-image'
  55. [mkparabolaiso] INFO: Creating SquashFS image for './work/root-image.fs', This may take some time...
  56. Creating 4.0 filesystem on ./work/root-image.fs.sfs, block size 131072.
  57. "
  58. *** Image types generated by mkparabolaiso.
  59. * image-name.sfs SquashFS image with all files directly on it.
  60. [read-only, no dm-snapshot is used]
  61. * image-name.fs.sfs SquashFS with only one file inside (image-name.fs),
  62. which is an image of some type of filesystem
  63. (ext4, ext3, ext2, xfs, btrfs), all files reside on it.
  64. [read-write, via COW image with dm-snapshot]
  65. *** File format for aitab.
  66. The aitab file holds information about the filesystems images that must be
  67. created by mkparabolaiso and mounted at initramfs stage from the parabolaiso hook.
  68. It consists of some fields which define the behaviour of images.
  69. # <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
  70. <img> Image name without extension (.fs .fs.sfs .sfs).
  71. <mnt> Mount point.
  72. <arch> Architecture { i686 | x86_64 | any }.
  73. <sfs_comp> SquashFS compression type { gzip | lzo | xz }.
  74. <fs_type> Set the filesystem type of the image
  75. { ext4 | ext3 | ext2 | xfs | btrfs }.
  76. A special value of "none" denotes no usage of a filesystem.
  77. In that case all files are pushed directly to SquashFS filesystem.
  78. <fs_size> An absolute value of file system image size in MiB.
  79. (example: 100, 1000, 4096, etc)
  80. A relative value of file system free space [in percent].
  81. {1%..99%} (example 50%, 10%, 7%).
  82. This is an estimation, and calculated in a simple way.
  83. Space used + 10% (estimated for metadata overhead) + desired %
  84. *** Why the /isolinux and /parabola/boot/syslinux directories?
  85. The /isolinux directory holds files needed for the ISOLINUX boot loader
  86. module of SYSLINUX. ISOLINUX can not find config files on
  87. /parabola/boot/syslinux, like other boot loaders modules (SYSLINUX, PXELINUX).
  88. *** Git branches and build configurations.
  89. The parabolaiso git repo consists of several branches; only some of which are useful for building ISOs. Others exist only for merging with upstream. The build configurations on the 'master' branch are used to build the official release ISOs.
  90. ** Branches not intended for building ISOs.
  91. * helper/rebrand - Branch to aid rebranding. Branch master of archiso.git plus Parabola rebranding of filenames and file contents. It is used as an intermediate step to merge Archiso, to aid git detecting file renames.
  92. * rebrand/releng - Rebranding branch. helper/rebrand leaving only the directory of releng inside configs/, renamed to profile/. It is possible to create equivalent branches for other ISO variants.
  93. * rebrand/baseline - Rebranding branch. Same concept as rebrand/releng.
  94. * release - Contains snapshots of releases, with commits showing updates of each profile. It should be updated only by make dist.
  95. * release-branches - Snapshots of last commits (HEAD) of each specified profile branch. Same concept as the branch release. It should be updated only by make dist-branches. Using it is not strictly necessary. It does not exist in the public Parabola repository parabolaiso.git.
  96. ** Branches for building ISOs.
  97. * baseline - Profile branch "baseline". master is separated from baseline to its own branch. This is now different from Archiso, and enables merging the releng profile in other profiles that use releng as a base.
  98. * master - Profile branch a.k.a "releng". Branch rebrand/releng with Parabola customizations. The files outside configs/ which are common to all variants are packaged from this branch.
  99. ** Build configurations.
  100. * configs/profile - the Parabola standard CLI release ISO
  101. * configs/mate-systemd - the Parabola Mate-SystemD release ISO
  102. * configs/lxde-systemd - the Parabola LXDE-SystemD release ISO
  103. * configs/lxde-openrc - the Parabola LXDE-OpenRC release ISO
  104. * configs/talkingparabola - the TalkingParabola CLI release ISO
  105. * configs/talkingparabola-X11- the TalkingParabola Mate release ISO
  106. *** Building Parabola GNU/Linux-libre Live ISOs.
  107. * Install needed packages.
  108. # pacman -S squashfs-tools libisoburn rsync --needed # 'baseline' ISO
  109. # pacman -S squashfs-tools libisoburn dosfstools --needed # 'releng' derrived ISOs
  110. * Install parabolaiso via pacman to build the standard releases.
  111. # pacman -S parabolaiso
  112. # PARABOLAISO_CFG_DIR=/usr/share/parabolaiso/configs
  113. * Clone parabolaiso from git for development.
  114. # pacman -R parabolaiso
  115. # pacman -S parabolaiso-data git
  116. # git clone git://git.parabola.nu/packages/parabolaiso.git
  117. # PARABOLAISO_CFG_DIR=$PWD/parabolaiso/configs
  118. * Select build configuration.
  119. # ls $PARABOLAISO_CFG_DIR/
  120. # cd $PARABOLAISO_CFG_DIR/<SELECT_A_CONFIG_DIRECTORY>
  121. * Build one or more ISOs.
  122. # ./build.sh # dual-architecture
  123. # ./build.sh -T i686 # 32-bit x86 target
  124. # ./build.sh -T x86_64 # 64-bit x86 target
  125. # ./build.sh -T x86_64 -V "`date +%Y.%m.%d.%H.%M`-alpha" # development
  126. Note: See build.sh -h for more options.
  127. Note: This script needs to be run on an x86_64 ArchLinux derrivative
  128. Note: Specifying a single architecture with the -T option builds in half of the time
  129. and results in the ISO being about half of the size as the dual-architecture ISO.
  130. Note: If you need to delete the work directory, you may consider moving the packages
  131. from the chroot package caches to you local package cache to speed up the re-build.
  132. e.g. # mv ${work_dir}/*/isorepo/* /var/cache/pacman/pkg/