В началоGentoo Linux: установка и настройка → И всё же — суперфинал
Gentoo-doc HOME Пред.: Финал: постинсталляционное конфигурированиеВ началоУровень выше: Gentoo Linux: установка и настройкаСлед.: Заключительный аккорд

9. И всё же — суперфинал

Настройкой загрузчика можно считать завершенной официальную часть инсталляции. Однако для полного счастья не хватает еще некоторых штрихов. Так, руководство рекомендует (и это — более чем резонно) оптимизировать режим работы жесткого диска на предмет использования DMA — что весьма способствует его быстродействию. Для такого рода штук предназначен файл /etc/conf.d/local.start. Открываем его в редакторе и после комментария (по умолчанию там больше ничего нет) приписываем строку

hdparm -d 1 /dev/hda

Если физических дисков больше одного — повторяем ее для каждого устройства. А затем, воспользовавшись случаем, обеспечим здесь же и загрузку консольной мыши при старте системы:

gpm -t imps2 -m /dev/psaux

Теперь обратимся к локализации. Не смотря на свое исходно американское происхождение, Gentoo — дистрибутив интернациональный (это ясно из состава команды его разработчиков). И потому в нем есть все базовые средства для работы с языками, отличными от американского. Нужно только немного потрудиться для их активизации.

Достигается это можно редактированием файла /etc/rc.conf. Что может показаться необычным для пользователей Linux. Но мы помним, что в Gentoo принят порядок начальной загрузки в стиле BSD (а не в стиле System V, как в большинстве распространенных дистрибутивов Linux, за исключением Slackware и его сородичей). Впрочем, вдаваться в подробности пока не буду — это тема для отдельной беседы. Пока же — голая практика: все, что мы хотим видеть загруженным при старте машины, должно быть явным образом указано в файле /etc/rc.conf. И именно в том порядке, в каком требуется.

Так что открываем этот универсальный файл

$ nano -w /etc/rc.conf

отыскиваем в начале его строку

KEYMAP="us"

и заменяем чуждую нам Америку на что-нибудь родное, от братчиков Кирилла и Мефодия. Что именно — определяем в какой-либо из иных виртуальных консолей командой

$ ls /usr/share/keymaps/i386/qwerty/ru*

В ответ она выведет на экран такой список:

/usr/share/keymaps/i386/qwerty/ru1.map.gz
/usr/share/keymaps/i386/qwerty/ru2.map.gz
/usr/share/keymaps/i386/qwerty/ru3.map.gz
/usr/share/keymaps/i386/qwerty/ru4.map.gz
/usr/share/keymaps/i386/qwerty/ru-cp1251.map.gz
/usr/share/keymaps/i386/qwerty/ru.map.gz
/usr/share/keymaps/i386/qwerty/ru-ms.map.gz
/usr/share/keymaps/i386/qwerty/ru_win.map.gz
/usr/share/keymaps/i386/qwerty/ru-yawerty.map.gz

Можно видеть, что в нем присутствуют кириллические раскладки на все случаи жизни (а пути к ним, хотя и взяты с Live CD, соответствуют тем, что будут в инсталлированной системе). Дело, конечно, сугубо личное (я бы даже сказал, интимное), но по мне предпочтительна ru4: это раскладка для кодировки KOI8-R с Windows-маркировкой клавиш (не путать с собственно раскладкой для Windows-кодировки — ее, как видно из списка, тоже можно использовать) и переключением с латиницы на кириллицу по нажатию CapsLock. Так что вписываем

KEYMAP="ru4"

и переходим к следующей строке, определяющей экранный шрифт консоли — CONSOLEFONT. Очевидно, что умолчальное ее значение описывает шрифт без символов кириллицы. Но — их у нас есть, в чем легко убедиться, просмотрев каталог /usr/share/consolefonts. Шрифтов там немерянно, и среди них легко отыскиваются семейства alt-*.psf.gz и cp866-*.psf.gz. И то, и другое нам (почти) подходит — это экранные шрифты с символами кириллицы в кодировке CP866 (она же — альтернативная, кодировка DOS или IBM). Почему так — ведь мы только что установили раскладку KOI8-R для клавиатуры, да и шрифты (семейства koi8r-*.gz), имеются? Распространяться не буду, ограничившись словами: это лучше, Леня.

А слово "почти" я добавил потому, что все имеющиеся стандартно кириллические шрифты далеки от совершенства как эстетически, так и медицински. Так что в дальнейшем лучше будет воспользоваться шрифтами из пакета Виктора Вагнера console-tools-cyrillic — там есть очень симпатичные экземпляры, но об этом — как-нибудь в другой раз. Пока же просто вписываем, например,

CONSOLEFONT="cp866-8x16"

И начинаем рассуждать логически: как же так, раскладка клавиатуры KOI8, а кодировка экранного шрифта — CP866. Ясно, что без загрузки карты трансформации одного в другое не обойтись. И такая карта у нас есть тоже — в каталоге /usr/share/consoletrans обнаруживаем файл koi2alt. Имя которого и вписываем в строку

CONSOLETRASLATION="koi2alt"

сняв с нее предварительно стоящий по умолчанию комментарий. Откладываем в уме, что таким образом карта соответствия будет загружена только на одной, первой, из виртуальных консолей (она же — консоль системная) — к этому мы еще вернемся. А пока, дабы покончить с файлом /etc/rc.conf, вспоминаем, что системные часы нашей машины установлены по местному часовому поясу (скорее всего — хотя в последнее время я осознал преимущества времени гринвичского) — тому самому, который мы определили через файл-ссылку /etc/localtime. И обращаем внимание, что строка

CLOCK="UTC"

указывает у нас, напротив, именно на время по Гринвичу (UTC=GMT). Заменяем UTC на localtime — и файл /etc/rc.conf можно закрывать (прочие его строки можно оставить без изменений, если вам лично не известны веские причины их сделать).

А вот теперь пора довести до конца дело с картами соответствия. Открываем файл /etc/init.d/local: как явствует из названия, он предназначен для всякой всячины местного значения (и исполняется после всех остальных конфигурационных файлов). И вставляем в его конец с помощью редактора (или перетаскиваем мышью из данного руководства) простенький скрипт (оператор цикла):

for i in 1 2 3 4 5 6
        do
        echo -ne '' > /dev/vc/$i
done

В первой его строке определяется значение переменной i (ее можно обозвать любым другим образом) как диапазона цифр от 1 до 6 (по умолчанию у нас именно шесть виртуальных консолей), вторая — указывает, что следующей строкой будет тело цикла. А тело цикла — вывод "магической последовательности" ESC-(K (именно она и обеспечивает активизацию карты соответствия) и ее перенаправление на виртуальные консоли, номера которых заданы переменной i, то есть /dev/vc/1/dev/vc6. Это — если используется файловая система устройств (devfs), в противном случае (если не был снят комментарий со строки tmpfs в файле /etc/fstab) имена консолей будут обычными — /dev/tty0 - /dev/tty5.

Отступление для любовников (или невольников) кодировки CP1251. Все сказанное о русификации применимо и к ней. Нужно только определить в файле /etc/fstab загрузку соответствующих раскладки клавиатуры (они, как уже говорилось, имеются) и карты соответствия CP1251->CP866. А вот ее придется поискать (где — за ненадобностью не помню) или просто слямзить из любого отечественного дистрибутива — Altlinux или ASPLinux.

Все же открою секрет — почему в консоли в любом случае предпочтительны экранные шрифты в кодировке DOS. Так уж исторически сложилось: вследствие аппаратных особенностей VGA-адаптеров (а в консоли мы имеем дело именно с режимом VGA, сколь бы крутой GeForce не стоял в машине) только они обеспечивают нормальный вывод на экран символов псевдографики. Кроме того, их просто больше, и некоторые среди них, как я говорил, лучше. Так что есть резон загружать именно их, даже если программы с псевдографикой не используются совсем. В том числе и Midnight Commander — но какой же русский не любит детей командира Нортона!

Мы же пока завершим русификацию. Для чего установим собственно локаль последней строкой в файле /etc/init.d/local (опять прекрасный каламбур, господа!):

export  LANG="ru_RU.KOI8-R"

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

export  LC_NUMERIC="POSIX"

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

В итоге, выполнив несложную последовательность действий, мы получили корректно русифицированную систему — русифицированную ничуть не хуже, чем те дистрибутивы, кириллической поддержкой в которых гордятся (и — справедливо гордятся) именитые отечественные разработчики — Altlinux и ASPLinux. А поскольку мы сделали все это своими руками и с полным пониманием сути действий, у нас тоже есть основание для гордости. Правда, "лобовым" способом, без учета специфики дистрибутива — но зато работающим всегда и везде. А к "идеологически правильному" (для Gentoo) методу локализации можно будет вернуться позднее.

Можно, конечно, активизировав внесенные в конфигурацию изменения командой etc-update, продолжать устанавливать программы (Иксы, например). Или даже начинать обычную работу — установленная система, внутри которой мы находимся, это вполне уже позволяет. Однако для полной проверки лучше все-таки сначала перезагрузиться.

Итак, временно расстаемся с нашим новым Gentoo командой exit, после чего вновь оказываемся в системе Live CD, той же командой зарываем все виртуальные консоли, кроме первой (а у нас их могло расплодиться немало) и готовимся к выходу.

Хотя — стоп. А собирали ли мы при установке ядро системы. Если да — все в порядке, тотальный unmount:

$ umount /mnt/gentoo/boot
$ umount /mnt/gentoo

и что было смонтировано руками, а затем — reboot (или halt, если есть желание прерваться — при первой загрузке хорошо бы внимательно следить за ее ходом по сообщениям на экране).

Если же ядро не собиралось (за отсутствием каких-то исходников — другого оправдания такому разгильдяйству нет), то совершаем последнее установочное действие: просто тупо копируем ядро с Live CD (оно, как мы уже убедились, не только работоспособно, но и поддерживает большинство жизненно необходимых функций):

$ cp /cdroot/boot/linux /mnt/gentoo/boot/

Правда, у нас не собиралось не только ядро, но и модули. И это не беда, их тоже копируем с CD:

$ cp -R /cdroot/lib/modules /mnt/gentoo/lib/modules

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

Пред.: Финал: постинсталляционное конфигурированиеВ началоУровень выше: Gentoo Linux: установка и настройкаСлед.: Заключительный аккорд
В началоGentoo Linux: установка и настройка → И всё же — суперфинал