diff --git a/alpine/init b/alpine/init index 8261480bb..5519d5b3f 100755 --- a/alpine/init +++ b/alpine/init @@ -1,7 +1,43 @@ #!/bin/sh +setup_console() { + tty=${1%,*} + speed=${1#*,} + inittab="$2" + securetty="$3" + line= + term="linux" + [ "$speed" = "$1" ] && speed=115200 + + case "$tty" in + ttyS*|ttyAMA*|ttyUSB*|ttyMFD*) + line="-L" + term="vt100" + ;; + tty0) + # skip current console + return 0 + ;; + esac + # skip consoles already in inittab + grep -q "^$tty:" "$inittab" && return + + echo "$tty::respawn:/sbin/getty $line $speed $tty $term" >> "$inittab" + if ! grep -q -w "$tty" "$securetty"; then + echo "$tty" >> "$securetty" + fi +} + /bin/mount -t tmpfs tmpfs /mnt /bin/cp -a / /mnt 2>/dev/null +/bin/mount -t proc -o noexec,nosuid,nodev proc /proc +for opt in $(cat /proc/cmdline); do + case "$opt" in + console=*) + setup_console ${opt#console=} /mnt/etc/inittab /mnt/etc/securetty;; + esac +done + exec /bin/busybox switch_root /mnt /sbin/init