X-Git-Url: https://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=etc%2Fgrml%2Ffai%2Fconfig%2Fscripts%2FGRMLBASE%2F15-initsetup;h=f94cd3fa1dd670ef663b3a73a268f88c7e080037;hp=72ac5012cbda5f9a8c92df1f75a56e6a0d648f57;hb=1aec7397965ee3164b455cfb763bcc936f65377e;hpb=5d4cdf0789b5814936a60497542d7d925b041bc0 diff --git a/etc/grml/fai/config/scripts/GRMLBASE/15-initsetup b/etc/grml/fai/config/scripts/GRMLBASE/15-initsetup index 72ac501..f94cd3f 100755 --- a/etc/grml/fai/config/scripts/GRMLBASE/15-initsetup +++ b/etc/grml/fai/config/scripts/GRMLBASE/15-initsetup @@ -1,5 +1,5 @@ #!/bin/bash -# Filename: /etc/grml/fai/config/scripts/GRMLBASE/15-initsetup +# Filename: ${GRML_FAI_CONFIG}/config/scripts/GRMLBASE/15-initsetup # Purpose: configure init system for the live-system # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ @@ -8,31 +8,100 @@ set -u set -e +. "$GRML_LIVE_CONFIG" -if ! [ -r $target/etc/runlevel.conf ] ; then - echo 'Warning: /etc/runlevel.conf does not exist...' - echo '... assuming we do not have file-rc, skipping 15-initsetup' - exit 0 -fi +systemd_setup() { + fcopy -i -B -v -r /etc/systemd -# keep a backup of the original runlevel.conf file for reference -# but only save it as /etc/runlevel.conf.original if it's not the -# according live system version, this should prevent from overriding -# /etc/runlevel.conf.original if re-running grml-live with -b option. -if ! cmp $target/etc/runlevel.conf $target/etc/runlevel.conf.livecd >/dev/null ; then + echo "Enabling user '$USERNAME' for autologin" + sed -i "s/\$USERNAME/$USERNAME/" "$target"/etc/systemd/system/getty@tty*.service.d/override.conf - # make sure to store old backup files if they differ as well - if [ -r $target/etc/runlevel.conf.original ] ; then - if ! cmp $target/etc/runlevel.conf $target/etc/runlevel.conf.original >/dev/null ; then - cp $target/etc/runlevel.conf.original $target/etc/runlevel.conf.original."$(date +%Y%m%d_%k:%M:%S)" - fi - fi + # enable TTY logins + local service + for file in "${target}"/etc/systemd/system/getty@tty*.service.d ; do + service=$(basename "$file" .d) + $ROOTCMD systemctl enable "$service" || echo "failed to enable $service" + done + unset service - cp $target/etc/runlevel.conf $target/etc/runlevel.conf.original -fi + # FIXME - ssh-keygen isn't executed yet before ssh-bootoption + ssh services + $ROOTCMD systemctl enable ssh-bootoption.service || echo "failed to enable ssh-bootoption.service" + $ROOTCMD systemctl enable ssh-keygen.service || echo "failed to enable ssh-keygen.service" + + # fails on overlayfs with + # "Failed to unmount transient /etc/machine-id file in our private namespace: Invalid argument" + $ROOTCMD systemctl mask systemd-machine-id-commit.service || echo "failed to mask $systemd-machine-id-commit.service" + + # disable unwanted services + local service + for service in \ + cron.service \ + lvm2-lvmetad.service \ + lvm2-lvmetad.socket \ + lvm2-lvmpolld.socket \ + lvm2-monitor.service \ + mdadm-raid.service \ + smartd.service \ + ssh.service \ + swap.target \ + systemd-timesyncd.service \ + uuidd.service + do + $ROOTCMD systemctl disable ${service} || echo "failed to disable $service" + done + unset service + + # TODO -> + + # * *proper* integration for grml-autoconfig + $ROOTCMD systemctl enable grml-autoconfig.service || echo "failed to enable grml-autoconfig.service" + ln -sf /etc/systemd/system/grml-autoconfig.service "${target}"/etc/systemd/system/multi-user.target.wants/grml-autoconfig.service + + # * avoid startup of any LSB scripts; NOTE: jessie doesn't support that + # system-generators approach yet, only >=stretch + mkdir -p "${target}"/etc/systemd/system-generators/ + ln -sf /dev/null "${target}"/etc/systemd/system-generators/systemd-sysv-generator + # -> revert /etc/systemd/system-generators/systemd-sysv-generator && systemctl daemon-reload during *bootup* + # + possibly move this into startup so it's always executed on bootup, even with persistency enabled + # where the change towards systemd-sysv-generator might persist across + # reboots -> LSB scripts executed on reboots +} -# provide Grml's default file-rc configuration -fcopy /etc/runlevel.conf +file_rc_setup() { + if ! [ -r "${target}"/etc/runlevel.conf ] ; then + echo 'Warning: /etc/runlevel.conf does not exist...' + echo '... assuming we do not have file-rc, skipping 15-initsetup' + exit 0 + fi + + # keep a backup of the original runlevel.conf file for reference + if [ -r "${target}"/etc/runlevel.conf.original ] ; then + # make sure to store old backup files if they differ as well + if ! cmp "${target}"/etc/runlevel.conf "${target}"/etc/runlevel.conf.original >/dev/null ; then + cp "${target}"/etc/runlevel.conf.original "${target}/etc/runlevel.conf.original.$(date +%Y%m%d_%k:%M:%S)" + fi + fi + + cp "${target}"/etc/runlevel.conf "${target}"/etc/runlevel.conf.original + + # provide Grml's default file-rc configuration + fcopy -v /etc/runlevel.conf + + # provide Grml's inittab configuration + fcopy -v /etc/inittab + sed -i "s/\$USERNAME\$/${USERNAME}/" "${target}"/etc/inittab + + # provide Grml's bootlocal init scripts + fcopy -v -mroot,root,0755 /etc/init.d/bootlocal.first + fcopy -v -mroot,root,0755 /etc/init.d/bootlocal.middle + fcopy -v -mroot,root,0755 /etc/init.d/bootlocal.last +} + +if ifclass FILE_RC ; then + file_rc_setup +else + systemd_setup +fi ## END OF FILE ################################################################# -# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=3 +# vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=2