summaryrefslogtreecommitdiffstats
path: root/source/installer/sources/initrd/usr/lib/setup/INSCD
blob: 42610aa1884bb48180763c707d57550adc46526e (plain) (blame)
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
#!/bin/sh
# FIXME: UDF fs support?
RDIR=/dev/tty4
NDIR=/dev/null
TMP=/var/log/setup/tmp
if [ ! -d $TMP ]; then
  mkdir -p $TMP
fi
T_PX="`cat $TMP/SeTT_PX`"
rm -f $TMP/SeTmount $TMP/SeTDS $TMP/SeTCDdev $TMP/reply

dialog --title "SCANNING FOR CD or DVD DRIVE" --menu \
"Make sure the Slackware disc is in your CD/DVD drive, \
and then press ENTER to begin the scanning process. \
Or, if you'd rather specify the device name manually \
(experts only), choose that option below." \
11 72 2 \
"auto" "Scan for the CD or DVD drive (recommended)" \
"manual" "Manually specify CD or DVD by device name" \
2> $TMP/reply
if [ ! -r $TMP/reply ]; then
 # cancel or esc
 rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
 exit
fi

if [ "`cat $TMP/reply`" = "manual" ]; then
 dialog --title "MANUAL CD/DVD DEVICE SELECTION" --menu \
 "Please select your CD/DVD device from the list below. \
If you don't see your device listed, choose 'custom'. \
This will let you type in any device name. (and if necessary, \
will create the device)" \
 18 70 9 \
 "custom" "Type in the CD or DVD device to use" \
 "/dev/sr0" "First CD/DVD drive" \
 "/dev/sr1" "Second CD/DVD drive" \
 "/dev/sr2" "Third CD/DVD drive" \
 "/dev/sr3" "Fourth CD/DVD drive" \
 "/dev/hdb" "CD/DVD slave on first IDE bus" \
 "/dev/hda" "CD/DVD master on first IDE bus (unlikely)" \
 "/dev/hdc" "CD/DVD master on second IDE bus" \
 "/dev/hdd" "CD/DVD slave on second IDE bus" \
 "/dev/hde" "CD/DVD master on third IDE bus" \
 "/dev/hdf" "CD/DVD slave on third IDE bus" \
 "/dev/hdg" "CD/DVD master on fourth IDE bus" \
 "/dev/hdh" "CD/DVD slave on fourth IDE bus" \
 "/dev/pcd0" "First parallel port ATAPI CD" \
 "/dev/pcd1" "Second parallel port ATAPI CD" \
 "/dev/pcd2" "Third parallel port ATAPI CD" \
 "/dev/pcd3" "Fourth parallel port ATAPI CD" \
 "/dev/aztcd" "Non-IDE Aztech CD/DVD" \
 "/dev/cdu535" "Sony CDU-535 CD/DVD" \
 "/dev/gscd" "Non-IDE GoldStar CD/DVD" \
 "/dev/sonycd" "Sony CDU-31a CD/DVD" \
 "/dev/optcd" "Optics Storage CD/DVD" \
 "/dev/sjcd" "Sanyo non-IDE CD/DVD" \
 "/dev/mcdx0" "Non-IDE Mitsumi drive 1" \
 "/dev/mcdx1" "Non-IDE Mitsumi drive 2" \
 "/dev/sbpcd" "Old non-IDE SoundBlaster CD/DVD" \
 "/dev/cm205cd" "Philips LMS CM-205 CD/DVD" \
 "/dev/cm206cd" "Philips LMS CM-206 CD/DVD" \
 "/dev/mcd" "Old non-IDE Mitsumi CD/DVD" \
 2> $TMP/reply
 if [ ! -r $TMP/reply ]; then
  # cancel or esc
  rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
  exit
 fi
 REPLY="`cat $TMP/reply`"
 if [ "$REPLY" = "custom" ]; then
  dialog --title "ENTER CD/DVD DEVICE MANUALLY" --inputbox \
"Please enter the name of the CD/DVD device (such as /dev/hdc) that \
you wish to use to mount the Slackware CD/DVD:" \
9 70 2> $TMP/reply
  if [ ! -r $TMP/reply ]; then
   # cancel or esc
   rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
   exit
  fi
  DRIVE_FOUND="`cat $TMP/reply`"
  if [ ! -r $DRIVE_FOUND ]; then # no such device
   rm -f $TMP/majorminor
   dialog --title "MKNOD CD/DVD DEVICE" --inputbox \
   "There doesn't seem to be a device by the name of $DRIVE_FOUND in the \
/dev directory, so we will have to create it using the major and minor \
numbers for the device. If you're using a bootdisk with a custom CD/DVD \
driver on it, you should be able to find these numbers in the \
documentation. Also, see the 'devices.txt' file that comes with the \
Linux kernel source. If you don't know the numbers, you'll have to hit \
Esc to abort. Enter the major and minor numbers for the new device, \
separated by one space:" \
   15 72 2> $TMP/majorminor
   if [ ! -r $TMP/majorminor ]; then
    # cancel or esc
    rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
    exit
   fi
   MAJOR="`cat $TMP/majorminor`"
   dialog --title "MAKING DEVICE IN /dev" --infobox \
   "mknod $DRIVE_FOUND b $MAJOR" 3 40
   mknod $DRIVE_FOUND b $MAJOR 2> $RDIR
   sleep 1
   if [ ! -r $DRIVE_FOUND ]; then
    dialog --title "MKNOD FAILED" --msgbox \
    "Sorry, but the mknod command failed to make the device.  You'll need to \
go back and try selecting your source media again. Press ENTER to abort \
the source media selection process." 8 60
    rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
    exit
   fi
  fi
 else
  DRIVE_FOUND=$REPLY
 fi
fi

# Search for SCSI/PATA/SATA CD/DVD drives:
if [ "$DRIVE_FOUND" = "" ]; then
 dialog --title "SCANNING" --infobox "Scanning for a \
CD/DVD drive containing a Slackware disc..." 4 50
 sleep 1
 for device in \
  /dev/sr0 /dev/sr1 /dev/sr2 /dev/sr3 \
  ; do
  mount -o ro -t iso9660 $device /var/log/mount 1> $RDIR 2> $RDIR
  if [ $? = 0 ]; then
   DRIVE_FOUND=$device
   umount /var/log/mount
   break
  fi
 done
fi

# Search the old IDE interfaces:
if [ "$DRIVE_FOUND" = "" ]; then
 dialog --title "SCANNING" --infobox "Scanning for an IDE \
CD/DVD drive containing a Slackware disc..." 4 56
 sleep 1
 for device in \
  /dev/hdd /dev/hdc /dev/hdb /dev/hda \
  /dev/hde /dev/hdf /dev/hdg /dev/hdh \
  /dev/hdi /dev/hdj /dev/hdk /dev/hdl \
  /dev/hdm /dev/hdn /dev/hdo /dev/hdp \
  ; do
  mount -o ro -t iso9660 $device /var/log/mount 1> $RDIR 2> $RDIR
  if [ $? = 0 ]; then
   DRIVE_FOUND=$device
   umount /var/log/mount
   break
  fi
 done
fi

# Search for parallel port ATAPI CD/DVD drives:
if [ "$DRIVE_FOUND" = "" ]; then
 dialog --title "SCANNING" --infobox "Scanning for a parallel port \
ATAPI CD/DVD drive containing a Slackware disc..." 4 52
 sleep 1
 for device in \
  /dev/pcd0 /dev/pcd1 /dev/pcd2 /dev/pcd3 \
  ; do
  mount -o ro -t iso9660 $device /var/log/mount 1> $RDIR 2> $RDIR
  if [ $? = 0 ]; then
   DRIVE_FOUND=$device
   umount /var/log/mount
   break
  fi
 done
fi

# Still not found? OK, we will search for CD/DVD drives on old, pre-ATAPI
# proprietary interfaces. There aren't too many of these still around, and
# the scan won't actually work unless a bootdisk that supports the drive is
# used, and any necessary parameters have been passed to the kernel.
if [ "$DRIVE_FOUND" = "" ]; then
 dialog --title "SCANNING" --msgbox "No IDE/SCSI drive, so we will try \
scanning for CD drives on \
old proprietary interfaces, such as SoundBlaster pre-IDE CD drives, \
Sony CDU-31a, Sony 535, old Mitsumi pre-IDE, old Optics, etc. For this \
scan to work at all, you'll need to be using a bootdisk that supports \
your CD drive. Please press ENTER to begin this last-chance scan \
for old, obsolete hardware." 11 60
 for device in \
  /dev/sonycd /dev/gscd /dev/optcd /dev/sjcd /dev/mcdx0 /dev/mcdx1 \
  /dev/cdu535 /dev/sbpcd /dev/aztcd /dev/cm205cd /dev/cm206cd \
  /dev/bpcd /dev/mcd \
  ; do
  mount -o ro -t iso9660 $device /var/log/mount 1> $RDIR 2> $RDIR
  if [ $? = 0 ]; then
   DRIVE_FOUND=$device
   umount /var/log/mount
   break
  fi
 done
fi

if [ "$DRIVE_FOUND" = "" ]; then
 dialog --title "CD/DVD DRIVE NOT FOUND" --msgbox \
 "A CD/DVD drive could not be found on any of the devices that were \
scanned. Possible reasons include using a bootdisk or kernel that \
doesn't support your drive, failing to pass parameters needed by some \
drives to the kernel, not having the Slackware disc in your CD/DVD \
drive, or using a drive connected to a Plug and Play soundcard (in this \
case, connecting the drive directly to the IDE interface often helps). \
Please make sure you are using the correct bootdisk for your hardware, \
consult the BOOTING file for possible information on \
forcing the detection of your drive, and then reattempt installation. \
If all else fails, see FAQ.TXT for information about copying \
parts of this CD to your DOS partition and installing it from there.\n\
\n\
You will now be returned to the main menu. If you want to try looking \
for the CD again, you may skip directly to the SOURCE menu selection." \
 0 0
 rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
 exit
fi

while [ 0 ]; do # time to try to mount the CD/DVD device:
 mount -o ro -t iso9660 $DRIVE_FOUND /var/log/mount 1> $RDIR 2> $RDIR
 if [ $? = 0 ]; then # mounted successfully
  dialog --title "CD/DVD DRIVE FOUND" --sleep 1 --infobox \
  "A Slackware disc was found in device $DRIVE_FOUND." 3 52
  break
 else # failed to mount
  dialog --title "MOUNT ERROR" --menu "There was an error \
attempting to mount the CD/DVD on $DRIVE_FOUND.  \
Maybe the device name is incorrect, the disc is not in the \
drive, or the kernel you are using does not support the \
device. (possibly an incorrect bootdisk) \
What would you like to do now?" \
  13 70 3 \
  "1" "Abort CD installation" \
  "2" "Attempt to mount the CD/DVD device again" \
  "3" "Ignore the error and continue" 2> $TMP/errordo
  if [ ! $? = 0 ]; then
   rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev $TMP/errordo
   exit;
  fi
  DOWHAT="`cat $TMP/errordo`"
  rm -f $TMP/errordo
  if [ $DOWHAT = 1 ]; then
   rm -f $TMP/SeTDS $TMP/SeTmount $TMP/SeTCDdev
   exit
  elif [ $DOWHAT = 2 ]; then
   dialog --title "ATTEMPTING TO MOUNT CD/DVD on $DRIVE_FOUND" \
   --infobox "Attempting to mount your CD/DVD again with the \
following command: mount -o ro -t iso9660 $DRIVE_FOUND \
/var/log/mount" 4 69 
   umount /var/log/mount 1> $NDIR 2> $NDIR
   sleep 1
  elif [ $DOWHAT = 3 ]; then
   # Ignore error, really bad plan but whatever
   break
  fi
 fi
done
# since we should have mounted successfully, let's refresh 
# the link for /dev/cdrom on the target partition:
if [ ! -d $T_PX/dev ]; then
 mkdir $T_PX/dev
 chown root.root $T_PX/dev
 chmod 755 $T_PX/dev
fi
( cd $T_PX/dev ; ln -sf $DRIVE_FOUND cdrom )

# Pass information about the source directory to the next install stage:
echo "/var/log/mount/slackware" > $TMP/SeTDS
echo "-source_mounted" > $TMP/SeTmount
echo "$DRIVE_FOUND" > $TMP/SeTCDdev
echo "/dev/null" > $TMP/SeTsource