wok-tiny rev 108

custom-console: multiple consoles, up (2.0)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Feb 15 22:11:25 2016 +0100 (2016-02-15)
parents 93ea2d4c06f3
children 0d8ef9102fc0
files custom-console/receipt
line diff
     1.1 --- a/custom-console/receipt	Tue Feb 09 10:08:12 2016 +0100
     1.2 +++ b/custom-console/receipt	Mon Feb 15 22:11:25 2016 +0100
     1.3 @@ -1,44 +1,125 @@
     1.4  # SliTaz package receipt.
     1.5  
     1.6  PACKAGE="custom-console"
     1.7 -VERSION="1.0"
     1.8 +VERSION="2.0"
     1.9  CATEGORY="meta"
    1.10 -SHORT_DESC="Configure a custom console"
    1.11 +SHORT_DESC="Configure the consoles"
    1.12  MAINTAINER="pascal.bellard@slitaz.org"
    1.13  LICENSE="BSD"
    1.14  WEB_SITE="http://tiny.slitaz.org/"
    1.15  DEPENDS="base-tiny"
    1.16  SUGGESTED="module-usbserial module-serial"
    1.17 -CONFIG_FILES="/etc/inittab"
    1.18  
    1.19  # Rules to gen a SliTaz package suitable for Tazpkg.
    1.20  genpkg_rules()
    1.21  {
    1.22 -	mkdir -p $fs/etc
    1.23 +	mkdir -p $fs/etc/init.d
    1.24  }
    1.25  
    1.26  post_install()
    1.27  {
    1.28 -	sed -i '/^tty[2-9]::/d' $1/etc/inittab
    1.29 -	sed -i "s|^tty1:.*|$TTYS::respawn:/sbin/getty $SPEED $TTYS|" \
    1.30 -		$1/etc/inittab
    1.31 +	[ "$KERNEL_TTY" == "none" ] ||
    1.32 +	echo -n " console=tty0 console=$KERNEL_TTY,${SPEED_KERNEL_TTY}n8" \
    1.33 +		>> $1/boot/cmdline
    1.34 +	TTY_LIST=""
    1.35 +	for i in $(seq 1 63); do
    1.36 +		eval n=\$TTY$i
    1.37 +		[ -n "$n" ] || continue
    1.38 +		TTY_LIST="$TTY_LIST tty$i:38400"
    1.39 +	done
    1.40 +	for i in $(seq 0 3 | sed 's/^/TTYS/' ; seq 0 3 | sed 's/^/TTYUSB/'); do
    1.41 +		eval n=\$$i
    1.42 +		[ -n "$n" ] || continue
    1.43 +		eval s=\$SPEED_$i
    1.44 +		TTY_LIST="$TTY_LIST ${i/TTY/tty}:$s"
    1.45 +	done
    1.46 +	[ -s $1/etc/init.d/tty.sh ] || cat > $1/etc/init.d/tty.sh <<EOT
    1.47 +#!/bin/sh
    1.48 +
    1.49 +. /etc/init.d/rc.functions
    1.50 +EOT
    1.51 +	chmod +x $1/etc/init.d/tty.sh
    1.52 +	cat >> $1/etc/init.d/tty.sh <<EOT
    1.53 +
    1.54 +sed -i '/^tty/d' /etc/inittab
    1.55 +EOT
    1.56 +	[ -n "$TTY_LIST" ] ||
    1.57 +	echo 'echo -n "Disable login console"' >> $1/etc/init.d/tty.sh
    1.58 +	[ -n "$TTY_LIST" ] && cat >> $1/etc/init.d/tty.sh <<EOT
    1.59 +echo -n "Enable login console from "
    1.60 +for i in$TTY_LIST; do
    1.61 +	[ -e /dev/\${i%:*} ] || continue
    1.62 +	case "\$i" in
    1.63 +	ttyS*) grep -q serial /proc/ioports || continue ;;
    1.64 +	esac
    1.65 +	echo -n "\${i%:*} "
    1.66 +	echo "\${i%:*}::respawn:/sbin/getty \${i#*:} \${i%:*}" >> /etc/inittab
    1.67 +done
    1.68 +kill -1 1
    1.69 +status
    1.70 +EOT
    1.71 +	grep tty.sh $1/etc/rcS.conf ||
    1.72 +	sed -i 's/RUN_SCRIPTS="/&tty.sh /' $1/etc/rcS.conf
    1.73  }
    1.74  
    1.75  config_form()
    1.76  {
    1.77 -	[ -n "$TTYS" ] || TTYS=ttyS0
    1.78 -	[ -n "$SPEED" ] || SPEED=38400
    1.79  	cat <<EOT
    1.80 -You can launch a serial console (ttyS0, ttyS1 ... ttyUSB0 ...)
    1.81 +<hr />
    1.82 +Virtual consoles
    1.83  <table>
    1.84 +EOT
    1.85 +	for i in $(seq 1 63); do
    1.86 +		[ $(($i & 7)) -eq 1 ] && echo "<tr>"
    1.87 +		cat <<EOT
    1.88 +<td>
    1.89 +<input type="checkbox" name="TTY$i" /> tty$i
    1.90 +</td>
    1.91 +EOT
    1.92 +		[ $(($i & 7)) -eq 0 ] && echo "</tr>"
    1.93 +	done
    1.94 +	cat <<EOT
    1.95 +<td></td>
    1.96 +</tr>
    1.97 +</table>
    1.98 +<hr />
    1.99 +Serial consoles
   1.100 +<table>
   1.101 +EOT
   1.102 +	for i in $(seq 0 3 | sed 's/^/TTYS/' ; seq 0 3 | sed 's/^/TTYUSB/'); do
   1.103 +		cat <<EOT
   1.104  <tr>
   1.105 -<td>Device</td>
   1.106 -<td><input type="text" name="TTYS" value="$TTYS" /></td>
   1.107 +<td><input type="checkbox" name="$i" /> ${i/TTY/tty} </td>
   1.108 +EOT
   1.109 +		for j in 115200 57600 38400 19200 9600 4800 2400 1200 600 300; do
   1.110 +			[ $j -eq 4800 ] && cat <<EOT
   1.111  </tr>
   1.112  <tr>
   1.113 -<td>Speed</td>
   1.114 -<td><input type="text" name="SPEED" value="$SPEED" /></td>
   1.115 +<td></td>
   1.116 +EOT
   1.117 +			checked=
   1.118 +			[ $j -eq 9600 ] && checked="checked=checked "
   1.119 +			cat <<EOT
   1.120 +<td><input type="checkbox" name="SPEED_$i[]" value="$j" $checked/> $j</td>
   1.121 +EOT
   1.122 +		done
   1.123 +	done
   1.124 +	cat <<EOT
   1.125 +</table>
   1.126  </tr>
   1.127 -</table>
   1.128 +Kernel serial console 
   1.129 +<select name="KERNEL_TTY">
   1.130 +<option>none</option>
   1.131  EOT
   1.132 +	for i in $(seq 0 3); do
   1.133 +		echo "<option>ttyS$i</option>"
   1.134 +	done
   1.135 +	cat <<EOT
   1.136 +</select>
   1.137 +<select name="SPEED_KERNEL_TTY">
   1.138 +EOT
   1.139 +	for i in 115200 57600 38400 19200 9600 4800 2400 1200 600 300; do
   1.140 +		echo "<option>$i</option>"
   1.141 +	done
   1.142 +	echo "</select>"
   1.143  }