diff options
-rw-r--r-- | packages/initrdscripts/files/01-bootldr-buster.sh | 30 | ||||
-rw-r--r-- | packages/initrdscripts/initramfs-module-bootldr-buster_1.0.bb | 2 |
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" |