aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/preinit/50_choose_console
blob: ecbc2eaf42b47284bade3e0090563fe7bd4ff0a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 -q devfs /proc/filesystems; 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