From 36459f3acc217ff6a0b4ad1b6049d68a8da413e2 Mon Sep 17 00:00:00 2001 From: Gerardo Exequiel Pozzi Date: Sat, 28 Jun 2014 00:35:50 -0300 Subject: [PATCH] [archiso] Drop aitab support Always create one filesystem of a fixed size (32G), format (ext4) and know name "airootfs". Simplify logic a lot. --- archiso/initcpio/hooks/archiso | 29 ++------------- archiso/initcpio/hooks/archiso_pxe_http | 16 +-------- archiso/mkarchiso | 48 ++++++++----------------- configs/baseline/aitab | 2 -- configs/baseline/build.sh | 8 +---- configs/releng/aitab | 3 -- configs/releng/build.sh | 10 +----- docs/README.bootparams | 6 ---- docs/README.build | 47 +----------------------- 9 files changed, 21 insertions(+), 148 deletions(-) delete mode 100644 configs/baseline/aitab delete mode 100644 configs/releng/aitab diff --git a/archiso/initcpio/hooks/archiso b/archiso/initcpio/hooks/archiso index 66a6273..d6ca443 100644 --- a/archiso/initcpio/hooks/archiso +++ b/archiso/initcpio/hooks/archiso @@ -101,7 +101,7 @@ _verify_checksum() { } run_hook() { - [[ -z "${arch}" ]] && arch="$(uname -m)" + arch="$(uname -m)" [[ -z "${cowspace_size}" ]] && cowspace_size="75%" [[ -z "${copytoram_size}" ]] && copytoram_size="75%" [[ -z "${archisobasedir}" ]] && archisobasedir="arch" @@ -113,12 +113,6 @@ run_hook() { cowfile_size=${cowfile_size/%} fi - if [[ -z "${aitab}" ]]; then - aitab="/run/archiso/bootmnt/${archisobasedir}/aitab" - else - aitab="/run/archiso/bootmnt/${archisobasedir}/${aitab}" - fi - if [[ -n "${cow_label}" ]]; then cow_device="/dev/disk/by-label/${cow_label}" [[ -z "${cow_persistent}" ]] && cow_persistent="P" @@ -147,14 +141,6 @@ archiso_mount_handler() { fi fi - - if [[ ! -f "${aitab}" ]]; then - echo "ERROR: '${aitab}' file does not exist." - echo " Falling back to interactive prompt" - echo " You can try to fix the problem manually, log out when you are finished" - launch_interactive_shell - fi - if [[ "${checksum}" == "y" ]]; then if [[ -f "/run/archiso/bootmnt/${archisobasedir}/checksum.${arch}.md5" ]]; then msg -n ":: Self-test requested, please wait..." @@ -188,17 +174,8 @@ archiso_mount_handler() { fi mkdir -p "/run/archiso/cowspace/${cow_directory}" - local aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size - while read aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size; do - [[ "${aitab_img#\#}" != "${aitab_img}" ]] && continue - [[ "${aitab_arch}" != "any" && "${aitab_arch}" != "${arch}" ]] && continue - if [[ "${aitab_fs_type}" != "none" ]]; then - _mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${aitab_arch}/${aitab_img}.fs.sfs" "/run/archiso/sfs/${aitab_img}" - _mnt_fs "/run/archiso/sfs/${aitab_img}/${aitab_img}.fs" "${newroot}" "${aitab_mnt}" - else - _mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${aitab_arch}/${aitab_img}.sfs" "${newroot}${aitab_mnt}" - fi - done < "${aitab}" + _mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.fs.sfs" "/run/archiso/sfs/airootfs" + _mnt_fs "/run/archiso/sfs/airootfs/airootfs.fs" "${newroot}" "/" if [[ "${copytoram}" == "y" ]]; then umount /run/archiso/bootmnt diff --git a/archiso/initcpio/hooks/archiso_pxe_http b/archiso/initcpio/hooks/archiso_pxe_http index 32e8ab0..001b486 100644 --- a/archiso/initcpio/hooks/archiso_pxe_http +++ b/archiso/initcpio/hooks/archiso_pxe_http @@ -34,21 +34,7 @@ archiso_pxe_http_mount_handler () { mkdir -p "/run/archiso/httpspace" mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace" - local _aitab_url="${archiso_http_srv}${aitab#/run/archiso/bootmnt/}" - local _aitab_file="/run/archiso/httpspace/${aitab#/run/archiso/bootmnt/}" - - _curl_get "${_aitab_url}" "/" - - local aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size - while read aitab_img aitab_mnt aitab_arch aitab_sfs_comp aitab_fs_type aitab_fs_size; do - [[ "${aitab_img#\#}" != "${aitab_img}" ]] && continue - [[ "${aitab_arch}" != "any" && "${aitab_arch}" != "${arch}" ]] && continue - if [[ "${aitab_fs_type}" != "none" ]]; then - _curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.fs.sfs" "/${aitab_arch}" - else - _curl_get "${archiso_http_srv}${archisobasedir}/${aitab_arch}/${aitab_img}.sfs" "/${aitab_arch}" - fi - done < "${_aitab_file}" + _curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.fs.sfs" "/${arch}" if [[ "${checksum}" == "y" ]]; then _curl_get "${archiso_http_srv}${archisobasedir}/checksum.${arch}.md5" "/" diff --git a/archiso/mkarchiso b/archiso/mkarchiso index 115d5e0..8325608 100755 --- a/archiso/mkarchiso +++ b/archiso/mkarchiso @@ -304,11 +304,7 @@ command_checksum () { _msg_info "Creating checksum file for self-test (${_chk_arch})..." cd "${work_dir}/iso/${install_dir}" if [[ -d "${_chk_arch}" ]]; then - md5sum aitab > checksum.${_chk_arch}.md5 - find ${_chk_arch} -type f -print0 | xargs -0 md5sum >> checksum.${_chk_arch}.md5 - if [[ -d "any" ]]; then - find any -type f -print0 | xargs -0 md5sum >> checksum.${_chk_arch}.md5 - fi + find ${_chk_arch} -type f -print0 | xargs -0 md5sum > checksum.${_chk_arch}.md5 fi cd ${OLDPWD} _msg_info "Done!" @@ -375,39 +371,23 @@ command_iso () { fi } -# Parse aitab and create each filesystem specified on that, and push it in "iso" directory. +# create airootfs.fs.sfs filesystem, and push it in "iso" directory. command_prepare () { - if [[ ! -f "${work_dir}/iso/${install_dir}/aitab" ]]; then - _msg_error "The file '${work_dir}/iso/${install_dir}/aitab' does not exist." 1 - fi _show_config prepare _cleanup - local _aitab_img _aitab_mnt _aitab_arch _aitab_sfs_comp _aitab_fs_type _aitab_fs_size - while read _aitab_img _aitab_mnt _aitab_arch _aitab_sfs_comp _aitab_fs_type _aitab_fs_size ; do - if [[ ${_aitab_img} =~ ^# ]]; then - continue - fi - if [[ "${_aitab_arch}" != "any" && "${_aitab_arch}" != "${arch}" ]]; then - continue - fi - local _src="${work_dir}/${_aitab_img}" - local _dst="${work_dir}/iso/${install_dir}/${_aitab_arch}" - mkdir -p "${_dst}" - if [[ ${_aitab_fs_type} != "none" ]]; then - if _is_directory_changed "${_src}" "${_dst}/${_aitab_img}.fs.sfs"; then - _mkfs ${_aitab_img} - _mksfs ${_aitab_img}.fs - mv "${_src}.fs.sfs" "${_dst}" - rm "${_src}.fs" - fi - else - if _is_directory_changed "${_src}" "${_dst}/${_aitab_img}.sfs"; then - _mksfs ${_aitab_img} - mv "${work_dir}/${_aitab_img}.sfs" "${_dst}" - fi - fi - done < "${work_dir}/iso/${install_dir}/aitab" + + local _src="${work_dir}/airootfs" + local _dst="${work_dir}/iso/${install_dir}/${arch}" + + mkdir -p "${_dst}" + + if _is_directory_changed "${_src}" "${_dst}/airootfs.fs.sfs"; then + _mkfs airootfs + _mksfs airootfs.fs + mv "${_src}.fs.sfs" "${_dst}" + rm "${_src}.fs" + fi } # Install packages on airootfs. diff --git a/configs/baseline/aitab b/configs/baseline/aitab deleted file mode 100644 index 9134d60..0000000 --- a/configs/baseline/aitab +++ /dev/null @@ -1,2 +0,0 @@ -# -airootfs / %ARCH% gzip ext4 50% diff --git a/configs/baseline/build.sh b/configs/baseline/build.sh index 19bc0c4..46033cb 100755 --- a/configs/baseline/build.sh +++ b/configs/baseline/build.sh @@ -60,12 +60,7 @@ make_isolinux() { cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ } -# Process aitab -make_aitab() { - sed "s|%ARCH%|${arch}|g" ${script_path}/aitab > ${work_dir}/iso/${install_dir}/aitab -} - -# Build all filesystem images specified in aitab (.fs.sfs .sfs) +# Build airootfs filesystem image make_prepare() { mkarchiso -v -w "${work_dir}" -D "${install_dir}" prepare } @@ -81,6 +76,5 @@ run_once make_setup_mkinitcpio run_once make_boot run_once make_syslinux run_once make_isolinux -run_once make_aitab run_once make_prepare run_once make_iso diff --git a/configs/releng/aitab b/configs/releng/aitab deleted file mode 100644 index f9b482d..0000000 --- a/configs/releng/aitab +++ /dev/null @@ -1,3 +0,0 @@ -# -airootfs / i686 xz ext4 50% -airootfs / x86_64 xz ext4 50% diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 2438175..f0b6f42 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -182,13 +182,7 @@ make_efiboot() { umount ${work_dir}/efiboot } -# Copy aitab -make_aitab() { - mkdir -p ${work_dir}/iso/${install_dir} - cp ${script_path}/aitab ${work_dir}/iso/${install_dir}/aitab -} - -# Build all filesystem images specified in aitab (.fs.sfs .sfs) +# Build airootfs filesystem image make_prepare() { cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir} setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist @@ -253,8 +247,6 @@ run_once make_isolinux run_once make_efi run_once make_efiboot -run_once make_aitab - for arch in i686 x86_64; do run_once make_prepare done diff --git a/docs/README.bootparams b/docs/README.bootparams index 755cc0d..caee0c2 100644 --- a/docs/README.bootparams +++ b/docs/README.bootparams @@ -23,8 +23,6 @@ INDEX 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) @@ -59,10 +57,6 @@ INDEX 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 diff --git a/docs/README.build b/docs/README.build index 1f2d703..1c047ea 100644 --- a/docs/README.build +++ b/docs/README.build @@ -2,9 +2,6 @@ INDEX ----- * 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) @@ -39,52 +36,10 @@ INDEX + (none) -*** Image types generated by mkarchiso. - -* image-name.sfs SquashFS image with all files directly on it. - [read-only, no dm-snapshot is used] -* 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, btrfs), all files reside on it. - [read-write, via COW image with dm-snapshot] - - -*** 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 }. - Set the filesystem type of the image - { ext4 | ext3 | ext2 | xfs | btrfs }. - 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 % - - -*** 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 (SYSLINUX, PXELINUX). - - - *** Building the most basic Arch Linux live media. (configs/baseline) * Install needed packages. - # pacman -S git make arch-install-scripts squashfs-tools libisoburn rsync --needed + # pacman -S git make arch-install-scripts squashfs-tools libisoburn --needed * Install archiso. # git clone git://projects.archlinux.org/archiso.git