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