CRUX: инсталляция

Алексей Федорчук

Вот мы и подошли к волнующему моменту — установке CRUX’а. В принципе, все необходимые сведения по этому вопросу содержатся в официальном Handbook‘е, который, если постараться, можно найти и в русском переводе.

Однако Handbook рассчитан на пользователей с определённым опытом, и потому кое-какие детали в нём остаются за кадром. В настоящей заметке я постараюсь восполнить эти пробелы — в надежде, что CRUX’ом могут заинтересоваться и не столь многоопытные пользователи.

Предлагаю договориться, что CRUX будет установлен на более или менее современную машину с достаточным количеством оперативной памяти (1 Гбайт или более), дисковым интерфейсом SATA и соответствующим винчестером, на котором он будет единственной системой: методы «расчистки» дискового пространства, занятого более иной ОС, и обеспечения мультисистемной загрузки были достаточно подробно рассмотрены в недавних апгрейдах книжки про Zenwalk, и от дистрибутива не зависят ни в малейшей степени.

Итак, для начала нам надо получить файл образа дистрибутивного носителя. «Авторский» вариант его последней версии (crux-X.Y.iso) находится в каталоге crux/latest/iso/ (символическая ссылка на каталог crux/crux-X.Y). Это 32-битная сборка под архитектуру i686 и выше. Для более старых машин надо скачать соответствующую сборку из каталога crux/latest/contrib/ — файл её образа называется crux-i586-X.Y.iso. Кроме того, с сайта самостоятельного проекта доступна и 64-битная сборка, поддерживаемая Ханнесом Майером (Hannes Mayer). Однако за её работоспособность на любых конфигурациях я бы не поручился: у меня она просто отказалась загружаться напрочь. Дальше речь пойдёт только об «авторском» варианте.

Получив образ диска, следует «сболванить» его любым доступным способом, вставить в привод и перезагрузить машину. После чего перед нами предстанет список доступных образов ядра и приглашение к вводу одного из них. Впрочем, необходимости вводить что-либо нет: достаточно нажать Enter для загрузки ядра с поддержкой стандартной текстовой консоли. Если же хочется воспользоваться красотами консоли графической — к вашим услугам фреймбуфер с разрешениями от 1280×1024 до 640×480:

crux01.png

То есть при желании наблюдать инсталляцию в наивысшем возможном разрешении надо ввсести в командной строке следующее:

boot: fb1280

Не понадобится, скорее всего, и указывать какие-либо опции загрузки. При необходимости в оных — если ядро не грузится умолчальным образом — придётся почитать и (или) подумать. В большинстве случаев требуется указание опций типа noapic и (или) noacpi, но все возможные случаи предусмотреть невозможно. И поэтому оставляю их на рассмотрение заинтересованным лицам.

По окончании загрузки на первой виртуальной консоли будет предложено авторизоваться root’ом (без пароля). Одновременно станут доступны и остальные виртуальные консоли в количестве пяти штук, на которые можно перейти посредством комбинации клавиш Alt+F#. На одной из них (также предварительно авторизовавшись, как root) есть резон открыть с компакт-диска Handbook, содержащий руководство по установке. Это простой текстовый файл, так что просмотреть его можно таким образом:

# less /cdrom/crux/handbook.txt

и выполнить разбиение диска посредством программ fdisk или cfdisk. Поскольку на эту тему говорилось недавно и подробно, описание процедуры, опять же, пропущу. Напомню лишь наиболее целесообразную, как мне кажется ныне, схему:

  • /boot — /dev/sda1, 50 Мбайт;
  • swap — /dev/sda2, 1 Гбайт;
  • / — /dev/sda3, 2-3 Гбайт или более, в зависимости от потребности в дополнительном софте;
  • /home — /devsda4, сколько осталось.

При объеме памяти в 1 Гбайт и более от swap-раздела можно отказаться вообще. Тем более, что у меня, например, после установки он категорически отказался активизироваться, хотя причина тому, видимо — в особенностях сборки ядра, о чём я скажу далее.

Тем не менее, если раздел под swap всё-таки создаётся, его нужно определить посредством команды

# mkswap /dev/sda2

После чего на остальных разделах создать файловые системы, ext2fs — под будущий каталог /boot и ext3fs — под корневой и домашний каталоги:

# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda3
# mkfs.ext3 /dev/sda4

Почему именно так — подробно рассказывалось в книжке про Zenwalk, здесь замечу только, что делается это в преддверии обретения файловой системой btrfs — светлым будущим всего линуксоидного человечества, — статуса стабильной.

Теперь будущий корневой каталог надо подмонтировать к файловой системе, загруженной с компакт-диска:

# mount /dev/sda3 /mnt

А уже внутри неё следует смонтировать раздел под грядущий загрузочный каталог, предварительно создав точку монтирования:

# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

Будущий домашний каталог пока можно не монтировать — на стадии инсталляции он не понадобится. Зато надлежит активизировать раздел подкачки, если таковой создавался:

# swapon /dev/sda2

При ядре, загруженном с компакт-диска, это должно пройти нормально.

А где же инсталлятор? — вправе спросить читатель. Ведь все описанные процедуры были проделаны вручную. Вот теперь наступает время для его запуска. Делается это командой

# setup

которая запускает простой шелл-сценарий с псевдографическим интерфейсом (основанным на ncurces), обеспечивающим выбор пакетов, их распаковку и установку в будущую корневую файловую систему на диске. Вся работа скрипта становится понятной из соответствующих скриншотов. К сожалению, как я говорил в заметке о виртуальных машинах, в VirtualBox’е CRUX у меня устанавливаться отказался. Поэтому приводимые ниже скриншоты заимствованы с соответствующего раздела http://crux.nu/doc/screenshots.html сайта проекта, хотя они и относятся к одной из предыдущих версий.

Для начала выводится приглашение, напоминающее о том, что неплохо было бы предварительно прочитать соответствующий раздел руководства — того самого, которое мы в самом начале вызвали на вторую виртуальную консоль:

crux02.png

Далее спрашивается, желаем мы установить CRUX или проагрейдить уже установленный до свежей версии. Ответ представляется очевидным.

Затем предлагается определить целевой каталог для установки — тот, куда мы предварительно смонтировали предназначенный для этого дисковый раздел, то есть /mnt:

crux03.png

После этого нас спросят, какие из категорий пакетов — core, opt и xorg, — мы хотим установить, причём по умолчанию отмечена только первая. В целях максимально быстрого развертывания лучше выбрать все категории, если же нет напряга со временем, с момента выхода установочного диска прошло достаточно времени и есть желание получить максимально свежую систему, можно ограничиться только core, а всё недостающее доустановить потом из портов (как — расскажу в своё время). Тем не менее, для начала здесь будет рассмотрен первый случай.

После того, как мы закажем установку всех трёх категорий, нас спросят — желаем ли мы выбирать пакеты индивидуально. Даже если желания выбирать нет — потому что ставится самый минимум-миниморум, какой только возможен, — всё равно лучше предпочесть выбор: по крайней мере, для ознакомления (хотя по умолчанию отмечен как раз противоположный вариант). Если сделать так — на следующей стадии будут последовательно выводиться списки пакетов по категориям (на скриншоте этого не видно, так как он относится к одной из предыдущих версий):

crux04.png

По умолчанию для установки отмечены все наличествующие пакеты. Поскольку их не так много, никаким особенным выбором их можно не заниматься, за исключением случаев твердой уверенности в ненужности чего-либо. В частности, в категории xorg есть смысл вычеркнуть драйвера для всех видеокарт, кроме той, что имеется в наличии.

На этой же стадии происходит проверка зависимостей пакетов, и если мы в увлечении убрали из списка что-то жизненно необходимое — будет выведен полный отчёт о «недостаче», каковая и ликвидируется автоматически. Если, конечно, не снять отметки с каких-либо элементов этого отчёта, чего делать не рекомендуется: вторично думать за нас инсталлятор не будет

Далее без всякого перехода начинается установка пакетов. поскольку формат их очень прост (обычные архивы tar.gz без всякой метаинформации), а число не велико, процедура эта не займёт много времени:

crux05.png

Наконец, если всё закончилось благополучно, будет выведен список установленных пакетов, завершаемый сообщением об отсутствии ошибок:

crux06.png

Всё. На этом работа установочного сценария закончена. Но сама по себе инсталляция — ещё нет. Потому что в числе инсталлируемых пакетов не было самого главного компонента — ядра системы, а лишь его исходники. Из которых нам сейчас предстоит ядро сконфигурировать, собрать и установить самостоятельно, вручную. Делается это в так называемом chroot-окружении, представляющем собой будущую корневую файловую систему, инсталлированную только что на диск и изолированную от внешнего мира, то есть от файловой системы, загруженной с установочного компакт-диска.

Переход в chroot-окружение потребует некоторых подготовительных мероприятий, которые обеспечат его работоспособность. В первую очередь это монтирование в будущий корневой каталог CRUX’а виртуальных файловых систем. Их содержимое создаётся динамически в ходе загрузки, после которой взяться ему уже больше некуда. Причём монтирование это должно осуществляться в режиме «разделения», так как они уже смонтированы в корень файловой системы, загруженной с CD:

# mount -o bind /dev /mnt/dev
# mount -o bind /tmp /mnt/tmp
# mount -t proc proc /mnt/proc
# mount -t sysfs none /mnt/sys

Обращаю внимание на опцию bind в первых двух командах — именно она указывает на режим «разделения» для каталога /dev и файловой системы /tmp, и на явное указание типа файловых систем proc и sysfs посредством опции -t — в двух последних. Ни ту, ни другую желательно не забыть.

Теперь выполняем собственно процедуру смены корня командой

# chroot /mnt /bin/bash

где /mnt — новый корневой каталог, а /bin/bash — командная оболочка для нового окружения (путь к её исполняемому файлу указывается уже от нового корня). Если не указать второй аргумент, то будет загружен умолчальный /bin/sh (тот же bash с возможностями, урезанными до стандартного POSIX-шелла), что терпимо, но неудобно (и главное, бессмысленно).

Тут руководство по установке рекомендует задать пароль суперпользователя. Поскольку этого всё равно не избежать — резонно последовать его совету, чтобы не забыть это сделать. Процедура ввода пароля — обычная, без «отсвечивания» ввода, но с повтоением.

Теперь окружавшая нас обстановка как бы перестаёт существовать, мы находимся в той самой системе, в которой будем работать в дальнейшем, после окончания установки и перезагрузки. С одним единственным исключением: система наша пока не имеет ядра. А имеет, как уже было сказано, только исходники той его версии, которая включена в текущую версию дистрибутива (на момент, когда пишутся эти строки — linux-2.6.27.8). Именно его предлагается нам собрать и установить официальным руководством.

Но мы так делать не будем. Раз уж всё равно ядро собирать придётся — имеет смысл делать это с материалами поновее. Например, я давеча установил ядро linux-2.6.29-rc4 — ядра 29-й версии, кроме всего прочего, обещают поддержку btrfs. Той самой файловой системы, ради которой мы на всех разделах, кроме загрузочного, применили защиту Филидора… то есть, пардон, файловую систему ext3fs (хотя из всего нативно-стабильного файлового хозяйства Linux’а лучшей я, не смотря ни на что, продолжаю считать ReiserFS).

Для установки ядра, отличного от идущего в комплекте, требуется

  • заблаговременно скачать его исходники;
  • поместить архив на подходящий носитель, например, флэшку;
  • когда придёт время собирать ядро, подсоединить ее и смонтировать командой
    # mount -t /dev/sdb /mnt
  • перейти в нужный каталог
    # cd /usr/src
  • распаковать архив
    # tar xjvf /mnt/linux-2.6.2X

Напоминаю, что всё это происходит в chroot-окружении, от корня которого и отсчитываются все указанные пути.

Далее переходим в новообразованный каталог /usr/src/linux-2.6.2X, запускаем конфигурационный сценарий

# make menuconfig

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

Далее — стандартным образом. То есть — сборка ядра и модулей, например, таким образом:

# make bzImage && make modules

установка модулей:

# make modules_install

и копирование ядра с сопутствующими файлами по назначению:

# cp arch/i386/boot/bzImage /boot/vmlinuz
# cp System.map /boot
# cp .config /boot/config

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

Теперь остаётся только обеспечить загрузку свежеустановленной системы и монтирование в её ходе необходимых файловых систем. Первое потребует редактирования файла /etc/lilo.conf. Оно выполняется вручную в текстовом редакторе — таковых в нашем распоряжении два, традиционный vim и более простой в использовании (точнее, не требующий предварительных навыков) nano, какой выбрать — дело вкуса и привычки.

Прототип файла /etc/lilo.conf устанавливается вместе с одноимённым пакетом (входящим в категорию core) и выглядит таким образом:

#
# /etc/lilo.conf: lilo(8) configuration, see lilo.conf(5)
#

lba32
install=text
boot=/dev/sda
image=/boot/vmlinuz
        label=CRUX
        root=/dev/sda3
        read-only
	append="quiet"

# End of file

При установке CRUX’а в качестве единственной системы здесь обязательно нужно проследить за тем, чтобы имя загрузочного устройства (значение параметра boot) и устройства, несущего корневую файловую систему (значение параметра root), соответствовали текущим реалиям (в примере они даны согласно описанной выше схеме разметки диска). При желании внести дополнительные параметры следует обратиться к документации — man lilo.conf, либо к многочисленным описаниям настройки lilo.

Внеся необходимые изменения в /etc/lilo.conf, необходимо зафиксировать их, запустив команду

# /sbin/lilo

которая запишет все необходимые данные в MBR диска, указанного в конфигурационном файле в качестве загрузочного (в примере — /dev/sda).

Вместо lilo в качестве загрузчика можно использовать и GRUB — при активном экспериментировании с многими операцонками или дистрибутивами это по ряду причин предпочтительней. Но здесь мы на этом вопрос останавливаться не будем.

Замечу только, что для использования GRUB необходимо установить одноимённый пакет (входит в категорию opt), скопировать и отредактировать его конфигурационный файл, а затем инсталлировать «собственно загрузочную» часть загрузчика в MBR загрузочного устройства.

Разделавшись с загрузкой, займемся монтированием файловых систем в ходе оной. Для этого надо отредактировать (в тех же vim или nano) файл /etc/fstab. Дело это очень простое: файл уже содержит записи для всех виртуальных файловых систем, подлежащих монтированию в обязательном порядке (таким, как proc, sysfs, tmpfs), а также закомментированные строки, отвечающие всем нативным файловым системам при различных типовых схемах дисковой разметки. Остаётся только отыскать строку с нужной файловой системой для корня файловой иерархии и каталога /home, который теперь уже понадобится. В нашем случае они будут такими:

#/dev/#EXT3FS_ROOT#	/	ext3	relatime	0	1
...
#/dev/#EXT3FS_HOME#	/home	ext3	relatime	0	2

снять с них символ комментария (#), вместо шаблона имени устройства вписать реальное — sda3 и sda4, соответственно. А поскольку мы создавали ещё и отдельный загрузочный раздел, добавить строку для него:

/dev/sda1	/boot	ext2	defaults	0	0

При использовании загрузчика GRUB его разработчики настоятельно рекомендуют не монтировать каталог /boot автоматически — дабы воспользоваться их советом, следует указать опцию монтирования noauto. Кстати, и при использовании Lilo она не повредит.

Если создавался раздел подкачки, надо раскомментировать и строку, ему соответствующую:

/dev/sda3	swap	swap	defaults	0	0

Наконец, для упрощения монтирования обычных CD- и DVD-дисков не худо бы снять ремарки со следующей строки:

/dev/cdrom	/cdrom	iso9660	ro,user,noauto,unhide	0	0

А если есть претензии на использование DVD-дисков с файловой системой UDF — то и со строки

/dev/dvd	/dvd	udf	ro,user,noauto,unhide	0	0

Хотя зачем нынче может понадобиться последняя — не очень представляю.

Если в дальнейшем планируется задействовать механизм HAL (по умолчанию он не используется), раскомментировать указанные строки как раз не нужно. Но уж если это сделали — то надо не забыть создать в корневом каталоге соответствующие точки монтирования, /cdrom и /dvd, по умолчанию их нет.

Вот теперь установку можно считать законченной. Правда, руководство рекомендует отредактировать некоторые инициализационные файлы (на предмет настройки сети, указания часового пояса, шрифтов и клавиатурных раскладок для консоли и так далее). Однако мы этим сейчас заниматься не будем: ситема загрузится и с умолчальными настройками, а сама по себе система инциализации CRUX’а и её конфигурирование заслуживает отдельного разговора, который и будет темой одной из ближайших заметок.

Так что спокойно перезагружаем машину, извлекая в процессе установочный компакт, и радуемся новому дистрибутиву.

2 комментария к “CRUX: инсталляция

Обсуждение закрыто.