wok-tiny annotate custom-console/receipt @ rev 177

Shrink custom-console configuration
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Aug 09 15:38:04 2023 +0000 (10 months ago)
parents 3de5e6325aab
children 2a1ec9d88ac0
rev   line source
pascal@53 1 # SliTaz package receipt.
pascal@53 2
pascal@53 3 PACKAGE="custom-console"
pascal@108 4 VERSION="2.0"
pascal@94 5 CATEGORY="meta"
pascal@109 6 GROUP="system"
pascal@108 7 SHORT_DESC="Configure the consoles"
pascal@53 8 MAINTAINER="pascal.bellard@slitaz.org"
pascal@90 9 LICENSE="BSD"
pascal@55 10 WEB_SITE="http://tiny.slitaz.org/"
pascal@53 11 DEPENDS="base-tiny"
pascal@100 12 SUGGESTED="module-usbserial module-serial"
pascal@53 13
pascal@53 14 # Rules to gen a SliTaz package suitable for Tazpkg.
pascal@53 15 genpkg_rules()
pascal@53 16 {
pascal@108 17 mkdir -p $fs/etc/init.d
pascal@53 18 }
pascal@53 19
pascal@53 20 post_install()
pascal@53 21 {
pascal@109 22 respawn=respawn
pascal@109 23 [ "$ASKFIRST" ] && respawn=askfirst
pascal@142 24 [ "$KERNEL_TTY" = "none" ] ||
pascal@108 25 echo -n " console=tty0 console=$KERNEL_TTY,${SPEED_KERNEL_TTY}n8" \
pascal@108 26 >> $1/boot/cmdline
pascal@108 27 TTY_LIST=""
pascal@108 28 for i in $(seq 1 63); do
pascal@108 29 eval n=\$TTY$i
pascal@108 30 [ -n "$n" ] || continue
pascal@108 31 TTY_LIST="$TTY_LIST tty$i:38400"
pascal@108 32 done
pascal@108 33 for i in $(seq 0 3 | sed 's/^/TTYS/' ; seq 0 3 | sed 's/^/TTYUSB/'); do
pascal@108 34 eval n=\$$i
pascal@108 35 [ -n "$n" ] || continue
pascal@108 36 eval s=\$SPEED_$i
pascal@108 37 TTY_LIST="$TTY_LIST ${i/TTY/tty}:$s"
pascal@108 38 done
pascal@108 39 [ -s $1/etc/init.d/tty.sh ] || cat > $1/etc/init.d/tty.sh <<EOT
pascal@108 40 #!/bin/sh
pascal@108 41
pascal@108 42 . /etc/init.d/rc.functions
pascal@108 43 EOT
pascal@108 44 chmod +x $1/etc/init.d/tty.sh
pascal@108 45 cat >> $1/etc/init.d/tty.sh <<EOT
pascal@108 46
pascal@108 47 sed -i '/^tty/d' /etc/inittab
pascal@108 48 EOT
pascal@108 49 [ -n "$TTY_LIST" ] ||
pascal@108 50 echo 'echo -n "Disable login console"' >> $1/etc/init.d/tty.sh
pascal@108 51 [ -n "$TTY_LIST" ] && cat >> $1/etc/init.d/tty.sh <<EOT
pascal@108 52 echo -n "Enable login console from "
pascal@108 53 for i in$TTY_LIST; do
pascal@109 54 dev=\${i%:*}
pascal@109 55 major=4
pascal@109 56 minor=\$(echo \$dev | sed 's/[^0-9]*//')
pascal@109 57 case "\$dev" in
pascal@109 58 ttyUSB*) major=188 ;;
pascal@109 59 ttyS*) minor=\$((64+\$minor)) ;;
pascal@108 60 esac
pascal@109 61 [ -e /dev/\$dev ] || mknod /dev/\$dev c \$major \$minor
pascal@109 62 stty -F /dev/\$dev > /dev/null 2>&1 || continue
pascal@109 63 echo -n "\$dev "
pascal@109 64 echo "\$dev::$respawn:getty \${i#*:} /dev/\$dev" >> /etc/inittab
pascal@108 65 done
pascal@108 66 kill -1 1
pascal@108 67 status
pascal@108 68 EOT
pascal@108 69 grep tty.sh $1/etc/rcS.conf ||
pascal@109 70 sed -i 's/^RUN_SCRIPTS="/&tty.sh /' $1/etc/rcS.conf
pascal@53 71 }
pascal@53 72
pascal@53 73 config_form()
pascal@53 74 {
pascal@53 75 cat <<EOT
pascal@108 76 <hr />
pascal@108 77 Virtual consoles
pascal@53 78 <table>
pascal@108 79 EOT
pascal@108 80 for i in $(seq 1 63); do
pascal@108 81 [ $(($i & 7)) -eq 1 ] && echo "<tr>"
pascal@126 82 eval checked="\$TTY$i"
pascal@108 83 cat <<EOT
pascal@108 84 <td>
pascal@126 85 <input type="checkbox" name="TTY$i" ${checked:+checked=checked }/> tty$i
pascal@108 86 </td>
pascal@108 87 EOT
pascal@108 88 [ $(($i & 7)) -eq 0 ] && echo "</tr>"
pascal@108 89 done
pascal@108 90 cat <<EOT
pascal@108 91 <td></td>
pascal@108 92 </tr>
pascal@108 93 </table>
pascal@177 94 <p>
pascal@177 95 <input type="checkbox" name="ASKFIRST" ${ASKFIRST:+checked=checked }/>
pascal@177 96 Confirm console launch (spare some memory)
pascal@177 97 </p>
pascal@108 98 <hr />
pascal@108 99 Serial consoles
pascal@108 100 <table>
pascal@177 101 <tr>
pascal@108 102 EOT
pascal@108 103 for i in $(seq 0 3 | sed 's/^/TTYS/' ; seq 0 3 | sed 's/^/TTYUSB/'); do
pascal@126 104 eval checked="\$$i"
pascal@108 105 cat <<EOT
pascal@177 106 <td><input type="checkbox" name="$i" ${checked:+checked=checked }/> ${i/TTY/tty}
pascal@177 107 <select name="SPEED_$i">
pascal@108 108 EOT
pascal@126 109 eval speed="\$SPEED_$i"
pascal@108 110 for j in 115200 57600 38400 19200 9600 4800 2400 1200 600 300; do
pascal@177 111 selected=
pascal@127 112 case " ${speed:-9600} " in
pascal@177 113 *\ $j\ *) selected=" selected=\"selected\""
pascal@126 114 esac
pascal@177 115 echo " <option value=\"$j\"$selected>$j</option>"
pascal@108 116 done
pascal@177 117 echo "</select></td>"
pascal@177 118 [ "$i" = "TTYS3" ] && echo "</tr><tr>"
pascal@108 119 done
pascal@108 120 cat <<EOT
pascal@177 121 </tr>
pascal@108 122 </table>
pascal@53 123 </tr>
pascal@109 124 <p>
pascal@108 125 Kernel serial console
pascal@108 126 <select name="KERNEL_TTY">
pascal@108 127 <option>none</option>
pascal@53 128 EOT
pascal@108 129 for i in $(seq 0 3); do
pascal@126 130 echo -n "<option"
pascal@142 131 [ "$KERNEL_TTY" = "ttyS$i" ] && echo -n ' selected="selected"'
pascal@126 132 echo ">ttyS$i</option>"
pascal@108 133 done
pascal@108 134 cat <<EOT
pascal@108 135 </select>
pascal@177 136 <select name="SPEED_KERNEL_TTY" id="SPEED_KERNEL_TTY">
pascal@108 137 EOT
pascal@108 138 for i in 115200 57600 38400 19200 9600 4800 2400 1200 600 300; do
pascal@126 139 echo -n "<option"
pascal@142 140 [ "$SPEED_KERNEL_TTY" = "$i" ] && echo -n ' selected="selected"'
pascal@126 141 echo ">$i</option>"
pascal@108 142 done
pascal@109 143 echo -e "</select>\n</p>"
pascal@53 144 }
pascal@177 145
pascal@177 146 config_note()
pascal@177 147 {
pascal@177 148 cat <<EOT
pascal@177 149 <script type="text/javascript">
pascal@177 150 function update_form()
pascal@177 151 {
pascal@177 152 for (var i = 0; i < document.forms.length; i++) {
pascal@177 153 for (var j = 0; j < document.forms[i].elements.length; j++) {
pascal@177 154 var obj = document.forms[i].elements[j]
pascal@177 155 if (obj.name.startsWith("TTYS") || obj.name.startsWith("TTYUSB")) {
pascal@177 156 var speed = document.getElementsByName("SPEED_"+obj.name)[0]
pascal@177 157 speed.disabled = !obj.checked
pascal@177 158 }
pascal@177 159 if (obj.name == "KERNEL_TTY") {
pascal@177 160 var speed = document.getElementsByName("SPEED_"+obj.name)[0]
pascal@177 161 speed.disabled = (obj.value == "none")
pascal@177 162 }
pascal@177 163 }
pascal@177 164 }
pascal@177 165 }
pascal@177 166 update_form()
pascal@177 167 window.onchange = update_form
pascal@177 168 //-->
pascal@177 169 </script>
pascal@177 170 EOT
pascal@177 171 }