The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Thinstation-2.2 по русски или HowTo для версии 2.2"
Отправлено ainu, 25-Янв-07 10:19 
Итак, что мы имеем:
генератор образов - Thinstation-2.2.tar.gz
исходные коды - thinstation_src-2.2.tar.bz2
ASPLinux 10 установленный в режиме разработки,
свободное дисковое пространство - не менее 4 Гбайт,
т.к. исходники после распаковки занимают ~ 3.6 Гбайт.

Статьи: Ядерная физика для домохозяйки 2.0,
HOWTO от Thinstation по сборке ядра.

Рекомендую прочитать всё до конца, прежде чем что-либо делать.

Часть 1.
Наши любимые буковки на носителях разного рода.

Что требуется сделать:

1. Распаковываем исходники командой tar -jxvf thinstation_src-2.2.tar.bz2
2. Распаковываем генератор Thinstation-2.2.tar.gz
3. Заходим в thinstation_src-2.2 и даём команду: ./RUNME
После чего попадаем в sh.
4. Идём в source/kernel-2.6.16.5/linux-2.6.16.5 и копируем оригинальный конфиг в дирректорию уровнем выше: cp .config ../.config.orig
5. Снова заходим в linux-2.6.16.5: cd linux-2.6.16.5
6. Последовательно выполняем команды:
    make mrproper
    make distclean
    make menuconfig !Внимание, ничего не изменяем, только сохраняем конфиг.
    rm .config
    cp ../.config.orig .config
    make menuconfug Здесь уже можно изменять параметры.
7. В разделе DOS/FAT/NT Filesystems устанавливаем параметры:
    CONFIG_FAT_FS=m
    CONFIG_MSDOS_FS=m
    CONFIG_VFAT_FS=m
    CONFIG_FAT_DEFAULT_CODEPAGE=866
    CONFIG_FAT_DEFAULT_IOCHARSET="CP1251"
  В разделе # Network File Systems
    CONFIG_SMB_FS=m
    CONFIG_SMB_NLS_DEFAULT=y
    CONFIG_SMB_NLS_REMOTE="CP1251"
  В разделе # Native Language Support
    CONFIG_NLS_DEFAULT="CP1251"
    CONFIG_NLS_CODEPAGE_866=y
    CONFIG_NLS_CODEPAGE_1251=y
Конфиг сохраняем.
8. Выполняем
    cd ../
    ./setup.sh При этом начнётся процесс сборки ядра. Под конец у Вас спросят удалить ли старые файлы - ответить надо r (remove).
    exit Выходим из ./RUNME

    Итак, ядрышко готово, но его надо проинсталлировать. А куда? А в генератор образов. Для этого существует скрипт в папке Thibstation-2.2/utils/scripts имя ему - update_kernel.sh. Но прежде, чем мы его запустим - нам надо подправить путь к нашим исходникам в файле SOURCE_PATH директорией выше. После чего запустить скрипт: ./update_kernel.sh
По завершению его работы никаких сообщений в консоли быть не должено.

    Теперь необходимо обратиться к скриптам, отвечающим за монтирование файловых систем, а именно к скриптам UDEV по адресу Thinstation-2.2/packages/base/etc/udev/scripts
Имеем три скрипта: floppy.sh ide.sh usb.sh - названия говорят сами за себя.

    В floppy.sh правим строчку с mount так, чтобы она приобрела вид, всё в одну строчку:
mount -t supermount -o fs=auto,dev=$DEVNAME,--,codepage=866,iocharset=cp1251 \ /mnt/floppy /mnt/floppy

    В ide.sh правим строчку с mount так, чтобы она приобрела вид, всё в одну строчку:
    Для CD/DVD:
        mount -r -t supermount -o fs=auto,dev=/dev/$devpath,--,iocharset=cp1251 \ /mnt/cdrom$x /mnt/cdrom$x
    Для того, чтобы разделы FAT* распознавались добавляем к строчке
mount -t auto /dev/$devpath /mnt/disc/$name/$name

строчку:
mount -t vfat -o iocharset=cp1251,codepage=866 /dev/$devpath /mnt/disc/$name/$name

и к строчке
mount -t auto /dev/$devpath /mnt/disc/$name/part$node

строчку:
mount -t vfat -o iocharset=cp1251,codepage=866 /dev/$devpath /mnt/disc/$name/part$node

Чтобы в итоге получилось:
if [ -z "$node" ] ; then
            mkdir /mnt/disc/$name/$name
              mount -t auto /dev/$devpath /mnt/disc/$name/$name
            mount -t vfat -o iocharset=cp1251,codepage=866 /dev/$devpath /mnt/disc/$name/$name
        else
                mkdir /mnt/disc/$name/part$node
            mount -t auto /dev/$devpath /mnt/disc/$name/part$node
            mount -t vfat -o iocharset=cp1251,codepage=866 /dev/$devpath /mnt/disc/$name/part$node

    Этот костыль с FAT* нужен, т.к. mount не поддерживает автоопределение vfat, а добавление в /etc и /proc файла filesystems (со списком файловых систем, которые должы быть опробованы как параметр вместо auto), который должен читаться, если автоопределение выдало ошибку, не помогает. Буду признателен, если кто-нибудь предложит иное решение. Например, знаю, что параметрами можно организовать команду mount так, чтобы система пыталась смонтировать с заданными параметрами, но как записать это я не могу представить.

    В usb.sh правим строчку с mount так, чтобы она приобрела вид, всё в одну строчку:
mount -t supermount -o fs=auto,dev=$DEVNAME,--,sync,nosuid,noatime,iocharset=cp1251,codepage=866,rw \ /mnt/usbdevice/$devname /mnt/usbdevice/$devname

Для тех, кто использует Samba, для предоставления доступа к носителям локального компьютера в smb.conf.tpl и smb.conf надо указать следующие параметры (в стандартной поставке Samba 3.0):
unix charset=cp1251
display charset=cp1251
dos charset=866

На этом руссификация носителей заканчивается.


Часть 2. Или кодировка CP1251 в менюшках.

Прежде, чем говорить о русских буквах, посмотрим на локаль системы:

echo $LANG

пишем через echo, т.к. locale отсутствует...

Thinstation послушно выведет ru_RU

Однако никакой спецификации кодировки почерпнуть отсюда не удётся: локали ru_RU могут быть ru_RU.KOI8R, ru_RU.CP1251, ru_RU.UTF8 ну и т.д.
А какая же у нас?
А это видно из скриптов в папке Thinstation-2.2/utils/build-maps, к которым мы и обратимся.

Мы имеем: create_all.sh, create_fonts.sh, create_gconv.sh, create_ica.sh, create_kmaps.sh, create_locales.sh, create_rdesktop.sh, create_x11.sh, названия всё так же говорящие.

Нам нужны: create_x11.sh, create_locales.sh, create_gconv.sh

Приступим:
Прежде всего сохраняем keymap-en_us и по желанию keymap-ru.
    create_x11.sh
        Из этого скрипта почерпнём, что X локаль собиралась для KOI8R. Нам же нужна CP1251, однако для X надо прописать microsoft-cp1251

А именно ищем и редактируем, чтобы получилось:
for filename in ru
do
  cp -R -L $X_PATH/microsoft-cp1251 packages/keymaps-$filename/full/x-common/lib/X11/locale
done

    create_locales.sh    
        Из этого скрипта почерпнём, что стандартная локаль ru_RU в кодировке iso8859-5, что нас не устраивает.

Ищем и редактируем, чтобы получилось:
for filename in mk_MK ru_RU
do
$TOOLS_PATH/localedef -i $LOCALE_PATH/localedata/locales/$filename -f $LOCALE_PATH/localedata/charmaps/CP1251 locale/$filename
done

    create_gconv.sh
        Почерпнём, что и тут iso8859-5.
Правим, чтобы было:
for filename in mk ru
do
    mkdir packages/keymaps-$filename/full/base/lib/gconv
    cp $GCONV_PATH/CP1251.so packages/keymaps-$filename/full/base/lib/gconv
    cp ./gconv-modules packages/keymaps-$filename/full/base/lib/gconv
done

    Обращаю внимание на: GCONV_PATH=$SOURCE_PATH/glibc-2.3.5-obj/iconvdata
По данному адресу никаких модулей нет, т.к. мы не собирали glibc-2.3.5, что нам и не надо, а надо лишь положить туда соответствующий модуль, взятый из thinstation_src-2.2\lib\gconv\

    Замечательно, скрипты мы поправили, теперь надо сгенерировать новые keymaps.
Даём команду: ./create_all.sh

    В процессе выполнения вывалится гигантское количество ругани (всё потому, что glibc-2.3.5 не собирали, и потому, что кое-какие шрифты отсутствуют), но при ближайшем рассмотрении они нашей локали не касаются.

    Получили новые keymap, - чудесно. Теперь заходим в Thinstation-2.2\packages\keymaps-ru\full\base\lib\locale\
и видим, что папочка ru_RU пустая. Ай-яй-яй. Удаляем ёё, на ёё место вставляем папку ru_RU.CP1251, взятую из системы. В файле ru_locale записываем:
LC_ALL=ru_RU.CP1251 ; export LC_ALL
LANG=ru_RU.CP1251 ; export LANG

    Поскольку я использую Citrix, то теперь для того, чтобы ICA правильно находила свою папку с локалью в дирректории Thinstation-2.2\packages\keymaps-ru\full\ica_wfc\share\locale\ должна быть папка ru_RU.CP1251, содержимое которой (pna.nls) можно взять из ранее сохранённой keymap-ru.

    Ещё один полезный совет для Citrix-ойдов: чтобы в последствии не было проблем с настройкой Citrix ICA клиента, рекомендую установить Citrix ICA клиента в своей Linux системе, произвести все необходимые настройки (добавить сессии, настроить звук/перенаправление портов и т.д.), сохранить настройки (в дирректории $HOME/.ICAClient файлы appsrv.ini, wfclient.ini лежит то, что вы "наконфигили"), скачать linuxx86.tar.gz в котором заменить ВСЕ файлы appsrv.ini, wfclient.ini одноимёнными файлами из $HOME/.ICAClient. Ещё чуть чуть: в дальнейшем вы сможете рулить этими параметрами из конфигурационных файлов, скачиваемых с сервера с помощью параметра SESSION_#_type_specific, где type_specific - необходимый вам параметр из appsrv.ini и wfclient.ini.

Теперь удаляем keymap-en_US и вставляем ранее сохранённый.

На этом действия с системной локалью заканчиваются.

    Можно подумать, что и всё, однако нет. Если теперь собрать образ, загрузиться, указав в конф файле на сервере русские заголовковки менюшек, то мы увидим лишь кракозяблы. Ответ на вопрос "Почему?" прост - не загружен нужный шрифт. Система XWindow расширяет для себя поняте системной локали, локаль XWindow хранится в отдельной папке и представляет собой 3 файла: Compose, XI18N_OBJS, XLC_LOCALE. Поэтому мы редактировали скрипт create_x11.sh, дабы включить нужную нам локаль в сборку.
    Теперь же нам не хватает кирилических щрифтов. Их я взял из пакета kdb, коий я положил в Thinstation-2.2/packages/base/lib, предварительно вырезав из него всё, что не надо (остался только фонт UniCyr_8x16, таблицы acm, и *.to_uni_trans). И ещё кое-чего: а именно скрипта setsysfont (взятого мной из системы) который должен запускаться из rc.sysinit, иначе наш файлик Thinstation-2.2/packages/ect/sysconfig/i18n никакого действия производить не будет. В нём, кстати надо прописать:
LANG="ru_RU.CP1251"
SYSFONT="UniCyr_8x16"
SYSFONTACM="cp1251"
    Так, скрипт есть, теперь его надо запускать каждый раз при загрузке системы. Обычно это делается из rc.sysinit, однако такого файла в Thinstation не наблюдается, его роль выполняет другой, прописаный в inittab. Я не стал там ничего менять, а просто добавил скрипт в Thinstation-2.2/packages/base/bin и симлинку на него в Thinstation-2.2/packages/base/etc/rc0.d, названную мной S11setsysfont.
    Теперь можно собирать образ.Всё должно работать.

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру