From c54c4ec77cb6dd7eba91acca31ba8837b66dc057 Mon Sep 17 00:00:00 2001 From: Marc Fiuczynski Date: Fri, 1 Feb 2008 20:49:27 +0000 Subject: [PATCH] Added support to specify serial line options from the command line. --- build.sh | 159 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 131 insertions(+), 28 deletions(-) diff --git a/build.sh b/build.sh index 7687728..12d6db9 100755 --- a/build.sh +++ b/build.sh @@ -17,12 +17,13 @@ PATH=/sbin:/bin:/usr/sbin:/usr/bin CONFIGURATION=default NODE_CONFIGURATION_FILE= -TYPES="usb iso usb_serial iso_serial" -ALL_TYPES="usb iso usb_serial iso_serial usb_cramfs iso_cramfs usb_cramfs_serial iso_cramfs_serial" +TYPES="usb iso" +ALL_TYPES="usb iso usb_cramfs iso_cramfs" # Leave 4 MB of free space FREE_SPACE=4096 CUSTOM_DIR= OUTPUT_BASE= +CONSOLE_INFO="graphic" MKISOFS_OPTS="-R -J -r -f -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table" usage() @@ -32,6 +33,8 @@ usage() echo " -f planet.cnf Node to customize CD for (default: none)" echo " -t 'types' Build the specified images (default: $TYPES)" echo " All known types: $ALL_TYPES" + echo " -s console-info Enable a serial line as console and also bring up getty on that line" + echo " console-info=devicename:baudrate" echo " -a Build all supported images" echo " -C custom-dir Custom directory" echo " -O output-base The basename of the generated files (default: PLC_NAME-BootCD-VERSION)" @@ -40,7 +43,7 @@ usage() } # Get options -while getopts "O:c:f:t:C:ah" opt ; do +while getopts "O:c:f:s:t:C:ah" opt ; do case $opt in c) CONFIGURATION=$OPTARG @@ -60,6 +63,9 @@ while getopts "O:c:f:t:C:ah" opt ; do a) TYPES="$ALL_TYPES" ;; + s) + CONSOLE_INFO="$OPTARG" + ;; h|*) usage ;; @@ -250,7 +256,7 @@ sed -e "s@^root:[^:]*:\(.*\)@root:$ROOT_PASSWORD:\1@" build/passwd \ # Install node configuration file (e.g., if node has no floppy disk or USB slot) if [ -f "$NODE_CONFIGURATION_FILE" ] ; then - echo "* Installing node configuration file" + echo "* Installing node configuration file $NODE_CONFIGURATION_FILE -> /usr/boot/plnode.txt of the bootcd image" install -D -m 644 $NODE_CONFIGURATION_FILE $overlay/usr/boot/plnode.txt fi @@ -274,17 +280,57 @@ echo "$FULL_VERSION_STRING" >$isofs/pl_version popd +function extract_console_dev() +{ + local console="$1" + dev=$(echo $console| awk -F: ' {print $1}') + echo $dev +} + +function extract_console_baud() +{ + local console="$1" + baud=$(echo $console| awk -F: ' {print $2}') + [ -z "$baud" ] && baud="115200" + echo $baud +} + +function extract_console_parity() +{ + local console="$1" + parity=$(echo $console| awk -F: ' {print $3}') + [ -z "$parity" ] && parity="n" + echo $parity +} + +function extract_console_bits() +{ + local console="$1" + bits=$(echo $console| awk -F: ' {print $4}') + [ -z "$bits" ] && bits="8" + echo $bits +} + function build_iso() { local iso="$1" ; shift - local serial="$1" ; shift + local console="$1" ; shift local custom="$1" + local serial=0 + + if [ "$console" != "graphic" ] ; then + serial=1 + console_dev=$(extract_console_dev $console) + console_baud=$(extract_console_baud $console) + console_parity=$(extract_console_parity $console) + console_bits=$(extract_console_bits $console) + fi # Write isolinux configuration cat >$isofs/isolinux.cfg <$tmp <$tmp <> etc/inittab - # and let root log in - echo "ttyS0" >> etc/securetty + if [ $serial -eq 1 ] ; then + echo "T0:23:respawn:/sbin/agetty -L $console_dev $console_baud vt100" >> etc/inittab + # and let root log in + echo "$console_dev" >> etc/securetty + fi # calculate the size of /tmp based on the size of /etc & /var + 8MB slack etcsize=$(du -s ./etc | awk '{ print $1 }') varsize=$(du -s ./var | awk '{ print $1 }') let msize=($varsize+$etcsize+8192)/1024 + # make dhclient happy + for i in $(seq 0 9); do ln -fs /tmp/etc/dhclient-eth${i}.conf etc/dhclient-eth${i}.conf ; done + ln -fs /tmp/etc/resolv.conf etc/resolv.conf + ln -fs /tmp/etc/resolv.conf.predhclient etc/resolv.conf.predhclient # generate pl_rsysinit cat > etc/rc.d/init.d/pl_rsysinit <$tmp/isolinux.cfg <$tmp <