Kaynağa Gözat

require explicitly listing enabled services

Previously all services were enabled with some exceptions. That way some
services got enabled unintentionally when they were added somewhere in
the dependency tree.

This commit requires explicitly listing enabled services with the
exception of DEFAULT_SERVICE_LIST in mklive.sh - agetty-tty1-6, udevd.

difference from the generated images before this commit:
plain mklive:  -acpid -dhcpcd -sshd -uuidd
base:          -uuidd
enlightenment: -uuidd -acpid -rtkit
xfce:          -uuidd -acpid -rtkit
mate:          -uuidd -acpid -rtkit
cinnamon:      -uuidd -acpid -rtkit -colord
gnome:         -uuidd -acpid -rtkit -colord -bluetoothd -brltty
lxde:          -uuidd -rtkit
lxqt:          -uuidd -acpid -rtkit
kde:           -uuidd -acpid -bluetoothd -boltd -tcsd

Closes: #267 [via git-merge-pr]
Michal Vasilek 3 yıl önce
ebeveyn
işleme
e132ea26f2

+ 13 - 2
build-x86-images.sh.in

@@ -28,32 +28,43 @@ build_variant() {
     GRUB_PKGS="grub-i386-efi grub-x86_64-efi"
     PKGS="dialog cryptsetup lvm2 mdadm void-docs-browse xtools-minimal $GRUB_PKGS"
     XORG_PKGS="xorg-minimal xorg-input-drivers xorg-video-drivers setxkbmap xauth font-misc-misc terminus-font dejavu-fonts-ttf alsa-plugins-pulseaudio"
+    SERVICES="sshd"
 
     case $variant in
-        base) ;;
+        base)
+            SERVICES="$SERVICES dhcpcd acpid"
+        ;;
         enlightenment)
             PKGS="$PKGS $XORG_PKGS lxdm enlightenment terminology udisks2 firefox-esr"
+            SERVICES="$SERVICES acpid dhcpcd lxdm dbus polkitd"
         ;;
         xfce)
             PKGS="$PKGS $XORG_PKGS lxdm xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
+            SERVICES="$SERVICES dbus elogind lxdm NetworkManager polkitd"
         ;;
         mate)
             PKGS="$PKGS $XORG_PKGS lxdm mate mate-extra gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
+            SERVICES="$SERVICES dbus elogind lxdm NetworkManager polkitd"
         ;;
         cinnamon)
             PKGS="$PKGS $XORG_PKGS lxdm cinnamon gnome-keyring colord gnome-terminal gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
+            SERVICES="$SERVICES dbus elogind lxdm NetworkManager polkitd"
         ;;
         gnome)
             PKGS="$PKGS $XORG_PKGS gnome firefox-esr"
+            SERVICES="$SERVICES dbus elogind gdm NetworkManager polkitd"
         ;;
         kde)
             PKGS="$PKGS $XORG_PKGS kde5 konsole firefox-esr dolphin"
+            SERVICES="$SERVICES dbus elogind NetworkManager sddm"
         ;;
         lxde)
             PKGS="$PKGS $XORG_PKGS lxde lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
+            SERVICES="$SERVICES acpid dbus dhcpcd lxdm polkitd"
         ;;
         lxqt)
             PKGS="$PKGS $XORG_PKGS lxqt lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
+            SERVICES="$SERVICES elogind dbus dhcpcd lxdm polkitd"
         ;;
         *)
             >&2 echo "Unknown variant $variant"
@@ -61,7 +72,7 @@ build_variant() {
         ;;
     esac
 
-    ./mklive.sh -a "$ARCH" -o "$IMG" -p "$PKGS" ${REPO} "$@"
+    ./mklive.sh -a "$ARCH" -o "$IMG" -p "$PKGS" -S "$SERVICES" ${REPO} "$@"
 }
 
 if [ ! -x mklive.sh ]; then

+ 0 - 1
dracut/vmklive/module-setup.sh

@@ -27,5 +27,4 @@ install() {
     inst_hook pre-pivot 02 "$moddir/display-manager-autologin.sh"
     inst_hook pre-pivot 02 "$moddir/getty-serial.sh"
     inst_hook pre-pivot 03 "$moddir/locale.sh"
-    inst_hook pre-pivot 04 "$moddir/services.sh"
 }

+ 0 - 29
dracut/vmklive/services.sh

@@ -1,29 +0,0 @@
-#!/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]*|agetty-hv*|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

+ 17 - 1
mklive.sh.in

@@ -78,6 +78,7 @@ directory if unset).
  -o <file>          Output file name for the ISO image (auto if unset).
  -p "pkg pkgN ..."  Install additional packages into the ISO image.
  -I <includedir>    Include directory structure under given path into rootfs
+ -S "service serviceN ..." Services to enable
 
  -C "cmdline args"  Add additional kernel command line arguments.
  -T "title"         Modify the bootloader title.
@@ -140,6 +141,16 @@ install_packages() {
     rm -rf "$ROOTFS"/var/cache/* "$ROOTFS"/run/* "$ROOTFS"/var/run/*
 }
 
+enable_services() {
+    SERVICE_LIST="$*"
+    for service in $SERVICE_LIST; do
+        if ! [ -e $ROOTFS/etc/sv/$service ]; then
+            die "service $service not in /etc/sv"
+        fi
+        ln -sf /etc/sv/$service $ROOTFS/etc/runit/runsvdir/default/
+    done
+}
+
 copy_include_directory() {
     find "$INCLUDE_DIRECTORY" -mindepth 1 -maxdepth 1 -exec cp -rfpPv {} "$ROOTFS"/ \;
 }
@@ -282,7 +293,7 @@ generate_iso_image() {
 #
 # main()
 #
-while getopts "a:b:r:c:C:T:Kk:l:i:I:s:o:p:v:h" opt; do
+while getopts "a:b:r:c:C:T:Kk:l:i:I:S:s:o:p:v:h" opt; do
     case $opt in
         a) BASE_ARCH="$OPTARG";;
         b) BASE_SYSTEM_PKG="$OPTARG";;
@@ -293,6 +304,7 @@ while getopts "a:b:r:c:C:T:Kk:l:i:I:s:o:p:v:h" opt; do
         l) LOCALE="$OPTARG";;
         i) INITRAMFS_COMPRESSION="$OPTARG";;
         I) INCLUDE_DIRECTORY="$OPTARG";;
+        S) SERVICE_LIST="$OPTARG";;
         s) SQUASHFS_COMPRESSION="$OPTARG";;
         o) OUTPUT_FILE="$OPTARG";;
         p) PACKAGE_LIST="$OPTARG";;
@@ -396,6 +408,10 @@ mkdir -p "$ROOTFS"/etc
 print_step "Installing void pkgs into the rootfs: ${PACKAGE_LIST} ..."
 install_packages
 
+: ${DEFAULT_SERVICE_LIST:=agetty-tty1 agetty-tty2 agetty-tty3 agetty-tty4 agetty-tty5 agetty-tty6 udevd}
+print_step "Enabling services: ${SERVICE_LIST} ..."
+enable_services ${DEFAULT_SERVICE_LIST} ${SERVICE_LIST}
+
 if [ -n "${INCLUDE_DIRECTORY}" ];then
     print_step "Copying directory structure into the rootfs: ${INCLUDE_DIRECTORY} ..."
     copy_include_directory