I'm trying to get Tiny Core running on a system where the Video (currently) doesn't work so I'm trying to use the serial port as a console - something I've done successfully in the past. However this time I'm having problems which I hope someone here can help me solve.
My starting point was the current release with kernel 2.6.33.3 and the microcore gz file. I've rebuilt the kernel and remastered the initrd file with the matching modules. I do get a kernel "oops" if tce-setup runs but that's for another day once I get past my current problem....(including base in the command line solves that for now).
My command line includes:
earlyprintk=serial,ttyS0,19200n8
console=ttyS0,19200n8
base
When the kernel starts I get all the usual stuff squirted out of the serial port until the kernel frees up unused memory and the moves on to running init . At that point it all stops. I get nothing. However I know all is still running as I added a printk to the execve function in the kernel. Why is the console entry being ignored?
Here's some of what is printed as the system boots:
Linux version 2.6.33.3-tinycore (thin@mantaray) (gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) ) #34 Tue Aug 16 16:32:07 BST 2011
BIOS-provided physical RAM map:
BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
BIOS-e801: 0000000000100000 - 0000000003b80000 (usable)
bootconsole [earlyser0] enabled
..........
Kernel command line: kmap=uk earlyprintk=serial,ttyS0,19200n8 console=ttyS0,19200n8 base
.......
CPU: NSC Geode(TM) Integrated Processor by National Semi stepping 01
.........
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a NS16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A
.......
NET: Registered protocol family 17
NET: Registered protocol family 15
Freeing unused kernel memory: 172k freed
Running /init base (null)
Running /bin/mount proc (null)
Running /bin/grep -qw multivt
Running /bin/grep -qw embed
.........
Running /bin/rm -f /etc/hostname
Running /bin/hostname -F /etc/hostname
Running /bin/grep -q inet addr
Running /sbin/ifconfig eth0 (null)
Running /bin/rm -f /etc/hosts
Running /bin/sleep 1 (null)
Running /bin/hostname (null) USER=tc
Running /bin/cat (null)
Running /sbin/udhcpc -b -i
Running /sbin/getty -L ttyS0
Running /sbin/getty -L ttyS1
Note: My hack only prints out a couple of arguments to whatever is being invoked.
So in summary I can see that the serial port is working fine - all the kernel printk stuff comes out there. init is started and runs all the tc startup scripts. For some reason /dev/console is not being connected to ttyS0 Also at the end when the gettys are started neither serial port appears to have a console on it. I assume that solving the /dev/console connectivity issue will also solve that - but lets take one step at a time.
Any thoughts?
David