c129d632304c7cd7e181b6b3dd29661462131c3e
[bootmanager.git] / source / steps / InitializeBootManager.py
1 import os
2 import xmlrpclib
3 import socket
4 import string
5
6 from Exceptions import *
7 import utils
8
9
10 # locations of boot os version files
11 BOOT_VERSION_2X_FILE='/usr/bootme/ID'
12 BOOT_VERSION_3X_FILE='/pl_version'
13
14 # minimium version of the boot os we need to run, as a (major,minor) tuple
15 MINIMUM_BOOT_VERSION= (2,0)
16
17 # minimum version of python required to run the boot manager
18 MINIMUM_PYTHON_VERSION= (2,2,0)
19
20
21 def Run( vars, log ):
22     """
23     Setup the boot manager so it can run, do any extra necessary
24     hardware setup (to fix old cd problems)
25
26     Sets the following variables:
27     BOOT_CD_VERSION           A two number tuple of the boot cd version
28     """
29
30     log.write( "\n\nStep: Initializing the BootManager.\n" )
31
32     
33     log.write( "Opening connection to API server\n" )
34     try:
35         api_inst= xmlrpclib.Server( vars['BOOT_API_SERVER'], verbose=0 )
36     except KeyError, e:
37         raise BootManagerException, \
38               "configuration file does not specify API server URL"
39
40     vars['API_SERVER_INST']= api_inst
41
42     if not __check_boot_version( vars, log ):
43         raise BootManagerException, \
44               "Boot CD version insufficient to run the Boot Manager"
45     else:
46         log.write( "Running on boot cd version: %s\n" %
47                    str(vars['BOOT_CD_VERSION']) )
48
49     BOOT_CD_VERSION= vars['BOOT_CD_VERSION']
50     
51     # old cds need extra modules loaded for compaq smart array
52     if BOOT_CD_VERSION[0] == 2:
53
54         has_smartarray= utils.sysexec_noerr(
55             'lspci | egrep "0e11:b178|0e11:4070|0e11:4080|0e11:4082|0e11:4083"')
56         
57         if has_smartarray:
58             log.write( "Loading support for Compaq smart array\n" )
59             utils.sysexec_noerr( "modprobe cciss", log )
60             _create_cciss_dev_entries()
61             
62
63         has_fusion= utils.sysexec_noerr('lspci | egrep "1000:0030"')
64         
65         if has_fusion:
66             log.write( "Loading support for Fusion MPT SCSI controllers\n" )
67             utils.sysexec_noerr( "modprobe mptscsih", log )
68
69     # for anything that needs to know we are running under the boot cd and
70     # not the runtime os
71     os.environ['PL_BOOTCD']= "1"
72         
73     return 1
74
75
76
77 def __check_boot_version( vars, log ):
78     """
79     identify which version of the boot os we are running on, and whether
80     or not we can run at all on the given version. later, this will be
81     used to identify extra packages to download to enable the boot manager
82     to run on any supported version.
83
84     2.x cds have the version file in /usr/bootme/ID, which looked like:
85     'PlanetLab BootCD v2.0.3'
86
87     3.x cds have the version file in /pl_version, which lookes like:
88     'PlanetLab BootCD 3.0-beta0.3'
89
90     All current known version strings that we support:
91     PlanetLab BootCD 3.0
92     PlanetLab BootCD 3.0-beta0.1
93     PlanetLab BootCD 3.0-beta0.3
94     PlanetLab BootCD v2.0
95     PlanetLab BootCD v2.0.1
96     PlanetLab BootCD v2.0.2
97     PlanetLab BootCD v2.0.3
98
99     Returns 1 if the boot os version is identified and will work
100     to run the boot manager. Two class variables are set:
101     BOOT_OS_MAJOR_VERSION
102     BOOT_OS_MINOR_VERSION
103     version strings with three parts parts to the version ignore the
104     middle number (so 2.0.3 is major 2, minor 3)
105
106     Returns 0 if the boot os is insufficient to run the boot manager
107     """
108
109     try:
110         # check for a 3.x version first
111         version_file= file(BOOT_VERSION_3X_FILE,'r')
112         full_version= string.strip(version_file.read())
113         version_file.close()
114
115         version_parts= string.split(full_version)
116         version= version_parts[-1]
117
118         version_numbers= string.split(version,".")
119         if len(version_numbers) == 2:
120             BOOT_OS_MAJOR_VERSION= int(version_numbers[0])
121             BOOT_OS_MINOR_VERSION= int(version_numbers[1])
122         else:
123             # for 3.x cds, if there are more than two parts
124             # separated by a ., its one of the beta cds.
125             # hardcode as a 3.0 cd
126             BOOT_OS_MAJOR_VERSION= 3
127             BOOT_OS_MINOR_VERSION= 0
128
129         vars['BOOT_CD_VERSION']= (BOOT_OS_MAJOR_VERSION,BOOT_OS_MINOR_VERSION)
130         
131         if (BOOT_OS_MAJOR_VERSION,BOOT_OS_MINOR_VERSION) >= \
132                MINIMUM_BOOT_VERSION:
133             return 1
134
135     except IOError, e:
136         pass
137     except IndexError, e:
138         pass
139     except TypeError, e:
140         pass
141
142
143     try:
144         # check for a 2.x version first
145         version_file= file(BOOT_VERSION_2X_FILE,'r')
146         full_version= string.strip(version_file.read())
147         version_file.close()
148
149         version_parts= string.split(full_version)
150         version= version_parts[-1]
151         if version[0] == 'v':
152             version= version[1:]
153
154         version_numbers= string.split(version,".")
155         if len(version_numbers) == 2:
156             BOOT_OS_MAJOR_VERSION= int(version_numbers[0])
157             BOOT_OS_MINOR_VERSION= int(version_numbers[1])
158         else:
159             BOOT_OS_MAJOR_VERSION= int(version_numbers[0])
160             BOOT_OS_MINOR_VERSION= int(version_numbers[2])
161
162         vars['BOOT_CD_VERSION']= (BOOT_OS_MAJOR_VERSION,BOOT_OS_MINOR_VERSION)
163
164         if (BOOT_OS_MAJOR_VERSION,BOOT_OS_MINOR_VERSION) >= \
165            MINIMUM_BOOT_VERSION:
166             return 1
167
168     except IOError, e:
169         pass
170     except IndexError, e:
171         pass
172     except TypeError, e:
173         pass
174
175
176     return 0
177
178
179
180 def _create_cciss_dev_entries():
181     utils.sysexec_noerr( "mknod /dev/cciss/c0d0 b 104 0" )
182     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p1 b 104 1" )
183     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p2 b 104 2" )
184     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p3 b 104 3" )
185     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p4 b 104 4" )
186     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p5 b 104 5" )
187     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p6 b 104 6" )
188     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p7 b 104 7" )
189     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p8 b 104 8" )
190     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p9 b 104 9" )
191     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p10 b 104 10" )
192     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p11 b 104 11" )
193     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p12 b 104 12" )
194     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p13 b 104 13" )
195     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p14 b 104 14" )
196     utils.sysexec_noerr( "mknod /dev/cciss/c0d0p15 b 104 15" )
197     utils.sysexec_noerr( "mknod /dev/cciss/c0d1 b 104 16" )
198     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p1 b 104 17" )
199     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p2 b 104 18" )
200     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p3 b 104 19" )
201     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p4 b 104 20" )
202     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p5 b 104 21" )
203     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p6 b 104 22" )
204     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p7 b 104 23" )
205     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p8 b 104 24" )
206     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p9 b 104 25" )
207     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p10 b 104 26" )
208     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p11 b 104 27" )
209     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p12 b 104 28" )
210     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p13 b 104 29" )
211     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p14 b 104 30" )
212     utils.sysexec_noerr( "mknod /dev/cciss/c0d1p15 b 104 31" )
213     utils.sysexec_noerr( "mknod /dev/cciss/c0d2 b 104 32" )
214     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p1 b 104 33" )
215     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p2 b 104 34" )
216     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p3 b 104 35" )
217     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p4 b 104 36" )
218     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p5 b 104 37" )
219     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p6 b 104 38" )
220     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p7 b 104 39" )
221     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p8 b 104 40" )
222     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p9 b 104 41" )
223     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p10 b 104 42" )
224     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p11 b 104 43" )
225     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p12 b 104 44" )
226     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p13 b 104 45" )
227     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p14 b 104 46" )
228     utils.sysexec_noerr( "mknod /dev/cciss/c0d2p15 b 104 47" )
229     utils.sysexec_noerr( "mknod /dev/cciss/c0d3 b 104 48" )
230     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p1 b 104 49" )
231     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p2 b 104 50" )
232     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p3 b 104 51" )
233     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p4 b 104 52" )
234     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p5 b 104 53" )
235     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p6 b 104 54" )
236     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p7 b 104 55" )
237     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p8 b 104 56" )
238     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p9 b 104 57" )
239     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p10 b 104 58" )
240     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p11 b 104 59" )
241     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p12 b 104 60" )
242     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p13 b 104 61" )
243     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p14 b 104 62" )
244     utils.sysexec_noerr( "mknod /dev/cciss/c0d3p15 b 104 63" )
245     utils.sysexec_noerr( "mknod /dev/cciss/c0d4 b 104 64" )
246     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p1 b 104 65" )
247     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p2 b 104 66" )
248     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p3 b 104 67" )
249     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p4 b 104 68" )
250     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p5 b 104 69" )
251     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p6 b 104 70" )
252     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p7 b 104 71" )
253     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p8 b 104 72" )
254     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p9 b 104 73" )
255     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p10 b 104 74" )
256     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p11 b 104 75" )
257     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p12 b 104 76" )
258     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p13 b 104 77" )
259     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p14 b 104 78" )
260     utils.sysexec_noerr( "mknod /dev/cciss/c0d4p15 b 104 79" )
261     utils.sysexec_noerr( "mknod /dev/cciss/c0d5 b 104 80" )
262     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p1 b 104 81" )
263     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p2 b 104 82" )
264     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p3 b 104 83" )
265     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p4 b 104 84" )
266     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p5 b 104 85" )
267     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p6 b 104 86" )
268     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p7 b 104 87" )
269     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p8 b 104 88" )
270     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p9 b 104 89" )
271     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p10 b 104 90" )
272     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p11 b 104 91" )
273     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p12 b 104 92" )
274     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p13 b 104 93" )
275     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p14 b 104 94" )
276     utils.sysexec_noerr( "mknod /dev/cciss/c0d5p15 b 104 95" )
277     utils.sysexec_noerr( "mknod /dev/cciss/c0d6 b 104 96" )
278     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p1 b 104 97" )
279     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p2 b 104 98" )
280     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p3 b 104 99" )
281     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p4 b 104 100" )
282     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p5 b 104 101" )
283     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p6 b 104 102" )
284     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p7 b 104 103" )
285     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p8 b 104 104" )
286     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p9 b 104 105" )
287     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p10 b 104 106" )
288     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p11 b 104 107" )
289     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p12 b 104 108" )
290     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p13 b 104 109" )
291     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p14 b 104 110" )
292     utils.sysexec_noerr( "mknod /dev/cciss/c0d6p15 b 104 111" )
293     utils.sysexec_noerr( "mknod /dev/cciss/c0d7 b 104 112" )
294     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p1 b 104 113" )
295     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p2 b 104 114" )
296     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p3 b 104 115" )
297     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p4 b 104 116" )
298     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p5 b 104 117" )
299     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p6 b 104 118" )
300     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p7 b 104 119" )
301     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p8 b 104 120" )
302     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p9 b 104 121" )
303     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p10 b 104 122" )
304     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p11 b 104 123" )
305     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p12 b 104 124" )
306     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p13 b 104 125" )
307     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p14 b 104 126" )
308     utils.sysexec_noerr( "mknod /dev/cciss/c0d7p15 b 104 127" )
309     utils.sysexec_noerr( "mknod /dev/cciss/c0d8 b 104 128" )
310     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p1 b 104 129" )
311     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p2 b 104 130" )
312     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p3 b 104 131" )
313     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p4 b 104 132" )
314     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p5 b 104 133" )
315     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p6 b 104 134" )
316     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p7 b 104 135" )
317     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p8 b 104 136" )
318     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p9 b 104 137" )
319     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p10 b 104 138" )
320     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p11 b 104 139" )
321     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p12 b 104 140" )
322     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p13 b 104 141" )
323     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p14 b 104 142" )
324     utils.sysexec_noerr( "mknod /dev/cciss/c0d8p15 b 104 143" )
325     utils.sysexec_noerr( "mknod /dev/cciss/c0d9 b 104 144" )
326     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p1 b 104 145" )
327     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p2 b 104 146" )
328     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p3 b 104 147" )
329     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p4 b 104 148" )
330     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p5 b 104 149" )
331     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p6 b 104 150" )
332     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p7 b 104 151" )
333     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p8 b 104 152" )
334     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p9 b 104 153" )
335     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p10 b 104 154" )
336     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p11 b 104 155" )
337     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p12 b 104 156" )
338     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p13 b 104 157" )
339     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p14 b 104 158" )
340     utils.sysexec_noerr( "mknod /dev/cciss/c0d9p15 b 104 159" )
341     utils.sysexec_noerr( "mknod /dev/cciss/c0d10 b 104 160" )
342     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p1 b 104 161" )
343     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p2 b 104 162" )
344     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p3 b 104 163" )
345     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p4 b 104 164" )
346     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p5 b 104 165" )
347     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p6 b 104 166" )
348     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p7 b 104 167" )
349     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p8 b 104 168" )
350     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p9 b 104 169" )
351     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p10 b 104 170" )
352     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p11 b 104 171" )
353     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p12 b 104 172" )
354     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p13 b 104 173" )
355     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p14 b 104 174" )
356     utils.sysexec_noerr( "mknod /dev/cciss/c0d10p15 b 104 175" )
357     utils.sysexec_noerr( "mknod /dev/cciss/c0d11 b 104 176" )
358     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p1 b 104 177" )
359     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p2 b 104 178" )
360     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p3 b 104 179" )
361     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p4 b 104 180" )
362     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p5 b 104 181" )
363     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p6 b 104 182" )
364     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p7 b 104 183" )
365     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p8 b 104 184" )
366     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p9 b 104 185" )
367     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p10 b 104 186" )
368     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p11 b 104 187" )
369     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p12 b 104 188" )
370     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p13 b 104 189" )
371     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p14 b 104 190" )
372     utils.sysexec_noerr( "mknod /dev/cciss/c0d11p15 b 104 191" )
373     utils.sysexec_noerr( "mknod /dev/cciss/c0d12 b 104 192" )
374     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p1 b 104 193" )
375     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p2 b 104 194" )
376     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p3 b 104 195" )
377     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p4 b 104 196" )
378     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p5 b 104 197" )
379     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p6 b 104 198" )
380     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p7 b 104 199" )
381     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p8 b 104 200" )
382     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p9 b 104 201" )
383     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p10 b 104 202" )
384     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p11 b 104 203" )
385     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p12 b 104 204" )
386     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p13 b 104 205" )
387     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p14 b 104 206" )
388     utils.sysexec_noerr( "mknod /dev/cciss/c0d12p15 b 104 207" )
389     utils.sysexec_noerr( "mknod /dev/cciss/c0d13 b 104 208" )
390     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p1 b 104 209" )
391     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p2 b 104 210" )
392     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p3 b 104 211" )
393     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p4 b 104 212" )
394     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p5 b 104 213" )
395     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p6 b 104 214" )
396     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p7 b 104 215" )
397     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p8 b 104 216" )
398     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p9 b 104 217" )
399     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p10 b 104 218" )
400     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p11 b 104 219" )
401     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p12 b 104 220" )
402     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p13 b 104 221" )
403     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p14 b 104 222" )
404     utils.sysexec_noerr( "mknod /dev/cciss/c0d13p15 b 104 223" )
405     utils.sysexec_noerr( "mknod /dev/cciss/c0d14 b 104 224" )
406     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p1 b 104 225" )
407     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p2 b 104 226" )
408     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p3 b 104 227" )
409     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p4 b 104 228" )
410     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p5 b 104 229" )
411     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p6 b 104 230" )
412     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p7 b 104 231" )
413     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p8 b 104 232" )
414     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p9 b 104 233" )
415     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p10 b 104 234" )
416     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p11 b 104 235" )
417     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p12 b 104 236" )
418     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p13 b 104 237" )
419     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p14 b 104 238" )
420     utils.sysexec_noerr( "mknod /dev/cciss/c0d14p15 b 104 239" )
421     utils.sysexec_noerr( "mknod /dev/cciss/c0d15 b 104 240" )
422     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p1 b 104 241" )
423     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p2 b 104 242" )
424     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p3 b 104 243" )
425     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p4 b 104 244" )
426     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p5 b 104 245" )
427     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p6 b 104 246" )
428     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p7 b 104 247" )
429     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p8 b 104 248" )
430     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p9 b 104 249" )
431     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p10 b 104 250" )
432     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p11 b 104 251" )
433     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p12 b 104 252" )
434     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p13 b 104 253" )
435     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p14 b 104 254" )
436     utils.sysexec_noerr( "mknod /dev/cciss/c0d15p15 b 104 255" )
437
438
439