bash-2.04$ lssf /dev/dsk/c0t6d0
sdisk card instance 0 SCSI target 6 SCSI LUN 0 section 0 at address 2/0/1.6.0 /dev/dsk/c0t6d0
bash-2.04$ lssf /dev/null
pseudo driver mm minor 0x000002 /dev/null
Утилита ioscan является одной из наиболее полезных утилит для просмотра системной информации. Ее можно использовать для построения аппаратного адреса устройства. В простейшем виде ioscan показывает аппартный путь (адрес), класс устройства и описание. Опции –u (используемые устройства) или –k (структуры ядра) дают быстрый результат без сканирования оборудования.
# /usr/sbin/ioscan
H/W Path Class Description
=============================================
bc
1 graphics Graphics
2 ba Core I/O Adapter
2/0/1 ext_bus Built-in SCSI
2/0/1.2 target
2/0/1.2.0 disk TOSHIBA CD-ROM XM-5401TA
2/0/1.5 target
2/0/1.5.0 disk SEAGATE ST32151N
2/0/1.6 target
2/0/1.6.0 disk SEAGATE ST32151N
2/0/1.7 target
2/0/1.7.0 ctl Initiator
2/0/2 lan Built-in LAN
2/0/4 tty Built-in RS-232C
2/0/6 ext_bus Built-in Parallel Interface
2/0/8 audio Built-in Audio
2/0/10 pc Built-in Floppy Drive
2/0/11 ps2 Built-in Keyboard
4 ba EISA Adapter
5 ba Core I/O Adapter
5/0/1 hil Built-in HIL
5/0/2 tty Built-in RS-232C
8 processor Processor
9 memory Memory
#
Использование ключа –f приводит к выдаче полной информации включая номер интерфейса или интерфейсной карты.
Class I H/W Path Driver S/W State H/W Type Description
================================================================
bc 0 root CLAIMED BUS_NEXUS
graphics 0 1 graph3 CLAIMED INTERFACE Graphics
ba 0 2 bus_adapter CLAIMED BUS_NEXUS Core I/O Adapter
ext_bus 0 2/0/1 c720 CLAIMED INTERFACE Built-in SCSI
target 0 2/0/1.2 tgt CLAIMED DEVICE
disk 0 2/0/1.2.0 sdisk CLAIMED DEVICE TOSHIBA CD-ROM XM-5401TA
target 1 2/0/1.5 tgt CLAIMED DEVICE
disk 1 2/0/1.5.0 sdisk CLAIMED DEVICE SEAGATE ST32151N
target 2 2/0/1.6 tgt CLAIMED DEVICE
disk 2 2/0/1.6.0 sdisk CLAIMED DEVICE SEAGATE ST32151N
target 3 2/0/1.7 tgt CLAIMED DEVICE
ctl 0 2/0/1.7.0 sctl CLAIMED DEVICE Initiator
lan 0 2/0/2 lan2 CLAIMED INTERFACE Built-in LAN
tty 0 2/0/4 asio0 CLAIMED INTERFACE Built-in RS-232C
ext_bus 1 2/0/6 CentIf CLAIMED INTERFACE Built-in Parallel Interface
audio 0 2/0/8 audio CLAIMED INTERFACE Built-in Audio
pc 0 2/0/10 fdc CLAIMED INTERFACE Built-in Floppy Drive
ps2 0 2/0/11 ps2 CLAIMED INTERFACE Built-in Keyboard
ba 2 4 eisa CLAIMED BUS_NEXUS EISA Adapter
ba 1 5 bus_adapter CLAIMED BUS_NEXUS Core I/O Adapter
hil 0 5/0/1 hil CLAIMED INTERFACE Built-in HIL
tty 1 5/0/2 asio0 CLAIMED INTERFACE Built-in RS-232C
processor 0 8 processor CLAIMED PROCESSOR Processor
memory 0 9 memory CLAIMED MEMORY Memory
Использование ключа –n приводит к тому что ioscan дополнительно выдает информацию о файле устройства:
target 0 2/0/1.2 tgt CLAIMED DEVICE
disk 0 2/0/1.2.0 sdisk CLAIMED DEVICE TOSHIBA CD-ROM XM-5401TA
/dev/dsk/c0t2d0 /dev/rdsk/c0t2d0
target 1 2/0/1.5 tgt CLAIMED DEVICE
disk 1 2/0/1.5.0 sdisk CLAIMED DEVICE SEAGATE ST32151N
/dev/dsk/c0t5d0 /dev/rdsk/c0t5d0
В том случае когда драйвер устройства не может быть автоматически сконфигурирован и соответствующий файл устройства оказывается несозданным приходится создавать его вручную с помощью команд mkfs или mknod. Ядро взаимодействует с аппаратным обеспечением ассоциируя имя драйвера и аппаратный адрес. Стандартный интерфейс HP-UX к драйверам поставляется вместе с библиотекой /usr/conf/lib/libhp-ux.a. Ядро распознает интерфейсные драйвера и драйвера устройств через младшие и старшие нгомера “прошитые“ в файлах устройств.
Старший номер (major number)
Старший номер, как уже было сказано раньше является индексом в таблице переключателя устройств ядра. Для нахождения правильного старшего номера можно воспользоваться программой lsdev. Она считывает заголовки и список драйверов сконфигурированных в ядре с ихними блочными и символьными старшими номерами. Номера выводятся в десятичной форме, -1 означает либо то что устройство является модулем, драйвер несконфигурирован либо драйвер не поддерживает какогото из режимов (блочного или символьного).
Младший номер (minor number)
Младший номер определяет собой: расположение устройства и его драйвер-зависимые характеристики. Некоторые примеры младших номеров файлов устройств приведено ниже. Более полную информацию можно почерпнуть из руководства “Configuring HP-UX for Peripherals”.
SCSI Disk device. Рассмотрим что означает младший номер 0x023000 у SCSI устройства.
bits | 8-11 | 12-15 | 16-19 | 20-23 | 24-27 | 28-31 |
Binary | 0000 | 0010 | 0011 | 0000 | 0000 | 0000 |
hex | 0 | 2 | 3 | 0 | 0 | 0 |
0000 0010 Первые восемь бит идентифицируют интерфейс или интерфейсную карту
0011 SCSI адрес диска
оставшиеся биты нулевые.
SCSI ленточный накопитель.
Bits 16-19 | 20-23 | 24-27 | 28-31 | |
Binary | SCSI номер | SCSI LUN | 24 – поведение как у BSD систем при закрытии 25 – без перемотки26 – конфигурационный метод (если 1 то биты от 27 до 31 означают индекс, если 0 то плотность записи)27-31 Индекс/плотность записи |
Создавать файлы устройств можно с помощью команды mknod. Она имеет следующий синтаксис:
mknod file_name [c|b] major minor
например
mknod /dev/null c 3 0x000002
4.8 Инсталирование периферии на примере ленточного накопителя.
Прежде чем перейти к включению ленточного накопителя нужно убедится в том что его SCSI id не совпадает ни с одним из уже установленных устройств (диски, CD-ROM, …). После физического подключения накопителя к SCSI шине необходимо в ядро. В случае использования SAM для этого необходимо войти в раздел Kernel Configuration -> Drivers, в списке драйверов найти stape, и активировать его выбрав опцию Actions -> Adddriver to Kernel. После выхода из окна конфигурации ядра SAM предложит перестроить я дро и перегрузить компьютер, также создаст все необходимые файлы устройств в каталоге /dev/rmt. Все тоже самое можно сделать используя командыв hpux как это было указано выше. В качестве имя драйвера нужно использовать stape.
# cd /stand/build
# /usr/lbin/sysadm/system_prep –v –s system
# vi system
# /usr/sbin/mk_kernel –s system
# mv /stand/system /stand/system.prev
# mv /stand/vmunix /stand/vmunix.prev
# mv /stand/build/system /stand/system.prev
# mv /stand/build/vmunix_test /stand/vmunix
# shutdown –r now
# ioscan –f –C tape
Class I H/W Path Driver S/W State H/W Type Description
================================================================
tape 0 2/0/1.3.0 stape CLAIMED DEVICE HP HP35480A
# lsdev | grep tape
205 -1 stape tape
# mkdir /dev/rmt
# cd /dev/rmt
# mknod 0m c 205 0x003000
# mknod 0mn c 205 0x003040
# mknod 0mnb c 205 0x0030c0
Примечание: младшие номера для файла устройств можно узнать из файла /usr/include/sys/mtio.h (раздел Masks for minor number bits )
4.9 Инсталирование софта
Для работы с программными пакетами существует целая серия команд. Эти команды носят название SD-UX команды. Приведем список основных из них:
swintsall инсталирование программных пакетов
swremove удаление программных пакетов
swlist список инсталированого програмного обеспечения
swacl просмотр и модификация прав для защиты программных компонент
Что такое процесс ?
Процесс это запущенная программа обслуживаемая такими компонентами ядра как планровщик задач и подсистемой управления памятью. Процесс состоит из сегмента кода, данных и стека. С процессом ассоциировано два стека – пользовательский и системный. В дополнение к этому роцесс идентифицируется
· програмными данными (переменные, массивы, записи …)
· номером процесса PID,номером процесса родителя PPID, и номером группы процессов PGID
· идентификатором пользователя и группы PID, GID
· информацией о открытых файлах
· текущей рабочей директорией
Взаимоотношения процессов
Процессы в системе постороены по иерархическому принципу родитель-потомок. Каждый процесс (за исключением init) имеет одного родителя, но каждый родитель может иметь несколько потомков. Процесс потомок наследует окружение родителя (переменные окружения, открытые файлы, рабочую директорию). Все процессы за исключением init, pagedaemon, и
swapper) принадлежат к группам процессов.
Процесс ID и родительский процесс ID.
Во время создания процесса HP-UX назначает ему уникальный номер известный как процесс ID (PID), именно по этому номеру ядро идентифицирует процесс при выполнении системных вызовов. Помомо PID процесс имеет параметр как PPID (PID родителя). Используя программу ps можно посмотреть эти параметры:
$ ps -f
UID PID PPID C STIME TTY TIME COMMAND
torry 3865 3699 2 13:35:43 ttyp3 0:00 ps -f
torry 3699 3698 0 12:58:21 ttyp3 0:00 ksh
Идентификаторы пользователя и группы. (реальные и эффективные)
Помимо PID и PPID процесс имеет еще ряд идентификационных номеров:
* реальный идентификатор пользователя (a real user ID)
* реальный идентификатор группы (a real group ID)
* эффективный идентификатор пользователя (effective user ID)
* эффективный идентификатор группы effective group ID.
Реальный идентификатор пользователя это целое число показывающее владельца процесса. Реальный идентификатор группы это целое число показывающее группу к которой принадлежал пользователь создатель процесса. Комманда id показывает оба этих значения.
%id
uid=513(torry) gid=20(users)
% grep 513 /etc/passwd
torry:EqqHevH:513:20:Torry Ho,[44MY],474-1969 ,:/home/torry:/usr/bin/csh
Эффективный идентификатор пользователя и группы процесса позволяет процессу получать доступ к файлам или выполнять программы как пользователь имеющим ID равным эффективному.Обычно реальный и эффективные идентификаторы процессов совпадают, но не всегда. Когда эффективный идентификатор равен нулю, процесс начинает выполнять системные вызовы как администратор системы.
Эффективный идентификатор пользователя игруппы остаються установленными до:
* окончания процесса.
* пока они не заменяться при выполнении системного вызова exec() программы c
установленными битами setuid или setgid.
* пока эффективный, реальный или сохраненные идентификаторы группы и пользователя не будут установлены системными вызовами setuid(), setgid(), setresuid().
Группы процессов
Каждый процесс за исключением системных процессов таких как init и swapper принадлежат к группе процессов. Когда созхдается задание, шелл присваивает всем процессам в задании одну и туже группу процессов. Сигналы при этом могут распостраняться на все процессы в группе, в этом и заключается преимущество управления заданиями. Каждая группа процессов идентифицируется целым числом которое называется Process Group ID (PGID). PGID у группы процессов равен PID лидера группы – создателя группы. Все процессы в группе имеют одинаковый GID. PGID не может быть использован системой пока живет группа процессов. Время жизни группы процессов определяется как период времени между созданием группы и когда процесс покидает группу. Процесс покидает группу если: