From 9214ac771aab8722bdda9e3eb72521c5f53269f8 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Fri, 17 Nov 2017 12:11:20 -0500 Subject: refactor chroot customization script --- configs/profile/build.sh | 24 +++---- .../root/customize_root_image-constants.inc | 53 +++++++++++++++ .../root-image/root/customize_root_image-dev.sh | 2 + .../root-image/root/customize_root_image.sh | 78 +++++----------------- 4 files changed, 82 insertions(+), 75 deletions(-) create mode 100644 configs/profile/root-image/root/customize_root_image-constants.inc (limited to 'configs/profile') diff --git a/configs/profile/build.sh b/configs/profile/build.sh index 85cc5b5..08d8901 100755 --- a/configs/profile/build.sh +++ b/configs/profile/build.sh @@ -23,7 +23,6 @@ target='' verbose='' efi_img_kbytes=40000 pacman_conf=${work_dir}/pacman.conf -chroot_customization_script=/root/customize_root_image.sh # environment data_dir=/usr/share/parabolaiso/data @@ -169,17 +168,18 @@ make_customize_root_image() { cp -af ${releng_dir}/root-image ${work_dir}/${arch} echo "Customizing root image" - arch="${arch}" \ - iso_title="${iso_title}" \ - iso_init="${iso_init}" \ - iso_gui="${iso_gui}" \ - enable_offline_install="${enable_offline_install}" \ - setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} \ - -C ${pacman_conf} \ - -D ${iso_dirname} \ - ${offline} \ - -r ${chroot_customization_script} run - rm ${work_dir}/${arch}/root-image${chroot_customization_script} + arch="${arch}" \ + iso_title="${iso_title}" \ + iso_init="${iso_init}" \ + iso_gui="${iso_gui}" \ + enable_offline_install="${enable_offline_install}" \ + setarch ${arch} mkparabolaiso ${verbose} -w ${work_dir}/${arch} \ + -C ${pacman_conf} \ + -D ${iso_dirname} \ + ${offline} \ + -r /root/customize_root_image.sh \ + run + rm ${work_dir}/${arch}/root-image/root/customize_root_image* } # Prepare kernel/initramfs ${iso_dirname}/boot/ diff --git a/configs/profile/root-image/root/customize_root_image-constants.inc b/configs/profile/root-image/root/customize_root_image-constants.inc new file mode 100644 index 0000000..e2d3fc1 --- /dev/null +++ b/configs/profile/root-image/root/customize_root_image-constants.inc @@ -0,0 +1,53 @@ +readonly LOCALES="en_US\.UTF-8 \ + eo \ + es_ES\.UTF-8 \ + fr_FR\.UTF-8 \ + gl_ES\.UTF-8 \ + it_IT\.UTF-8 \ + pt_BR\.UTF-8 \ + pl_PL\.UTF-8 " +readonly REPOS='libre core extra community pcr' +readonly SYSTEMD_DELETE_FILES="/etc/conf.d/agetty.tty1 \ + /etc/conf.d/hostname \ + /etc/init.d/pacman-init \ + /etc/X11/Xwrapper.config" +readonly OPENRC_DELETE_FILES="/etc/hostname \ + /etc/systemd/scripts/choose-mirror \ + /etc/systemd/system/choose-mirror.service \ + /etc/systemd/system/etc-pacman.d-gnupg.mount \ + /etc/systemd/system/getty@tty1.service.d/autologin.conf \ + /etc/systemd/system/pacman-init.service " +readonly SYSTEMD_SERVICES_ALL="choose-mirror.service \ + multi-user.target \ + pacman-init.service " +readonly SYSTEMD_SERVICES_GUI="NetworkManager.service" +readonly OPENRC_SERVICES_ALL="dbus \ + haveged \ + NetworkManager \ + pacman-init " +readonly OPENRC_SERVICES_GUI="alsasound \ + elogind " +[[ "${iso_gui}" == 'cli' ]] && readonly OPENRC_SERVICES="${OPENRC_SERVICES_ALL}" || + readonly OPENRC_SERVICES="${OPENRC_SERVICES_ALL} ${OPENRC_SERVICES_GUI}" +[[ "${iso_gui}" == 'cli' ]] && readonly SYSTEMD_SERVICES="${SYSTEMD_SERVICES_ALL}" || + readonly SYSTEMD_SERVICES="${SYSTEMD_SERVICES_ALL} ${SYSTEMD_SERVICES_GUI}" +readonly DEFAULT_SHELL=/bin/bash +readonly NETINSTALL_MSG="To install Parabola, the system must be connected to the internet." +readonly COMPLETE_MSG="This ISO is capable of installing a complete Parabola system\n\ +>>>>without a connection to the internet. If you would like to fetch\n\ +>>>>the latest packages from the internet, run the following command\n\ +>>>>before beginning the install:\n\ + # cp /etc/pacman-online.conf /etc/pacman.conf" +[ "${enable_offline_install}" == 'false' ] && readonly NETWORK_MOTD_MSG=${NETINSTALL_MSG} || \ + readonly NETWORK_MOTD_MSG=${COMPLETE_MSG} +readonly ROOT_SKEL_FILES="/etc/skel/.automated_script.sh \ + /etc/skel/.bash_logout \ + /etc/skel/.bash_profile " +readonly LIVE_USER=parabola +readonly LIVE_USER_GROUPS="adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" +readonly OPENRC_USER_GROUPS="disk,sys" +[[ "${iso_init}" == 'openrc' ]] && readonly USER_GROUPS="${LIVE_USER_GROUPS},${OPENRC_USER_GROUPS}" || + readonly USER_GROUPS="${LIVE_USER_GROUPS}" +[ "${enable_offline_install}" == 'true' ] && readonly INSTALL_TYPE="Complete" || \ + readonly INSTALL_TYPE="NetInstall" +readonly WELCOME_TITLE="Parabola ${iso_init}/${iso_gui} Edition - (${INSTALL_TYPE})" diff --git a/configs/profile/root-image/root/customize_root_image-dev.sh b/configs/profile/root-image/root/customize_root_image-dev.sh index e68d41c..5b13ab1 100755 --- a/configs/profile/root-image/root/customize_root_image-dev.sh +++ b/configs/profile/root-image/root/customize_root_image-dev.sh @@ -1,3 +1,5 @@ +[[ "${iso_gui}" == 'cli' ]] && exit 0 + sed -i 's|^Terminal=.*$|Terminal=true|' /home/${LIVE_USER}/Desktop/parabola-installer.desktop echo 'X-KeepTerminal=true' >> /home/${LIVE_USER}/Desktop/parabola-installer.desktop diff --git a/configs/profile/root-image/root/customize_root_image.sh b/configs/profile/root-image/root/customize_root_image.sh index c602220..a98e18a 100755 --- a/configs/profile/root-image/root/customize_root_image.sh +++ b/configs/profile/root-image/root/customize_root_image.sh @@ -1,51 +1,15 @@ #!/bin/bash readonly DEV_RELEASE=1 # 1 for development builds - 0 for production builds -readonly REPOS='libre core extra community pcr' -readonly SYSTEMD_SERVICES_ALL="choose-mirror.service \ - multi-user.target \ - pacman-init.service " -readonly SYSTEMD_SERVICES_GUI="NetworkManager.service" -readonly OPENRC_SERVICES_ALL="dbus \ - haveged \ - NetworkManager \ - pacman-init " -readonly OPENRC_SERVICES_GUI="alsasound \ - elogind " -readonly DEFAULT_SHELL=/bin/bash -readonly NETINSTALL_MSG="To install Parabola, the system must be connected to the internet." -readonly COMPLETE_MSG="This ISO is capable of installing a complete Parabola system\n\ ->>>>without a connection to the internet. If you would like to fetch\n\ ->>>>the latest packages from the internet, run the following command\n\ ->>>>before beginning the install:\n\ - # cp /etc/pacman-online.conf /etc/pacman.conf" -[ "${enable_offline_install}" == 'false' ] && readonly NETWORK_MOTD_MSG=${NETINSTALL_MSG} || \ - readonly NETWORK_MOTD_MSG=${COMPLETE_MSG} -readonly ROOT_SKEL_FILES="/etc/skel/.automated_script.sh \ - /etc/skel/.bash_logout \ - /etc/skel/.bash_profile " -readonly LIVE_USER=parabola -readonly LIVE_USER_GROUPS="adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -readonly OPENRC_USER_GROUPS="disk,sys" -[[ "${iso_init}" == 'openrc' ]] && readonly USER_GROUPS="${LIVE_USER_GROUPS},${OPENRC_USER_GROUPS}" || - readonly USER_GROUPS="${LIVE_USER_GROUPS}" -[ "${enable_offline_install}" == 'true' ] && readonly INSTALL_TYPE="Complete" || \ - readonly INSTALL_TYPE="NetInstall" -readonly WELCOME_TITLE="Parabola ${iso_init}/${iso_gui} Edition - (${INSTALL_TYPE})" + +source /root/customize_root_image-constants.inc set -e -u -# configure locales -ln -sf /usr/share/zoneinfo/UTC /etc/localtime -sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(es_ES\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(gl_ES\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(pt_BR\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(pl_PL\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(it_IT\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(fr_FR\.UTF-8\)/\1/' /etc/locale.gen -sed -i 's/#\(eo\)/\1/' /etc/locale.gen +# configure timezone and locales +ln -sf /usr/share/zoneinfo/UTC /etc/localtime +for locale in ${LOCALES} ; do sed -i "s/#${locale}/${locale}/" /etc/locale.gen ; done ; locale-gen # configure sudo @@ -70,33 +34,23 @@ echo "Server = https://parabola.isacdaavid.info:8081/\$repo/os/\$arch" > /etc/pa # configure services if [[ "${iso_init}" == 'systemd' ]] -then systemctl enable ${SYSTEMD_SERVICES_ALL} - # delete files that are specific to other init systems - rm /etc/conf.d/agetty.tty1 - rm /etc/conf.d/hostname - rm /etc/init.d/pacman-init - rm /etc/X11/Xwrapper.config +then # delete files that are specific to other init systems + rm ${SYSTEMD_DELETE_FILES} # enable services - [[ "${iso_gui}" != 'cli' ]] && systemctl enable ${SYSTEMD_SERVICES_GUI} + systemctl enable ${SYSTEMD_SERVICES} elif [[ "${iso_init}" == 'openrc' ]] - # delete files that are specific to other init systems - rm /etc/hostname - rm /etc/systemd/scripts/choose-mirror - rm /etc/systemd/system/choose-mirror.service - rm /etc/systemd/system/etc-pacman.d-gnupg.mount - rm /etc/systemd/system/getty@tty1.service.d/autologin.conf - rm /etc/systemd/system/pacman-init.service +then # delete files that are specific to other init systems + rm ${OPENRC_DELETE_FILES} # enable services - for service in ${OPENRC_SERVICES_ALL} ; do rc-update add ${service} default ; done ; - if [[ "${iso_gui}" != 'cli' ]] - then for service in ${OPENRC_SERVICES_GUI} ; do rc-update add ${service} default ; done ; - fi + for service in ${OPENRC_SERVICES} ; do rc-update add ${service} default ; done ; # create the dbus user and group if it does not exist if [[ "$(grep 'dbus' /etc/group )" = "" ]] ; then groupadd -g 81 dbus ; fi ; if [[ "$(grep 'dbus' /etc/passwd)" = "" ]] ; then useradd -r -s /sbin/nologin -g 81 -u 81 dbus ; fi ; +else echo "invalid \$iso_init for services '${iso_init}'" + exit 1 fi # configure root user @@ -132,9 +86,7 @@ else # configure GUI login session and live user else echo "invalid \$iso_gui for _DESKTOP_SESSION_ '${iso_gui}'" exit 1 fi - - # development builds - set DEV_RELEASE=0 for production builds - (($DEV_RELEASE)) && source /root/customize_root_image-dev.sh 2> /dev/null fi + # development builds - set DEV_RELEASE=0 for production builds -(($DEV_RELEASE)) && rm /root/customize_root_image-dev.sh 2> /dev/null +(($DEV_RELEASE)) && source /root/customize_root_image-dev.sh 2> /dev/null -- cgit v1.2.2