/home/jeff/blog

Sucking away valuable moments of your life ...

NSLU2 Console Server

#

Server Setup

Install SlugOS/BE with:
• USB hub
• USB/serial adapter attached to F-F 9 port RS232 cable

Install serial support:
` root@BOS-ts1:/$ ipkg update Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.gz Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.gz Updated list of available packages in /var/lib/ipkg/cross Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz Updated list of available packages in /var/lib/ipkg/native root@BOS-ts1:/$ ipkg install kernel-module-pl2303 Installing kernel-module-pl2303 (2.6.21.7 svnr927-r0) to root… Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/kernel-module-pl2303_2.6.21.7 svnr927-r0_nslu2be.ipk Installing kernel-module-usbserial (2.6.21.7 svnr927-r0) to root… Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/kernel-module-usbserial_2.6.21.7 svnr927-r0_nslu2be.ipk Configuring kernel-module-pl2303 Configuring kernel-module-usbserial root@BOS-ts1:/$ `

Install picocom:
` root@BOS-ts1:/$ ipkg install picocom Installing picocom (1.4-r2) to root… Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/picocom_1.4-r2_armv5teb.ipk Configuring picocom root@BOS-ts1:/$ `

picocom syntax:
` root@BOS-ts1:/$ picocom –help picocom v1.4 Usage is: picocom [options] Options are: –aud –low s (=soft) | h (=hard) | n (=none) –arity o (=odd) | e (=even) | n (=none) –atabits 5 | 6 | 7 | 8 –scape –nonit –noeset –noock –end-cmd –receie-cmd –elp < ?> indicates the equivalent short option. Short options are prefixed by “-“ instead of by “–”. root@BOS-ts1:/$ `

Console server scripts:

root@BOS-ts1:~$ cat /etc/port.config 
1:sw2:9600
2:poeswitch:9600
3:sw1:9600
4:fw:9600
7:pbx:57600
root@BOS-ts1:~$ cat /usr/bin/consolesh 
#!/bin/sh

done=0

while [ $done -eq 0 ]; do
        clear
        echo "Welcome to $(hostname)"
        echo "Console Server"
        echo "  Uptime  :       $(uptime | cut -d, -f1 | cut -d' ' -f4-)"
        echo "  IP      :       $( /sbin/ifconfig eth0 | grep 'inet addr' | cut -d: -f2 | cut -d' ' -f1 )"
        echo ""
        echo "Connected ports:"
        ls /dev/ttyUSB* 2>&#038;1 | grep -v no | cut -dB -f2 | while read P; do
                D=$(cat /etc/port.config | grep -E "^$(( $P   1 )):" | cut -d: -f2)
                echo "  Port $(($P   1))        :       $D"
        done
        echo ""
        echo -n "Please choose a port number to access, or '#' for shell --> "
        read PORT
        if [ "$PORT" == "" ]; then
                exit
        fi
        if [ "$PORT" == "#" ]; then
                echo "Spawning shell, type 'exit' to leave"
                sh
        else
                SPEED=$( cat /etc/port.config | grep -E "^${PORT}:" | cut -d: -f3 )
                /usr/bin/serial.sh $PORT $SPEED
	fi
done

exit

root@BOS-ts1:~$ cat /usr/bin/serial.sh 
#!/bin/sh
if [ $# -ne 2 ]; then
	echo "syntax: $0 portnumber speed"
	exit
fi
PORT=$(( $1 - 1 ))
echo "Escape sequence is Ctrl-A Ctrl-X"
picocom -b $2 -f h -p n -d 8 -r /dev/ttyUSB${PORT}
root@BOS-ts1:~$

Final setup:
After you’ve copied your keys over, set root’s shell to be /usr/bin/consolesh

Client Setup

BIOS

---------------------------------------------------- 
|               Console Redirection                  |
|----------------------------------------------------|
|                                                    |
|   Com Port Address           [On-board COM A]      |
|                                                    |
|   Console connection:        [Direct]              |
|   Baud Rate                  [9600]                |
|   Flow Control               [None]                |
|   Console Type               [vt100]               |
|   Continue C.R. after POST:  [On]                  |
 ---------------------------------------------------- 

OpenBSD

/etc/ttys:

Change:

tty00   "/usr/libexec/getty std.9600"   unknown off

to:

tty00   "/usr/libexec/getty std.9600"   vt100   on secure

/etc/boot.conf:

Create and/or edit file and add the following:

stty com0 9600
     set tty com0

Note: Only the first serial port (com0) is supported for console on amd64 and i386.

CentOS/Linux

The console needs to be redirected: Grub, Xen, Linux & Getty.

/boot/grub/grub.conf:

# Remove splash line

# Serial console for grub
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal --timeout=5 serial console

title...

   # Serial console for XEN
   kernel /xen.gz..... com1=9600,8n1 console=com1,vga

   # Serial console for Linux
   module /vmlinuz-... console=tty0 console=ttyS0,9600n8

Create console login:

/etc/securetty:

Add:

ttyS0

/etc/inittab:

Add:

co:2345:respawn:/sbin/agetty -L 9600 ttyS0 vt100-nav

Alternate Method

You can also use conman (Console Manager) to do the same thing. I have an NSLU2 package available here:
http://www.mediafire.com/file/tzkmt9jnnyx/conman_0.2.3-1_armeb.ipk.