summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2017-09-25 02:58:07 -0400
committerbill-auger <mr.j.spam.me@gmail.com>2019-10-19 12:11:28 -0400
commitdb32f78877cfa97e26b82e2bc2f5b66595e41646 (patch)
treea034552c33fbcc4f37d71912c5bd306a72b83327
parent761f5b0f3178bad3bd8d245a5237a07cd9c02be5 (diff)
allow in-tree build without parabolaiso package
-rw-r--r--.gitignore4
-rwxr-xr-xconfigs/profile/airootfs/root/customize_airootfs.sh3
-rwxr-xr-xconfigs/profile/build.sh81
-rwxr-xr-xparabolaiso/mkparabolaiso6
4 files changed, 59 insertions, 35 deletions
diff --git a/.gitignore b/.gitignore
index 8cfe327..205a483 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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=""