Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Linux дистрибутив Slackware. Энциклопедия настройки. Русификация и локализация консоли.


Информационный Канал Subscribe.Ru

Linux дистрибутив Slackware. Энциклопедия настройки.

Введение


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


Русификация и локализация консоли.


Русификация - один из самых больных вопросов для тех, кто первый раз устанавливает Slackware. Эта процедура отличается от таковых в Red Hat и его клонах. В сети можно найти много способов того, как это сделать и порой сложно дать ответ на вопрос - какой же из них правильный, какой лучше. Сейчас мы рассмотрим несколько способов как это сделать. Они отличаются по степени сложности и следуют от простого к сложному. Все процедуры по локализации и русификации проводятся в каталогах /etc/rc.d/ и /etc/profile.d/. Также нужно сразу оговориться, что должен быть установлен пакет из раздела "l" glibc-i18n-2.3.2-noarch-6.tgz

Первый способ.

Этот способ подойдет тем, кто не хочет что-либо менять в конфигах или опасается что-либо испортить.
Итак, смысл состоит в том, что вы скидываете вот этот скрипт russian.sh в каталог /etc/profile.d/ и он при каждой загрузке автоматом выставит шрифт Cyr_a8x16 раскладку клавиатуры ru4 с переключением по Caps Lock и карту соответствия koi2alt. Также изменятся переменные, отвечающие за локализацию. Вот листинг:
#!/bin/sh if [ notset.$DISPLAY != notset. ]; then echo "Welcome to xterm" else if [ $TERM = xterm ]; then echo "Welcome to xterm" else loadkeys /usr/share/kbd/keymaps/i386/qwerty/ru4.map.gz setfont /usr/share/kbd/consolefonts/Cyr_a8x16.psfu.gz mapscrn /usr/share/kbd/consoletrans/koi2alt echo -ne "\033(K" echo "Use the CapsLock key to swith ..." fi fi export LANG=ru_RU.KOI8-R export LC_ALL=ru_RU.KOI8-R export NLSPATH=/usr/share/locale/ru_RU export LESSCHARSET=koi8-r export LC_CTYPE=ru_RU.KOI8-R export LC_NUMERIC=POSIX export COLORTERM= export TERTMINFO=/usr/lib/terminfo # For Russian GostScript export GS_OPTIONS=-dNOPLATFONTS export GS_PATH=/usr/share/gostscript/fonts

В результате получаем русский ввод и русскоязычное меню и даже русский help и man в некоторых программах. О том как расширить этот список в следующий раз. Как добавить проверку орфографии уже написал.

Второй способ.

Для профи, а также для тех, кто хочет понять как это происходит и кто не любит использовать скрипты, написанные незнамо кем, незнамо как, левой ногой на коленке, стоя на четвереньках в 8:30 в вагоне метро, направляющегося в сторону центра :).

Первое, что я попрошу вас сделать - не полениться и набрать в консоли (не в Иксах!)

$ loadkeys /usr/share/kbd/keymaps/i386/qwerty/ru4.map.gz
$ setfont /usr/share/kbd/consolefonts/Cyr_a8x16.psfu.gz
$ mapscrn /usr/share/kbd/consoletrans/koi2alt
$ echo -ne "\033(K"

Проделайте эту операцию, т.к. она необходима для дальнейших действий. Только что вы сделали невероятное! Теперь, нажав на CapsLock, можно набирать русский текст!

Теперь можно приступать к изучению:

Локаль лежит в директории /usr/share/i18n/locales/
Таблицы символов рядышком /usr/share/i18n/charmap/
Раскладки клавиатуры /usr/share/kbd/keymaps/i386/qwerty/
Консольные шрифты /usr/share/kbd/consolefonts/
Таблицы перекодировки /usr/share/kbd/consoletrans/

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

Локаль. В МС открываем любой файл в директории локалей, например, ru_RU и видим, что локаль - это ничто иное как описание форматов даты, времени, дней недели, денежных единиц, адресов, телефонов и проч. Все это записано в двухбайтовом формате unicode, на что указывает бука U перед шестнадцатиричными кодами.

Таблицы символов. Опять берем и смотрим любимый файл KOI8-R.gz. Что видим? Правильно - соответствие символа в формате unicode и кода нажатия клавиши. Из курса информатики все должны тут же вспомнить, что коду 13 (0Dh) соответствует нажатие Enter.

Раскладки клавиатуры. Вот и добрались до интересного. Вы уже наверное догадались, что мы сейчас сделаем. Точно, посмотрим что внутри файлов ru*.map.gz. Для этого в МС нажимаем F3 (шутка). Надеюсь теперь никто не будет задавать вопросов типа "А какая раскладка соответствует переключению Alt+Shift?". Поясню только, что altgr означает альтернативную группу, в нашем случае русскую. Внимательно изучив файл ru4.map.gz, я обнаружил недокументированную, но очень полезную фичу. Если нажать и удерживать правый Alt, то можно писать в альтернативной раскладке не фиксируя ее, что очень удобно при наборе смешанного текста.
Давайте попробуем сделать свою комбинацию переключения между раскладками. Думаю не каждому по душе доступные. Для начала выберем пациента из имеющихся раскладок. Пусть это будет многострадальный ru4.map.gz, скопируем и переименуем его.

$ cp /usr/share/kbd/keymaps/i386/qwerty/ru4.map.gz /tmp/ $ gzip -d ru4.map.gz $ cp ru4.map ru5.map
Далее открываем наш файл в любимом редакторе. Структура файла довольно проста. Слева код клавиши - справа действие. Код клавиши можно дополнять фиксацией спецклавиш Crtl, Alt, Shift. Как я уже писал, altgr определяет действие в альтернативной раскладке. Нас интересуют коды:

58 CapsLock
42 левый Shift
54 правый Shift
56 левый Alt
100 правый Alt
29 левый Ctrl
97 правый Ctrl
Пробуем свои силы. Например, я хочу, шутки ради, переключаться простым нажатием левого шифта. Для этого я ищу строчку:
keycode 42 = Shift
и меняю ее на
keycode 42 = AltGr_Lock
Сохраняю, выхожу и набираю:
loadkeys /tmp/ru5.map
Теперь проверяем - работает? Если нет, перечитываем с начала, если да, идем дальше. Надеюсь применить фантазию вы сможете. Не забудем вернуть все как было и продублируем эту строчку 2 раза, добавив впереди для первой строчки или alt или control, а для второй еще и altgr чтобы сделать реверс. Получаем соответственно переключение по Alt+Shift или Ctrl+Shift.
keycode 42 = Shift
control keycode 42 = AltGr_Lock
altgr control keycode 42 = AltGr_Lock
Не забудем вернуть CapsLock на законное место. Ищем строчки:
keycode 58 =AltGr_Lock
shift keycode 58 = Caps_Lock
altgr shift keycode 58 = Caps_Lock
Теперь уже не сложно догадаться, что вместо них должна остаться одна строчка:
keycode 58 =Caps_Lock

Все, заметаем следы и кладем на место.

$ gzip ru5.map $ su Password: # mv ru5.map.gz /usr/share/kbd/keymaps/i386/qwerty/ # exit exit $ rm ru4.map

Вот что у меня получилось ru5.map. Попробуйте и вы.

Консольные шрифты. Просто шрифты. Особо тут сказать нечего, кроме разве что одного. Обычно выбирают между следующими шрифтами:
koi8r-8x16.gz
koi8u-8x16.gz
Cyr_a8x16.psfu.gz
Я расположил их в порядке от худшего к лучшему. Как ни странно, но применение первого шрифта - худший выбор. Такие ходовые программы как MC выглядят с ним ужасно, а начертание резко контрастирует с привычными латинскими буквами. Второй уже не имеет таких проблем и даже умеет отображать многострадальную русскую "ё". Оба этих шрифта не требуют загрузки таблицы перекодировки, т.е. команду mapscrn можно не выполнять. И третий, по-моему лучший шрифт. Буква "а" в названии шрифта не случайна. Она обозначает, что шрифт имеет альтернативную группу и что для его использования необходима таблица перекодировки. Т.е. шрифт содержит в себе как бы 2 шрифта на каждую таблицу - латинских и русских символов. Если вы не загрузите таблицу перекодировки, то вместо русского получите псевдографику. Этот шрифт позволяет добиться неискаженного вида всех консольных программ, т.к. содержит в себе стандартную псевдографику. Единственный недостаток - отсутствие буквы "ё".

Таблица перекодировки. Довольно интересная и непонятная штука. Смысл ее станет понятным, если вы откроете любой файлик и посмотрите что внутри. Эта таблица показывает, например, в koi2alt, какому коду символа кодировки cp866 соответствует код этого же символа в кодировке koi8-r. На основе таких вот таблиц работают все программы перекодировщики как под винь, так и под линь. На многих форумах я вижу дебаты по поводу локализации с использованием unicode. Предлагаю всем внимательно взглянуть на файлы этого каталога, авось кому-то и поможет. Мне кажется, что пока рвать когти и переходить на UTF-8 немного рановато, еще не все программы готовы к такому переходу. Однако, сподвижки в эту сторону уже очевидны.

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

Русификация.
Базовыми скриптами для этих целей считаются:

/etc/rc.d/rc.font
/etc/rc.d/rc.keymap

Теперь у вас достаточный багаж знаний, чтобы самим подправить эти скрипты (не забудьте про mapscrn). Приведу вам пример своих.

/etc/rc.d/rc.font

#!/bin/sh
setfont -v Cyr_a8x16.psfu.gz
mapscrn /usr/share/kbd/consoletrans/koi2alt
for i in 1 2 3 4 5 6; do
echo -ne "\033(K" >/dev/tty$i
done
Если честно, то я не разбирался с "магической" комбинацией "\033(K", но очевидно, что это некий переключатель, ибо без него работать ничего не будет. А цикл нужен для того, чтобы русский ввод был доступен на всех 6-ти (по-умолчанию) консолях.

/etc/rc.d/rc.keymap

#!/bin/sh
# Load the keyboard map. More maps are in /usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
/usr/bin/loadkeys ru4.map
fi

Локализация.
Общая процедура довольно проста. Необходимо подправить файлы /etc/profile.d/lang.sh и lang.csh, оставив в них кроме заголовка лишь строчку:

export LANG=ru_RU.KOI8-R
и
setenv LANG ru_RU.KOI8-R
соответственно, хотя второй, по-моему не применяется, т.к. по дефолту sh.
Следующая строчка заменяет разделитель дробной части с русской запятой на стандартную точку:
export LC_NUMERIC=POSIX
Для того, чтобы все сообщения, меню и прочее все же осталось на английском добавьте строчку:
export LC_MESSAGES=POSIX
Это были самые интересные переменные, а вот остальные. Можно и с ними немного поиграть.
LC_IDENTIFICATION
LC_CTYPE
LC_COLLATE
LC_TIME
LC_MONETARY
LC_PAPER
LC_NAME
LC_ADDRESS
LC_TELEPHONE
После проделанной работы, можете насладиться русскоязычными меню, HELPом, MANом и русскими вставками при выводе многих других программ.

Вообще все "компьютерщики" довольно веселый народ. А уж работая в свободных системах иногда можно от смеха живот надорвать. Мне доводилось находить очень ржачные вещи не только на русском, но и на английском языке. Убедиться в этом можно заглянув в файл /usr/share/locale/ru/man. Обычно самые смешные корки прячут куда-нибудь подальше, например, в бинарный файл.

Хотел еще что-то написать, но забыл что, если у кого будут идеи на счет того, чего тут не хватает, любые дополнения или может замечания - черкните в форум. А вообще, надо признать, статья получилась довольно объемной. Не за горами ее продолжение, но уже для Иксов.



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

Загрузка с CD Slackware 10.0. \\ Пошаговая инсталляция.


1. Загружаемся с первого CD Slackware 10.0.
Если у вас нет SCSI или другого серверного оборудования, то в строке приветствия просто жмем Enter. В противном случае внимательно читаем сообщение на экране. C мышкой думаю разберетесь. Раскладка клавиатуры у нас ru.map. Входим как root
Login: root
Внимательно читаем и запоминаем/записываем возможные команды. В предыдущей рассылке было рассказано как освободить место под новые разделы линукса. Сейчас будем их создавать. К сожалению или к счастью, в инсталляторе Slackware не встроена функция создания разделов, поэтому это необходимо сделать до старта setup. Для этого в нашем распоряжении 2 программы: fdisk и cfdisk. Первая и самая старая известна всем линуксоидам, описаний по работе с ней бесчисленное множество, вторая же будет более понятна и привычна начинающим. Ей и воспользуемся.
2. Создание разделов.
Запускаем cfdisk. Видим менюшку, в которой не сложно разобраться. Стрелками выбираем наш пустой раздел. Здесь сделаю отступление.
Чисто теоретически, требуется два раздела: корневой (/) и раздел подкачки (linux swap). Однако, практически - в зависимости от задач, размера диска, используемых файловых систем. Часто целесообразно выделение небольшого (10-20 Мбайт) раздела под каталог /boot, в котором будут размещены ядро и необходимые для его загрузки файлы. Этим достигается надежность, за счет изоляции критически важных и редко изменяемых компонентов для загрузки. При размещении его в начале винчестера (в пределах первых 1024 цилиндров) достигается гарантия загрузки на старых машинах. Если компьютер относительно новый (>= 2000 года), такой проблемы точно не будет. Для построения домашней системы на разделе для каталога /boot вполне можно сэкономить. Я так и сделал. Более того, на счет Swap раздела у меня такое же мнение. Но тут вы должны четко очертить круг задач. Если на машине много памяти (сейчас не редко 512 Мб) и не предполагается заниматься очень тяжелыми задачами (KDE+Gimp+VMWare+программы обработки видео, создания 3D анимации, фильмов и т.п.), то вполне можно обойтись без swap-а, причем это даст прирост в производительности. В противном случае рекомендованный размер swap-а для современных ядер равен удвоенному размеру оперативной памяти (но не более 2 Гбайт и не менее 128 Мбайт). Производительность возрастает, если swap разместить максимально близко к началу диска. Также имеет смысл разместить в отдельном разделе или еще лучше на отдельном винте папку /home. Из сообрадений безопасности часто отдельные разделы выделяют под /tmp, /var и /usr с различными флагами монтирования (nosuid, nodev, noexec).
Продолжим. С учетом вышеизложенного создаем столько разделов, сколько нам нужно в такой последовательности: /boot -> swap -> / -> /home. Каталог /boot или / (при отсутствии /boot) желательно сделать первичным, остальные могут быть логическими. Процедура выглядит следующим образом.
1. Жмем [New] - [Primarry] - 8000 - [Beginning]. Т.е. создаем первичный раздел размером 8 Гбайт.
2. Выбираем наш раздел - жмем [Type] - 83. Т.е. помечаем ее как ext2. Здесь тип файловой системы не важен, т.к. при установке мы сможем поменять его на нужный. Код swap раздела - 82.
3. Повторяем п.1 и п.2 нужное количество раз.
4. Записываем изменения на диск - [Write] - Yes.
5. Выходим - [Quit].
Для простоты дальнейшего изложения принимаем:
/boot-/dev/hda1
/swap - /dev/hda2
/- /dev/hda3
/home - /dev/hda4
3. Инсталляция.
Только теперь стартуем инсталлятор.
# setup
Действуем последовательно:
1. ADDSWAP. Если на предыдущем этапе создавали файл подкачки, то из списка выбираем его (/dev/hda2).
2. SELECT LINUX INSTALLATION PARTITION. Выбираем корневой раздел (/dev/hda3) - точка монтирования "/". Аналогично добавляем /dev/hda1 - точка монтирования "/boot", /dev/hda4 - точка монтирования "/home"
3. На вопрос о форматировании в любом случае отвечаем FORMAT. Вот здесь-то мы и выбираем нужную нам файловую систему (FS). Проблема выбора FS выходит за рамки этой статьи, но если вкратце, то стандарт - это ext2 (что-то типа FAT32); ext3 - более совершенная ext2 с качественной поддержкой журналирования (что-то наподобие NTFS), но меньшим быстродействием; reiserfs - это специально оптимизированная для Linux FS, есть журналирование, но только операций над метаданными файлов, оптимизация дискового пространства, занимаемого мелкими файлами (в Linux очень много маленьких файлов). Еще одна FS, о которой следует упомянуть - это XFS - очень сбалансированная 64-разрядная FS быстрая и надежная, но мало распространенная. Не знаю как вам, но мне очень нравится reiserfs, возможно скоро попробую XFS - для раздела с фильмами и музыкой самое то. Выбираем понравившуюся и идем дальше.
4. Если на HDD обнаруживаются FAT или NTFS разделы - вам предложат их подмонтировать -> соглашаемся -> выбираем поочередно разделы Windows и указываем точки их монтирования (например, для диска С: можно /c; /mnt/c; /fat-c или любой другой по вашему выбору).
5. SOURESE MEDIA SELECTION. Выбираем 1. CD. Далее auto.
6. После сканирования выдается список категорий программ для установки на ваш компьютер. По-хорошему, нужно бы установить все, но если вы знаете что тут делать, можно немного сократить этот список. В моем случае был убран GNU Emacs.
7. SELECT PROMTING MODE. Это самый интересный пункт, позволяющий получить полный контроль над устанавливаемыми пакетами. Новичкам лучше не мучить себя и выбрать full. Альтернативой может быть пункт menu, который позволит выбрать нужные программы в каждой категории. В случае острой необходимости выбираем expert. Информацию об этих и других режимах читаем в меню help. Я же выбрал full - проблем меньше.
8. Как только все установится инсталлятор попросит вставить следующий диск Slackware 10.0 CD#2 - вставляем (если конечно такой имеется) и устанавливаем KDE & GNOME. Я же ограничился первым диском, т.к. меня не устраивает скорость работы в этих оболочках, и нажал Quit.
9. Далее предлагается выбрать ядро Linux. До того как мы соберем свое ядро, оптимизированное под нашу систему, выберем стандартное. Для этого жмем на cdrom, при этом нас попросят вставить обратно Slackware 10.0 СD#1. Из списка выбираем понравившееся ядро (в зависимости от вашего оборудования). Функциональность ядра более менее ясна из названия. Стандартным является bare.i, однако я выбрал bareacpi.i, т.к. хочу, чтобы компьютер нормально выключался и реагировал на нажатие кнопки Power. В Slackware 10.0 используется kernel 2.4.26, а если вы счастливый обладатель Slackware DVD, то на диске найдется ядрышко посвежее 2.6.7.
10. Далее принимаем положительное решение по поводу создания загрузочной дискеты. Это позволит без хлопот загрузиться при проблемах с загрузчиком (переустановка Windows - типичный случай).
11. MODEM CONFIGURATION. Тут ничего сложного - все по аналогии с Windows. Даже надписи COM1 - COM4 есть :).
12. ENABLE HOTPLUG SUBSYSTEM AT BOOT. При наличии USB портов и соответствующих девайсов (флеш-память, цифровой фотоаппарат, сканер) нужно согласиться.
13. INSTALL LILO. Здесь отвечаем simple - лучше потом подправим, а заодно научимся его устанавливать. А пока выберем разрешение консоли. Здесь стоит хорошенько подумать и взвесить возможности вашего железа с одной стороны и желания "чтоб было красиво". Самая быстрая консоль, конечно standart. Frame buffer позволяет использовать более привычные сглаженные шрифты. В такой консоли умещается больше информации без потери "читабельности" текста, что особенно актуально при нынешних размерах мониторов. Можно прямо в консоли смотреть фотографии и фильмы (вполне даже сносно). Т.к. у меня ЖК экран и в любом разрешении отличном от 1024x768, буквы выглядят просто ужасно, был выбран режим 1024х768х256 (для фильмов нужно минимум 32k). При наличии нормального 3D ускорителя вполне можно поставить 1024х768х64k. Однако, если вы не уверены на 100%, что ядро, которое вы выбрали скомпилировано с поддержкой Frame buffer и при таких параметрах ваше железо будет работать, то лучше выбрать standart, а потом эти настройки легко можно будет изменить правкой /etc/lilo.conf. В противном случае - загрузиться вы сможете, но ничего не увидите :( и придется прибегать к загрузочной дискете.
14. OPTIONAL LILO append=. Здесь обычно прописывается пишущий CDROM, который до версии ядра 2.6 эмулируется как как SCSI. У меня эта строчка такая:
append="hdb=ide-scsi"
Этим мы говорим ядру, что IDE устройство, подключенное как primarry slave, нужно эмулировать как устройство SCSI. Обращаться к нему будем как к /dev/sr0. Полезно сделать на него симлинк /dev/cdrec.
15. SELECT LILO DESTINATION. В подавляющем числе случаев выбираем главную загрузочную запись (MBR).
16. MOUSE CONFIGURATION. Просто выбираем тип нашей мышки. У меня USB.
17. GPM позволит пользоваться мышкой в консоли - отвечаем YES.
18. CONFIGUR NETWORK. У вас есть сеть? Поздравляю - YES.
ENTER HOSTNAME - имя машины;
ENTER DOMAINNAME - доменное имя;
SETUP IP ADDRESS - static IP/ DHCP/ loopback
Все должно быть понятно :)
19. CONFIRM STARTUP SERVICES TO RUN. Буду полагать, что сеть у нас есть (иначе не интересно). На данном этапе оставляем галочки только напротив самых нужных сервисов. Минимум это rc.inetd и rc.syslog. Можно конечно вообще без сервисов - для тех кто в танке.
20. На вопрос о шрифтах жмем Yes - мы же хотим русский? Из предложенного огромного списка выбираем между Cyr_a8x16.pstu.gz и koi8r_8x16.pstu.gz. Тут стандарта нет. Кто-то любит 8x14, кому-то позарез нужна русская "ё" (кстати этот текст набирается под линуксом :)
21. HARDWARE CLOCK SET TO UTC. Вам решать синхронизировать время или нет. Мне же лишние сервисы не нравятся - No.
22. TIME ZONE CONFIGURATION. Здесь все понятно. Europe/Woscow (или /Vavican?).
23. SELECT DEFAULT WINDOW MANAGER. Выбираем то, что знаем. Пошустрее и попонятнее будет XFCE, покрасивее KDE.
24. Апофеоз! Устанавливаем пароль пользователя root.
25. Жмем заветные 3 кнопки Ctrl+Alt+Del (не забудьте вынуть CD).

У-у-ф, тяжко писать такие вещи - вроде всего ничего, а описание на N-страниц.

Новости: Обновление сайта, посвященного Slackware. Появились новые статьи и книги, подправлен дизайн. Сайт приобрел свою форму. Работает форум, где вы можете задать свой вопрос по рассылке и не только.

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.linux.slackware
Отписаться

В избранное