summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/initrdscripts/files/01-bootldr-buster.sh30
-rw-r--r--packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb2
2 files changed, 31 insertions, 1 deletions
diff --git a/packages/initrdscripts/files/01-bootldr-buster.sh b/packages/initrdscripts/files/01-bootldr-buster.sh
index 7bf312ad66..46d01903ed 100644
--- a/packages/initrdscripts/files/01-bootldr-buster.sh
+++ b/packages/initrdscripts/files/01-bootldr-buster.sh
@@ -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
diff --git a/packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb b/packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb
index bd10f16873..a3141f5a9f 100644
--- a/packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb
@@ -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"