diff options
Diffstat (limited to 'dracut')
-rw-r--r-- | dracut/59-mtd.rules | 8 | ||||
-rw-r--r-- | dracut/61-mtd.rules | 20 | ||||
-rw-r--r-- | dracut/adduser.sh | 8 | ||||
-rw-r--r-- | dracut/display-manager-autologin.sh | 18 | ||||
-rw-r--r-- | dracut/module-setup.sh | 10 | ||||
-rwxr-xr-x | dracut/mtd.sh | 7 | ||||
-rw-r--r-- | dracut/services.sh | 29 |
7 files changed, 99 insertions, 1 deletions
diff --git a/dracut/59-mtd.rules b/dracut/59-mtd.rules new file mode 100644 index 0000000..d81a6ad --- /dev/null +++ b/dracut/59-mtd.rules @@ -0,0 +1,8 @@ +SUBSYSTEM!="block", GOTO="ps_end" +ACTION!="add|change", GOTO="ps_end" +# Also don't process disks that are slated to be a multipath device +ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="ps_end" + +KERNEL=="mtdblock[0-9]*", IMPORT BLKID + +LABEL="ps_end" diff --git a/dracut/61-mtd.rules b/dracut/61-mtd.rules new file mode 100644 index 0000000..0711d3a --- /dev/null +++ b/dracut/61-mtd.rules @@ -0,0 +1,20 @@ +SUBSYSTEM!="block", GOTO="pss_end" +ACTION!="add|change", GOTO="pss_end" +# Also don't process disks that are slated to be a multipath device +ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="pss_end" + +ACTION=="change", KERNEL=="dm-[0-9]*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}!="1", GOTO="do_pss" +KERNEL=="mtdblock*", GOTO="do_pss" + +GOTO="pss_end" + +LABEL="do_pss" +# by-path (parent device path) +ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="", DEVPATH!="*/virtual/*", IMPORT PATH_ID +ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" +ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" + +# by-label/by-uuid links (filesystem metadata) +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" +LABEL="pss_end" diff --git a/dracut/adduser.sh b/dracut/adduser.sh index 0379690..f06a4ea 100644 --- a/dracut/adduser.sh +++ b/dracut/adduser.sh @@ -6,8 +6,10 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh echo hrmpf > ${NEWROOT}/etc/hostname +AUTOLOGIN=$(getarg live.autologin) USERNAME=$(getarg live.user) USERSHELL=$(getarg live.shell) + [ -z "$USERNAME" ] && USERNAME=anon [ -x $NEWROOT/bin/bash -a -z "$USERSHELL" ] && USERSHELL=/bin/bash [ -z "$USERSHELL" ] && USERSHELL=/bin/sh @@ -21,7 +23,7 @@ if ! grep -q ${USERSHELL} ${NEWROOT}/etc/shells ; then fi # Create new user and remove password. We'll use autologin by default. -chroot ${NEWROOT} useradd -m -c $USERNAME -G wheel -s $USERSHELL $USERNAME +chroot ${NEWROOT} useradd -m -c $USERNAME -G audio,video,wheel -s $USERSHELL $USERNAME chroot ${NEWROOT} passwd -d $USERNAME >/dev/null 2>&1 # Setup default root/user password (voidlinux). @@ -49,4 +51,8 @@ _EOF chroot ${NEWROOT} chown polkitd:polkitd /etc/polkit-1/rules.d/void-live.rules fi +if [ -n "$AUTOLOGIN" ]; then + sed -i "s,GETTY_ARGS=\"--noclear\",GETTY_ARGS=\"--noclear -a $USERNAME\",g" ${NEWROOT}/etc/sv/agetty-tty1/run +fi + chroot ${NEWROOT} usermod -s /bin/bash root diff --git a/dracut/display-manager-autologin.sh b/dracut/display-manager-autologin.sh index c667e21..4d41164 100644 --- a/dracut/display-manager-autologin.sh +++ b/dracut/display-manager-autologin.sh @@ -21,6 +21,12 @@ if [ -d ${NEWROOT}/etc/gdm ]; then fi fi +# Configure KDM autologin +if [ -e ${NEWROOT}/etc/kdm/kdmrc ]; then + sed -i -e "s|^\#\(AutoLoginEnable=\).*|\1|" ${NEWROOT}/etc/kdm/kdmrc + sed -i -e "s|^\#\(AutoLoginUser=\).*|\1$USERNAME|" ${NEWROOT}/etc/kdm/kdmrc +fi + # Configure lightdm autologin. if [ -r ${NEWROOT}/etc/lightdm.conf ]; then sed -i -e "s|^\#\(default-user=\).*|\1$USERNAME|" \ @@ -34,5 +40,17 @@ if [ -r ${NEWROOT}/etc/lxdm/lxdm.conf ]; then sed -e "s,.*autologin.*=.*,autologin=$USERNAME," -i ${NEWROOT}/etc/lxdm/lxdm.conf if [ -x ${NEWROOT}/usr/bin/enlightenment_start ]; then sed -e "s,.*session.*=.*,session=/usr/bin/enlightenment_start," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/startxfce4 ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/startxfce4," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/mate-session ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/mate-session," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/cinnamon-session ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/cinnamon-session," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/i3 ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/i3," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/startlxde ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/startlxde," -i ${NEWROOT}/etc/lxdm/lxdm.conf + elif [ -x ${NEWROOT}/usr/bin/startlxqt ]; then + sed -e "s,.*session.*=.*,session=/usr/bin/startlxqt," -i ${NEWROOT}/etc/lxdm/lxdm.conf fi fi diff --git a/dracut/module-setup.sh b/dracut/module-setup.sh index fb4a067..4170620 100644 --- a/dracut/module-setup.sh +++ b/dracut/module-setup.sh @@ -14,9 +14,19 @@ install() { inst /usr/bin/chroot inst /usr/bin/chmod inst /usr/bin/sed + + if [ -e /usr/bin/memdiskfind ]; then + inst /usr/bin/memdiskfind + instmods mtdblock phram + inst_rules "$moddir/59-mtd.rules" "$moddir/61-mtd.rules" + prepare_udev_rules 59-mtd.rules 61-mtd.rules + inst_hook pre-udev 01 "$moddir/mtd.sh" + fi + inst_hook pre-pivot 01 "$moddir/adduser.sh" inst_hook pre-pivot 02 "$moddir/display-manager-autologin.sh" inst_hook pre-pivot 02 "$moddir/getty-autologin.sh" inst_hook pre-pivot 03 "$moddir/copy-initramfs.sh" inst_hook pre-pivot 04 "$moddir/locale.sh" + inst_hook pre-pivot 05 "$moddir/services.sh" } diff --git a/dracut/mtd.sh b/dracut/mtd.sh new file mode 100755 index 0000000..1d94a4e --- /dev/null +++ b/dracut/mtd.sh @@ -0,0 +1,7 @@ +#!/bin/sh +MEMDISK=$(memdiskfind) +if [ "$MEMDISK" ]; then + modprobe phram phram=memdisk,$MEMDISK + modprobe mtdblock + printf 'KERNEL=="mtdblock0", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root /dev/mtdblock0"\n' >> /etc/udev/rules.d/99-live-squash.rules +fi diff --git a/dracut/services.sh b/dracut/services.sh new file mode 100644 index 0000000..50461ff --- /dev/null +++ b/dracut/services.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh + +SERVICEDIR=$NEWROOT/etc/sv +SERVICES="$(getarg live.services)" + +for f in ${SERVICES}; do + ln -sf /etc/sv/$f $NEWROOT/etc/runit/runsvdir/default/ +done + +dhcpcd=1 +for f in connmand NetworkManager wicd; do + if [ -e $SERVICEDIR/$f ]; then + unset dhcpcd + fi +done + +# Enable all services by default... with some exceptions. +for f in $SERVICEDIR/*; do + _service=${f##*/} + case "${_service}" in + agetty-console|agetty-generic|agetty-serial|agetty-tty[SAU]*|sulogin|dhcpcd-*|iptables|ip6tables|wpa_supplicant|pulseaudio|lvmetad|dmeventd|mdadm) ;; # ignored + dhcpcd) [ -n "$dhcpcd" ] && ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;; + *) ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;; + esac +done |