2009-02-25
Вот мы и подошли к волнующему моменту — установке 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 для загрузки ядра с поддержкой стандартной текстовой консоли. Если же хочется воспользоваться красотами консоли графической — к вашим услугам фреймбуфер с разрешениями от 1280x1024 до 640x480:

То есть при желании наблюдать инсталляцию в наивысшем возможном разрешении надо ввести в командной строке следующее:
boot: fb1280Не понадобится, скорее всего, и указывать какие-либо опции загрузки. При необходимости в оных — если ядро не грузится умолчальным образом — придётся почитать и (или) подумать. В большинстве случаев требуется указание опций типа noapic и (или) noacpi, но все возможные случаи предусмотреть невозможно. И поэтому оставляю их на рассмотрение заинтересованным лицам.
По окончании загрузки на первой виртуальной консоли будет предложено авторизоваться root'ом (без пароля). Одновременно станут доступны и остальные виртуальные консоли в количестве пяти штук, на которые можно перейти посредством комбинации клавиш Alt+F#. На одной из них (также предварительно авторизовавшись, как root) есть резон открыть с компакт-диска Handbook, содержащий руководство по установке. Это простой текстовый файл, так что просмотреть его можно таким образом:
# less /cdrom/crux/handbook.txtи выполнить разбиение диска посредством программ fdisk или cfdisk. Поскольку на эту тему говорилось недавно и подробно, описание процедуры, опять же, пропущу. Напомню лишь наиболее целесообразную, как мне кажется ныне, схему:
Тем не менее, если раздел под 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 у меня устанавливаться отказался. Поэтому приводимые ниже скриншоты заимствованы с соответствующего раздела сайта проекта, хотя они и относятся к одной из предыдущих версий.
Для начала выводится приглашение, напоминающее о том, что неплохо было бы предварительно прочитать соответствующий раздел руководства — того самого, которое мы в самом начале вызвали на вторую виртуальную консоль:

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

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

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


Переход в 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
Далее переходим в новообразованный каталог /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) #При установке CRUX'а в качестве единственной системы здесь обязательно нужно проследить за тем, чтобы имя загрузочного устройства (значение параметра boot) и устройства, несущего корневую файловую систему (значение параметра root), соответствовали текущим реалиям (в примере они даны согласно описанной выше схеме разметки диска). При желании внести дополнительные параметры следует обратиться к документации — man lilo.conf — либо к многочисленным описаниям настройки lilo, существующим в природе (например, здесь).lba32 install=text boot=/dev/sda image=/boot/vmlinuz label=CRUX root=/dev/sda3 read-only append="quiet"
# End of file
Внеся необходимые изменения в /etc/lilo.conf, необходимо зафиксировать их, запустив команду
# /sbin/liloкоторая запишет все необходимые данные в MBR диска, указанного в конфигурационном файле в качестве загрузочного (в примере — /dev/sda).
Вместо lilo в качестве загрузчика можно использовать и GRUB — при активном экспериментировании с многими операционками или дистрибутивами это по ряду причин предпочтительней. Но здесь мы на этом вопросе останавливаться не будем — он рассмотрен в указанной главе, многочисленных статьях Владимира Попова на CITKIT.ru и во многих других источниках.
Замечу только, что для использования 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, по умолчанию их нет.
Вот теперь установку можно считать законченной. Правда, руководство рекомендует отредактировать некоторые инициализационные файлы (на предмет настройки сети, указания часового пояса, шрифтов и клавиатурных раскладок для консоли и так далее). Однако мы этим сейчас заниматься не будем: сиcтема загрузится и с умолчальными настройками, а сама по себе система инициализации CRUX'а и её конфигурирование заслуживает отдельного разговора, который и будет темой одной из ближайших заметок.
Так что спокойно перезагружаем машину, извлекая в процессе установочный компакт, и радуемся новому дистрибутиву.