about summary refs log tree commit diff
path: root/dracut
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-10-09 15:24:32 +0200
committerChristian Neukirchen <chneukirchen@gmail.com>2015-10-09 15:43:55 +0200
commit44722b79e2f31c0c51bd2fc8c8d43c0009d79529 (patch)
tree5fc9fce8937199de06e2c22ad781e59fa654dfd2 /dracut
parenta25ced5c198fff963ba7b7e9b613059e756374c0 (diff)
parentcb2510b3791091fb54681cee451eb7ec24e0b266 (diff)
downloadhrmpf-44722b79e2f31c0c51bd2fc8c8d43c0009d79529.tar.gz
hrmpf-44722b79e2f31c0c51bd2fc8c8d43c0009d79529.tar.xz
hrmpf-44722b79e2f31c0c51bd2fc8c8d43c0009d79529.zip
Merge remote-tracking branch 'origin/master'
* origin/master: (136 commits)
  dracut/services: don't autostart dmeventd, lvmetad and mdadm.
  mklive: fix guessing linux kernel pkgname.
  fix set_keymap rc.conf
  installer.sh: fix static IP settings in menu_install
  build-arm-images: PLATFORM can be overrided now.
  build-rootfs: build musl rootfs too; PLATFORMS can be overrided now.
  build-x86-images: added lxqt image.
  dracut/dm-autologin: autostart lxqt if available.
  mkrootfs: add dockstar support
  mklive: install GRUB EFI loader as EFI/BOOT/BOOTX64.EFI.
  build-x86-images: add gnome-keyring to cinnamon/mate/xfce images.
  build-x86-images: add firefox now it's available for musl.
  build-arm-images: respect musl targets.
  mkimage: consistently redirect std{err,out} to /dev/null with dd(1).
  build-arm-images: disable cubietruck for now; does not boot.
  build-arm-images: build all ARM images for glibc and musl.
  mkrootfs: get rid of pixz; fix rpi target arch.
  mkrootfs: set cachedir to $PWD/xbps-cachedir-<arch>; misc tweaks for musl.
  mkrootfs: update for musl support.
  build-x86-images: do not build the kde image; does not work yet.
  ...
Diffstat (limited to 'dracut')
-rw-r--r--dracut/59-mtd.rules8
-rw-r--r--dracut/61-mtd.rules20
-rw-r--r--dracut/adduser.sh8
-rw-r--r--dracut/display-manager-autologin.sh18
-rw-r--r--dracut/module-setup.sh10
-rwxr-xr-xdracut/mtd.sh7
-rw-r--r--dracut/services.sh29
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