blob: f5065f2aec4a4b6eeaf300302e0511cc68e1a08b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
|
#!/bin/sh
#
if [ "$1" = "prereqs" ]; then
exit 0
fi
quiet=n
. /scripts/functions
. /conf/tcos.conf
. /conf/tcos-run-functions
# if break=sqmount STOP here
maybe_break network
# localhost
log_begin_msg "Bring up Local loopback device"
ifconfig lo up
log_end_msg $?
touch /etc/resolv.conf
#if [ -d /var/lib/dhcp3 ]; then
# # link to work with dhcp-client or dhcp3-client
# ln -s /var/lib/dhcp3 /var/lib/dhcp
# chown root:dhcp /lib/dhcp3-client 2>/dev/null
# chown 775 /lib/dhcp3-client
# chmod 4744 /lib/dhcp3-client/call-dhclient-script
# chown root:dhcp /etc/resolv.conf 2>/dev/null
# chmod 644 /etc/resolv.conf
#fi
# wireless TCOS minihowto
#
# start thin client with something like this:
#
# boot: tcos wifi=1 essid="ESSID" server=xx.xx.xx.xx
# * server is tftpd and XMDCP host
# * ESSID is wireless network
if [ $(read_cmdline_var 'wifi' '0') = "1" ]; then
# load kernel modules
log_begin_msg "Loading wireless kernel modules"
modprobe -q arc4
modprobe -q ecb
modprobe -q mac80211
modprobe -q ieee80211_crypt
modprobe -q ieee80211
modprobe -q ieee80211softmac
#modprobe -q rc80211_simple
for kmod in $TCOS_WIRELESS_MODS; do
if [ "$kmod" = "madwifi" ]; then
#ath-pci ath-hal wlan_tkip wlan_scan_sta ath-hal
modprobe -q ath-pci 2>/dev/null
modprobe -q ath-hal 2>/dev/null
modprobe -q wlan_tkip 2>/dev/null
modprobe -q wlan_scan_sta 2>/dev/null
elif [ "$kmod" = "zd1211" -o "$kmod" = "zd1211rw" ]; then
modprobe -q zd1211rw 2>/dev/null
elif [ "$kmod" = "rt2400" -o "$kmod" = "rt2400pci" ]; then
modprobe -q rt2400pci 2>/dev/null
elif [ "$kmod" = "rt2500" -o "$kmod" = "rt2500pci" ]; then
modprobe -q rt2500pci 2>/dev/null
elif [ "$kmod" = "rt61" -o "$kmod" = "rt2561" -o "$kmod" = "rt61pci" ]; then
modprobe -q rt61pci 2>/dev/null
elif [ "$kmod" = "rt73" -o "$kmod" = "rt73usb" ]; then
modprobe -q rt73usb 2>/dev/null
elif [ "$kmod" = "bcm43xx" -o "$kmod" = "broadcom" ]; then
modprobe -q bcm43xx 2>/dev/null
else
modprobe -q $kmod 2>/dev/null
fi
done
log_end_msg 0
fi
# get list of network interfaces
TCOS_NET_ACTIVE="eth0"
TCOS_NET_WIFI=0
TCOS_NET_WIFI_ESSID=""
TCOS_NET_WIFI_KEYMODE=""
TCOS_NET_DEVS=$(ls /sys/class/net/ |grep -v -e lo -e sit0 -e wmaster -e pan)
TCOS_NET_LINK=""
TCOS_NET_LINK_NUMBER=0
# search for network interfaces with link ok status
for dev in $TCOS_NET_DEVS; do
# need to up iface
ifconfig $dev up >> /tmp/initramfs.debug 2>&1
# have link ???
if [ -e /sys/class/net/$dev/carrier ]; then
if [ "$(cat /sys/class/net/$dev/carrier 2>/dev/null)" != "1" ]; then
# some gigabit cards take some time to negotiate network link
log_begin_msg "Waiting for netlink in $dev"
sleep 10
log_end_msg
fi
if [ "$(cat /sys/class/net/$dev/carrier 2>/dev/null)" = "1" ]; then
_log "05NETWORK found carrier link in $dev iface"
TCOS_NET_LINK="$TCOS_NET_LINK $dev"
TCOS_NET_LINK_NUMBER=$(($TCOS_NET_LINK_NUMBER+1))
fi
fi
done
if [ $(read_cmdline_var 'wifi' '0') = "1" ]; then
#force wireless, read some vars
TCOS_NET_WIFI_ESSID=$(read_cmdline_var "essid" "")
for dev in $TCOS_NET_DEVS; do
# is wireless????
if [ -d /sys/class/net/$dev/wireless ]; then
TCOS_NET_WIFI=1
TCOS_NET_LINK=$dev
# stop searching
break
fi
done
fi
if [ $TCOS_NET_WIFI = 1 ]; then
# one iface wireless
TCOS_NET_ACTIVE=$TCOS_NET_LINK
elif [ $TCOS_NET_LINK_NUMBER -gt 1 ]; then
# we have some ifaces with link
_log "05NETWORK various net ifaces have link"
elif [ $TCOS_NET_LINK_NUMBER = 1 ]; then
# one iface
TCOS_NET_ACTIVE=$TCOS_NET_LINK
else
# not link !!!
panic "ERROR: No link network detected, check cable."
fi
# break for wireless
maybe_break wireless
if [ $TCOS_NET_WIFI = 1 ]; then
#ifconfig $TCOS_NET_ACTIVE down
#ifconfig $TCOS_NET_ACTIVE up
[ -z $TCOS_NET_WIFI_KEYMODE ] && TCOS_NET_WIFI_KEYMODE="restricted"
# scan wireless
log_begin_msg "Scanning wireless networks"
iwlist $TCOS_NET_ACTIVE scan | grep ESSID | awk -F ":" '{print $2}' | sed s/\"//g >> /tmp/initramfs.debug 2>&1
log_end_msg $?
log_begin_msg "Wireless associating with $TCOS_NET_WIFI_ESSID"
iwconfig $TCOS_NET_ACTIVE essid "$TCOS_NET_WIFI_ESSID"
log_end_msg $?
# associate if ap cmdline var is set
if [ "$TCOS_NET_WIFI_ESSID" != "" ]; then
if [ "$TCOS_WIRELESS_ENC" = "WPA" ]; then
modprobe -q michael_mic
modprobe -q blkcipher
modprobe -q aes
modprobe -q ieee80211_crypt_tkip
modprobe -q ieee80211_crypt_ccmp
log_begin_msg "Wireless WPA mode"
/sbin/start-wpa.sh "${TCOS_NET_ACTIVE}"
log_end_msg $?
fi
if [ "$TCOS_WIRELESS_ENC" = "WEP" ]; then
modprobe -q ieee80211_crypt_wep
log_begin_msg "Wireless WEP mode setting key"
if [ ! -z $TCOS_WIRELESS_KEY ];then
iwconfig $TCOS_NET_ACTIVE key $TCOS_NET_WIFI_KEYMODE $TCOS_WIRELESS_KEY
fi
log_end_msg $?
fi
else
log_begin_msg "Wireless associating with any"
iwconfig $TCOS_NET_ACTIVE essid any
log_end_msg $?
fi
#else
# # wired network
# ifconfig $TCOS_NET_ACTIVE down
# ifconfig $TCOS_NET_ACTIVE up
fi
log_begin_msg "Sending DHCP request on $TCOS_NET_LINK"
_log "DHCLIENT $TCOS_NET_LINK"
if [ -x /sbin/udhcpc ]; then
/sbin/udhcpc -i $TCOS_NET_LINK -s /bin/udhcpc-script >> /tmp/initramfs.debug 2>&1
else
busybox udhcpc -i $TCOS_NET_LINK -s /bin/udhcpc-script -O swapsrv >> /tmp/initramfs.debug 2>&1
fi
myip=$(awk -F"=" '/^ip=/ {print $2}' /tmp/net.data)
dhcpserver=$(awk -F"=" '/^serverid=/ {print $2}' /tmp/net.data)
hostname=$(awk -F"=" '/^hostname=/ {print $2}' /tmp/net.data)
netmask=$(awk -F"=" '/^netmask=/ {print $2}' /tmp/net.data)
gateway=$(awk -F"=" '/^gateway=/ {print $2}' /tmp/net.data)
TCOS_NET_ACTIVE=$(awk -F"=" '/^interface=/ {print $2}' /tmp/net.data)
xserver=$(awk -F"=" '/^swapsrv=/ {print $2}' /tmp/net.data)
log_end_msg 0
if [ -n ${TCOS_DEBUG} ]; then
_log "NETWORK data: ip=${myip} server=${dhcpserver} hostname=${hostname}"
fi
# count number of ":" in hostname string
if [ $(echo $hostname | awk '{print split($1, A, ":")}') -gt 1 ]; then
if [ -x /bin/hex2ascii ]; then
# got an hexadecimal hostname
hostname2=$(hex2ascii $hostname)
_log "NETWORK HEX hostname \"$hostname\"=\"$hostname2\""
hostname=$hostname2
fi
fi
if [ -z $hostname ] || [ "x{$hostname}" = "x " ]; then
panic "ERROR: DHCP server don't give me a hostname !!! Edit /etc/hosts in dhcp server"
fi
# search for other hosts
TCOS_TFTP_SERVER=$(read_cmdline_var 'tftpserver' "${dhcpserver}")
if [ "$xserver" != "" ]; then
TCOS_SERVER=$(read_cmdline_var 'server' "${xserver}")
TCOS_XDMCP_SERVER=$(read_cmdline_var 'xserver' "${xserver}")
TCOS_FONT_SERVER=$(read_cmdline_var 'fontserver' "${xserver}")
TCOS_RDESKTOP_SERVER=$(read_cmdline_var 'rdesktop' "${xserver}")
TCOS_NFS_SERVER=$(read_cmdline_var 'nfsserver' "${xserver}")
else
TCOS_SERVER=$(read_cmdline_var 'server' "${dhcpserver}")
TCOS_XDMCP_SERVER=$(read_cmdline_var 'xserver' "${dhcpserver}")
TCOS_FONT_SERVER=$(read_cmdline_var 'fontserver' "${dhcpserver}")
TCOS_RDESKTOP_SERVER=$(read_cmdline_var 'rdesktop' "${dhcpserver}")
TCOS_NFS_SERVER=$(read_cmdline_var 'nfsserver' "${dhcpserver}")
fi
# Setup the hostname
log_begin_msg "Setting hostname to ${hostname}"
echo $hostname > /etc/hostname
echo $hostname > /proc/sys/kernel/hostname
cat <<EOF > /etc/hosts
127.0.0.1 localhost.localdomain localhost
127.0.1.1 ${hostname}
${myip} ${hostname}
${TCOS_SERVER} tcos-server
${TCOS_TFTP_SERVER} tftp-server
${TCOS_XDMCP_SERVER} xdmcp-server
${TCOS_RDESKTOP_SERVER} rdesktop-server
${TCOS_NFS_SERVER} nfs-server
${TCOS_FONT_SERVER} font-server
EOF
hostname $hostname
export HOSTNAME=$hostname
log_end_msg
# start portmap
[ -x /sbin/portmap ] && /sbin/portmap >/tmp/portmap.log 2>&1 &
exit 0
|