failsafe: run on all consoles listed in /proc/cmdline
[openwrt/openwrt.git] / package / base-files / files / lib / preinit / 99_10_failsafe_login
index 1410c5f0db5fe3d673603ae2ee0e77c10c966986..6f4af3f28b533379fe1b697be2cd7633f22a8027 100644 (file)
@@ -2,13 +2,14 @@
 # Copyright (C) 2010 Vertical Communications
 
 failsafe_shell() {
-       local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
-       [ -n "$console" ] || console=console
-       [ -c "/dev/$console" ] || return 0
-       while true; do
-               ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
-               sleep 1
-       done &
+       local consoles="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | sed -e 's/^console=//' -e 's/,.*//')"
+       [ -n "$consoles" ] || consoles=console
+       for console in $consoles; do
+               [ -c "/dev/$console" ] && while true; do
+                       ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
+                       sleep 1
+               done &
+       done
 }
 
 boot_hook_add failsafe failsafe_shell