OpenBSD - заметки конечного пользователя

       

Разметка диска


Первое, что происходит после выбора инсталляции - запуск собственного варианта fdisk. Который существенно отличается от Linux'ового (не говоря уже о FDISK из MS DOS). Обнаруживая фамильное сходство с fdisk из FreeBSD, что и не удивительно из-за близости их файловых систем (даже именуемых одинаково - ffs, Fast File System). Хотя и здесь нет полного терминологического тождества. Потому остановлюсь на этой процедуре подробнее. В меру своего, пока очень ограниченного, понимания, разумеется.

В отличие от Linux, в OpenBSD (как, впрочем, и во Free), разбиение диска осуществляется в два этапа и двумя разными программами. Сначала посредством собственно fdisk создаются физические разделы, partitions (slices в терминологии FreeBSD, они же primary partitions в понимании DOS и Linux). Коих, по известным архитектурным ограничениям PC, не может быть более четырех на одном винчестере.

Затем физические разделы, с помощью Disk Label Editor, делятся на разделы логические, именуемые в русском переводе OpenBSD подразделами, хотя в оригинале и используется тот же термин partitions, что идентично FreeBSD. Это способствует окончательному запудриванию мозгов, хотя момент чрезвычайно серьезный и ответственный. Поскольку подразделы OpenBSD (буду использовать этот термина, как наиболее соответствующий ситу явления) объединяют в себе как понятие расширенного раздела DOS (extended partition), так и логического тома внутри него.

Актуализированное примечание: я не стал поправлять предыдущий абзац (и пару последующих) по существу - он отражает степень моего тогдашнего представления о дисковых разделах в BSD-разметке. Как-нибудь в ближайшее время соберусь и напишу статью на эту тему...

Действительно, и в DOS, и в Linux Extended Partition - не более чем контейнер для вложенных логических дисков (томов). В Open же BSD, как и во FreeBSD, создается впечатление, что каждый из физических разделов (назови их хоть partition, хоть slice), просто делится на логические части. Однако одна их этих частей присутствует перманентно и удалена быть не может (хотя и помечена как неиспользуемая, unused). Судя по всему, именно она-то и выполняет роль контейнера (=extended partition) для всех остальных.


Не уверен, что я выразил свою мысль достаточно внятно. Тем не менее предлагаю отложить ее вот здесь... (сами знаете, где): знание этого момента потребуется в дальнейшем, при организации взаимодействия Linux и OpenBSD, буде в том нужда возникнет.

Возвращаемся, однако, к нашим партициям. При наличии в системе более одного винчестера, OpenBSD'шный fdisk для начала предлагает определиться, который из них будет корневым. Приводя их список: в OpenBSD физические диски маркируются как wd0 (Master на первом IDE-канале), wd1 (Slave на нем же) и так далее. Излишне говорить, что я рассматриваю случай ATA-винчестеров - со SCSI все будет несколько иначе, но, за отсутствием личного опыта, вопрос этот замнем.

Затем вопрошает, хотим ли мы отвести под систему полный диск (entire disk) или нет, причем второй ответ отмечен по умолчанию. Если, однако, ответить положительно, стадия fdisk просто проскакивается. И это может показаться самым простым решением, если не стоит задача сохранить какие-либо из имеющихся разделов или создать не-ffs разделы. Хотя итогом может стать некоторые (правда, преодолимые) сложности при сосуществовании OpenBSD с Linux (вероятно, и с Windows - тоже, но за искоренением последнего я этот вопрос не изучал).

Я в конце концов так и остановился на положительном ответе на вопрос об entire disk. Но прежде вдоволь поэкспериментировал (с переменным успехом) и при отрицательном выборе.

В этом случае для начала в виде таблицы выводится информация о имеющихся разделах. Она включает их номера (начиная с 0), идентификатор id (то, что в Linux называется типом файловой системы - вернее, идентификатором типа) в шестнадцатиричном исчислении, начало и конец каждого раздела в цилиндрах, головках и секторах, размер в секторах, принадлежность операционной системе (скажем, BSD, Linux, DOS).

Следует отметить три обстоятельства. Во-первых, id совпадает с шестнадцатиричными номерами типов файловых систем, поддерживаемых Linux (в чем позднее можно будет убедиться воочию). Во-вторых, он отличен от нумерации таковых, принятой во FreeBSD (там используется десятичная нотация). Ну а в третьих - тип файловой системы, то есть id, - отнюдь не то же самое, что принадлежность системе операционной. Так, разделы и Free, и OpenBSD обозначаются как BSD-разделы. Однако id раздела OpenBSD - A6, тогда как раздел FreeBSD маркируется как A5 (то есть также, как в Linux).



Ниже таблицы разделов содержится указание, что посредством ввода help можно ознакомиться с доступными командами. Чем пренебрегать ни в коем случае не следует - тем более что вместо help можно (как и для всех остальных команд) ограничиться буковкой h. Потому как команды сильно отличаются от таковых в fdisk из Linux. Главное из них: если в Linux команда quit (q) означает выход из программы без сохранения изменений, то здесь, напротив, quit - это запись изменений с переходом к следующей стадии; для выхода же без записи предназначены команды exit (переход к следующей стадии) и abort (обрыв инсталляции с выпадением в командную среду).

Так что - внимание, внимание и еще раз внимание. Выход из fdisk через quit производит впечатление, что ничего не произошло. И даже ранее существовавшие разделы как бы не изменились (в чем легко убедиться, перезагрузившись в Linux и запустив евойный fdisk). Однако получить доступ к ним не удастся. По крайней мере, обычными подручными методами.

Так вот, на команду help нам выдается ряд вариантов. Во-первых, manual - вызов подробного руководства по fdisk (то есть соответствующего man'а). Во-вторых, reinit - реинициализация диска, чем-то напомнившая мне команду DOS FDISK /mbr; реально ее результат в том, что все разделы обнуляются, кроме одного, который распространяется на весь диск и приписывается системе BSD; впрочем, это еще следует подтвердить записью (write).

Далее следует команда disk - это переопределение геометрии диска, чего при LBA-режиме (а иного у современных дисков не бывает) лучше, думается, не делать.



Вслед за ней - главная команда, edit - изменение размера и характеристик разделов. В случае ее запуска сначала предлагается ввести его номер, затем указать id (по умолчанию стоит существующий) или, введя ноль, пометить как неиспользуемый (unused - понятия удаления раздела как такового тут нет).

При этом на ввод ? (вопросительного знака) выдается список доступных id; для тех позиций, которые я помню на память, он полностью совпадает со списком, выдаваемым Linux'овым fdisk на команду l: 04 - FAT16 меньше 32M, 5 - Extended Partition DOS, 0b - FAT32, 82 - Linux Swap, 83 - Linux native, a5 - FreeBSD, a6 - OpenBSD.



Определив тип файловой системы, можно указать его размер, задав начальный (offset) и конечный (size) сектора; можно, ответив положительно на предварительный вопрос, оперировать и в терминах CHS (цилиндр/головка/сектор). Однако указать размер в человеческих единицах (Мбайт, Гбайт) на этой стадии не удается.

Команда flag отмечает раздел, выступающий в роли загрузочного, Ну а по команде print в виде уже знакомой таблицы (но с новыми значениями) можно в любой момент наблюдать результаты своих упражнений.

Завершить которые можно записью (write), переходом к следующему этапу без записи своих манипуляций (exit), таковым же, но с предварительной записью (quit), или прекращение инсталляции без всяких изменений (abort). Последнее действие доступно и с помощью комбинации Control+C.

Если же мы посредством quit перейдем к следующему этапу (или просто отведем под OpenBSD весь диск), то окажемся в Disk Label Editor, каковой для начала предложит нам свою помощь через ввод вопросительного знака. Из нее мы тут же узнаем о возможности получить список имеющихся подразделов файловой системы (то есть логических разделов) командой print.

В самом простом случае, если был создан всего один физический раздел (или просто под OpenBSD отведен весь диск, посредством выбора entire disk на предыдущей стадии), подразделов у него окажется два: a, занимающий все доступное пространство, и некий мифический подраздел c (помеченный как неиспользуемый, unused). Который, как уже говорилось, уничтожен быть не может: он выполняет функцию extended partition в DOS (и Linux).

В списке же доступных действий далее следуют: a - добавление подраздела, c - изменение размера существующего, b - переопределение отведенного для OpenBSD дискового пространства, r - пересчет свободного пространства, n - определение точки монтирования подраздела, u - отмена последней операции, w - запись произведенных изменений, q - выход с предварительной записью, x - выход без записи изменений.

Очевидно, что не все это доступно сразу. Так, при выборе entire disk невозможно добавить подраздел, потому что весь диск занят единственным физическим разделом, включающим один же существующий подраздел - a. Наряду с которым присутствует и подраздел с, однако он не может быть использован - как я уже говорил, это своего рода аналог Extended Partition из DOS или Linux.



Однако для существующего раздела a можно переопределить размер его командой с (от change), а можно через команду b (от boundary) просто обнулить его, пометив как неиспользуемый.

Если после этого избрать добавление подраздела, то таковой под литерой a будет создан заново, ему будет приписана принадлежность к OpenBSD, а размер можно задать по своему усмотрению, в том числе в мегабайтах (###m, ###M) или гигабайтах (###g,###G) - здесь это будет воспринято нормально. Точку монтирования подраздела логично определить как /.

Второй добавленный подраздел автоматически маркируется буквой b и по умолчанию обретает статус раздела для своппинга (Swap). Рекомендуемый его размер - вдвое больше оперативной памяти. Как и FreeBSD, OpenBSD использует раздел подкачки иначе, чем Linux, скидывая туда содержимое ОЗУ не при его переполнении, а при первой же возможности. И потому большой объем swap-раздела никак не помешает.

Если есть место и желание - рекомендуется дополнительно создать подразделы /usr, /var, /usr/X11R6 (автоматом им присваиваются литеры d, e и т.д., литера c пропускается). Вообще, в руководстве для платформы Intel предложена следующая схема:

/ 35 Мбайт

/usr 229 Мбайт

/var 24 Мбайт

/usr/X11R6 72 Мбайт

Мне такая схема видится весьма спорной. Во-первых, очевидно, что отдельный подраздел /var на настольной машине не нужен (ныне я полагаю, что это не так - по причинам, в обсуждение которых здесь вдаваться неуместно). Во-вторых, /usr и /usr/X11R6 - все равно части единой файловой системы (что упомянуто и в руководстве). И к тому же логичнее тогда создать подраздел /usr/local, куда по умолчанию попадают программы, установленные из портов, дополнительные пакеты и продукты компиляции непортированных исходников. В третьих, на мой взгляд, создание подраздела /home - если и не обязательно, то крайне желательно: все же некоторая дополнительная гарантия целостности пользовательских данных.

Цифры же - сугубо условны. Правда, сказано, что их лучше бы утроить. Я попробовал последовать этому совету, создав (на диске 15 Гбайт) подраздел / в 100 Мбайт, /usr - в 1 Гбайт, swap 512 Мбайт (при RAM 256 Мбайт), отведя остальное пространство под /usr/local и /home. И в результате при установке пакетов получил сообщение о нехватке дискового пространства, естественным образом оборвавшее инсталляцию...



После чего, не пудря мозги. создал 3-гигабайтный корневой подраздел (/, заведомо с избытком, даже самый пухлый дистрибутив Linux на столько не потянет), 512-мегабайтный Swap, оставив остальное под /home. И все прошло нормально. Впрочем, были опробованы и иные варианты... Так что единого рецепта предложить не рискну.

Вероятно, отдельные подразделы (/, /usr, /home), если их не больше четырех, можно создать и на разных физических разделах, как это практикуется в Linux. Просто я, честно говоря, замучился считать сектора: простого калькулятора у меня нет, компьютерный, естественно, был недоступен, вычислять в столбик - скучно, а способность у устному счету я утратил, когда перестал играть в преферанс. Но с точки зрения сохранности данных это, исходя из общих соображений, было бы надежнее.

Завершив дискодробительные действия, следует записать их результаты (w) или выйти из Disk Label Editor с записью (q). У нас запросят подтверждения на запись (с сообщением о создании устройств - в моем случае wd0a, wd0b, wd0e) и на определение точек монтирования созданных подразделов в файловой системе в форме [/point, RET, none, or done].

Набрав RET, точки монтирования можно изменить. Если это не нужно, следует набрать done. Здесь, если винчестеров больше одного, последует предложение подвергнуть тому же мучительству другой диск. А после естественного отказа спросят: действительно ли мы готовы к процессу?

Хотя на самом деле спрашивать больше не о чем: все, что могло случится, уже случилось. Хотя полной ясности, когда и куда записываются действия разметки диска, у меня не осталось. Впечатление такое, что в значительной мере они остаются там же, гле и русские слова у японца - в ... оперативной памяти, так сказать. Однако там-то они безусловно присутствуют: если теперь выйти из программы инсталляции с помощью Control+C, при следующем ее запуске (даже после перезагрузки) следы всех ранее выполненных действий можно видеть воочию. Хотя, повторяю, с точки зрения некоего стороннего fdisk ранее существовавшие разделы сохранились в неприкосновенности...

Короче говоря, и на этом этапе следует покурить и подумать. Если же подтвердить готовность к дальнейшему процессу, происходит переход к следующему этапу, каковой можно озаглавить как


Содержание раздела