Введение в системное администрирование Unix

Начальная загрузка операционной системы

Показывать лекцию целиком

Boot-процедура

Boot, bootstrapping - слова, обозначающие сейчас "Загрузить/пнуть, процесс начальной загрузки", на самом деле произошли из английской фразы "Pull itself up by its own boot straps" (Поднять себя за шнурки собственных ботинок)

Начинается все с Boot-prom'a - небольшой программы, которая хранится в нестираемой памяти компьютера и начинает выполняться сразу после включения.

Естественно, boot-prom умеет делать многое: форматировать диски, инсталлировать операционную систему, запускать тесты hardware. Однако главное его предназначение - найти на диске и запустить на выполнение файл /unix - ядро операционной системы. И своего собственного разума на это ему обычно не хватает, поэтому он в первую очередь загружает с жесткого диска "загрузчика операционной системы", а уж тот делает все остальное.

SUN

Boot-prom загружает "BOOT BLOCKS" - 1-ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ. "boot-blocks" расположены в 1-15 секторах раздела, содержащего корневую файловую систему "/". Обычно корневая файловая система располагается на разделе номер 0.

"Boot- blocks" можно записать на корневой раздел загрузочного диска (обычно это внутренний диск со SCSI-номером 3) командой installboot. Для этого выполняется что-нибудь такое:

installboot /dev/rdsk/c0t3d0s0

Boot-blocks "умеет читать" формат файловой системы unix - ufs . Он находит на корневой файловой системе файл "/ufsboot" - 2-Ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ - и загружает ее.

/ufsboot находит ядро /kernel/unix и загружает его.

Ядро Unix загружается в оперативную память. Затем подключает дополнительные загружаемые модули с драверами устройств. Как только ядро "набирает" достаточное количество драверов, чтобы самостоятельно смонтировать корневую файловую систему, оно тут же это и делает, после чего начинает действовать самостоятельно, не используя кода начальных загрузчиков.

Перехват в boot-prompt:

STOP+A

Загрузка в single user:

bo: boot -s

Motorola 922

Boot-prom загружает с диска ЗАГРУЗЧИК - файл /stand/boot, Загрузчик загружает ядро /stand/unix

Поскольку boot-prom не в состоянии вместить кода для работы со стандартной unix'овской файловой системой, файлы unix и boot лежат в отдельном разделе жесткого диска - разделе /stand. На нем создана "ОЧЕНЬ ПРОСТАЯ ФАЙЛОВАЯ СИСТЕМА" bfs (Boot File System), чтобы boot-prom'у было полегче найти и считать с диска загрузочные файлы.

Перехват в boot-prompt:

После того как на консоли появится сообщение: "Idle MPU: none" нажать клавишу ПРОБЕЛ

Загрузка в single user:

Во время начальной загрузки на несколько секунд появляется приглашение: "Press _что-то_to enter system_maintence. Нажать требуемую клавишу

Linux

BIOS загружает блок начальной загрузки активного раздела.

Он грузит загрузчик LILO (LInux LOader). Lilo загружает файл /vmlinuz

Параметры начальной загрузки записываются в файле /etc/lilo.conf После любых изменений в этом файле необходимо выполнить команду

lilo

Перехват в Lilo-prompt:

Left_ALT сразу после появления сообщения "Lilo ..."

Загрузка в single user:

Lilo: linux root=/dev/hda2 single

Загрузка в еще более single user:

Lilo: linux init=/bin/sh
 mount -n -o remount /dev/hda2 /
 insmod de4x5
 ifconfig eth0 195.232.171.30
 route add -net 195.232.171.0 gw 195.232.171.30
 insmod nfs

HP-UX

В ПЗУ HP 9000 проживает "PDC" - "Processor Dependent Code" - чтоб поговорить с ним, надо нажать клавишу ESC в первые секунды загрузки.

На загрузочном диске есть Boot-раздел формата LIF (линейная файловая система) В LIF-томе 4 "файла"

  • ISL - "операционная" программа
  • HPUX - собственно загрузчик ядра
  • AUTOBOOT - текстовый файл, в котором написано имя ядра по умолчанию
  • Итак: PDS вызывает ISL командой

    bo scsi.6.0 isl

    ISL загружает ядро командой

    hpux /stand/vmunix

    Перехват в PDC-prompt:

    Нажать ESC в первые 10 секунд

    Загрузка в single user:

    PDC> bo pri isl
    ISL> hpux -is /stand/vmunix

    HP-UX: GSP/MP - удаленный доступ к консоли

    Плата для внешнего управления аппаратурой и доступа к консоли:

  • GSP - Guardian Service Processor - в старых (до 2003) серверах
  • MP - Management Processor - в Itanium-серверах
  • предопределенный администраторский логин:

    Admin/Admin

    предопределенный IP:

    GSP - 192.0.0.192/0.0.0.0
    MP - 192.168.1.1/0.0.0.0
    ############ как подключиться к MP с unix-хоста:
    route add 192.0.0.192 {my.own.ip.addres}
    ping 192.0.0.192
    arp -a | grep 192.0.0.192
    arp -s 192.0.0.192 {GSP:ether:net:addres}
    telnet 192.0.0.192

    MP-команды

  • ^E CF - перехват управления на себя (из RO в RW)
  • co - COnsole (переход из console в MP-prompt - ^B)
  • vfp - Virtual Front Panel (^Q,ma - возврат в главное меню)
  • cm - Command Menu
  • cl - Console Log viewer
  • sl - Show chassis Log
  • he - HElp menu
  • x - eXit
  • Процесс init

    Ядро инициализирует себя и после этого запускает процесс init. А init - все остальные процессы, программы, которые необходимы для нормального функционирования операционной системы.

    Все дальнейшие действия в системе определяются этим процессом. Все, что нужно делать init -у, определяет специальная таблица.

    Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ". Уровень выполнения определяет состояние и поведение всей системы. Уровень обозначается цифрой (или буквой) 0,1,2,3,4,5,6,s,S

  • 0 - prom монитор - Полный останов системы;
  • 1, s, S - single user mode. Однопользовательский режим;
  • 2 - многопользовательский режим без NFS-сервера;
  • 3 - многопользовательский режим с NFS-сервером;
  • 6 - перезагрузка;
  • Примерный фрагмент управляющей таблицы /etc/inittab

    bchk::sysinit:/etc/bcheckrc/dev/console 2>1
    brc::sysinit:/etc/brc > /dev/console 2>1
    is:3:initdefault:
    rc:12345:wait:/etc/rc > /dev/console 2>1
    r0:0:wait:/etc/rc0 > /dev/console 2>1
    r2:23:wait:/etc/rc2 > /dev/console 2>1
    r3:3:wait:/etc/rc3 > /dev/console 2>1
    pf:12345:powerfail:/etc/powerfail > /dev/console 2>1
    co:12345:respawn:/etc/sysmonitor console console
    t1:23:respawn:/etc/sysmonitor tty01 9600
    t2:23:off:/etc/sysmonitor tty02 9600

    Формат таблицы:

    ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда
    
    ИМЯ: - просто имя строчки - они все должны быть разными
    вид_действия:

    sysinit запустить один раз после начальной загрузки;

    на соответствующем уровне выполнения:

  • wait - запустить один раз и дожидаться, пока не окончится;
  • respawn - запустить параллельно, а если окончится, перезапускать снова;
  • off - ничего не делать (просто игнорировать эту строку).
  • Если посмотреть внимательно на таблицу, то можно разобраться, что же в действительности происходит при загрузке и откуда берутся все эти загадочные сообщения.

    Сперва init запускает процессы, которые "sysinit"

    Отработав все строки "sysinit" уровня, init идет все дальше по /etc/inittab и обнаруживает строку initdefault 3 - она заставляет его "перейти" на уровень 3.

    Run Command - стандартные RC-каталоги запуска

    Перейдя на уровень выполнения 3, init и отрабатывает первую встретившуюся строчку с уровнем "3" - запускается командный файл /etc/rc2 - загляните в него. Там все просто: /etc/rc2 берет и выполняет командные файлы /etc/rc2.d/S*, лежащие в каталоге /etc/rc2.d. Каждый файл выполняется с параметром "start"

    Отработав /etc/rc2, init точно таким же образом запускает файл /etc/rc3. Вслед за этим он запускает несколько процессов sysmonitor - по одному на каждый имеющийся терминал. Это те самые процессы, которые говорят на терминал: "Login: " Пользователь, войдя на терминал, некоторое время работает, но как только он "уходит" из системы, на указанном терминале ничего не остается. init тут же выполняет действие "respawn" - перезапускает на терминал sysmonitor - и опять жизнерадостное "Login: " появляется на терминале.

    Linux Slackware

    По умолчанию init устанавливает уровень выполнения 5. При начальной загрузке отрабатывается файл

    /etc/rc.d/rc.S

    Затем для перехода в многопользовательский режим

    /etc/rc.d/rc.M

    из которого запускаются файлы

    /etc/rc.d/rc.inet1 устанавливающий сетевые интерфейсы
    /etc/rc.d/rc.inet2 запускающий сетевые сервисы
    /etc/rc.d/rc.local запускающий несколько полезных программ и
     демонов - например, поддержка мыши, httpd,
     русификация консоли и т.п.

    Linux RedHat

    Используется стандартная технология rc-файлов System V

    RC-каталоги:

    /etc/rc.d/rc[0123456].d/
    /etc/rc.d/init.d/

    Конфигурационные параметры для RC-команд:

    /etc/sysconfig/

    HP-UX 10.20

    Не смотря на BSD-евое происхождение, используется стандартная технология rc-файлов System V

    RC-каталоги:

    /sbin/rc[0123].d/
    /sbin/init.d/

    Конфигурационные параметры для RC-команд:

    /etc/rc.defaults.d/

    SVR4: SUN, Motorola

    Используется стандартная технология rc-файлов System V

    RC-каталоги:

    /etc/rc[0123456].d/
    /etc/init.d/

    Unix, базовые принципы и особенности

    Все системные действия выполняет ядро операционной системы Unix. Ядро - обычный выполняемый файл, расположен в файле /unix или /stand/unix или /vmunix или /vmlinuz (в зависимости от конкретной реализации). Можете посмотреть размер этого файла - не маленький. При начальной загрузке системы ядро целиком загружается в оперативнную память и в дальнейшем резидентно находится в ней, выполняя все необходимые работы.

    Что входит в ядро.

  • ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но могут быть, а также и такие, которые никогда вам не понадобятся.
  • УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за обеспечение работы пользовательских программ - разделение времени и прочих ресурсов системы.
  • СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, открытых файлов, управляющие структуры...
  • СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание", можно считать некоторой аналогией/пародией на системные вызовы.) С точки зрения программиста это обычная си-шная функция, только выполняет она системно-зависимые действия, например: прочитать данные из файла, установить сетевое соединение, создать каталог, и т.д. и т.п. Все системные вызовы (а всего их более 1500 штук) вкомпилированы в тело ядра Unix. Пользовательские программы, вызывающие функции, являющиеся системными вызовами, на самом деле содержат только jump'ы на соответствующие адреса памяти в ядре. В пользовательскую программу системные вызовы не влинковываются.
  • Что находится в оперативной памяти.

  • ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.
  • БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэширование чтения и записи на диск. Любая операция чтения с диска приводит к тому, что прочитанные блоки помещаются в буферный кэш, а из него уже передаются запросившим данные программам. Если блок попал в кэш, то все последующие обращения к нему будут получать образ блока из кэша, причем независимо от того - та же самая программа обращается к блоку или какая-либо другая. Кэшируется также и запись на диск, опять же, разделяемая между всеми выполняемыми программами.
  • ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.
  • Средства экономии памяти. Виртуальная память.

  • РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа (выполняемый файл) запущена в нескольких экземплярах, то в оперативную память загружается только одна копия выполняемого ассемблерного кода на всех. Каждый выполнямый процесс использует один и тот же текст программы, просто у каждого процесса имеется свой собственный указатель на текущий оператор.
  • РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL - динамически подгружаемая библиотека). Некоторое количество часто выполняемых функций (например, printf, да и много других) оформляется в виде специальным образом подготовленной библиотеки (SHARED LIBRARY). При компиляции программы, использующей разделяемые библиотеки, эти функции не линкуются внутрь кода программы. Они "выдергиваются" из библиотеки на стадии выполнения программы. Этим мы экономим место на диске и в оперативной памяти: в программах отсутствует код разделяемых функций, а в оперативной памяти эта функция присутствует в одном экземпляре на всех.
  • SWAPPING. Каждый Unix-процесс функционирует в своем собственном 32-х битном виртуальном адресном пространстве, не пересекающемся с другими. Адресное пространство процесса может быть большим, чем физическая оперативная память. Виртуальная память поддерживается с помощью PAGING'а - разрешения виртуальных адресов в физические "на лету", с подкачкой отсутствующих страниц памяти со swap-области на жестком диске.

    На самом деле SWAPPING'а как такового в Unix'е нет, вместо него применяется гораздо более гибкий PAGING. (swapping - по определению, это ПОЛНАЯ выгрузка программы на swap-область с целью освобождения места в оперативной памяти).

    Область памяти, занятая программой, разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные программы), STACK (динамические данные). Когда операционка освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действительно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, которая в данный момент выполняется, невозможно уничтожить. Операционная система сообщит в этом случае: "text file busy", и откажется выполнять удаление.

  • БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может иметь дополнительный атрибут. Так называемый "бит навязчивости". Когда такая программа заканчивает выполнение, операционка (по возможности) старается не занимать память, в которой находился текст программы. Соответственно, повторный ее запуск произойдет очень быстро - ведь программа все еще загружена в память, ее не требуется зачитывать с диска. Нужно просто передать на нее управление.
  • Файловая система Unix

    Файловая система в Unix - "деревянная", состоит из файлов и каталогов. На каждом разделе диска создается собственная независимая файловая система. Отдельные файловые системы "сцепляются" вместе, в единое общее дерево директорий. Такая операция называется "монтированием". Выглядит это примерно так:

    mount -t ufs /dev/dsk/m197_c0d0s5 /home1
     mount -t ufs /dev/dsk/m197_c0d0s4 /usr
     df

    Получить доступ к файлам "несмонтированной" файловой системы невозможно. Порочная практика MS-DOSа - сколько разделов, столько и "дисков" (a: b: c: d: e: ... k: l: m: n:) в Unix не применяется. В Unix всегда есть ровно одно общее дерево каталогов, и, по большому счету, пользователям совершенно все равно, на каком именно диске или разделе диска расположены его файлы /usr/spool/moshkow или /home1/moshkow/bin/mcopy...

    Файловая система Unix кэшируется буферным кэшем. Операция записи на диск выполняется не тогда, когда это приказывает выполняемый процесс, а когда операционная система сочтет нужным это сделать. Это резко поднимает эффективность и скорость работы с диском, и повышает опасность ее использования. Выключение питания на "горячей", работающей Unix-машине приводит к разрушениям структуры файловой системы.

    При каждой начальной загрузке Unix проверяет - корректно ли была выключена машина в прошлый раз, и если нет - автоматически запускает утилиту fsck (File System Check) - проверку и ремонт файловых систем..

    Внутренняя структура файловой системы Unix

    Раздел диска, в котором создана файловая система, разбит на три части.

    СУПЕРБЛОК. Занимает 1 Kb.

    Содержит служебную информацию:
     Тип файловой системы,
     Размер
     Начало списка свободных блоков.
     . . . что-то еще

    ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела. inode - Index-node - описатель файла. Он содержит всю информацию о файле, за исключением имени файла, и собственно данных файла. В inod 'е хранится:

    тип файла (файл, каталог, именованный канал, специальный файл)
     кто владелец
     права(атрибуты) файла
     время модификаци/создания файла
     адреса блоков, из которых состоит файл
     что-то еще ...

    ОБЛАСТЬ ДАННЫХ. В этой области расположены ВИРТУАЛЬНЫЕ блоки с данными файлов. Незанятые блоки провязаны в СПИСОК СВОБОДНЫХ БЛОКОВ

    Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.

  • ФАЙЛ - он и есть файл.
  • КАТАЛОГ - файл фиксированного формата: состоит из строчек с именами файлов, входящих в каталог
  • имя_файла1 Номер_Инода1
     имя_файла2 Номер_Инода2
     . . .

    Чтобы получить доступ к файлу по имени, операционная система

  • находит это имя в каталоге, содержащем файл,
  • берет Номер_Инода файла,
  • по номеру находит inod в области inod 'ов,
  • из inod 'а берет адреса блоков, в которых расположены данные файла,
  • по адресам блоков считывает блоки из области данных.
  • Все.

    Формат индексного описателя файла.

    Область инодов разбита на 64-х байтные структуры - inod 'ы. В inod 'е хранится:

    Тип файла (файл/каталог/специальный файл/fifo/socket)
     Атрибуты (права доступа)
     Владелец файла
     Группа-владелец файла
     Времена создания, модификации, последнего доступа к файлу
     Длина файла
     Адрес 1-го блока файла
     Адрес 2-го блока файла
     ...
     Адрес 10-го блока файла
     Адрес блока косвенной адресации (блока с 256 адресами блоков)
     Адрес блока 2-й косвенной адресации
     (блока с 256 адресами блоков с адресами)
     Адрес блока 3-й косвенной адресации
     (блока с адресами блоков с адресами блоков с адресами)

    Точный формат структуры файловой системы см. man fs

    Специальные файлы

    В Unix помимо обычных файлов и каталогов существуют еще и специальные файлы. Они используются для обозначения физических устройств компьютера. (Железок). В сущности, что такое файл? Это "нечто", куда можно записывать данные как последовательность байтов и считывать их оттуда. И, значит, вполне естественным выглядит, например, файл /dev/console - соответствующий консольному терминалу. Все, что выводится в файл /dev/console, будет просто появляться на экране терминала. При попытке чтения из файла /dev/console вы будете получать (внимание!) не то, что нарисовано в данный момент на экране, а то, что вводится с клавиатуры. Попробуйте выполнить команды

    su
     echo Привет > /dev/console
     cat /dev/console
    
     Ctrl-C

    Для каждого терминала unix-машины существует соответствующий ему файл. Обычным терминалам соответствуют файлы, которые называются примерно так:

    /dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
     (и т.д., возможны варианты)

    Псевдотерминалам (они эмулируются, когда вы входите в систему по сети, посредством команд типа telnet, rlogin ) соответствуют специальные файлы

    /dev/pty*, или /dev/pty/*

    Команда who, или who am i сообщит вам, как называется ваш собственный терминал.

    Существуют специальные файлы, соответствующие жесткому диску в целом ( /dev/rdsk/m197_c0d0s7 ) и всем его разделам ( /dev/dsk/m197_c0d0s* ). Если вы будете читать из этих файлов, то получите все байтики, как они лежат на жестком диске, с нулевого цилиндра и до последнего... А если вы в этот файл что-нибудь запишете, то получите (потом) богатый опыт по переформатированию и разметке жесткого диска.

  • /dev/mem - файл, изображающий оперативную память.
  • /dev/audio - если "закатить" в него файл звукового формата (*.wav, *.au, ...?) - то он будет озвучен динамиком компьютера, а команда cat /dev/audio будет принимать все, что произносится в микрофон. Впрочем, я отвлекся, у нас ведь не PC, не Silicon Graphic и не SPARCstation.
  • /dev/zero - из него можно считать сколько угодно нулевых байтов
  • /dev/null - а в него можно писать, и читать из него - тоже, в неограниченных количествах и с неизменным результатом: NULL - он и есть null. А в MSDOS его аналог называется NUL.
  • Специальные файлы бывают двух типов:

  • блочные - запись и чтение допускаются только блоками. Например, разделы дисков с файловой системой являются таковыми.
    ls -al /dev/fd*
    brw-rw---- 1 root floppy 2, 28 Jul 18 1994 /dev/fd0H1440
    brw-rw---- 1 root floppy 2, 32 Jul 18 1994 /dev/fd0H2880
    brw-rw---- 1 root floppy 2, 12 Jul 18 1994 /dev/fd0H360
  • символьные(бесструктурные, сырые, row) - можно читать и писать отдельными байтами. К ним относятся терминалы, магнитные ленты, неформатированные диски и разделы дисков без файловой системы.
    ls -al /dev/tty*
    crw--w--w- 1 moshkow sys 4, 1 Jan 15 22:00 /dev/tty1
    crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
    crw--w--w- 1 root root 4, 2 Jan 15 20:37 /dev/tty2
  • Различие - первая буква в листинге команды ls -l

    Понятия "размер" у специального файла не существует. Ведь этот файл обозначает физическое устройство. Фактически это ссылка на соответствующий драйвер. Вместо длины команда ls показывает для таких файлов два числа: "мажорный" и "минорный" номера устройств. Будем считать для ясности, что "мажор" - это порядковый номер драйвера устройства, а "минор" - внутренний номер устройства в таблице обслуживающего его драйвера.

    Создание специальных файлов

    Обычно их создавать не нужно - они все уже есть для всех известных настоящих и будущих устройств. Созданы при инсталляции системы.

    Ручное создание спецфайла

    mknod /dev/filename { c | b } MAJOR MINOR

    HP-UX: полуавтоматическое создание спецфайлов

    При начальной загрузке в /etc/inittab отрабатывает скрипт /sbin/ioinitrc, который, обнаружив новые платы и устройства, автоматически запускает команду их инициализации, конфигурации и создания необходимых для них спецфайлов.

    см. документацию по командам

    ioscan
     mksf
     insf

    Solaris: полуавтоматическое создание спецфайлов

    При загрузке выйти в boot-монитор и загрузиться с ключем -r

    STOP+A
    
    ok boot -r - реконфигурационная загрузка

    все необходимые спецфайлы для вновь подключенных устройств будут при этом созданы автоматически.

    Диски, ленты, файловые системы.

    Какие есть SCSI устройства

    MOTOROLA: Какие есть SCSI устройства.

    scsiscan - эта утилита сообщит вам, какие SCSI устройства подключены и как они называются (SCSI-id)

    После подключения новых устройств к компьютеру Motorola 922 он самостоятельно их распознает при очередной начальной загрузке и запускает программу из каталога /sbin/auto-boot, которая создает специальные файлы, соответствующие этим устройствам.

    SUN: Какие есть SCSI устройства.

    На компьютере Sun SPARC для определения SCSI-устройств: Перейдите в BOOT-prom монитор (Нажмите клавиши Stop+A) Введите команду probe-scsi

    ok probe-scsi

    Чтобы создать специальные файлы, выполните "reconfiguration boot": из BOOT-промпта

    ok boot -r

    LINUX: Какие есть SCSI устройства и жесткие диски.

    IBM PC/Linux сообщает об опознанных устройствах при начальной загрузке. Предполагается, что соответствующий драйвер SCSI (if exists) сконфигурирован в ядре. Чтобы еще раз просмотреть эти сообщения, выполните команду

    dmesg

    Все специальные файлы для дисков и лент уже созданы

    echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi

    заставит адаптер scsi1 просканировать SCSI канал 0, чтобы найти свежеподключенное устройство с ID 5 и LUN 0.

    HP-UX

    Перехватить boot-промпт, дать команду SEA (search) Или на живой машине ioscan -funC disk

    True64

  • dsfmgr - Device Special Files manager
  • hwmgr - Hardware manager
  • drdmgr - Device Request Dispatcher manager
  • hwmgr -scan scsi
    hwmgr -view devices
    hwmgr -view devices -cluster
    hwmgr -view hierarchy -member membername
    hwmgr -show scsi

    Описание геометрии диска при подключении

    Для нормальной работы с диском, возможно, (зависит от системы) придется позаботиться об описании геометрии диска.

    При покупке диска ТРЕБУЙТЕ с поставщика бумажки с характеристиками и геометрией диска. Seagate, например, все характеристики держит на http://www.seagate.com

    Linux, FreeBSD: ничего описывать не надо

    Переходите к следующему разделу.

    MOTOROLA: описание геометрии диска

    Уже имеющиеся описания для "фирменных" дисков расположены в каталоге /etc/dskdefs/. Выберите описание "похожего" диска, запомните его имя, например, 1Gb Seagate-ST31 - "msea11200". Подсказка: загляните в /etc/scsifmt.info

    Командой ddefs записать геометрию диска и сохранить ее под новым именем. В ответ на запрос "Template" введите имя описания "похожего" диска. Поправьте параметры, которые вы знаете, и оставьте как есть, если не знаете, зачем они.

    ddefs -n filename

    Актуальные параметры: естественно, число голов, секторов... А также (по собственной шкуре проверено):

    Root offset: 648 (т.к. VTOC занимает 648 блоков)
     Slice count: 16 (Положено 16 разделов на диске)
     Interleave: 1 (Что означает "отсутствует")
     Precomp cylinder: {последний} (Ныне прекомпенсация не используется)
     Bad spots: 100 (Резерв для замещения bad-блоков)
     Controller attribute: 850 (кто его знает, зачем, но так
     Attribute: 10 у всех остальных дисков)
     Word attribute: 10

    Выход из команды ddefs "w" и "q" в ДОКУМЕНТАЦИИ НЕ ОПИСАН. Подсказка по остальным командам ddefs выводится командой "help"

    В таблице /etc/scsifmt.info добавить строчку со ссылкой на файл с геометрией диска. В качестве ключевых слов указать то, что выводит команда scsiscan. Например, так:

    scsiscan
    SEAGATE ST51080N m187_0c0d1 ...
    
    cat >> /etc/scsifmt.info
    "SEAGATE" "ST51080N" filename 7 "1GB SCSI"
    ^D

    SUN: описание геометрии диска

    Чтобы диск опознавался Sun'ом, для него должно существовать описание геометрии в файле /etc/format.dat

    Как называются диски и разделы на машине

    Каждое "устройство" имеет соответствующий ему "специальный файл". От системы к системе имена эти абсолютно друг на друга не похожи. Одно, пожалуй, постоянно: все специальные файлы обычно расположены в каталоге /dev или его подкаталогах.

    В SVR4 устройства собраны в отдельные каталоги:

  • /dev/rdsk/* - бесструктурные диски и разделы дисков
  • /dev/dsk/* - блочные диски и разделы дисков
  • /dev/rmt/* - стриммерные накопители на магнитной ленте
  • /dev/term/* - линии для подключения терминалов (dial-in)
  • /dev/cua/* - линии с модемным управлением (dial-out)
  • /dev/pts/* - псевдотерминальные линии
  • MOTOROLA: Общий формат имени:

  • controller_cXdYsuffix где:
  • controller - тип устройства
  • X - номер контроллера
  • Y - логический номер устройства
  • suffix - зависит от устройства, например: номер раздела на жестком диске
  • Логические диски (разделы физического SCSI диска) с блочной структурой на станции Motorola 922

    /dev/dsk/m197_c0d0s1 SCSI контроллер m197 номер 0,
     SCSI устройство 0
     логический раздел (slice) 1
    /dev/dsk/m328_c0d0s0 SCSI контроллер m328 номер 0,
     . . . SCSI устройство 0
     логический раздел (slice) 0

    Физический диск (целиком)

    /dev/rdsk/m328_c0d0s7 Условное обозначение всего жесткого
    /dev/rdsk/m197_c0d1s7 диска, целиком

    Бесструктурные (сырые) разделы

    /dev/rdsk/m197_c0d0s1
    /dev/rdsk/m197_c0d1s2

    Магнитные ленты.

    /dev/rmt/ctape1 а также
    /dev/rmt/m197_c0d4

    CD-ROM.

    /dev/rdsk/m197_c0d6s7 - "сырой" (физический)
    /dev/dsk/m197_c0d6s0 - раздел CD-ROM с файловой системой
     "Моторольного" формата ufs
    /dev/dsk/m197_c0d6s7 - CD-ROM со стандартной файловой
     системой iso9660

    SUN:.

    Логические разделы (блочные) на станции SPARCstation: Диск может быть разбит на 8 логических разделов с 0 по 7.

    Общий формат имени SCSI устройства:

    /dev/dsk/c0t2d0s3 Controller 0 (обычно 0)
     Taget 2 (SCSI ID)
     Disk 0 (LUN Logical Unit Number
     - обычно 0)
     Slice 3 (Номер раздела)

    Физический диск (целиком)

    /dev/rdsk/c0t3d0s2 Весь жесткий диск представляется разделом 2
     Загрузочный внутренний жесткий диск SPARC- station имеет 3-й SCSI номер.

    CD-ROM (целиком)

    /dev/dsk/c0t6d0s2 CD обычно вешают на 6-й SCSI номер.
     Имеет ровно один раздел - весь диск.

    Магнитные ленты.

    /dev/rmt/0 1-я лента (обычно 150Мб)
    /dev/rmt/1 2-я лента (обычно DAT 4Гб)

    После подключения новых устройств к Sun'у. Нужно выполнить "reconfiguration boot". Из boot prom'a:

    ok boot -r

    Linux:.

    Диск может быть разбит на 4 primary раздела с 1 по 4. Один из разделов может быть extended - тогда он может быть разбит еще на 4 раздела с 5 по 8

    Физический диск (целиком)

    /dev/hda Первый IDE жесткий диск
    /dev/hdb Второй IDE жесткий диск
    /dev/hdc IDE hd (или CD) - master на втором интерфейсе
    /dev/hdc IDE hd (или CD) - slave на втором интерфейсе
    /dev/sda Первый SCSI жесткий диск ...
    
    /dev/sda1, /dev/sda2, ... ,8 Разделы жесткого SCSI диска
    /dev/hdb1, /dev/hdb2, ... ,8 Разделы жесткого IDE диска

    CD-ROM

    /dev/sbpcd,/dev/sonycd, ...
    /dev/hdc - IDE CD
     а лучше /dev/cdrom

    Магнитные ленты.

    /dev/rmt1

    Дискеты.

    /dev/fd0 - флоппи A:
    /dev/fd1 - флоппи B:

    HP-UX

    Физический диск (целиком)

    /dev/rdsk/c0t6d0 Весь жесткий диск (raw)
    /dev/dsk/c0t6d0 Весь жесткий диск

    Жестких разделов в HP-UX нет, зато есть LVM - и в нем логические тома

    /dev/vg00/lvol12 char logical volume
    /dev/vg00/rlvol12 block logical volume

    Магнитные ленты

    /dev/rmt/0m лента с перемоткой
    /dev/rmt/0mn лента без перемотки

    Как отформатировать SCSI диск

    Форматировать SCSI на низком уровне не умеет ни один Unix в мире. Форматирование обычно заключается в тестировании bad block'ов и нанесении логической разметки диска - делении его на логические разделы.

    MOTOROLA: низкоуровневое форматирование диска

    Хотите по-простому - воспользуйтесь командой scsifmt. Применяется она к БЕССТРУКТУРНОМУ цельному диску (каталог /dev/rdsk, slice номер 7). Например:

    scsifmt /dev/rdsk/m197_c0d1s7
     scsifmt /dev/rdsk/m328_c1d0s7

    ВНИМАНИЕ: вы уже набрали эту команду? Сосчитайте до 20 и немного подумайте. Подумали? Теперь нажмите Ctrl-C. Вы нажали ENTER вместо Ctrl-C ? У вас есть 30 свободных минут. Можете за это время ознакомиться с главой "Инсталляция Unix". Ведь команда scsifmt ничего не переспрашивает и сразу начинает форматировать указанный диск, не требуя никаких подтверждений.

    scsifmt просто вызывает команду dinit с соответствующими ключами, которая все и делает. Для более тонких работ пользуйтесь dinit непосредственно.

    Инициализация диска(низкоуровневое форматирование, тестирование бад-блоков, загрузочная запись) делается командой dinit.

    dinit [-f] [-q] [-b] filename /dev/rdsk/m187_c0d1s7
     -X 9 debug-level
     -f переформатировать
     -q "быстрый" формат
     -b сделать диск загрузочным
     -v {0-4} write тест
    
    man dinit сообщить все остальные подробности

    SUN:

    Физическое форматирование диска на SunOS не делают. Считается, что диск должны отформатировать на заводе. Можно посмотреть информацию о диске.

    prtvtoc /dev/rdsk/c0t0d0s2

    HP-UX

    Физическое форматирование

    format /dev/rdsk/c0t6d0

    Разметка диска на разделы. Partition Table

    Linux: fdisk

    Раметка partiotion table в Linux делается командой fdisk. Это диалоговая утилита - без особых изысков, все делается просто.

    fdisk /dev/hda # или /dev/sdb ...
    
     mke2fs /dev/hda1
     # создает файловую систему типа ext2 на первом разделе

    Распечатать таблицу разделов:

    fdisk -p /dev/hda # или /dev/sdb ...

    SUN: Разметка форматированного диска на разделы

    Чтобы диск опознавался Sun'ом, для него должно существовать описание в файле /etc/format.dat

    Из-под СуперПользователя запустите команду format, и в диалоговом режиме сможете проинициализировать и протестировать диск и разбить его на разделы.

    format

    Boot-монитор при загрузке операционной системы ищет на корневом разделе boot-блок. Он записывается командой installboot или dd

    installboot /dev/rdsk/c0t3d0s0
     dd if=/usr/lib/fs/ufs/bootblk bs=1k skip=1 of=/dev/dsk/c0t3d0s0

    SUN: Создание файловой системы.

    newfs /dev/dsk/c0t0d0s7

    SUN: виды файловых систем.

  • ufs Unix File System основной тип файловых систем для жестких дисков
  • hsfs High Sierra, ISO 9660, Rock Rige Extension файловая система на CD-ROM'ах
  • pcfs MS-DOS FAT для дискет 3"
  • nfs Network File System наиболее популярная сетевая файловая система
  • rfs Remote File System тяжелое наследие System V - еще одна сетевая FS
  • tmpfs для хранения Временной Файловой системы используется свободное место swap-области
  • lofs Loop Back FS фактически mount -t nfs localhost:/ /mnt
  • procfs Process FS - "для каждого процесса имеется файл"
  • fifofs FIFO FS
  • fdfs File Descriptors FS
  • namefs
  • MOTOROLA: Разметка форматированного диска на разделы.

    Производится Disk Slice Editorom dse. На диске может быть до 15 slice'ов (разделов). Они нумеруются числами от 0 до 6, от 8 до f. Номер 7 зарезервирован, чтобы обозначать весь диск целиком.

    dse имя_бесструктурного_диска # например:
     dse /dev/rdsk/m197_c0d0s7

    DSE имеет экранный интерфейс, схожий с редактором VI. Команды:

  • :q! выйти без внесения изменений в таблицу разделов
  • :wq сохранить изменения и выйти
  • h,j,k,l команды перемещения по экрану (это если у вас не работают стрелочки)
  • C создать раздел на свободном месте
  • dw стереть поле
  • dd уничтожить раздел
  • cw изменить значение поля
  • ВНИМАНИЕ: самый первый раздел должен начинаться с блока номер 648 (или больше), поскольку на диске должно оставаться место для хранения разметки диска VTOC (Volume Table Of Contents).

    На создаваемом разделе должна быть создана файловая система. В SVR4/88 используются 3 разных типа - ufs, s5, bfs. Выбирайте "UFS".

    Motorola: виды файловых систем.

  • ufs Unix File System основной тип файловых систем для жестких дисков
  • s5 System V. Устарелый тип файловой системы, использовался в старых версиях SV 3.1. Более медленная, но занимает меньше места под служебную информацию
  • bfs Boot File System для каталога /stand Служебная "очень простая" файловая система. В ней лежат файлы начальной загрузки boot и unix
  • cdfs CD File System Стандартная для CD ROM'ов разметка ISO 9660
  • После переразметки диска dse автоматически запустит команду mkfs со всеми необходимыми параметрами - для создания чистых файловых систем на новых разделах, поэтому пункт, относящийся к команде mkfs, имеет скорее академический интерес.

    Реально dse только ГОТОВИТ описание VTOC, а прописывает ее на диск команда fmthard. Параметры у нее непростые, именно она применяется при инсталляции системы.

    fmthard -S file_with_vtoc_description /dev/rmt/m187_c0d1s7

    Для обычных же юзеров к ней написан пользовательский интерфейс dse.

    Распечатать таблицу разделов:

    prtvtoc /dev/rdsk/m187_c0d0s7
    Вернуться к учебному плану