92 lines
3.1 KiB
Bash
Executable File
92 lines
3.1 KiB
Bash
Executable File
#!/sbin/ksh
|
|
|
|
mk_ctlrnumber()
|
|
{
|
|
# construct scsi controller number part of minor number from hinv info
|
|
number=$(( ($1 / 10) * 8 + $1 % 10))
|
|
}
|
|
|
|
# A function for clarity. install is used because it will not
|
|
# remake devices if they are already correct (saving time)
|
|
# and will preserve local modifications to ownership and modes.
|
|
mknod()
|
|
{
|
|
if [ $2 = c ]; then typ=-chr; else typ=-blk; fi
|
|
install -root "" -rawidb "" -f . -m 600 $typ $3,$4 $1
|
|
}
|
|
|
|
/sbin/hinv | \
|
|
sed -n -e '/^Integral SCSI controller /'p -e '/^GIO SCSI controller /'p | \
|
|
sed 's/://g' | \
|
|
while read a b c ctlr d ; do
|
|
mk_ctlrnumber $ctlr
|
|
for targ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
|
|
for i in 0 1 6 7 15; do
|
|
minor=$(( $i + $targ * 16 + $number * 256));
|
|
mknod dsk/dks${ctlr}d${targ}s$i b ${B_DKS} $minor &
|
|
mknod rdsk/dks${ctlr}d${targ}s$i c ${C_DKS} $minor &
|
|
done;
|
|
minor=$(( 8 + $targ * 16 + $number * 256));
|
|
mknod rdsk/dks${ctlr}d${targ}vh c ${C_DKS} $minor &
|
|
minor=$(( 10 + $targ * 16 + $number * 256));
|
|
mknod rdsk/dks${ctlr}d${targ}vol c ${C_DKS} $minor &
|
|
wait;
|
|
done;
|
|
done
|
|
|
|
/sbin/hinv -c disk | grep lun | egrep 'Disk|PC Card' | sed 's/[:,]//g' | \
|
|
while read a b c targ l lun d e f ctlr g; do
|
|
mk_ctlrnumber $ctlr
|
|
for i in 0 1 6 7 15; do
|
|
minor=$(( $i + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod dsk/dks${ctlr}d${targ}l${lun}s$i b ${B_DKS} $minor &
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}s$i c ${C_DKS} $minor &
|
|
done;
|
|
minor=$(( 8 + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}vh c ${C_DKS} $minor &
|
|
minor=$(( 10 + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}vol c ${C_DKS} $minor &
|
|
wait;
|
|
done
|
|
|
|
/sbin/hinv -c scsi | grep "RAID controller" | sed 's/://g' | \
|
|
while read a b c targ d e f ctlr g; do
|
|
mk_ctlrnumber $ctlr
|
|
for lun in 0 1 2 3 4 5; do
|
|
for i in 0 1 6 7 15; do
|
|
minor=$(( $i + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod dsk/dks${ctlr}d${targ}l${lun}s$i b ${B_DKS} $minor &
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}s$i c ${C_DKS} $minor &
|
|
done;
|
|
minor=$(( 8 + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}vh c ${C_DKS} $minor &
|
|
minor=$(( 10 + $targ * 16 + $number * 256));
|
|
minor=$(( $minor + $lun * 32768));
|
|
mknod rdsk/dks${ctlr}d${targ}l${lun}vol c ${C_DKS} $minor &
|
|
wait;
|
|
done;
|
|
done
|
|
|
|
# Only make RAID nodes for those devices that are attached and turned on.
|
|
/sbin/hinv -c disk | grep '^Disk drive: .* on SCSI controller .*: RAID$' | \
|
|
sed 's/://g' | \
|
|
while read a b c targ d e f ctlr g ; do
|
|
mk_ctlrnumber $ctlr
|
|
mid=dks${ctlr}d${targ};
|
|
for i in 0 1 2 6 7 15; do
|
|
minor=$(( $targ * 16 + $number * 256 + $i));
|
|
mknod rad${ctlr}d${targ}s$i b ${B_RAD} $minor &
|
|
mknod rad${ctlr}d${targ}s$i c ${C_RAD} $minor &
|
|
done;
|
|
minor=$(( $targ * 16 + $number * 256 + 8));
|
|
mknod rad${ctlr}d${targ}vh c ${C_RAD} $minor &
|
|
minor=$(( $targ * 16 + $number * 256 + 10));
|
|
mknod rad${ctlr}d${targ}vol c ${C_RAD} $minor &
|
|
wait;
|
|
done
|