64 lines
1.9 KiB
Bash
Executable File
64 lines
1.9 KiB
Bash
Executable File
#!/sbin/ksh
|
|
|
|
# done as a function for clarity, and so code can be reverted to
|
|
# use real mknod for testing or other reasons. install is used
|
|
# because it will not remake devices if they are already correct,
|
|
# and will preserve local modifications to ownership and modes.
|
|
mknod()
|
|
{
|
|
install -root "" -rawidb "" -f . -m 600 -chr $3,$4 $1
|
|
}
|
|
|
|
mk_ctlrnumber()
|
|
{
|
|
# construct scsi controller number part of minor number from hinv info
|
|
number=$(( ($1 / 10) * 8 + $1 % 10))
|
|
}
|
|
|
|
set +e; /sbin/hinv | \
|
|
sed -n -e '/^Integral SCSI controller /'p -e '/^GIO SCSI controller /'p | \
|
|
sed 's/://g' | \
|
|
while read a scsi c ctlr d ; do
|
|
mk_ctlrnumber $ctlr
|
|
mknod scsi/bus$ctlr c 5 $number
|
|
for targ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
|
|
for lun in 0; do
|
|
min=$(( 128 * $number + 16 * $lun + $targ))
|
|
mknod scsi/sc${ctlr}d${targ}l$lun c ${C_SCSI} $min
|
|
done;
|
|
done;
|
|
set +e;
|
|
done
|
|
|
|
/sbin/hinv | grep lun | grep -v "PC Card" | grep -v "RAID" | sed 's/://g' | sed 's/,//g' | \
|
|
while read nm un targ l lun on scsi c ctlr rest; do
|
|
mk_ctlrnumber $ctlr
|
|
min=$(( 128 * $number + 16 * $lun + $targ));
|
|
mknod scsi/sc${ctlr}d${targ}l${lun} c ${C_SCSI} $min
|
|
done
|
|
|
|
/sbin/hinv | grep 'PC Card.*lun' | sed 's/://g' | sed 's/,//g' | \
|
|
while read nm1 nm2 un targ l lun on scsi c ctlr rest; do
|
|
mk_ctlrnumber $ctlr
|
|
min=$(( 128 * $number + 16 * $lun + $targ))
|
|
mknod scsi/sc${ctlr}d${targ}l${lun} c ${C_SCSI} $min
|
|
done
|
|
|
|
/sbin/hinv -c scsi | grep "RAID controller" | sed 's/://g' | \
|
|
while read raid cntr un targ on scsi c ctlr rest; do
|
|
for lun in 1 2 3 4 5 6 7; do
|
|
mk_ctlrnumber $ctlr
|
|
min=$(( 128 * $number + 16 * $lun + $targ))
|
|
mknod scsi/sc${ctlr}d${targ}l${lun} c ${C_SCSI} $min
|
|
done
|
|
done
|
|
|
|
/sbin/hinv | sed 's/://g' | while read type unit ID on SCSI controller CTLR; do
|
|
if [ "$type" = CDROM: ]; then
|
|
mk_ctlrnumber $CTLR
|
|
lun=0 min=$(( 128 * $number + 16 * $lun + $ID))
|
|
mknod abi/cd_iso c ${C_SCSI} $min
|
|
break
|
|
fi
|
|
done
|