From 65ca4d222cadfb4dc749796e3fa3c057814a7e8b Mon Sep 17 00:00:00 2001 From: Wojtek Porczyk Date: Thu, 30 Jul 2015 13:19:50 +0200 Subject: [PATCH] Move /etc/rc.d files from kickstart to package --- build-deps-iso.list | 1 + conf/liveusb.ks | 219 ------------------------------------------- live/livesys | 152 ++++++++++++++++++++++++++++++ live/livesys-late | 54 +++++++++++ live/qubes-live.spec | 12 +++ 5 files changed, 219 insertions(+), 219 deletions(-) create mode 100755 live/livesys create mode 100755 live/livesys-late diff --git a/build-deps-iso.list b/build-deps-iso.list index ec74d26..c420347 100644 --- a/build-deps-iso.list +++ b/build-deps-iso.list @@ -2,3 +2,4 @@ anaconda pungi pykickstart lorax-templates-qubes +livecd-creator diff --git a/conf/liveusb.ks b/conf/liveusb.ks index d280e59..cb1a954 100644 --- a/conf/liveusb.ks +++ b/conf/liveusb.ks @@ -36,225 +36,6 @@ qubes-live %end %post -# FIXME: it'd be better to get this installed from a package -cat > /etc/rc.d/init.d/livesys << EOF -#!/bin/bash -# -# live: Init script for live image -# -# chkconfig: 345 00 99 -# description: Init script for live image. -### BEGIN INIT INFO -# X-Start-Before: display-manager -### END INIT INFO - -. /etc/init.d/functions - -if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then - exit 0 -fi - -if [ -e /.liveimg-configured ] ; then - configdone=1 -fi - -exists() { - which \$1 >/dev/null 2>&1 || return - \$* -} - -livedir="LiveOS" -for arg in \`cat /proc/cmdline\` ; do - if [ "\${arg##rd.live.dir=}" != "\${arg}" ]; then - livedir=\${arg##rd.live.dir=} - return - fi - if [ "\${arg##live_dir=}" != "\${arg}" ]; then - livedir=\${arg##live_dir=} - return - fi -done - -# enable swaps unless requested otherwise -swaps=\`blkid -t TYPE=swap -o device\` -if ! strstr "\`cat /proc/cmdline\`" noswap && [ -n "\$swaps" ] ; then - for s in \$swaps ; do - action "Enabling swap partition \$s" swapon \$s - done -fi -if ! strstr "\`cat /proc/cmdline\`" noswap && [ -f /run/initramfs/live/\${livedir}/swap.img ] ; then - action "Enabling swap file" swapon /run/initramfs/live/\${livedir}/swap.img -fi - -mountPersistentHome() { - # support label/uuid - if [ "\${homedev##LABEL=}" != "\${homedev}" -o "\${homedev##UUID=}" != "\${homedev}" ]; then - homedev=\`/sbin/blkid -o device -t "\$homedev"\` - fi - - # if we're given a file rather than a blockdev, loopback it - if [ "\${homedev##mtd}" != "\${homedev}" ]; then - # mtd devs don't have a block device but get magic-mounted with -t jffs2 - mountopts="-t jffs2" - elif [ ! -b "\$homedev" ]; then - loopdev=\`losetup -f\` - if [ "\${homedev##/run/initramfs/live}" != "\${homedev}" ]; then - action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live - fi - losetup \$loopdev \$homedev - homedev=\$loopdev - fi - - # if it's encrypted, we need to unlock it - if [ "\$(/sbin/blkid -s TYPE -o value \$homedev 2>/dev/null)" = "crypto_LUKS" ]; then - echo - echo "Setting up encrypted /home device" - plymouth ask-for-password --command="cryptsetup luksOpen \$homedev EncHome" - homedev=/dev/mapper/EncHome - fi - - # and finally do the mount - mount \$mountopts \$homedev /home - # if we have /home under what's passed for persistent home, then - # we should make that the real /home. useful for mtd device on olpc - if [ -d /home/home ]; then mount --bind /home/home /home ; fi - [ -x /sbin/restorecon ] && /sbin/restorecon /home - if [ -d /home/liveuser ]; then USERADDARGS="-M" ; fi -} - -findPersistentHome() { - for arg in \`cat /proc/cmdline\` ; do - if [ "\${arg##persistenthome=}" != "\${arg}" ]; then - homedev=\${arg##persistenthome=} - return - fi - done -} - -if strstr "\`cat /proc/cmdline\`" persistenthome= ; then - findPersistentHome -elif [ -e /run/initramfs/live/\${livedir}/home.img ]; then - homedev=/run/initramfs/live/\${livedir}/home.img -fi - -# if we have a persistent /home, then we want to go ahead and mount it -if ! strstr "\`cat /proc/cmdline\`" nopersistenthome && [ -n "\$homedev" ] ; then - action "Mounting persistent /home" mountPersistentHome -fi - -if [ -n "\$configdone" ]; then - exit 0 -fi - -# add fedora user with no passwd -action "Adding live user" useradd \$USERADDARGS -c "Live System User" liveuser -passwd -d liveuser > /dev/null -usermod -aG wheel liveuser > /dev/null -usermod -aG qubes liveuser > /dev/null - -# Remove root password lock -passwd -d root > /dev/null - -# turn off firstboot for livecd boots -systemctl --no-reload disable firstboot-text.service 2> /dev/null || : -systemctl --no-reload disable firstboot-graphical.service 2> /dev/null || : -systemctl stop firstboot-text.service 2> /dev/null || : -systemctl stop firstboot-graphical.service 2> /dev/null || : - -# don't use prelink on a running live image -sed -i 's/PRELINKING=yes/PRELINKING=no/' /etc/sysconfig/prelink &>/dev/null || : - -# turn off mdmonitor by default -systemctl --no-reload disable mdmonitor.service 2> /dev/null || : -systemctl --no-reload disable mdmonitor-takeover.service 2> /dev/null || : -systemctl stop mdmonitor.service 2> /dev/null || : -systemctl stop mdmonitor-takeover.service 2> /dev/null || : - -# don't enable the gnome-settings-daemon packagekit plugin -gsettings set org.gnome.software download-updates 'false' || : - -# don't start cron/at as they tend to spawn things which are -# disk intensive that are painful on a live image -systemctl --no-reload disable crond.service 2> /dev/null || : -systemctl --no-reload disable atd.service 2> /dev/null || : -systemctl stop crond.service 2> /dev/null || : -systemctl stop atd.service 2> /dev/null || : - -# Don't sync the system clock when running live (RHBZ #1018162) -sed -i 's/rtcsync//' /etc/chrony.conf - -# Mark things as configured -touch /.liveimg-configured - -# add static hostname to work around xauth bug -# https://bugzilla.redhat.com/show_bug.cgi?id=679486 -echo "localhost" > /etc/hostname - -EOF - -# bah, hal starts way too late -cat > /etc/rc.d/init.d/livesys-late << EOF -#!/bin/bash -# -# live: Late init script for live image -# -# chkconfig: 345 99 01 -# description: Late init script for live image. - -. /etc/init.d/functions - -if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ] || [ -e /.liveimg-late-configured ] ; then - exit 0 -fi - -exists() { - which \$1 >/dev/null 2>&1 || return - \$* -} - -touch /.liveimg-late-configured - -# read some variables out of /proc/cmdline -for o in \`cat /proc/cmdline\` ; do - case \$o in - ks=*) - ks="--kickstart=\${o#ks=}" - ;; - xdriver=*) - xdriver="\${o#xdriver=}" - ;; - esac -done - -# if liveinst or textinst is given, start anaconda -if strstr "\`cat /proc/cmdline\`" liveinst ; then - plymouth --quit - /usr/sbin/liveinst \$ks -fi -if strstr "\`cat /proc/cmdline\`" textinst ; then - plymouth --quit - /usr/sbin/liveinst --text \$ks -fi - -# configure X, allowing user to override xdriver -if [ -n "\$xdriver" ]; then - cat > /etc/X11/xorg.conf.d/00-xdriver.conf </dev/null 2>&1 || return + $* +} + +livedir="LiveOS" +for arg in `cat /proc/cmdline` ; do + if [ "${arg##rd.live.dir=}" != "${arg}" ]; then + livedir=${arg##rd.live.dir=} + return + fi + if [ "${arg##live_dir=}" != "${arg}" ]; then + livedir=${arg##live_dir=} + return + fi +done + +# enable swaps unless requested otherwise +swaps=`blkid -t TYPE=swap -o device` +if ! strstr "`cat /proc/cmdline`" noswap && [ -n "$swaps" ] ; then + for s in $swaps ; do + action "Enabling swap partition $s" swapon $s + done +fi +if ! strstr "`cat /proc/cmdline`" noswap && [ -f /run/initramfs/live/${livedir}/swap.img ] ; then + action "Enabling swap file" swapon /run/initramfs/live/${livedir}/swap.img +fi + +mountPersistentHome() { + # support label/uuid + if [ "${homedev##LABEL=}" != "${homedev}" -o "${homedev##UUID=}" != "${homedev}" ]; then + homedev=`/sbin/blkid -o device -t "$homedev"` + fi + + # if we're given a file rather than a blockdev, loopback it + if [ "${homedev##mtd}" != "${homedev}" ]; then + # mtd devs don't have a block device but get magic-mounted with -t jffs2 + mountopts="-t jffs2" + elif [ ! -b "$homedev" ]; then + loopdev=`losetup -f` + if [ "${homedev##/run/initramfs/live}" != "${homedev}" ]; then + action "Remounting live store r/w" mount -o remount,rw /run/initramfs/live + fi + losetup $loopdev $homedev + homedev=$loopdev + fi + + # if it's encrypted, we need to unlock it + if [ "$(/sbin/blkid -s TYPE -o value $homedev 2>/dev/null)" = "crypto_LUKS" ]; then + echo + echo "Setting up encrypted /home device" + plymouth ask-for-password --command="cryptsetup luksOpen $homedev EncHome" + homedev=/dev/mapper/EncHome + fi + + # and finally do the mount + mount $mountopts $homedev /home + # if we have /home under what's passed for persistent home, then + # we should make that the real /home. useful for mtd device on olpc + if [ -d /home/home ]; then mount --bind /home/home /home ; fi + [ -x /sbin/restorecon ] && /sbin/restorecon /home + if [ -d /home/liveuser ]; then USERADDARGS="-M" ; fi +} + +findPersistentHome() { + for arg in `cat /proc/cmdline` ; do + if [ "${arg##persistenthome=}" != "${arg}" ]; then + homedev=${arg##persistenthome=} + return + fi + done +} + +if strstr "`cat /proc/cmdline`" persistenthome= ; then + findPersistentHome +elif [ -e /run/initramfs/live/${livedir}/home.img ]; then + homedev=/run/initramfs/live/${livedir}/home.img +fi + +# if we have a persistent /home, then we want to go ahead and mount it +if ! strstr "`cat /proc/cmdline`" nopersistenthome && [ -n "$homedev" ] ; then + action "Mounting persistent /home" mountPersistentHome +fi + +if [ -n "$configdone" ]; then + exit 0 +fi + +# add fedora user with no passwd +action "Adding live user" useradd $USERADDARGS -c "Live System User" liveuser +passwd -d liveuser > /dev/null +usermod -aG wheel liveuser > /dev/null +usermod -aG qubes liveuser > /dev/null + +# Remove root password lock +passwd -d root > /dev/null + +# turn off firstboot for livecd boots +systemctl --no-reload disable firstboot-text.service 2> /dev/null || : +systemctl --no-reload disable firstboot-graphical.service 2> /dev/null || : +systemctl stop firstboot-text.service 2> /dev/null || : +systemctl stop firstboot-graphical.service 2> /dev/null || : + +# don't use prelink on a running live image +sed -i 's/PRELINKING=yes/PRELINKING=no/' /etc/sysconfig/prelink &>/dev/null || : + +# turn off mdmonitor by default +systemctl --no-reload disable mdmonitor.service 2> /dev/null || : +systemctl --no-reload disable mdmonitor-takeover.service 2> /dev/null || : +systemctl stop mdmonitor.service 2> /dev/null || : +systemctl stop mdmonitor-takeover.service 2> /dev/null || : + +# don't enable the gnome-settings-daemon packagekit plugin +gsettings set org.gnome.software download-updates 'false' || : + +# don't start cron/at as they tend to spawn things which are +# disk intensive that are painful on a live image +systemctl --no-reload disable crond.service 2> /dev/null || : +systemctl --no-reload disable atd.service 2> /dev/null || : +systemctl stop crond.service 2> /dev/null || : +systemctl stop atd.service 2> /dev/null || : + +# Don't sync the system clock when running live (RHBZ #1018162) +sed -i 's/rtcsync//' /etc/chrony.conf + +# Mark things as configured +touch /.liveimg-configured + +# add static hostname to work around xauth bug +# https://bugzilla.redhat.com/show_bug.cgi?id=679486 +echo "localhost" > /etc/hostname + diff --git a/live/livesys-late b/live/livesys-late new file mode 100755 index 0000000..f0785eb --- /dev/null +++ b/live/livesys-late @@ -0,0 +1,54 @@ +#!/bin/bash +# +# live: Late init script for live image +# +# chkconfig: 345 99 01 +# description: Late init script for live image. + +# bah, hal starts way too late + +. /etc/init.d/functions + +if ! strstr "`cat /proc/cmdline`" rd.live.image || [ "$1" != "start" ] || [ -e /.liveimg-late-configured ] ; then + exit 0 +fi + +exists() { + which $1 >/dev/null 2>&1 || return + $* +} + +touch /.liveimg-late-configured + +# read some variables out of /proc/cmdline +for o in `cat /proc/cmdline` ; do + case $o in + ks=*) + ks="--kickstart=${o#ks=}" + ;; + xdriver=*) + xdriver="${o#xdriver=}" + ;; + esac +done + +# if liveinst or textinst is given, start anaconda +if strstr "`cat /proc/cmdline`" liveinst ; then + plymouth --quit + /usr/sbin/liveinst $ks +fi +if strstr "`cat /proc/cmdline`" textinst ; then + plymouth --quit + /usr/sbin/liveinst --text $ks +fi + +# configure X, allowing user to override xdriver +if [ -n "$xdriver" ]; then + cat > /etc/X11/xorg.conf.d/00-xdriver.conf <