Вторая часть Марлезонского балета:
Небольшая инфа:
После появления ядра linux-2.6.и_тд_итп, народ решил утф держать по умолчанию
включенным для консоли, что не хреново сказалось на отображении кои8, исо и тд.
Параметр ядра отвечающий за это на старте vt.default_utf8=1(по умолчанию)
Его конечно можно выставить на старте в 0, но хочется ж иметь возможность использовать разные локали
Кстати при любом reset терминал возвращается в исходное состояние, т.е. в утф.
Кроме того сущетвует команда unicode_stop (unicode_start), но я не сумел послать ее на все виртуальные консоли
(уже не помню почему, помню что глюкаватая она какаято).
Поэтому было использовано решение найденное гдето на просторах интернета...
Я для каждой локали модифицировал таблицы клавиатур, дабы они переключались одинаково ctrl+shift,
как это делать -
http://pazuzu.pp.ru/novah/keycodes.txtГотовое файло:
http://files.slax.org.ru/maps/ru5_iso.map.gzhttp://files.slax.org.ru/maps/ru5_koi.map.gzhttp://files.slax.org.ru/maps/ru5_utf.map.gzВсе что будет далее можно запихать в russian.lzm или в доп модуль,
но я расписываю как я делал, так мне было удобнее, нужно ж было знать что менять...
Создаем /home/001
Распаковываем 001-core.lzm
lzm2dir 001-core.lzm /home/001
/001/etc/rc.d/rc.slax
Меняем в нем
/usr/bin/reset на /usr/bin/clear
rc.local полностью меняем:
#!/bin/sh
#
# /etc/rc.d/rc.local: Local system initialization script.
#
# Put any local startup commands in here. Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
. /usr/lib/liblinuxlive
#####################--KOI
rusikoi()
{
# Вот это вот все последующее предназначенно только
# для того чтобы переключить ядро в режим vt.default_utf8=0
local MODE_COMMAND
MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab | \
grep -o '\btty[[:digit:]]*\b'`
do
openvt -f -w -c ${TTY#tty} -- \
/bin/sh -c "${MODE_COMMAND}"
done
# Это для правильного отображения на ntfs
# ntfs-3g
if [ -r /sbin/mount.ntfs ]; then
rm -f /sbin/mount.ntfs
fi
touch /sbin/mount.ntfs && chmod 755 /sbin/mount.ntfs
echo -e "#!/bin/bash" >> /sbin/mount.ntfs
echo -e "/bin/ntfs-3g \$1 \$2 -o force,noatime,users,suid,dev,exec,locale=ru_RU.koi8-r,\$4" >> /sbin/mount.ntfs
}
#####################--/KOI
#####################--ISO
rusiiso()
{
# Вот это вот все последующее предназначенно только
# для того чтобы переключить ядро в режим vt.default_utf8=0
local MODE_COMMAND
MODE_COMMAND="echo -en '\033%@\033(K' && kbd_mode -a"
for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab | \
grep -o '\btty[[:digit:]]*\b'`
do
openvt -f -w -c ${TTY#tty} -- \
/bin/sh -c "${MODE_COMMAND}"
done
# Это для правильного отображения на ntfs
# ntfs-3g
if [ -r /sbin/mount.ntfs ]; then
rm -f /sbin/mount.ntfs
fi
touch /sbin/mount.ntfs && chmod 755 /sbin/mount.ntfs
echo -e "#!/bin/bash" >> /sbin/mount.ntfs
echo -e "/bin/ntfs-3g \$1 \$2 -o force,locale=ru_RU.iso8859-5,noatime,users,suid,dev,exec,\$4" >> /sbin/mount.ntfs
}
#####################--/ISO
#####################--UTF8
rusiutf()
{
# ntfs-3g
if [ -r /sbin/mount.ntfs ]; then
rm -f /sbin/mount.ntfs
fi
touch /sbin/mount.ntfs && chmod 755 /sbin/mount.ntfs
echo -e "#!/bin/bash" >> /sbin/mount.ntfs
echo -e "/bin/ntfs-3g \$1 \$2 -o force,locale=ru_RU.UTF8,noatime,users,suid,dev,exec,\$4" >> /sbin/mount.ntfs
}
#####################--/UTF8
#####################--MAIN
LOC=$(locale_id)
if [ "$LOC" = "ru_RU.utf8" ]; then
rusiutf
fi
if [ "$LOC" = "ru_RU.koi8-r" ]; then
rusikoi
fi
if [ "$LOC" = "ru_RU.iso8859-5" ]; then
rusiiso
fi
if [ -r /root/.kde/share/config/kxkbrc ]; then
rm -f /root/.kde/share/config/kxkbrc
fi
####################--/MAIN
Полностью меняем 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
#
. /usr/lib/liblinuxlive
LOC=$(locale_id)
if [ "$LOC" = "ru_RU.utf8" ]; then
/usr/bin/loadkeys ru5_utf.map
fi
if [ "$LOC" = "ru_RU.iso8859-5" ]; then
/usr/bin/loadkeys ru5_iso.map
fi
if [ "$LOC" = "ru_RU.koi8-r" ]; then
/usr/bin/loadkeys ru5_koi.map
fi
Полностью меняем rc.font:
#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
. /usr/lib/liblinuxlive
LOC=$(locale_id)
if [ "$LOC" = "ru_RU.utf8" ]; then
setfont -v cyr-sun16.psfu.gz
fi
if [ "$LOC" = "ru_RU.koi8-r" ]; then
setfont -v koi8u_8x16.psfu.gz
fi
if [ "$LOC" = "ru_RU.iso8859-5" ]; then
setfont -v cyr-sun16 -m 8859-5_to_uni
fi
Добавляем все файлы которые добавляли в initrd, запихиваем ru5_iso.map.gz, ru5_koi.map.gz,
ru5_utf.map.gz в /usr/share/kbd/keymaps/i386/qwerty/.
Если еще чегото хочется тоже добавляем или удаляем не нужные пакеты (обновляем и тд :-)))
Я midnight commander советовал бы поменять, опишу отдельно как это делается тем более это будет
верно для любого пакета. Заменяем /usr/lib/liblinuxlive модифицированным.
Пакуем обратно dir2lzm /001 001-core.lzm
C 001 вроде все... Терь должны отображаться нормально(я имею ввиду киррилицу)
и монтироваться на старте все файловые системы, про остальное будет дальше.
Распаковываем 002
Меняем /usr/bin/xconf:
Добавляем после строки rm -f $GENERATED_CONFIGFILE
Вот это, добавляет в xconf русскую раскладку по ctrl+shift
########THIS FOR RUSSIAN (i know this is very nasty, but i dont have time to do this better)##########
TMP_FILE=/tmp/123
cat $XConfig > $TMP_FILE
PCUT=$( egrep -iB1000 -m1 "\"kbd\"" $TMP_FILE | sed -n "$=" )
head -n $PCUT $TMP_FILE > $XConfig
echo " Option \"XkbRules\" \"xorg\" " >> $XConfig
echo " Option \"XkbVariant\" \"winkeys\" " >> $XConfig
echo " Option \"XkbLayout\" \"us,ru(winkeys)\" " >> $XConfig
echo " Option \"XkbOptions\" \"grp:ctrl_shift_toggle,grp_led:scroll\" " >> $XConfig
PCUT2=$(tail -n +$PCUT $TMP_FILE | grep -B1000 -m1 "^[[:blank:]]*EndSection" | sed -n "$=" )
let PCUT+=PCUT2 && let PCUT-=1 && tail -n +$PCUT $TMP_FILE >> $XConfig
rm -f $TMP_FILE
#########################################
Если нужна еще и укр раскладка то меняем строку
echo " Option \"XkbLayout\" \"us,ru(winkeys)\" " >> $XConfig
на
echo " Option \"XkbLayout\" \"us,ru(winkeys),ua(winkeys)\" " >> $XConfig
Ну естественно проверяем это все дело, типа на старте locale=ru_RU.koi8-ru и в загруженном состоянии locale если все переменные koi8-ru, значит все гуд...
Предупреждение: никаких iocharset параметров больше нет, только locale, за ненадобностью все похерено...