re. Однако главное его предназначение - найти на диске и запустить на выполнение файл /unix - ядро операционной системы. И своего собственного разума на это ему обычно не хватает, поэтому он в первую очередь загружает с жесткого диска "загрузчика операционной системы", а уж тот делает все остальное. &dDSUN&d@ Boot-prom загружает "BOOT BLOKS" - 1-ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ. "boot-bloks" расположены в 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 &dDMotorola 922&d@. 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. Нажать требуемую клавишу &dDLinux&d@. 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 &dDHP-UX&d@ В ПЗУ 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 &dD * Процесс init * &d@ Ядро инициализирует себя и после этого запускает процесс 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 - перезагрузка; &dD * Примерный фрагмент управляющей таблицы /etc/inittab * &d@ 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. &dD * Run Command - стандартные RC-каталоги запуска * &d@ Перейдя на уровень выполнения 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: " появляется на терминале. &dDLinux Slackware&d@ По умолчанию 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, русификация консоля и т.п. &dDLinux RedHat&d@ Используется стандартная технология rc-файлов System V RC-каталоги: /etc/rc.d/rc[0123456].d/ /etc/rc.d/init.d/ Конфигурационные параметры для RC-команд: /etc/sysconfig/ &dDHP-UX 10.20&d@ Не смотря на BSD-евое происхождение, используется стандартная технология rc-файлов System V RC-каталоги: /sbin/rc[0123].d/ /sbin/init.d/ Конфигурационные параметры для RC-команд: /etc/rc.defaults.d/ &dDSVR4: SUN, Motorola&d@ Используется стандартная технология rc-файлов System V RC-каталоги: /etc/rc[0123456].d/ /etc/init.d/ . &dDUnix, базовые принципы и особенности&d@. Все системные действия выполняет ядро операционной системы Unix. Ядро - обычный выполняемый файл, расположен в файле /unix или /stand/unix или /vmunix или /vmlinuz (в зависимости от кон- кретной реализации). Можете посмотреть размер этого файла - не маленький. При начальной загрузке системы ядро целиком загружа- ется в оперативнную память и в дальнейшем резидентно находится в ней, выполняя все необходимые работы. Что входит в ядро. ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но могут быть, а также и такие, которые никогда вам не понадобятся. УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за обеспечение работы пользовательских программ - разделение времени и прочих ресурсов системы. СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, от- крытых файлов, управляющие структуры... СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание", можно считать некоторой аналогией/пародией на системные вызовы.) С точки зрения программиста это обычная си-шная функция, только выполняет она системно-зависимые действия, например: прочитать данные из файла, установить сетевое соединение, создать каталог, и т.д. и т.п. Все системные вызовы ( а всего их более 1500 штук ) вкомпилированы в тело ядра Unix. Пользовательские программы, вызывающие функции, являющиеся системными вызовами, на самом деле содержат только jump'ы на соответствующие адреса памяти в ядре. В пользовательскую программу системные вызовы не влинковываются. Что находится в оперативной памяти. ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ. БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэши- рование чтения и записи на диск. Любая операция чтения с диска приводит к тому, что прочитанные блоки помещаются в буферный кэш, а из него уже передаются запросившим данные программам. Если блок попал в кэш, то все последующие обращения к нему бу- дут получать образ блока из кэша, причем независимо от того - та же самая программа обращается к блоку или какая-либо дру- гая. Кэшируется также и запись на диск, опять же, разделяемая между всеми выполняемыми программами. ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа. Средства экономии памяти. Виртуальная память. РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа(выполня- емый файл) запущена в нескольких экземплярах, то в оперативную память загружается только одна копия выполняемого ассемблерного кода на всех. Каждый выполнямый процесс использует один и тот же текст программы, просто у каждого процесса имеется свой соб- ственный указатель на текущий оператор. РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL - динамически подгружаемая библиотека). Некоторое количество час- то выполняемых функций (например, printf, да и много других) оформляется в виде специальным образом подготовленной библиоте- ки (SHARED LIBRARY). При компиляции программы, использующей разделяемые библиотеки, эти функции не линкуются внутрь кода программы. Они "выдергиваются" из библиотеки на стадии выполнения программы. Этим мы экономим место на диске и в оперативной памяти: в программах отсутствует код разделяемых функций, а в оперативной памяти эта функция присутствует в одном экземпляре на всех. SWAPING. Каждый Unix-процесс функционирует в своем собственном 32-х битном виртуальном адресном пространстве, не пересекающем- ся с другими. Адресное пространство процесса может быть боль- шим, чем физическая оперативная память. Виртуальная память под- держивается с помощью PAGING'а - разрешения виртуальных адресов в физические "на лету", с подкачкой отсутствующих страниц памяти со swap-области на жестком диске. На самом деле SWAPING'а как такового в Unix'е нет, вместо него применяется гораздо более гибкий PAGING. (swaping - по опреде- лению, это ПОЛНАЯ выгрузка программы на swap-область с целью освобождения места в оперативной памяти). Область памяти, занятая программой, разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные програм- мы), STACK (динамические данные). Когда операционка освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действи- тельно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, ко- торая в данный момент выполняется, невозможно уничтожить. Опе- рационная система сообщит в этом случае: "text file busy", и откажется выполнять удаление. БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может иметь дополнительный атрибут. Так называемый "бит навязчивос- ти". Когда такая программа заканчивает выполнение, операционка (по возможности) старается не занимать память, в которой нахо- дился текст программы. Соответственно, повторный ее запуск про- изойдет очень быстро - ведь программа все еще загружена в па- мять, ее не требуется зачитывать с диска. Нужно просто передать на нее управление. &dDФайловая система Unix&d@. Файловая система в Unix - "деревянная", состоит из файлов и каталогов. На каждом разделе диска создается собственная неза- висимая файловая система. Отдельные файловые системы "сцепляют- ся" вместе, в единое общее дерево директорий. Такая операция называется "монтированием". Выглядит это примерно так: mount -F ufs /dev/dsk/m197_c0d0s5 /home1 mount -F 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) - проверку и ремонт файловых систем.. &dDВнутренняя структура файловой системы Unix&d@. Раздел диска, в котором создана файловая система, разбит на три части. СУПЕРБЛОК. Занимает 1 Kb. Содержит служебную информацию: Тип файловой системы, Размер Начало списка свободных блоков. . . . что-то еще ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела. inode - Index-node - описатель файла. Он содержит всю информа- цию о файле, за исключением имени файла, и собственно данных файла. В inod'е хранится: тип файла (файл, каталог, именованный канал, специальный файл) кто владелец права(атрибуты) файла время модификаци/создания файла адреса блоков, из которых состоит файл что-то еще ... ОБЛАСТЬ ДАННЫХ. В этой области расположенвИРТУАЛЬНАЯЯы блоки с данными фай- лов. Незанятые блоки провязаны в СПИСОК СВОБОД- НЫХ БЛОКОВ Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ. ФАЙЛ - он и есть файл. КАТАЛОГ - файл фиксированного формата: состоит из строчек с именами файлов, входящих в каталог имя_файла1 Номер_Инода1 имя_файла2 Номер_Инода2 . . . Чтобы получить доступ к файлу по имени, операционная система 1. находит это имя в каталоге, содержащем файл, 2. берет Номер_Инода файла, 3. по номеру находит inod в области inod'ов, 4. из inod'а берет адреса блоков, в которых расположены данн- ые файла, 5. по адресам блоков считывает блоки из области данных. Все. Формат индексного описателя файла. Область инодов разбита на 64-х байтные структуры - inod'ы. В inod'е хранится: Тип файла (файл/каталог/специальный файл/fifo/socket) Атрибуты (права доступа) Владелец файла Группа-владелец файла Времена создания, модификации, последнего доступа к файлу Длина файла Адрес 1-го блока файла Адрес 2-го блока файла ... Адрес 10-го блока файла Адрес блока косвенной адресации (блока с 256 адресами блоков) Адрес блока 2-й косвенной адресации (блока с 256 адресами блоков с адресами) Адрес блока 3-й косвенной адресации (блока с адресами блоков с адресами блоков с адресами) Точный формат структуры файловой системы см. man fs . &dDСпециальные файлы&d@ В 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 показывает для таких файлов два числа: "мажорный" и "минорный" номера ус- тройств. Будем считать для ясности, что "мажор" - это порядковый номер драйвера устройства, а "минор" - внутренний номер устрой- ства в таблице обслуживающего его драйвера. &dDСоздание специальных файлов&d@ Обычно их создавать не нужно - они все уже есть для всех известных настоящих и будущих устройств. Созданы при инсталляции системы. Ручное создание спецфайла mknod /dev/filename { c | b } MAJOR MINOR &dDHP-UX: полуавтоматическое создание спецфайлов&d@ При начальной загрузке в /etc/inittab отрабатывает скрипт /sbin/ioinitrc, который, обнаружив новые платы и устройства, автоматически запускает команду их инициализации, конфигурации и создания необходимых для них спецфайлов. см. документацию по командам ioscan mksf insf &dDSolaris: полуавтоматическое создание спецфайлов&d@ При загрузке выйти в boot-монитор и загрузиться с ключем -r STOP+A ok boot -r - реконфигурационная загрузка все необходимые спецфайлы для вновь подключенных устройств будут при этом созданы автоматически. . &dDДиски, ленты, файловые системы&d@. &dD * Какие есть SCSI устройства * &d@ &dDMOTOROLA: Какие есть SCSI устройства&d@. scsiscan - эта утилита сообщит вам, какие SCSI устройства подключены и как они называются (SCSI-id) После подключения новых устройств к компьютеру Motorola 922 он самостоятельно их распознает при очередной начальной загрузке и запускает программу из каталога /sbin/auto-boot, которая создает специальные файлы, соответствующие этим устройствам. &dDSUN: Какие есть SCSI устройства&d@. На компьютере Sun SPARC для определения SCSI-устройств: Перейдите в BOOT-prom монитор (Нажмите клавиши Stop+A) Введите команду probe-scsi ok probe-scsi Чтобы создать специальные файлы, выполните "reconfiguration boot": из BOOT-промпта ok boot -r &dDLINUX: Какие есть SCSI устройства и жесткие диски&d@. IBM PC/Linux сообщает об опознанных устройствах при начальной загрузке. Предполагается, что соответствующий драйвер SCSI (if exists) сконфигурирован в ядре. Чтобы еще раз просмотреть эти сообщения, выполните команду dmesg Все специальные файлы для дисков и лент уже созданы &dDHP-UX&d@ Перехватить boot промпт, дать команду SEA (search) Или на живой машине ioscan &dD * Описание геометрии диска при подключении * &d@ Для нормальной работы с диском, возможно, (зависит от системы) придется позаботиться об описании геометрии диска. При покупке диска ТРЕБУЙТЕ с поставщика бумажки с характеристиками и геометрией диска. Seagate, например, все характеристики держит на http://www.seagate.com ║ http://www.seagate.com &dDLinux, FreeBDS: ничего описывать не надо&d@ Переходите к следующему разделу. &dDMOTOROLA: описание геометрии диска&d@ Уже имеющиеся описания для "фирменных" дисков расположены в каталоге /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 &dDSUN: описание геометрии диска&d@ Чтобы диск опознавался Sun'ом, для него должно существовать описание геометрии в файле /etc/format.dat &dD * Как называются диски и разделы на машине * &d@ Каждое "устройство" имеет соответствующий ему "специальный файл". От системы к системе имена эти абсолютно друг на друга не похожи. Одно, пожалуй, постоянно: все специальные файлы обычно расположены в каталоге /dev или его подкаталогах. В SVR4 устройства собраны в отдельные каталоги: /dev/rdsk/* - бесструктурные диски и разделы дисков /dev/dsk/* - блочные диски и разделы дисков /dev/rmt/* - стриммерные накопители на магнитной ленте /dev/term/* - линии для подключения терминалов (dial-in) /dev/cua/* - линии с модемным управлением (dial-out) /dev/pts/* - псевдотерминальные линии &dDMOTOROLA: Общий формат имени:&d@ 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 &dDSUN:&d@. Логические разделы (блочные) на станции SPARCstation: Диск может быть разбит на 8 логических разделов с 0 по 8. Общий формат имени 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 &dDLinux:&d@. Диск может быть разбит на 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: &dDHP-UX&d@ Физический диск (целиком) /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 лента без перемотки &dD * Как отформатировать SCSI диск * &d@. Форматировать SCSI на низком уровне не умеет ни один Unix в мире.Форматирование обычно заключается в тестировании bad block'ов и нанесении логической разметки диска - делении его на логические разделы. &dDMOTOROLA: низкоуровневое форматирование диска &d@ Хотите по-простому - воспользуйтесь командой 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 сообщить все остальные подробности &dDSUN:&d@ Физическое форматирование диска на SunOS не делают. Считается, что диск должны отформатировать на заводе. Можно посмотреть информацию о диске. prtvtoc /dev/rdsk/c0t0d0s2 &dDHP-UX&d@ Физическое форматирование format /dev/rdsk/c0t6d0 &dD * Разметка диска на разделы. Partition Table * &d@ &dDLinux: fdisk&d@ Раметка partiotion table в Linux делается командой fdisk. Это диалоговая утилита - без особых изысков, все делается просто. fdisk /dev/hda # или /dev/sdb ... mke2fs /dev/hda1 # создает файловую систему типа ext2 на первом разделе Распечатать таблицу разделов: fdisk -p /dev/hda # или /dev/sdb ... &dDSUN: Разметка форматированного диска на разделы&d@ Чтобы диск опознавался 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 &dDSUN: Создание файловой системы&d@. 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 -F nfs localhost:/ /mnt procfs Process FS - "для каждого процесса имеется файл" fifofs FIFO FS fdfs File Descriptors FS namefs &dDMOTOROLA: Разметка форматированного диска на разделы&d@. Производится 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 &dD * Какого типа у нас файловые системы * &d@ &dDMOTOROLA: Какого типа у нас файловые системы&d@ fstyp имя_дискового_раздела Рекомендуемый тип для неспециализированных (т.е. не тех, которые /stand, /boot и некоторые другие) файловых систем стандартный Unix'овский "ufs" - Unix File System. Это быстрая файловая система BSD-подобного типа с символическими линками, длинными именами файлов (до 256 байт), изменяемым размером блока, "размазанной" таблицей inod'ов (описатели файлов расположены группами, которые равномерно распределены по диску) &dDmkfs - создает пустую файловую систему&d@. # создаем файловую систему типа s5 на 4-ом разделе диска, раз- # мером 200 Мб !!! Размер указывается в 512-байтных блоках mkfs -F s5 /dev/rdsk/m328_c2d0s4 400000 # создаем файловую систему типа ufs на 5-ом разделе диска mkfs -F ufs -o bsize=4096,nsect=36,ntrack=9,free=1 \ /dev/rdsk/m328_c2d0s5 &dDLinux: создание файловой системы&d@ mke2fs /dev/hda9 &dDHP-UX: создание файловой системы&d@ newfs -F hfs /dev/rvol12 &dDHP-UX: JFS vs HFS&d@ HP-UX использует два формата файловых систем: HFS (High Perfomance) - AKA старая добрая ufs, и новомодная JFS (Journal) AKA Verytas vxfs 0. vxfs - это не файловая система, а база данных с журналом транзакций и откаткой. Любая операция записи в файловую систему содержит только завершенные транзакции, поэтому fs на диске _всегда_ находится в корректном состоянии. В лог пишется "протокол намерений", и его можно использовать для откатки. &dDПлюсы:&d@ 1. vxfs использует физический журнал для записи критической метаинформации на диск. Это гарантирует эффективное восстанавление fs. Большая сохранность позволяет дольше кэшировать данные. Очень заметен выигрыш по скорости "close file" - закрытие файла НЕ форсирует sync inod'а на диск, в отличие от ufs. 2. vxfs применяет кластерную адресацию последовательных блоков - выигрыш в адресации блоков и скорости доступа к большим файлам. 3. inod в vxfs-е имеет длину 256 байт (а не 128), и короткие (<=96байт) директории или симлинки хранятся прямо в inod'е 4. Директории vxfs проиндексированы - следовательно, повышена скорость поиска файла по имени. 5. По необходимости vxfs умеет создавать дополнительные области inod'ов, и вообще - место в vxfs распределяется по мере заполнения. Написать подробнее про транзакции. &dDМинусы:&d@ 1. Служебные структуры vxfs занимают больше места на диске 2. Загрузчик ядра не умеет читать формат vxfs, поэтому каталог /stand обязан быть HFS'ным &dDПлюсы для Live JFS (AKA OnLine VxFS) Only:&d@ Это расширение стандартной vxfs, коммерческий продукт, поставляемый за отдельные деньги, после его установки стандартная vxfs получает дополнительные возможности: 6. Увеличение размера fs без отмонтирования. 7. Уменьшение размера fs (а-ля speed disk) без отмонтирования. 8. Snapshot (заморозка) fs. По команде возникает параллельное дерево-копия раздела - "остановленное" на момент подачи команды. Реализация: использует дополнительно раздел диска для сохранения изменяемых блоков с данными. При обращении к "замороженным" данным блоки, еще не измененные - считываются из оригинальной файловой системы, если же менялись, то оригинал берется с сохраненной на отдельный раздел копии. Примеры, на которых vxfs дает заметный (в 2-4 раза) выигрыш cd /hfs ; time tar xf /tmp/big.tar cd /vxfs ; time tar xf /tmp/big.tar time cat bigfile bigfile bigfile bigfile bigfile > /vxfs/big time cat bigfile bigfile bigfile bigfile bigfile > /hfs/big Вывод: в некоторых операциях vxfs быстрее, в остальных - не медленнее, устойчивее к выключению питания, но несколько больше съедает дискового пространства. HFS имеет смысл на статических "readonly" каталогах, например /usr - скорость чтения одинакова, а hfs компактнее. &dDLinux. Запись директории на вритабле CDROM&d@ mkisofs -R -o image directory затем записать образ на cd-r командой cdrecord &dD * Монтирование файловых систем * &d@. Чтобы сделать "видимыми" файлы, лежащие на дисковом разделе, Unix использует команду mount. Mount "подцепляет" файловую систему к общему дереву файлов. При монтировании нужно указать "точку монтажа" - каталог, к которому "подцепляется" наша новая файловая система. Например: mount -F ufs /dev/dsk/m197_c0d0s8 /home1 Чтобы посмотреть, какие файловые системы у нас смонтированы, выполните команду df Чтобы наши файловые системы монтировались, а swap области акти- визировались автоматически при каждой загрузке, необходимо вставить соответствующие строки в файл /etc/vfstab . Формат строчек можно посмотреть в этом же файле. &dDMOTOROLA: Монтирование CD-ROM&d@. Если на CDROM'е записана файловая