Автор Тема: Ещё раз о русификации Slax  (Прочитано 28405 раз)

Fugokker

  • Гость
Ещё раз о русификации Slax
« : 01 Август 2010, 18:39:01 »
На этом форуме, да и на многих других, есть уже немало постов о русификации Slax. Нет, однако, "цельной" инструкции о том, как полностью русифицировать эту систему. Поэтому постараюсь обобщить и дополнить эти сведения.

Здесь я постараюсь изложить процесс настройки русского языка для Slax 6.1.2 с кодировкой UTF-8. При этом методе используются только стандартные базовые модули Slax, скачивать замену initrd.gz и russian.lzm отсюда не нужно.

Однако этих действий, как показывает опыт, для полной локализации системы недостаточно.

1. Локализация консоли

1.1. Сначала нужно задать параметры загрузки ядра. Для этого нужно внести изменения в файл /boot/slax.cfg (до запуска системы, на сменном носителе). Для нужных пунктов меню загрузки в конец строки "APPEND и т. д." добавить ключ iocharset=utf8. Этот параметр задаёт символьный набор при монтировании внешних устройств.
1.2. Запустить Slax и создать локаль, набрав в консоли команду:
localedef -f UTF-8 -i ru_RU /usr/lib/locale/ru_RU.utf8
Сгенерированные файлы локали нужно сохранить для будущего использования.
1.3. Далее нужно внести изменения в системные файлы. Это должно быть сделано после запуска системы (можно для этого собрать собственный модуль или добавить файлы в каталог /slax/rootcopy):
1.3.1. Переписать готовый каталог с локалью ru_RU.utf8 в каталог /usr/lib/locale.
1.3.2. Переписать файл раскладки клавиатуры ruwin_ct_sh-UTF-8.map.gz в каталог /usr/share/kbd/keymaps/i386/qwerty. Установить для него права доступа 644. Файл можно взять, например, из пакета kbd в репозитории Slackware.
1.3.3. Добавить файл /etc/profile.d/lang.sh следующего содержания (код прав доступа 755):

#!/bin/sh
export LANG=ru_RU.UTF-8

1.3.4. Добавить файл /etc/profile.d/lang.csh следующего содержания (код прав доступа 755):

#!/bin/csh
setenv LANG ru_RU.UTF-8

1.3.5. Добавить файл /etc/rc.d/rc.font следующего содержания (код прав доступа 755):

#!/bin/sh
setfont '/usr/share/kbd/consolefonts/Cyr_a8x16.psfu.gz'
for i in 1 2 3 4 5 6; do
  echo -ne "\033%G" > /dev/tty$i
done

1.3.6. Добавить файл /etc/rc.d/rc.keymap следующего содержания (код прав доступа 755):

#!/bin/sh
if [ -x /usr/bin/loadkeys ]; then
  /usr/bin/loadkeys /usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz
fi

1.4. В этом варианте переключение раскладки в консоли будет производиться клавишами Ctrl+Shift. Чтобы задать другой вариант раскладки, нужно изменить в скрипте /etc/rc.d/rc.keymap файл ruwin_ct_sh-UTF-8.map.gz на другой, например, на ru.map.gz. Это дело вкуса.

2. Локализация KDE 3

2.1. С локализацией KDE 3-й версии есть традиционная проблема: не работает установленная комбинация клавиш переключения раскладки. Проблема эта, однако, решаема, причём средствами самого KDE.
2.2. Все изменения должны вноситься, как и в п. 1.3, после запуска системы.
2.3. Изменить файл настроек KDE /root/.kde/share/config/kdeglobals. В разделе [General Shortcuts] пункт Switch to next Keyboard Layout  привести к виду:

Switch to next Keyboard Layout=ISO_Next_Group

Добавить раздел [Locale] (перед разделом [PanelIcons]). Содержание раздела примерно следующее:

[Locale]
Country=ru
DateFormatShort=%d.%m.%y
Language=ru

2.4. Добавить файл /root/.kde/share/config/kxkbrc следующего содержания (код прав доступа 644):

[Layout]
EnableXkbOptions=true
IncludeGroups=ru(winkeys):us
LayoutList=us,ru(winkeys)
# Здесь нужно подставить обозначение своей клавиатуры, если оно отличается от заданного
Model=pc104
# Этот параметр задаёт комбинацию клавиш переключения раскладки
Options=grp:lwin_toggle
Use=true

В этом файле задано переключение раскладки левой клавишей Win. В данном варианте, как видно, раскладка клавиатуры в KDE отличается от консольной. Это сделано потому, что KDE вместо комбинации клавиш Ctrl+Shift воспринимает комбинацию Shift+Ctrl. Кроме того, в данном "пропатченном" варианте нельзя задать несколько комбинаций клавиш для переключения раскладки. Вернее, задать можно, но работать будет только первая из них.

2.5. Попутно можно починить и ICQ-клиент "Kopete". Входящий в состав KDE "Kopete" версии 0.12.7 больше не умеет соединяться с сервером ICQ. Чтобы это исправить, нужно внести изменения в файл /root/.kde/share/config/kopeterc. Между разделами [General Options Toolbar quickSearchBar] и [KopeteChatWindow] вставить текст:

[ICQVersion]
Build=0x17AB
ClientId=0x010C
ClientString=ICQ Client
Country=ru
Lang=ru
Major=0x0006
Minor=0x0000
Other=0x00007535
Point=0x0000

2.6. Русификация KDE и KOffice производится так же, как в Slackware - установкой пакетов kde-i18n-ru и koffice-l10n-ru. Скачать готовые модули можно здесь:

3. Заключение

Описанным выше способом можно русифицировать Slax довольно полно. Отдельные приложения KDE (например, k3b) остаются на английском языке, но их можно русифицировать отдельно. Частично остаётся также проблема с выставлением кодировки символов при монтировании внешних устройств (CD-приводы, однако, монтируются уже в кодировке UTF-8).
« Последнее редактирование: 29 Ноябрь 2010, 18:44:37 от Fugokker »

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #1 : 02 Август 2010, 00:28:27 »
Да, прикольно, но к сожалению, только с сохранением изменений, т.е. не перманентная руссификация, кроме того midnight commander в версии 612 в этой кодировке работать не будет, и откуда взялся этот файл? ruwin_ct_sh-UTF-8.map.gz, в слаксе его нет.
А насчет поддержки юникода, да есть там все, просто не все приложения это понимают, да и оч много лет обходились без юникода, а вы говорите русский не поддерживает  :), да и вообще ядро то как раз по умолчанию врубает utf8  ;)
« Последнее редактирование: 02 Август 2010, 00:32:53 от novah »

Fugokker

  • Гость
Re: Ещё раз о русификации Slax
« Ответ #2 : 02 Август 2010, 11:42:45 »
Если эти скрипты и прочее упаковать в модуль, то русификация будет перманентная, как, скажем, это сделано в вашей сборке.

MC, входящий в сборку Слакса, не умеет показывать кодировку UTF-8 во встроенном редакторе, но имена файлов и просмотр содержимого показывает нормально. Опять же, его можно заменить "непроверенным" модулем отсюда, который понимает UTF-8 без проблем. Хоть и костыль, а работает.

Файл "ruwin_ct_sh-UTF-8.map.gz" я позаимствовал из Слаквари. Он позволяет переключать раскладку по Ctrl+Shift и умеет писать букву "ё".

В оригинальной сборке 6.1.2 кодировка UTF-8 не значилась в списке кодировок, применимых для файловых систем (не было файла "/lib/modules/2.6.27.27/kernel/fs/nls/nls_utf8.ko"). Кроме этого, есть такой параметр загрузки ядра "locale=...", который можно записать как "locale=ru_RU". Его как-то прожёвывает liblinuxlive, после чего локаль автоматически ставится как "ru_RU.ISO8859-5", и никак с этим не совладать. Приходится затирать оригинальный скрипт "lang.sh". Так что эта проблема есть.

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #3 : 02 Август 2010, 21:12:10 »
Мне тяжело спорить с вашими экспериментами,  но повторюсь по умолчанию утф8, это можно увидеть просто при просмотре конфигурации ядра. В моей сборке изменен сам initrd.gz, а также куча разных модулей. Да и вообще мы ни о чем беседу ведем, кому как нравится тот так и делает.

 автоматически ставится как "ru_RU.ISO8859-5

Ну дак по этому и сборка, это по умолчанию, у меня 3 кодировки на выбор, и эта кодировка кстати никакого отношения к кде не имеет.

не было файла "/lib/modules/2.6.27.27/kernel/fs/nls/nls_utf8.ko

ПАТАМУЧТО он в ядро вкомпилирован навсегда :-)
« Последнее редактирование: 02 Август 2010, 23:00:19 от novah »

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #4 : 02 Август 2010, 23:10:22 »
да, кстати, если вы заинтересованы в подобном факе, то давайте опишем свои действия пошагово, те вы свои шаги, я свои, у вас оч хорошо получается, только давайте попробуем опись предоставить...

Fugokker

  • Гость
Re: Ещё раз о русификации Slax
« Ответ #5 : 03 Август 2010, 07:06:19 »
Давайте так и сделаем. Я свои шаги описал, теперь, понимаю, ваша очередь? А потом объединим в один пост.
Когда я занимался своей "кустарной" локализацией, то о вашей сборке ещё не знал, брал разрозненную информацию с разных форумов. Тем более интересно узнать ваши действия, поскольку ваша локализация и моя, видимо, похожи.

Оффлайн Slax User

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 244
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #6 : 03 Август 2010, 23:06:46 »
Добавил тему в прикреплённый FaQ этого раздела. Чуть позже, ссылку на эту тему поставлю прямо с сайта.

Fugokker

  • Гость
Re: Ещё раз о русификации Slax
« Ответ #7 : 03 Сентябрь 2010, 16:52:40 »
Таким образом, на этой оптимистической ноте...

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #8 : 03 Сентябрь 2010, 21:09:36 »
Та ну ладно, уели, просто уели, но поймите, решая проблему с нуля 100 раз в год, (не преувеличение), просто пропадает желание описывать этот процесс, есть наработки и автоматической руссификации слаквары и тд и тп, просто на описывание нету желания, конечно надо и фсе такое. REGARDS

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #9 : 04 Сентябрь 2010, 01:00:10 »
Ок, начнем, если вам это действительно интерестно:
1: Распаковываем initrd.gz
типа команда в консоли естественно: gunzip initrd.gz
2: Монтируем получившийся файл (кот уже выглядит как просто initrd) командой (опять же как правило все проиходит в консоли (терминале) командная строка линукс короче), если находимся в директории (папке) где находится распакованый initrd тогда наша задача смонтировать данный файл как носитель чего то там, для этого создаем произвольную директорию типа /mnt/loop111 (как создавать директорию просто не хочу описывать), монтируем mount initrd /mnt/loop111 -o loop.

Дальше писать или ну его нафик...?
Я не пытаюсь вас обидеть, просто на каком уровне описывать и что описывать?  ОЧ приветствую предложения, даже просьба просто такая, ну что вам описать и на каком УРОВНЕ?
Просто поймите, я описал бы все что делалось, но зачем? Все есть в нете, все описано, и система инициализации и тд, просто описывать свои шаги сильно долго, но если это нужно то попробую, но в сжатом формате и без обьяснений что такое cd.
« Последнее редактирование: 04 Сентябрь 2010, 02:44:53 от novah »

Fugokker

  • Гость
Я нифига не понял!
« Ответ #10 : 04 Сентябрь 2010, 11:19:26 »
Уровень мой такой: я не профессионал-линуксоид, а обыкновенный любитель. В такие дебри, как изменение начального образа или, извините за выражение, компиляция ядра, стараюсь не залезать. Что такое cd, мне, конечно, известно ещё с досовских времён, однако до сих пор не могу запомнить, что писать в аргументах команды ln: сначала целевой файл, а потом имя ссылки, или наоборот?
"В нете" информация, может, и имеется, однако в лучшем случае это различные отрывочные сведения, которые нужно искать в 10-15 местах. Что я и делал, прежде чем открыть эту тему. На то и тематический форум, чтобы, зайдя на него, заинтересованное существо (а возможно, и вещество) смогло добыть необходимые сведения, не скача туда-сюда по мутным ссылкам. В общем, надо.
Автор "Слакса" (как и вы) предлагает "готовое решение" по русификации системы в виде одного дополнительного модуля, в котором собраны все средства для локализации и консоли, и KDE, и прочего - всех семи базовых кусков "Слакса". Это, на мой взгляд, нехорошо, поскольку есть заинтересованные лица, использующие "Слакс" без KDE, а то и без X-Org, и локализация KDE и KOffice им даром не нужна. Поэтому лучше описать, как локализуются различные части системы.
Насчёт распаковки initrd.gz: сразу же возникла проблема с монтированием раскрученного initrd. Команда монтирования сообщает, что нет свободных loop-устройств.
В распакованном initrd имеется модуль usr.lzm, в котором по нашей теме я нашёл только файл /share/locale/locale.alias со списком локалей. Упоминаний о UTF-8, столь милой нашему сердцу, там нет. Тут я и призадумался...
Расскажите, что дальше-то было?

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #11 : 04 Сентябрь 2010, 15:21:03 »
>проблема с монтированием раскрученного initrd
Ну вот видите, это стандартный вопрос, это описано на оф сайте, тупо доп параметр ядру на старте системы, max_loop=1024.
http://www.slax.org/documentation_loop_mount.php
в locale.alias нету и не должно быть утф, она не является стандартной кодировкой русского языка.
Конечно по этому поводу куча идет разговоров и попыток ситуацию изменить.
man ln
« Последнее редактирование: 04 Сентябрь 2010, 15:25:13 от novah »

Fugokker

  • Гость
Re: Ещё раз о перепаковке initrd
« Ответ #12 : 04 Сентябрь 2010, 18:32:40 »
Всё это хорошо, конечно, спасибо, и про "ln" я просто пошутил. Но вопросы всё равно остались.
1. Зачем вообще изменять начальный образ? Какой в этом смысл? Почему, скажем, вы в своей сборке "Слакса" пересобрали initrd, а не использовали оригинальный?
2. Зачем в этом начальном образе сидит модуль usr.lzm? Почему нельзя было те файлы, которые в нём находятся, просто записать в каталог /usr?
3. Козырно ли держать скрученный usr.lzm внутри скрученного же initrd.gz? Двойное сжатие увеличивает размер архива. Ась?

Оффлайн novah

  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 335
  • Карма: +2/-0
    • Просмотр профиля
Re: Ещё раз о русификации Slax
« Ответ #13 : 04 Сентябрь 2010, 19:17:20 »
>Козырно ли держать скрученный usr.lzm внутри скрученного же initrd.gz? Двойное сжатие увеличивает размер архива. Ась?
А пробовали не сжатый? Ась?
Напишу, напишу.

Fugokker

  • Гость
Re: Ещё раз о русификации Slax
« Ответ #14 : 11 Сентябрь 2010, 18:57:59 »
Дополнил раздел "Локализация KDE 3".