[arch-releng] [RFC] [PATCH] [configs/releng] Replace rc.d/archiso with initscripts hooks.

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Wed Aug 17 21:19:32 EDT 2011


In this way:
* Prepare locales requested by boot param mostly early possible.
* Setup special console at end of rc.sysinit

Remove unneded include from automated_script (already included by rc.conf)

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386 at yahoo.com.ar>
---
 configs/releng/root-image/etc/rc.conf              |    2 +-
 configs/releng/root-image/etc/rc.d/archiso         |   45 --------------------
 .../etc/rc.d/functions.d/automated_script          |    2 -
 .../etc/rc.d/functions.d/prepare_locale_gen        |   11 +++++
 .../etc/rc.d/functions.d/setup_special_console     |   25 +++++++++++
 5 files changed, 37 insertions(+), 48 deletions(-)
 delete mode 100755 configs/releng/root-image/etc/rc.d/archiso
 create mode 100644 configs/releng/root-image/etc/rc.d/functions.d/prepare_locale_gen
 create mode 100644 configs/releng/root-image/etc/rc.d/functions.d/setup_special_console

diff --git a/configs/releng/root-image/etc/rc.conf b/configs/releng/root-image/etc/rc.conf
index 42084f6..a3e3d8a 100644
--- a/configs/releng/root-image/etc/rc.conf
+++ b/configs/releng/root-image/etc/rc.conf
@@ -30,4 +30,4 @@ USELVM="no"
 
 HOSTNAME="archiso"
 
-DAEMONS=(hwclock syslog-ng archiso)
+DAEMONS=(hwclock syslog-ng)
diff --git a/configs/releng/root-image/etc/rc.d/archiso b/configs/releng/root-image/etc/rc.d/archiso
deleted file mode 100755
index cc930f6..0000000
--- a/configs/releng/root-image/etc/rc.d/archiso
+++ /dev/null
@@ -1,45 +0,0 @@
-# vim: set ft=sh:
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-do_locale_gen ()
-{
-    if [[ ${LOCALE} != "en_US.UTF-8" ]]; then
-        stat_busy "Generating locales..."
-            sed -i "s/#\(${LOCALE/[@.]*}\)/\1/" /etc/locale.gen
-            /usr/sbin/locale-gen > /dev/null
-        stat_done
-    fi
-}
-
-# If an alternate console was specified on the kernel command line,
-# start agetty on it too.
-do_special_console()
-{
-    local cmdline_console
-    if cmdline_console=$(kernel_cmdline console); then
-        stat_busy "Starting agetty on console: ${cmdline_console}"
-            local port options baud rts
-            port=${cmdline_console%%,*}
-            options=${cmdline_console#${port}}
-            options=${options#,}
-            baud=${options%%[neo]*}
-            [[ ${options} =~ r$ ]] && rts="-h"
-            if ! grep -q "^${port}" /etc/securetty; then
-                echo ${port} >> /etc/securetty
-            fi
-            if ! grep -q "^z0:" /etc/inittab; then
-                echo "z0:2345:respawn:/sbin/agetty -8 -s ${rts} ${baud:-9600} ${port} linux" >> /etc/inittab
-            fi
-            /sbin/telinit q
-        stat_done
-    fi
-}
-
-case "$1" in
-  start)
-    do_locale_gen
-    do_special_console
-    ;;
-esac
-exit 0
diff --git a/configs/releng/root-image/etc/rc.d/functions.d/automated_script b/configs/releng/root-image/etc/rc.d/functions.d/automated_script
index edb8ea3..7a35acb 100644
--- a/configs/releng/root-image/etc/rc.d/functions.d/automated_script
+++ b/configs/releng/root-image/etc/rc.d/functions.d/automated_script
@@ -1,5 +1,3 @@
-. /etc/archiso/functions
-
 automated_script ()
 {
     script="$(kernel_cmdline script)"
diff --git a/configs/releng/root-image/etc/rc.d/functions.d/prepare_locale_gen b/configs/releng/root-image/etc/rc.d/functions.d/prepare_locale_gen
new file mode 100644
index 0000000..47ed79d
--- /dev/null
+++ b/configs/releng/root-image/etc/rc.d/functions.d/prepare_locale_gen
@@ -0,0 +1,11 @@
+prepare_locale_gen ()
+{
+    if [[ ${LOCALE} != "en_US.UTF-8" ]]; then
+        stat_busy "Generating locales..."
+            sed -i "s/#\(${LOCALE/[@.]*}\)/\1/" /etc/locale.gen
+            /usr/sbin/locale-gen > /dev/null
+        stat_done
+    fi
+}
+
+add_hook sysinit_postmount prepare_locale_gen
diff --git a/configs/releng/root-image/etc/rc.d/functions.d/setup_special_console b/configs/releng/root-image/etc/rc.d/functions.d/setup_special_console
new file mode 100644
index 0000000..93553a6
--- /dev/null
+++ b/configs/releng/root-image/etc/rc.d/functions.d/setup_special_console
@@ -0,0 +1,25 @@
+# If an alternate console was specified on the kernel command line,
+# start agetty on it too.
+setup_special_console()
+{
+    local cmdline_console
+    if cmdline_console=$(kernel_cmdline console); then
+        stat_busy "Starting agetty on console: ${cmdline_console}"
+            local port options baud rts
+            port=${cmdline_console%%,*}
+            options=${cmdline_console#${port}}
+            options=${options#,}
+            baud=${options%%[neo]*}
+            [[ ${options} =~ r$ ]] && rts="-h"
+            if ! grep -q "^${port}" /etc/securetty; then
+                echo ${port} >> /etc/securetty
+            fi
+            if ! grep -q "^z0:" /etc/inittab; then
+                echo "z0:2345:respawn:/sbin/agetty -8 -s ${rts} ${baud:-9600} ${port} linux" >> /etc/inittab
+            fi
+            /sbin/telinit q
+        stat_done
+    fi
+}
+
+add_hook sysinit_end setup_special_console
-- 
1.7.6



More information about the arch-releng mailing list