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
|
#!/bin/sh
# Remove extra whitespace
crunch() {
while read line ; do
echo $line
done
}
echo
echo "******* Welcome to the network supplemental disk! *******"
echo
# main loop:
while [ 0 ]; do
echo "-- Press [enter] to automatically probe for all network cards, or switch"
echo " to a different console and use 'modprobe' to load the modules manually."
echo "-- To skip probing some modules (in case of hangs), enter them after an S:"
echo " S eepro100 ne2k-pci"
echo "-- To probe only certain modules, enter them after a P like this:"
echo " P 3c503 3c505 3c507"
echo "-- To get a list of network modules, enter an L."
echo "-- To skip the automatic probe entirely, enter a Q now."
echo
# Clear "card found" flag:
rm -f /cardfound
echo -n "network> "
read INPUT;
echo
if [ "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "L" \
-o "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "l" ]; then
echo "Available network modules:"
for file in /lib/modules/`uname -r`/kernel/drivers/net/* /lib/modules/`uname -r`/kernel/arch/i386/kernel/* /lib/modules/`uname -r`/kernel/drivers/pnp/* ; do
if [ -r $file ]; then
OUTPUT=`basename $file .gz`
OUTPUT=`basename $OUTPUT .o`
echo -n "$OUTPUT "
fi
done
echo
echo
continue
fi
if [ ! "$INPUT" = "q" -a ! "$INPUT" = "Q" \
-a ! "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "P" \
-a ! "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "p" ]; then
echo "Probing for PCI/EISA network cards:"
for card in \
3c59x acenic de4x5 dgrs eepro100 e1000 e1000e e100 epic100 hp100 ne2k-pci olympic pcnet32 rcpci 8139too 8139cp tulip via-rhine r8169 atl1e sktr yellowfin tg3 dl2k ns83820 \
; do
SKIP=""
if [ "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "S" \
-o "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "s" ]; then
for nogood in `echo $INPUT | crunch | cut -f 2- -d ' '` ; do
if [ "$card" = "$nogood" ]; then
SKIP=$card
fi
done
fi
if [ "$SKIP" = "" ]; then
echo "Probing for card using the $card module..."
modprobe $card 2> /dev/null
grep -q eth0 /proc/net/dev
if [ $? = 0 ]; then
echo
echo "SUCCESS: found card using $card protocol -- modules loaded."
echo "$card" > /cardfound
echo
break
else
modprobe -r $card 2> /dev/null
fi
else
echo "Skipping module $card..."
fi
done
echo
if [ ! -r /cardfound ]; then
# Don't probe for com20020... it loads on any machine with or without the card.
echo "Probing for MCA, ISA, and other PCI network cards:"
# removed because it needs an irq parameter: arlan
# tainted, no autoprobe: (arcnet) com90io com90xx
for card in depca ibmtr 3c501 3c503 3c505 3c507 3c509 3c515 ac3200 \
acenic at1700 cosa cs89x0 de4x5 de600 \
de620 e2100 eepro eexpress es3210 eth16i ewrk3 fmv18x forcedeth hostess_sv11 \
hp-plus hp lne390 ne3210 ni5010 ni52 ni65 sb1000 sealevel smc-ultra \
sis900 smc-ultra32 smc9194 wd ; do
SKIP=""
if [ "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "S" \
-o "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "s" ]; then
for nogood in `echo $INPUT | crunch | cut -f 2- -d ' '` ; do
if [ "$card" = "$nogood" ]; then
SKIP=$card
fi
done
fi
if [ "$SKIP" = "" ]; then
echo "Probing for card using the $card module..."
modprobe $card 2> /dev/null
grep -q eth0 /proc/net/dev
if [ $? = 0 ]; then
echo
echo "SUCCESS: found card using $card protocol -- modules loaded."
echo "$card" > /cardfound
echo
break
else
modprobe -r $card 2> /dev/null
fi
else
echo "Skipping module $card..."
fi
done
echo
fi
if [ ! -r /cardfound ]; then
echo "Sorry, but no network card was detected. Some cards (like non-PCI"
echo "NE2000s) must be supplied with the I/O address to use. If you have"
echo "an NE2000, you can switch to another console (Alt-F2), log in, and"
echo "load it with a command like this:"
echo
echo " modprobe ne io=0x360"
echo
fi
elif [ "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "P" \
-o "`echo $INPUT | crunch | cut -f 1 -d ' '`" = "p" ]; then
echo "Probing for a custom list of modules:"
for card in `echo $INPUT | crunch | cut -f 2- -d ' '` ; do
echo "Probing for card using the $card module..."
modprobe $card 2> /dev/null
grep -q eth0 /proc/net/dev
if [ $? = 0 ]; then
echo
echo "SUCCESS: found card using $card protocol -- modules loaded."
echo "$card" > /cardfound
echo
break
else
modprobe -r $card 2> /dev/null
fi
done
echo
else
echo "Skipping automatic module probe."
echo
fi
# end main loop
break
done
|