summaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/preinit/50_choose_console
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-01-25 17:11:17 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-01-25 17:11:17 +0000
commita9929695c6ad0779eaa8cb3d68d37760981d55b7 (patch)
tree2f48135bc4a364cacd3ce07355213d4e32a9141f /package/base-files/files/lib/preinit/50_choose_console
parent99c311e86cd7b0ed809a7994eb618819785a6223 (diff)
add preinit modularization work by Daniel Dickinson (cshore)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19331 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/files/lib/preinit/50_choose_console')
-rw-r--r--package/base-files/files/lib/preinit/50_choose_console31
1 files changed, 31 insertions, 0 deletions
diff --git a/package/base-files/files/lib/preinit/50_choose_console b/package/base-files/files/lib/preinit/50_choose_console
new file mode 100644
index 000000000..346479640
--- /dev/null
+++ b/package/base-files/files/lib/preinit/50_choose_console
@@ -0,0 +1,31 @@
+#!/bin/sh
+# Copyright (C) 2006-2010 OpenWrt.org
+# Copyright (C) 2010 Vertical Communications
+
+choose_console() {
+ # the shell really doesn't like having stdin/out closed
+ # that's why we use /dev/pty/m0 and m1 (or equivalent) as replacement
+ # for /dev/console if there's no serial console available
+
+ if grep devfs /proc/filesystems > /dev/null; then
+ M0=/dev/pty/m0
+ M1=/dev/pty/m1
+ M2=/dev/pty/m1
+ elif [ -x /sbin/hotplug2 ]; then
+ M0=/dev/ptmx
+ M1=/dev/ptmx
+ M2=/dev/ptmx
+ elif [ -x /sbin/udevd ]; then
+ M0=/dev/pty/ptmx
+ M1=/dev/pty/ptmx
+ M2=/dev/pty/ptmx
+ fi
+ dd if=/dev/console of=/dev/null bs=1 count=0 >/dev/null 2>/dev/null && {
+ M0=/dev/console
+ M1=/dev/console
+ M2=/dev/console
+ }
+}
+
+boot_hook_add preinit_essential choose_console
+