Минимальный комплект

В целях самообразования пытаюсь выяснить минимально-необходимый комплект для корректной локализации, подскажите плиз.
Начало: Создаю файлик размером 1G, форматирую в ext3, монтирую его дерево каталогов. Разворачиваю в него stage3, монтирую туда-же из рабочей системы каталоги portage, distfiles, tmp, proc, dev. В make.conf добавляю USE - флаги unicode, userlocales. Корректирую файлы:

# /etc/locale.gen

en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.CP1251 CP1251
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
# /etc/conf.d/keymaps

KEYMAP="-u ru4"
SET_WINDOWKEYS="yes"
EXTENDED_KEYMAPS=""
DUMPKEYS_CHARSET="koi8-r"
# /etc/conf.d/consolefont

CONSOLEFONT="Cyr_a8x16"
# /etc/env.d/02locale

LANG="ru_RU.UTF-8"
LC_NUMERIC=POSIX

Дальше chroot и пересобираю систему. Локализация получается нормальная.

Часть - 2: Опять - же создаю файлик размером 100М, форматирую его в ext3, монтирую его в дерево каталогов. Создаю в нем корневую структуру папок. Переношу туда из ранее собранной системы файлы busybox, bash разворачиваю архив busybox-links.tar, командами:

ldd -v /bin/bash
ldd -v /bin/busybox

определяю требуемые библиотеки и переношу их тоже. Понятно, что нужен так-же шрифт прописанный в /etc/conf.d/consolefont
Вопрос: Что еще необходимо для нормальной локализации?

В /etc/locale.gen достаточно

В /etc/locale.gen достаточно одной строки ru_RU.UTF-8 UTF-8 , английский/русский работают нормально.
Так же стоит обратить внимание на конфигурацию ядра, а точнее:
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_UTF8=y

.

kesha написал(а):
# /etc/conf.d/consolefont

CONSOLEFONT="Cyr_a8x16"

И оно даст корректую локализацию в консоли (init 3)???

:wq
--
Live free or die

даст, но нада еще параметр

даст, но нада еще параметр unicodemap настроить

$ cat /etc/conf.d/consolefont
consolefont="koi8r-8x16"
unicodemap="koi8r"
#consoletranslation="koi8-r_to_uni"

потом сделать

# rc-update add consolefont boot
Anarchist написал(а):
И оно даст корректую локализацию в консоли (init 3)???

в Gentoo используется BSD стиль инициализации системы, а init 3 присущ System V ;-)

Theli написал(а):даст, но

Theli написал(а):
даст, но нада еще параметр unicodemap настроить

unicodemap="koi8r"
#consoletranslation="koi8-r_to_uni"

Это не пакет-ли dev-perl/Unicode-MapUTF8?

вроде нет... не думаю, что

вроде нет... не думаю, что это имеет отношение к перлу... просто локализация у меня UTF-8, а шрифт используется для koi8-r... о чем и говорит параметр unicodemap

/

Theli написал(а):
даст, но нада еще параметр unicodemap настроить

$ cat /etc/conf.d/consolefont
consolefont="koi8r-8x16"
unicodemap="koi8r"
#consoletranslation="koi8-r_to_uni"

потом сделать

# rc-update add consolefont boot

Я же говорил, что чего-то там не хватает...

Theli написал(а):
Anarchist написал(а):
И оно даст корректую локализацию в консоли (init 3)???

в Gentoo используется BSD стиль инициализации системы, а init 3 присущ System V ;-)

В Gentoo используется гремучая смесь из System V и BSD.
Если сомневаешься --- можешь поискать в FreeBSD уровни, соответствующие boot или default ;)

ЗЫ: Тот факт, что ИМХО System V правильнее будет, пока опустим.

:wq
--
Live free or die

Anarchist написал(а): ЗЫ: Тот

Anarchist написал(а):
ЗЫ: Тот факт, что ИМХО System V правильнее будет, пока опустим.

опустим, но я скажу всё же свое имхо =) там есть 9 уровней, 6 из которых заранее предопределены и используется программа init от и до, а у нас init передает управление openrc, благодаря чему у нас уровней может быть бесконечно больше 9 и они могут иметь осмысленные названия. Затем зависимости в System 5 разруливаются именованием ссылок на скрипты в init.d, у нас же зависимости разруливаются самим openrc по данным внутри скрипта, отсюда возможность параллельного запуска "сервисов" и т.д.

System V достаточно гибкий и надежный, но уже слишком старый

немного оговорюсь, но FreeBSD я видел из-за плеча товарища, а потому утверждать не буду. Просто вижу огромную разницу между Gentoo и большинством других дистрибутивов повозившись со скриптами инициализации системы ;-)

Спасибо всем откликнувшимся

Возможно я неясно выразился. В системе - которую я пересобрал из stage3, русская локализация нормальная.

vostro kesha # mount -o bind /proc/ /mnt/disro/proc/
vostro kesha # mount -o bind /dev/ /mnt/disro/dev/
vostro kesha # chroot /mnt/disro/ /bin/bash
vostro / # hjkl;
bash: hjkl: команда не найдена
vostro / #

Как видно я пропустил env-update и source /etc/profile, но локаль корректная.
Теперь из этой системы я беру busybox, bash, runscript со всеми необходимыми библиотеками и скриптами, складываю их в новый образ. Запуск.

vostro kesha # mount -o bind /proc/ /mnt/linux/proc/
vostro kesha # mount -o bind /dev/ /mnt/linux/dev/
vostro kesha # chroot /mnt/linux/ /bin/bash
bash-3.2# hjkl;
bash: hjkl: command not found
bash-3.2#

А здесь локаль уже "буржуйская".
Файлы инициализации подопытной системы:

# /etc/inittab
::sysinit:/etc/rc
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/sbin/umount -a -r 2>/dev/null
::restart:/sbin/init
#!/bin/sh
# /etc/rc
PATH=/sbin:/usr/sbin:/bin:/usr/bin
UNICODE="yes"
# /etc/profile
export PATH="$PATH:/bin:/sbin:/usr/bin."
export HOME=/root
export LANG='ru_RU.UTF-8'
export LC_ALL=''
export LC_NUMERIC='C'
umask 022

Так какую мне кнопку нажимать, всмысле куда копать?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

1. Цитата: А здесь локаль уже

1.

Цитата:
А здесь локаль уже "буржуйская".

Чё то не пойму никак. Вы локализацию в уже в чруте делали или в своей системе? какой из каталогов /etc использовался?

просто, чтобы в чруте была русская локаль, то ее нада настраивать в /etc этого чрута ;-)

2. зачем вы что-то вручную копируете?! У emerge есть параметр --root

$ emerge -av @system --root /mnt/linux

и все пакеты с их зависимостями будут установлены в /mnt/linux и ничего монтировать и чрутиться не нада ;-)
потом заполняете locale.gen по своему вкусу и регенерируете локаль. потом, вроде, нада пересобрать glibc
потом устанавливаете нужные шрифты и настраиваете конкретные приложения будь то bash или что-либо еще...

простите, если снова неправильно вас понял, но вопрос какой-то запутанный для меня (((

Видно внятно выражать мысли я неумею, сорри

Я сейчас работаю в Calculate 9.5 немного под себя переделанную с самосборным ядром. Все прекрасно, локаль корректная, претензий нет.
Но мне хочется понять все, что происходит с момента старта системы (для чего тут такой, а там другой скриптик, файлик и т.д.). Для этих целей я командой dd создаю образ image.img, размером в 10М. Монтирую его в дерево каталогов. Создаю в нем джентельменский набор папок ( mkdir bin dev etc lib proc usr sbin var). Из материнской системы беру busybox и копирую в созданный образ. С помощью команды ldd -v, выясняю у материнской системы какие библиотеки использует busybox, и тоже копирую их в созданный образ. В это-же образ распаковываю архив /usr/share/busybox/busybox-links.tar и получаю полный набор инструментов и готовую (почти) новую, маленькую систему. Проверяю :)

vostro kesha # mount -o bind /proc/ /mnt/mini/proc/
vostro kesha # mount -o bind /dev/ /mnt/mini/dev/
vostro kesha # chroot /mnt/mini/ /bin/sh
/ # help
/bin/sh: help: not found
/ # 

В полученной системе busybox собран с поддержкой unicode и русской локали (он же взят из материнской, рабочей). Как его уговорить перейти на русский в полученной системе с минимальными затратами?

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

unicodemap="koi8r"

Позволю себе немного отвлечься;
Выставил ради эксперимента в /etc/conf.d/consolefont данную опцию,
перезапустил /etc/init.d/consolefont restart, после чего в моей консоли вместо
русских букв стали выводиться символы псевдографики. Моя локаль - ru_RU.UTF-8.
Может быть надо какой-нибудь хитрый пакет поставить, для того, чтобы работала
опция unicodemap="koi8r"?
Вообще-то, у меня в консоли проблем с русским вроде-бы и нет, просто интересно о_О.

крякозябры исчезнут, если

крякозябры исчезнут, если выставишь там шрифт koi8-r ... этот параметр нужен тока в случае, если локаль и шрифт не совпадают по кодировкам! это ведь так - для общего развития ;-)

Благодарю :)

Мдя,со шрифтами и кодировками у меня плохо...
Да и не мудрено - в этом зоопарке и заблудиться можно %)

зачем нужны export

зачем нужны
export LC_ALL=''
export LC_NUMERIC='C'
уберите их (покраней мере LC_ALL='')

ОПА - буду мучить bash :)

Простой эксперимент в "материнской" системе

vostro / # ln -s /bin/busybox /ln
vostro / # ./ln --help
BusyBox v1.13.2 (2009-04-25 17:54:27 MSD) multi-call binary

Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY

Create a link named LINK_NAME or DIRECTORY to the specified TARGET.
Use '--' to indicate that all following arguments are non-options.

Options:
        -s      Make symlinks instead of hardlinks
        -f      Remove existing destination files
        -n      Don't dereference symlinks - treat like normal file
        -b      Make a backup of the target (if exists) before link operation
        -S suf  Use suffix instead of ~ when making backup files
vostro / # ln --help
Использование: ln [КЛЮЧ]... [-T] ЦЕЛЬ ИМЯ_ССЫЛКИ   (1-ая форма)
         или:  ln [КЛЮЧ]... ЦЕЛЬ                   (2-ая форма)
         или:  ln [КЛЮЧ]... ЦЕЛЬ... КАТАЛОГ        (3-я форма) 
         или:  ln [КЛЮЧ]... -t КАТАЛОГ ЦЕЛЬ...     (4-ая форма)

показал, что busybox русский язык никак не понимает :(
Теперь добавлю в минимальную систему bash и буду над ним опыты ставить :)

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".