В руководстве по переходу к Solaris я обнаружил следующее:
"Имена экземпляров
Имена экземпляров относятся к n-му устройству в системе (например, sd20).
Имена экземпляров иногда сообщаются в сообщениях об ошибках драйвера. Вы можете определить привязку имени экземпляра к физическому имени, просмотрев вывод dmesg(1M)
, как в следующем примере.
sd9 at esp2: target 1 lun 1
sd9 is /sbus@1,f8000000/esp@0,800000/sd@1,0
<SUN0424 cyl 1151 alt 2 hd 9 sec 80>
Как только имя экземпляра назначено устройству, оно остается связанным с этим устройством.
Номера экземпляров кодируются в младшем номере устройства. Чтобы поддерживать постоянство номеров экземпляров при перезагрузке, система записывает их в файл / etc / path_to_inst. Этот файл доступен только для чтения во время загрузки и в настоящее время обновляется add_drv(1M)
и drvconf
"
Итак, основываясь на этом, я написал следующий сценарий:
для устройства в / dev / dsk / * s2
сделать
dpath="$(ls -l $device | nawk '{print $11}')"
dpath="${dpath#*devices/}"
dpath="${dpath%:*}"
iname="$(nawk -v dpath=$dpath '{
if ($0 ~ dpath) {
gsub("\"", "", $3)
print $3 $2
}
}' /etc/path_to_inst)"
echo "$(basename ${device}) = ${iname}"
сделано
By reading the information directly out of the path_to_inst file, we are allowing for adding and deleting devices, which will skew the instance numbers if you simply count the instances in the /devices directory tree.