summaryrefslogtreecommitdiff
path: root/configs/profile
diff options
context:
space:
mode:
Diffstat (limited to 'configs/profile')
-rwxr-xr-xconfigs/profile/build.sh81
-rwxr-xr-xconfigs/profile/root-image/root/customize_root_image.sh3
2 files changed, 53 insertions, 31 deletions
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