diff options
author | bill-auger <mr.j.spam.me@gmail.com> | 2017-09-25 02:58:07 -0400 |
---|---|---|
committer | bill-auger <mr.j.spam.me@gmail.com> | 2017-11-17 18:16:07 -0500 |
commit | 51e86db625adefad1541438b8226c1c8ab170745 (patch) | |
tree | a6d32bd99139b1f8ba6ea3d028fc37c76c0c7b51 | |
parent | cfb9207ead40dc9b12e37578fab2641f213b3640 (diff) |
allow in-tree build without parabolaiso package
-rw-r--r-- | .gitignore | 4 | ||||
-rwxr-xr-x | configs/profile/build.sh | 81 | ||||
-rwxr-xr-x | configs/profile/root-image/root/customize_root_image.sh | 3 | ||||
-rwxr-xr-x | parabolaiso/mkparabolaiso | 7 |
4 files changed, 60 insertions, 35 deletions
@@ -1,4 +1,4 @@ # mkparabolaiso output dirs -work/ -out/ +work +out diff --git a/configs/profile/build.sh b/configs/profile/build.sh index 89203a8..266f940 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -12,9 +12,12 @@ data_dir=/usr/share/parabolaiso/data arch=$(uname -m) verbose="" +efi_img_kbytes=40000 pacman_conf=${work_dir}/pacman.conf -script_path=$(readlink -f ${0%/*}) -initcpio_dir=${script_path}/../../parabolaiso/initcpio +releng_dir=$(readlink -f ${0%/*}) +initcpio_dir=${releng_dir}/../../parabolaiso/initcpio +[ "`which mkparabolaiso 2> /dev/null`" ] || export PATH=$PATH:"${releng_dir}/../../parabolaiso" + _usage () { @@ -50,7 +53,7 @@ run_once() { make_pacman_conf() { local _cache_dirs _cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) - sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${pacman_conf} + sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${releng_dir}/pacman.conf > ${pacman_conf} } # Base installation, plus needed packages (root-image) @@ -61,7 +64,7 @@ make_basefs() { # Additional packages (root-image) make_packages() { - setarch ${arch} mkparabolaiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages.{both,${arch}})" install + setarch ${arch} mkparabolaiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "$(grep -h -v ^# ${releng_dir}/packages.{both,${arch}})" install } # Copy mkinitcpio parabolaiso hooks and build initramfs (root-image) @@ -73,13 +76,13 @@ make_setup_mkinitcpio() { done cp ${initcpio_dir}/install/parabolaiso_kms ${work_dir}/${arch}/root-image/usr/lib/initcpio/install cp ${initcpio_dir}/hooks/parabolaiso_shutdown ${work_dir}/${arch}/root-image/usr/lib/initcpio - cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/root-image/etc/mkinitcpio-parabolaiso.conf + cp ${releng_dir}/mkinitcpio.conf ${work_dir}/${arch}/root-image/etc/mkinitcpio-parabolaiso.conf setarch ${arch} mkparabolaiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-parabolaiso.conf -k /boot/vmlinuz-linux-libre -g /boot/parabolaiso.img' run } # Customize installation (root-image) make_customize_root_image() { - cp -af ${script_path}/root-image ${work_dir}/${arch} + cp -af ${releng_dir}/root-image ${work_dir}/${arch} iso_version="${iso_version}" setarch ${arch} mkparabolaiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r '/root/customize_root_image.sh' run rm ${work_dir}/${arch}/root-image/root/customize_root_image.sh @@ -101,11 +104,11 @@ make_boot_extra() { # Prepare /${install_dir}/boot/syslinux make_syslinux() { mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux - for _cfg in ${script_path}/syslinux/*.cfg; do + for _cfg in ${releng_dir}/syslinux/*.cfg; do sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/} done - cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${releng_dir}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux @@ -117,7 +120,7 @@ make_syslinux() { # Prepare /isolinux make_isolinux() { mkdir -p ${work_dir}/iso/isolinux - sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg + sed "s|%INSTALL_DIR%|${install_dir}|g" ${releng_dir}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ @@ -129,13 +132,13 @@ make_efi() { cp ${work_dir}/x86_64/root-image/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/bootx64.efi mkdir -p ${work_dir}/iso/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/ + cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/ sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" \ - ${script_path}/efiboot/loader/entries/parabolaiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/parabolaiso-x86_64.conf + ${releng_dir}/efiboot/loader/entries/parabolaiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/parabolaiso-x86_64.conf # EFI Shell 2.0 for UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell ) cp ${data_dir}/Shell.efi ${work_dir}/iso/EFI/shellx64_v2.efi @@ -145,39 +148,55 @@ make_efi() { # Prepare efiboot.img::/EFI for "El Torito" EFI boot mode make_efiboot() { + # cleanup from previous runs + while mount | grep ${work_dir}/efiboot; do umount ${work_dir}/efiboot; sleep 1; done; + rm ${work_dir}/iso/EFI/parabolaiso/efiboot.img 2> /dev/null || true + + # create EFI image mkdir -p ${work_dir}/iso/EFI/parabolaiso - truncate -s 38M ${work_dir}/iso/EFI/parabolaiso/efiboot.img + truncate -s ${efi_img_kbytes}K ${work_dir}/iso/EFI/parabolaiso/efiboot.img mkfs.vfat -n PARABOLAISO_EFI ${work_dir}/iso/EFI/parabolaiso/efiboot.img mkdir -p ${work_dir}/efiboot + mkdir -p ${work_dir}/efiboot-staging mount ${work_dir}/iso/EFI/parabolaiso/efiboot.img ${work_dir}/efiboot - mkdir -p ${work_dir}/efiboot/EFI/parabolaiso - cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/parabolaiso/vmlinuz.efi - cp ${work_dir}/iso/${install_dir}/boot/x86_64/parabolaiso.img ${work_dir}/efiboot/EFI/parabolaiso/parabolaiso.img + mkdir -p ${work_dir}/efiboot-staging/EFI/parabolaiso + cp ${work_dir}/iso/${iso_dirname}/boot/x86_64/vmlinuz ${work_dir}/efiboot-staging/EFI/parabolaiso/vmlinuz.efi + cp ${work_dir}/iso/${iso_dirname}/boot/x86_64/parabolaiso.img ${work_dir}/efiboot-staging/EFI/parabolaiso/parabolaiso.img - mkdir -p ${work_dir}/efiboot/EFI/boot - cp ${work_dir}/x86_64/root-image/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi + mkdir -p ${work_dir}/efiboot-staging/EFI/boot + cp ${work_dir}/x86_64/root-image/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot-staging/EFI/boot/bootx64.efi - mkdir -p ${work_dir}/efiboot/loader/entries - cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ - cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/ - cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/ + mkdir -p ${work_dir}/efiboot-staging/loader/entries + cp ${releng_dir}/efiboot/loader/loader.conf ${work_dir}/efiboot-staging/loader/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ + cp ${releng_dir}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot-staging/loader/entries/ sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g" \ - ${script_path}/efiboot/loader/entries/parabolaiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/parabolaiso-x86_64.conf - - cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ - cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ - - umount ${work_dir}/efiboot + ${releng_dir}/efiboot/loader/entries/parabolaiso-x86_64-cd.conf > ${work_dir}/efiboot-staging/loader/entries/parabolaiso-x86_64.conf + + cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot-staging/EFI/ + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot-staging/EFI/ + + efi_kbytes=$(($(du -ks ${work_dir}/efiboot-staging | cut -f 1) + 32)) + if [[ ${efi_kbytes} -lt $((${efi_img_kbytes})) ]]; then + echo "Populating EFI image (${efi_kbytes}KB)" + cp -rT ${work_dir}/efiboot-staging ${work_dir}/efiboot + rm -rf ${work_dir}/efiboot-staging + umount ${work_dir}/efiboot + else + echo "Error: Not enough space on EFI image (${efi_img_kbytes}KB - need ${efi_kbytes}KB)" + umount ${work_dir}/efiboot + exit 1 + fi } # Copy aitab make_aitab() { mkdir -p ${work_dir}/iso/${install_dir} - cp ${script_path}/aitab ${work_dir}/iso/${install_dir}/aitab + cp ${releng_dir}/aitab ${work_dir}/iso/${install_dir}/aitab } # Build all filesystem images specified in aitab (.fs.sfs .sfs) @@ -222,6 +241,8 @@ while getopts 'N:V:L:D:w:o:vh' arg; do esac done + +chown -R 0:0 "${releng_dir}/root-image/" mkdir -p ${work_dir} run_once make_pacman_conf diff --git a/configs/profile/root-image/root/customize_root_image.sh b/configs/profile/root-image/root/customize_root_image.sh index 9c980f1..2c677a6 100755 --- a/configs/profile/root-image/root/customize_root_image.sh +++ b/configs/profile/root-image/root/customize_root_image.sh @@ -7,9 +7,10 @@ locale-gen ln -sf /usr/share/zoneinfo/UTC /etc/localtime -usermod -s /usr/bin/zsh root +usermod -s /usr/bin/zsh root 2> /dev/null cp -aT /etc/skel/ /root/ +[ -n "$(id parabola 2> /dev/null)" ] && userdel -r parabola 2> /dev/null useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh parabola chmod 750 /etc/sudoers.d diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso index 93e6995..fd6fae5 100755 --- a/parabolaiso/mkparabolaiso +++ b/parabolaiso/mkparabolaiso @@ -11,7 +11,7 @@ run_cmd="" quiet="y" pacman_conf="/etc/pacman.conf" export iso_label="PARA_$(date +%Y%m)" -iso_publisher="Parabola GNU/Linux-libre <https://parabolagnulinux.org>" +iso_publisher="Parabola GNU/Linux-libre <https://www.parabola.nu>" iso_application="Parabola GNU/Linux-libre Live/Rescue CD" install_dir="parabola" work_dir="work" @@ -328,8 +328,11 @@ _mkfs () { fi fi - _msg_info "Creating ${_fs_type} image of ${_fs_size} MiB..." + # cleanup from previous runs + while mount | grep "${_fs_img}"; do umount "${_fs_img}"; sleep 1; done; rm -f "${_fs_img}" + + _msg_info "Creating ${_fs_type} image of ${_fs_size} MiB..." truncate -s ${_fs_size}M "${_fs_img}" local _qflag="" if [[ ${quiet} == "y" ]]; then |