initramfs-module-bootldr-buster: Add initial code to workaround bogus system console...
authorPaul Sokolovsky <pmiscml@gmail.com>
Sat, 8 Mar 2008 21:16:39 +0000 (21:16 +0000)
committerPaul Sokolovsky <pmiscml@gmail.com>
Sat, 8 Mar 2008 21:16:39 +0000 (21:16 +0000)
* The main trouble is the bogus console=ttySA0 passed by bootldr
It appears that kernel doesn't have protection against only invalid
consoles being passed on the command line, which means that the
kernel is deaf and dumb when booted by bootldr.

packages/initrdscripts/files/01-bootldr-buster.sh
packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb

index 7bf312a..46d0190 100644 (file)
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 cmdl=`cat /proc/cmdline`
+#cmdl="console=ttySA0,115200 console=ttySB0,115200"
 if expr "$cmdl" : '.*mtdparts=ipaq' > /dev/null; then
     echo "!!!!!!!!"
     echo "Detected Compaq bootldr or derivative"
@@ -9,3 +10,32 @@ if expr "$cmdl" : '.*mtdparts=ipaq' > /dev/null; then
     CMDLINE=" "
     sleep 3
 fi
+
+# The main trouble is the bogus console=ttySA0 passed by bootldr
+# It appears that kernel doesn't have protection against only invalid
+# consoles being passed on the command line, which means that the
+# kernel is deaf and dumb when booted by bootldr
+
+INVALID_CONSOLE=0
+VALID_CONSOLE=0
+
+for arg in $cmdl; do
+        optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'`
+        case $arg in
+            console=*)
+               if expr "$optarg" : 'ttySA[0-9]\+' > /dev/null; then
+                   INVALID_CONSOLE=1
+                elif expr "$optarg" : 'ttyS\?[0-9]\+' > /dev/null; then
+                   VALID_CONSOLE=1
+               fi
+               ;;
+        esac
+done
+
+if [ $INVALID_CONSOLE -eq 1 -a $VALID_CONSOLE -eq 0 ]; then
+    echo "!!!!!!!!"
+    echo "No valid system console is detected"
+    echo "Explicitly using /dev/tty0 for input/output"
+    echo "!!!!!!!!"
+    CONSOLE="/dev/tty0"
+fi
index bd10f16..a3141f5 100644 (file)
@@ -1,5 +1,5 @@
 SRC_URI = "file://01-bootldr-buster.sh"
-PR = "r0"
+PR = "r1"
 DESCRIPTION = "An initramfs module for ignoring bogus kernel commandline from Compaq bootldr"
 RDEPENDS = "initramfs-uniboot"