Окончание, начало см. в МК № 24 (247).

Интересно, что все файлы в каталоге /etc/sysconfig/ образуются на лету при загрузке системы, поэтому ничего вручную создавать не надо (автор поначалу порывался, пока не разобрался). Непосредственно к локализации имеет отношение файл /etc/sysconfig/i18n. Создается и наполняется он строками:

echo "LANG=\"$LANG\"" >> /etc/sysconfig/i18n echo "COUNTRY=\"$COUNTRY\"" >> /etc/sysconfig/i18n echo "LANG=\"$LANG\"" >> /etc/sysconfig/i18n echo "LANGUAGE=\"$LANGUAGE\"" >> /etc/sysconfig/i18n echo "CHARSET=\"$CHARSET\"" >> /etc/sysconfig/i18n echo "XMODIFIERS=\"$XMODIFIERS\"" >> /etc/sysconfig/i18n

Если локаль не будет устанавливаться, то можно просто закомментировать все эти строки и вручную создать файл с необходимыми переменными, чтобы не морочить себе голову в дальнейшем. После строкой export LANG COUNTRY CHARSET экспортируются необходимые переменные. Далее чуть ниже нашлась строка, загружающая консольный шрифт и раскладку по умолчанию, данные о последней берутся в только что созданном файле /etc/sysconfig/keyboard (скопом посмотреть все значения, автоматически сгенерированные скриптом, можно в /etc/sysconfig/knoppix):

[ -f /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard # Set default keyboard before interactive setup [ -n "$KEYTABLE" ] && loadkeys -q $KEYTABLE [ -n "$CONSOLEFONT" ] && consolechars -f $CONSOLEFONT

Могу сказать, ничего там по-настоящему не загружается, и все потому, что программа просто не знает, где все это искать. Поэтому вместо последней строчки пришлось вписать такую:

consolechars -f /usr/share/consolefonts/Cyr_a8x16.psf.gz -m /usr/share/consoletrans/koi2alt.trans

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

DESKTOP="$(getbootparam desktop 2>/dev/null)" # Allow only supported windowmanagers case "$DESKTOP" in gnome|kde|larswm|xfce|windowmaker|wmaker|icewm|fluxbox|twm) ;; *) DESKTOP="kde"; ;; esac

Но прежде чем заняться доводкой X-Window, заглянем в еще один файл, не последний по значимости на этом празднике жизни —/etc/profile. Здесь, конечно, есть чем поживиться. Кроме экспорта переменной PATH (как и положено), второй раз экспортируется LANG, взятая на этот раз из /etc/sysconfig/i18n (наверное, чтобы уж наверняка). Причем строкой [ -n "$LANG" ] || LANG="de_DE@euro" по умолчанию устанавливается на сей раз немецкая локаль (исправляем на нужную). Строкой ниже, если переменная $SYSFONTACM имеет нулевое значение, для всех терминалов экспортируется карта соответствия. Я просто убрал проверку и оставил только:

if ls -l /proc/$$/fd/0 2>/dev/null | grep — '-> /dev/tty[0-9]*$' >/dev/null 2>&1; then echo -n -e '\033(K' > /proc/$$/fd/0 fi

Можно было, конечно, напечатать более понятный код (как в статье о Source Mage), но лень, понимаете, — убрать лишнее намного проще.

И традиционно в данный файл добавляю средство от дампов:

ulimit -Sc 0 &>/dev/null

В этом же файле при желании можно изменить вид приглашения в bash (переменная PS1) и alias'ов для задания сокращенного ввода команд.

Все. С консолью покончили, переходим к X-Window. Для начала заглянем в начало начал — скрипт /usr/X11R6/bin/startx. Где находим следующее:

export HOME=/home/root/ # экспорт переменной HOME cp -r /KNOPPIX/root/ /home/ # если хотим что-то подправить в домашних скриптах, смотреть нужно в /root (там, правда, сейчас ничего нет, но кто нам мешает создать нужное?) cd /home/root/ cp /KNOPPIX/root/pick_your_resolution_in_here / vi /pick_your_resolution_in_here # этой строкой и открывается файл, в котором выбираем разрешение X-Window при загрузке системы. В файле pick_your_resolution_in_here по умолчанию закомментированы все строки. Поначалу для удобства убрал знак комментария с той, которая соответствовала выбранному мной рабочему разрешению, чтобы не тратить время на выбор. Затем для автоматической его загрузки убрал vi в строке перед ним, а после полной настройки X-Window вообще удалил ее.

Работой X-Window в Linux руководит один файл (в нашем случае) —/etc/X11/XF86Config. О его опциях я уже писал на страницах журнала, остановлюсь только на возможности работы с русским текстом.

Следующая секция отвечает за настройку клавиатуры:

Section "Keyboard" Protocol "Standard" # описывает протокол работы (если работает, не трогаем) ###XkbRules "xfree86" XkbModel "pc105" # модель клавиатуры XkbLayout "ru" # указывает демону xkb на необходимость загрузки англо-русской раскладки XkbOptions "grp:alt_shift_toggle,grp_led:scroll" # переключение по Alt+Shift, дополнительно индикатор Scroll Lock будет сигнализировать о текущей раскладке XkbVariant "winkeys" # подключение варианта раскладки winkeys, в котором точка с запятой находятся на своем месте справа от Ю, а не вызываются по Alt+6(7). EndSection

Последняя строка требует некоторых пояснений, так по данному вопросу приходит много писем. Все правила, необходимые для описания загружаемой клавиатурной раскладки, находятся в каталоге /usr/X11R6/lib/X11/xkb/symbols/ или в другом месте, но тогда в здесь обязательно будет ссылка. Так вот, XkbLayout указывает на название файла в этом каталоге. Для украинской раскладки выбираем значение ua, для тройной английско-украинско-русской —ru_UA. Последнего, кстати, в Damn Small Linux нет, пришлось взять из дистрибутива ASPLinux, где, по-моему, впервые появилась безошибочная реализация этой раскладки. Но есть и другие файлы —ge_ru, ru_yawerty, предназначенные, скорее, для гурманов. А XkbVariant (можно записать просто XkbLayout "ru(winkeys)"), указывает на подраздел (блок) этого файла. По умолчанию используется злополучный блок basic, это он виноват в том, что новички ругают Linux чуть ли не в каждой конференции за неправильную раскладку. Подключив winkeys, можно избежать подобных неудобств; опять же, если заглянуть внутрь, можно встретить еще typewriter и phonetic. И конечно же, никто не мешает создать свой файл, где воплотить свое видение данного вопроса. Следующая секция XF86Config описывает мышь:

Section "Pointer" Device "/dev/psaux" # порт, к которому подключена мышь Protocol "ImPS/2" # со скроллом, порт PS/2 Emulate3Buttons no # включать ли эмуляцию третьей клавиши ZAxisMapping 4 5 # означает, что прокручивание вперед интерпретируется как нажатие кнопки 4, назад — 5, приложения обычно используют для прокрутки страниц EndSection

Из остальных опций обязательно в строках HorizSync и VertRefresh укажите реальные частоты вашего монитора, тогда есть вероятность, что частота развертки будет выставлена оптимально, наконец, если есть уже установленный Linux, можно просто передрать оттуда строки Modeline, в которых указывается нужная частота. При отсутствии же Linux'a можно зайти по адресу , где, заполнив web-форму, можно получить указанную строку. Немного небезопасен вариант установки минимальной частоты кадровой развертки в качестве значения нижней границы VertRefresh, равной требуемой частоте (например, 85—120) — тогда X-Window просто физически не сможет выставить ее меньше (так она воспитана).

И последний этап — установка шрифтов. Если посмотреть в файлы XftConfig и XF86Config (в большинстве дистрибутивов их прописывают в одном файле /etc/X11/fs/config), то в них можно найти пути к каталогам со шрифтами, но вот шрифтов там с гулькин нос. Поэтому забираем шрифты с указанных выше сайтов, кладем в выбранные каталоги, заходим и даем команду # mkfontdir (для TrueType-шрифтов предварительно нужно дать команду #ttmkfdir > font.scale). Только желательно чтобы каталоги с кириллическими шрифтами были записаны первыми. После перезагрузки иксов можно будет работать с кириллицей в X-Window.

На этом основные настройки можно считать законченными. Остальные действия зависят только от вашей фантазии, наличия свободного времени и желания покопаться в настройках. Так, можно настроить fluxbox по своему вкусу (тема, каковых в комплекте предостаточно, фоновый рисунок, пункты меню), или вообще сменить его на другой оконный менеджер, добавить скины и плагины к XMMS, прописать необходимые параметры для настройки сети, в том числе и модемного соединения. При необходимости можно создать нового пользователя и задать пароли. Я уже не говорю об установке любимых приложений. Простор для творчества большой. Мы же данный этап заканчиваем переходим к следующему.

Все предыдущие действия, как вы помните, мы выполняли в окружении chroot с файлами, расположенными на жестком диске. Теперь наша задача — загнать это все обратно, откуда взяли, т.е. на CD-ROM. Создаем где-нибудь на разделе с файловой системой Linux (чтобы права и имена сохранить) каталог. И переносим туда все файлы с CD-ROM, за исключением файла со сжатым образом KNOPPIX/KNOPPIX. При желании можно изменить заставку, появляющуюся при загрузке системы, — я думаю, это будет вполне справедливо, т.к. после всех выполненных действий это уже далеко не Dawn Small. Для загрузки используется syslinux (http://syslinux.zutor.com), хотя в последнее время мне чаще попадались дистрибутивы, основанные на isolinux. Все настройки при этом хранятся в файле boot.img; чтобы их изменить, необходимо смонтировать его в какой-то временный каталог. Например:

# mount -t msdos -o loop /mnt/mydawnsmall/KNOPPIX/boot.img /mnt/images

Теперь заходим в каталог, куда смонтирован образ. Внутри обнаруживаем несколько файлов (см. Рис. 1). В файле boot.msg содержится приветственное сообщение — на русское менять не советую, шрифты ведь все рано не будут к тому времени загружены, но себя похвалить можно (нужно) :-). Чтобы изменить параметры, передаваемые ядру при загрузке, необходимо покопаться в файле syslinux.cfg — здесь, чтобы немного увеличить размер надписей при загрузке, я установил значение параметра VGA=788 (или normal), что соответствует разрешению 800600, а по умолчанию VGA=791. В файле f2 содержится help, выводимый по F1. Здесь же лежит ядро vmlinuz, с которого и загружается вся система, при желании его можно поменять на свое — может, получится запустить. И наконец, картинка, отображаемая при загрузке, спрятана в файле logo.16. Чтобы ее заменить, необходимо взять 16-цветный рисунок размером 640х400 в формате .png. Далее выполняем следующие команды:

# pngtopnm < logo.png > logo.pnm # ppmtolss16 < logo.pnm > logo.16 # cp logo.16 /mnt/mydawnsmall/KNOPPIX/logo.16

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

# mkisofs -R -U -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda5/KNOPPIX | nice -n -10 /usr/bin/create_compressed_fs — 65536 > /mnt/ mydawnsmall /KNOPPIX/KNOPPIX

И наконец, создаем iso-образ:

# cd /mnt/ # mkisofs -pad -l -r -J -v -V "my own linux" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o myownlinux.iso mydawnsmall

В итоге мы получили работоспособную и, главное, локализованную систему, автоматически подстраивающуюся под имеющееся оборудование (ну, почти), полностью настроенную по нашему вкусу, которую можно использовать как рабочую или демонстрационную. И после этого можно всегда с собой носить в кармане свой маленький Linux. К сожалению, в комплекте с Damn Small нет скрипта knx-hdinstall, с помощью которого можно буквально за пару шагов впоследствии установить эту ОС на жесткий диск, но ведь главное сделать первый шаг. Правда?

Linux forever!