summaryrefslogtreecommitdiff
path: root/configs/lxde-openrc/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'configs/lxde-openrc/build.sh')
-rwxr-xr-xconfigs/lxde-openrc/build.sh141
1 files changed, 63 insertions, 78 deletions
diff --git a/configs/lxde-openrc/build.sh b/configs/lxde-openrc/build.sh
index 32f74ed..a25c000 100755
--- a/configs/lxde-openrc/build.sh
+++ b/configs/lxde-openrc/build.sh
@@ -7,7 +7,6 @@ iso_label="PARA_$(date +%Y%m)"
iso_publisher="Parabola GNU/Linux-libre <http://www.parabola.nu>"
iso_application="Parabola GNU/Linux-libre Live/Rescue CD"
iso_version=$(date +%Y.%m.%d)
-iso_title="Parabola GNU/Linux-libre - LXDE Desktop LiveCD"
install_dir=parabola
work_dir=work
out_dir=out
@@ -15,15 +14,7 @@ gpg_key=""
arch=$(uname -m)
verbose=""
-script_path=$(readlink -f "${0%/*}")
-
-# Init system. Options are:
-# - openrc
-# - sysvinit
-# - systemd
-#
-# sysvinit uses OpenRC as service manager
-init=openrc
+script_path="$( cd -P "$( dirname "$(readlink -f "$0")" )" && pwd )"
_usage ()
{
@@ -69,55 +60,45 @@ make_pacman_conf() {
"${script_path}/pacman.conf" > "${work_dir}/pacman.conf"
}
-# Base installation, plus needed packages (airootfs)
-make_basefs() {
- if [ -n "${verbose}" ]; then
- arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -i "${init}" init
- arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -i "${init}" \
- -p "haveged memtest86+ mkinitcpio-nfs-utils nbd zsh refind" install
- else
- arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -i "${init}" init
- arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -i "${init}" \
- -p "haveged memtest86+ mkinitcpio-nfs-utils nbd zsh refind" install
+# Prepare working directory and copy custom airootfs files (airootfs)
+make_custom_airootfs() {
+ local _airootfs="${work_dir}/${arch}/airootfs"
+ mkdir -p -- "${_airootfs}"
+
+ if [[ -d "${script_path}/airootfs" ]]; then
+ cp -af --no-preserve=ownership -- "${script_path}/airootfs/." "${_airootfs}"
+
+ [[ -e "${_airootfs}/etc/shadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/shadow"
+ [[ -e "${_airootfs}/etc/gshadow" ]] && chmod -f 0400 -- "${_airootfs}/etc/gshadow"
+
+ # Set up user home directories and permissions
+ if [[ -e "${_airootfs}/etc/passwd" ]]; then
+ while IFS=':' read -a passwd -r; do
+ [[ "${passwd[5]}" == '/' ]] && continue
+
+ if [[ -d "${_airootfs}${passwd[5]}" ]]; then
+ chown -hR -- "${passwd[2]}:${passwd[3]}" "${_airootfs}${passwd[5]}"
+ chmod -f 0750 -- "${_airootfs}${passwd[5]}"
+ else
+ install -d -m 0750 -o "${passwd[2]}" -g "${passwd[3]}" -- "${_airootfs}${passwd[5]}"
+ fi
+ done < "${_airootfs}/etc/passwd"
+ fi
fi
}
-# Additional packages (airootfs)
+# Packages (airootfs)
make_packages() {
- if [ -n "${verbose}" ]; then
- arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -p "$(grep -h -v '^#' "${script_path}"/packages.{both,"${arch}"}| sed ':a;N;$!ba;s/\n/ /g')" install
- else
- arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -p "$(grep -h -v '^#' "${script_path}"/packages.{both,"${arch}"}| sed ':a;N;$!ba;s/\n/ /g')" install
- fi
-}
-
-# Copy mkinitcpio parabolaiso hooks and build initramfs (airootfs)
-make_setup_mkinitcpio() {
- local _hook
- mkdir -p "${work_dir}/${arch}/airootfs/etc/initcpio/hooks"
- mkdir -p "${work_dir}/${arch}/airootfs/etc/initcpio/install"
- for _hook in parabolaiso parabolaiso_shutdown parabolaiso_pxe_common parabolaiso_pxe_nbd parabolaiso_pxe_http parabolaiso_pxe_nfs parabolaiso_loop_mnt; do
- cp "/usr/lib/initcpio/hooks/${_hook}" "${work_dir}/${arch}/airootfs/etc/initcpio/hooks"
- cp "/usr/lib/initcpio/install/${_hook}" "${work_dir}/${arch}/airootfs/etc/initcpio/install"
- done
- sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" "${work_dir}/${arch}/airootfs/etc/initcpio/install/parabolaiso_shutdown"
- cp /usr/lib/initcpio/install/parabolaiso_kms "${work_dir}/${arch}/airootfs/etc/initcpio/install"
- cp /usr/lib/initcpio/parabolaiso_shutdown "${work_dir}/${arch}/airootfs/etc/initcpio"
- cp "${script_path}/mkinitcpio.conf" "${work_dir}/${arch}/airootfs/etc/mkinitcpio-parabolaiso.conf"
if [[ "${gpg_key}" ]]; then
gpg --export "${gpg_key}" >"${work_dir}/gpgkey"
exec 17<>"${work_dir}/gpgkey"
fi
if [ -n "${verbose}" ]; then
- PARABOLAISO_GNUPG_FD="${gpg_key:+17}" arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" \
- -D "${install_dir}" \
- -r 'mkinitcpio -c /etc/mkinitcpio-parabolaiso.conf -k /boot/vmlinuz-linux-libre -g /boot/parabolaiso.img' run
+ PARABOLAISO_GNUPG_FD="${gpg_key:+17}" arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
+ -p "$(grep -h -v '^#' "${script_path}"/packages.{both,"${arch}"}| sed ':a;N;$!ba;s/\n/ /g')" install
else
- PARABOLAISO_GNUPG_FD="${gpg_key:+17}" arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" \
- -D "${install_dir}" \
- -r 'mkinitcpio -c /etc/mkinitcpio-parabolaiso.conf -k /boot/vmlinuz-linux-libre -g /boot/parabolaiso.img' run
+ PARABOLAISO_GNUPG_FD="${gpg_key:+17}" arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
+ -p "$(grep -h -v '^#' "${script_path}"/packages.{both,"${arch}"}| sed ':a;N;$!ba;s/\n/ /g')" install
fi
if [[ "${gpg_key}" ]]; then
exec 17<&-
@@ -126,35 +107,43 @@ make_setup_mkinitcpio() {
# Customize installation (airootfs)
make_customize_airootfs() {
- cp -af --no-preserve=ownership "${script_path}/airootfs" "${work_dir}/${arch}"
+ if [[ -e "${script_path}/airootfs/etc/passwd" ]]; then
+ while IFS=':' read -a passwd -r; do
+ [[ "${passwd[5]}" == '/' ]] && continue
+ cp -RdT --preserve=mode,timestamps,links -- "${work_dir}/${arch}/airootfs/etc/skel" "${work_dir}/${arch}/airootfs${passwd[5]}"
+ chown -hR -- "${passwd[2]}:${passwd[3]}" "${work_dir}/${arch}/airootfs${passwd[5]}"
- cp "${script_path}/pacman.conf" "${work_dir}/${arch}/airootfs/etc"
-
- lynx -dump -nolist 'https://wiki.parabola.nu/index.php/Installation_Guide?action=render' >> \
- "${work_dir}/${arch}/airootfs/root/install.txt"
+ done < "${script_path}/airootfs/etc/passwd"
+ fi
- if [ -n "${verbose}" ]; then
- arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -r '/root/customize_airootfs.sh' run
- else
- arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
- -r '/root/customize_airootfs.sh' run
+ if [[ -e "${work_dir}/${arch}/airootfs/root/customize_airootfs.sh" ]]; then
+ if [ -n "${verbose}" ]; then
+ arch="${arch}" mkparabolaiso -v -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
+ -r '/root/customize_airootfs.sh' run
+ else
+ arch="${arch}" mkparabolaiso -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" \
+ -r '/root/customize_airootfs.sh' run
+ fi
+ rm "${work_dir}/${arch}/airootfs/root/customize_airootfs.sh"
fi
- rm "${work_dir}/${arch}/airootfs/root/customize_airootfs.sh"
}
# Prepare kernel/initramfs ${install_dir}/boot/
make_boot() {
mkdir -p "${work_dir}/iso/${install_dir}/boot/${arch}"
- cp "${work_dir}/${arch}/airootfs/boot/parabolaiso.img" "${work_dir}/iso/${install_dir}/boot/${arch}/parabolaiso.img"
- cp "${work_dir}/${arch}/airootfs/boot/vmlinuz-linux-libre" "${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz"
+ cp "${work_dir}/${arch}/airootfs/boot/parabolaiso.img" "${work_dir}/iso/${install_dir}/boot/${arch}/"
+ cp "${work_dir}/${arch}/airootfs/boot/vmlinuz-linux-libre" "${work_dir}/iso/${install_dir}/boot/${arch}/"
}
# Add other aditional/extra files to ${install_dir}/boot/
make_boot_extra() {
- cp "${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin" "${work_dir}/iso/${install_dir}/boot/memtest"
- cp "${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt" \
- "${work_dir}/iso/${install_dir}/boot/memtest.COPYING"
+ if [[ -e "${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin" ]]; then
+ # rename for PXE: https://wiki.parabola.nu/Syslinux#Using_memtest
+ cp "${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin" "${work_dir}/iso/${install_dir}/boot/memtest"
+ mkdir -p "${work_dir}/iso/${install_dir}/boot/licenses/memtest86+/"
+ cp "${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt" \
+ "${work_dir}/iso/${install_dir}/boot/licenses/memtest86+/"
+ fi
}
# Prepare /${install_dir}/boot/syslinux
@@ -165,16 +154,13 @@ make_syslinux() {
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 "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/"*.c32 "${work_dir}/iso/${install_dir}/boot/syslinux"
- cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0" "${work_dir}/iso/${install_dir}/boot/syslinux"
- cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk" "${work_dir}/iso/${install_dir}/boot/syslinux"
+ cp "${script_path}/syslinux/splash.png" "${work_dir}/iso/${install_dir}/boot/syslinux/"
+ cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/"*.c32 "${work_dir}/iso/${install_dir}/boot/syslinux/"
+ cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0" "${work_dir}/iso/${install_dir}/boot/syslinux/"
+ cp "${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk" "${work_dir}/iso/${install_dir}/boot/syslinux/"
mkdir -p "${work_dir}/iso/${install_dir}/boot/syslinux/hdt"
gzip -c -9 "${work_dir}/${arch}/airootfs/usr/lib/modules/${_uname_r}/modules.alias" > \
"${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz"
-
- # inject edition title
- sed -i "s|_EDITION_TITLE_|${iso_title}|" ${work_dir}/iso/${install_dir}/boot/syslinux/parabolaiso_head.cfg
}
# Prepare /isolinux
@@ -202,7 +188,7 @@ make_efi() {
# edk2-shell based UEFI shell
# shellx64.efi is picked up automatically when on /
- cp /usr/share/edk2-shell/x64/Shell_Full.efi "${work_dir}/iso/shellx64.efi"
+ cp "${work_dir}/x86_64/airootfs/usr/share/edk2-shell/x64/Shell_Full.efi" "${work_dir}/iso/shellx64.efi"
}
# Prepare efiboot.img::/EFI for "El Torito" EFI boot mode
@@ -215,8 +201,8 @@ make_efiboot() {
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"
+ cp "${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz-linux-libre" "${work_dir}/efiboot/EFI/parabolaiso/"
+ cp "${work_dir}/iso/${install_dir}/boot/x86_64/parabolaiso.img" "${work_dir}/efiboot/EFI/parabolaiso/"
mkdir -p "${work_dir}/efiboot/EFI/boot/entries"
cp "${work_dir}/x86_64/airootfs/usr/share/refind/refind_x64.efi" \
@@ -288,15 +274,14 @@ done
mkdir -p "${work_dir}"
run_once make_pacman_conf
+run_once make_custom_airootfs
# Do all stuff for each airootfs
for arch in i686 x86_64; do
- run_once make_basefs
run_once make_packages
done
for arch in i686 x86_64; do
- run_once make_setup_mkinitcpio
run_once make_customize_airootfs
done