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> | 2019-10-19 12:11:28 -0400 |
commit | db32f78877cfa97e26b82e2bc2f5b66595e41646 (patch) | |
tree | a034552c33fbcc4f37d71912c5bd306a72b83327 | |
parent | 761f5b0f3178bad3bd8d245a5237a07cd9c02be5 (diff) |
allow in-tree build without parabolaiso package
-rw-r--r-- | .gitignore | 4 | ||||
-rwxr-xr-x | configs/profile/airootfs/root/customize_airootfs.sh | 3 | ||||
-rwxr-xr-x | configs/profile/build.sh | 81 | ||||
-rwxr-xr-x | parabolaiso/mkparabolaiso | 6 |
4 files changed, 59 insertions, 35 deletions
@@ -2,5 +2,5 @@ parabolaiso32-*.tar.gz* # mkparabolaiso output dirs -work/ -out/ +work +out diff --git a/configs/profile/airootfs/root/customize_airootfs.sh b/configs/profile/airootfs/root/customize_airootfs.sh index 505a571..900cc9b 100755 --- a/configs/profile/airootfs/root/customize_airootfs.sh +++ b/configs/profile/airootfs/root/customize_airootfs.sh @@ -7,10 +7,11 @@ 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/ chmod 700 /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 sed -i 's/#\(PermitRootLogin \).\+/\1yes/' /etc/ssh/sshd_config diff --git a/configs/profile/build.sh b/configs/profile/build.sh index 1145037..dc4fcd6 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -11,9 +11,12 @@ out_dir=out 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 () { @@ -49,7 +52,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) @@ -60,7 +63,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) @@ -72,13 +75,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 @@ -100,11 +103,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 @@ -116,7 +119,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/ @@ -128,13 +131,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 ) curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi @@ -144,39 +147,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) @@ -221,6 +240,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/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso index 20c0bb2..1e5a01e 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" @@ -164,6 +164,9 @@ _pacman () # Cleanup airootfs _cleanup () { + # Unmount in case of previous aborted run + _umount_airootfs + _msg_info "Cleaning up what we can on airootfs..." # Delete initcpio image(s) @@ -293,7 +296,6 @@ command_iso () { _show_config iso -<<<<<<< HEAD mkdir -p ${out_dir} _msg_info "Creating ISO image..." local _qflag="" |