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

Алексей Федорчук
[email protected]

Предыдущая заметка завершилась тем, что я приобрел диск с дистрибутивом OpenBSD. Диск этот, довольно непритязательно оформленный, содержал, тем не менее, полный (за некоторыми исключениями) дистрибутив системы и краткий перечень отличий текущей версии от предыдущей. А главное, вполне позволял установить с него систему.

Конечно, для установки OpenBSD можно обойтись и без CD. Во-первых, дистрибутив доступен на ftp-сервере разработчиков (имеющем ряд зеркал), откуда его можно скачать даром (если не считать, конечно, платы за трафик). Правда, iso-образы в готовом виде отсутствуют. Так что для установки следовало бы скачать тарбаллы и образ загрузочной дискеты.

Более того, и вся система вообще может быть установлена по ftp-протоколу. Все, что для этого нужно - загрузочная дискета и постоянное подключение к Сети. Дальнейшие заботы берет на себя т.н. система портов, впервые появившаяся во FreeBSD. Ее посредством устанавливается соединение с сервером, скачивание исходников, их компиляция и установка компонентов в соответствующие места. Кроме того, система портов позволяет постоянно поддерживать OpenBSD в актуальном состоянии.

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

Диск OpenBSD 2.8, как стало доброй традицией в последнее время, является загрузочным. То есть необходимости в инсталляционных дискетах нет (хотя при желании и необходимости - образы их на CD имеются). Вставляем его в соответствующий привод - и идем на перезагрузку, не забыв в процессе ее выставить соответствующую опцию в BIOS Setup.

Сообщения о ходе загрузки идут не в традиционных черно-белых тонах, а белым по синему. Среди них удается разобрать, что система определяет всякие устройства - в моем случае это были плата видеозахвата на чипе BT878, звуковая карта Ensoniq1371, CD-R/RW с IDE-интерфейсом, для которого предлагается эмуляция SCSI. Не говоря уже о таких тривиальных вещах, как винчестеры.

Правда, по завершении загрузки фон опять становится черным. И на нем высвечиваются варианты выбора: инсталляция (Install), обновление (Upgrade), выход в командную среду (Shell). Последняя опция заставляет предполагать (вполне обоснованно, как станет ясным из дальнейшего), что инсталляционный CD ROM может выполнять и функции спасательного в аварийных ситуациях.

Обновлять мне нечего, спасаться - не от чего, выбираю инсталляцию. Прочитав в комментарии, что я могу в любой момент прервать ее нажатием комбинации клавиш Control+C. И если после этого решу инсталляцию продолжить, большая часть моих ответов на вопросы системы ею припомнится. Что, забегая вперед, оказалось недалеко от истины.

Инсталляция проходит в текстовом режиме, при минимальной автоматизации процесса. каковой, в сущности, сводится к

  • разметке диска,
  • выбору пакетов, их распаковке и записи на диск,
  • минимальным пост-инсталляционным настройкам.

Именно в такой последовательности и рассмотрим этот процесс.

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

Первое, что происходит после выбора инсталляции - запуск собственного варианта 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 ранее существовавшие разделы сохранились в неприкосновенности...

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

Выбор компонентов

Однако перед этим в темпе румбы происходит довольно много событий. В считанные минуты создаются файловые системы (то есть происходит собственно разбиение и форматирование), выдается сообщение о их объеме, предлагается сконфигурировать сеть (от чего я за отсутствием оной отказался), ввести пароль для root'а, спрашивается, предполагается ли использование системы X Window.

Наконец, предлагается определить источник инсталляции (ftp, http, стриммерная лента, CD ROM или локальный диск). А по выборе CD (именно этот случай я и рассматриваю) - указать относительную точку монтирования каталога с файлами для установки (по умолчанию - /2.8/i386, на CD такой и в самом деле есть). А затем - выбор компонентов, количество которых просто смешно:

  • base28.tgz
  • etc28.tgz
  • misc28.tgz
  • comp28.tgz
  • man28.tgz
  • xbase28.tgz
  • xshare28.tgz
  • xfont28.tgz
  • xserv28.tgz
  • bsd.tgz

Причем по умолчанию отмечены только два первых, последний и man. Можно, набрав done, с этим согласиться, можно отметить все (all), можно отмечать необходимые по одному:

list имя_файла

Компоненты, включенные ошибочно, можно изъять, набрав

list -имя_файла

Затем все же набирается done, отвергается предложение повторить выбор - и происходит установка.

Как можно было понять из списка файлов, компоненты для установки представляют собой простые архивы *.tgz, содержащие кроме собственно программных, библиотечных и прочих файлов, также инсталляционные скрипты, подобно тому, как это сделано в Linux Slackware. И потому установка сводится к распаковке архивов, их копированию на диск и размещению в соответствующие места.

Собственно установочная процедура осуществляется со страшной научно-фантастической силой. У меня, например, она заняла (при выборе всех компонентов, кроме игр) не более 2-3 минут, я даже время толком засечь не успел... Впрочем, как и все в этом мире, такая скорость имеет свою оборотную сторону, обнаруживаемую при первом же запуске системы. Но это - тема следующей заметки.

Вот почти и все. Инсталляционная стадия закончилась, наступает

Пост-инсталляционное конфигурирование

Впрочем, этап этот - еще более скомкан, чем установочный. И, в сущности, сводится к выбору часового пояса. В наших условиях это (если, конечно, не остановиться на GMT), происходит в последовательности: Europe/, потом Moscow, в обоих случаях команда list дает список доступных вариантов.

А затем - предложение ввести команду halt и, по останову системы, any key для перезагрузки. Шустро извлекаем инсталляционный CD (об этом нас предупредить забыли) - и ждем, что же выйдет в итоге. Что вышло у меня - расскажу в следующий раз.

А пока вкратце подведу предварительные итоги. Можно заметить из всего разговора, что система инсталляции устроена, с одной стороны, просто и логично. И к тому же предполагает простой возврат к предыдущей стадии в случае ошибки - с помощью комбинации Control+C и перезапуска программы install.

Единственный по настоящему сложный момент - разметка диска. Не потому, что она осуществляется каким-либо особо запутанным образом. Отнюдь. Просто достаточно высока цена ошибки (и не очень мала вероятность ее совершить), если система устанавливается на диск с уже существующими разделами, содержащими иную ОС, программы или, самое страшное, данные.

И потому я по первому разу посоветовал бы поэкспериментировать с установкой OpenBSD на отдельный физический диск. В этом случае худшее, что может грозить при ошибке - принудительный выход из программы инсталляции и ее повторный запуск. Что, как я уже говорил, занимает весьма мало времени. А для общего образования совсем не вредно...

Установка OpenBSD на отдельный физический диск имеет еще и то преимущество, что позволяет наиболее простым (правда, на мой взгляд, кому-то такой путь может и не понравиться) и безопасным способом организовать совместное использование ее с Linux, например, или Windows. Но об этом - также как-нибудь в другой раз.

Еще один момент, на который можно было обратить внимание - в процессе установки не предусмотрено каких бы то ни было настроек системы X Window, даже если ответить положительно на вопрос о ее грядущем использовании. Это действительно так - работу в графическом режиме придется настраивать в дальнейшем, вручную или с помощью соответствующих утилит. Но и это будет темой специального разговора.

Продолжение
К предыдущему