КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение arkhnchul »

Есть вероятность, что при загрузке системы включить кириллицу в консоли пытаются несколько скриптов, тогда выходит они могут перебивать друг друга.

!!
вспомнил, у меня так и было! с теми же симптомами - после переключения из кед слетал шрифт. Не помню, правда, точно, как я к этому пришел... Лечил сносом console-cyrillic и установкой console-tools, и еще как-то колдовал в /etc/defaults и скриптах загрузки. Дома буду - попробую поточнее написать.
Losing is fun!
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

arkhnchul писал(а):
18.03.2009 10:54
Есть вероятность, что при загрузке системы включить кириллицу в консоли пытаются несколько скриптов, тогда выходит они могут перебивать друг друга.

!!
вспомнил, у меня так и было! с теми же симптомами - после переключения из кед слетал шрифт. Не помню, правда, точно, как я к этому пришел... Лечил сносом console-cyrillic и установкой console-tools, и еще как-то колдовал в /etc/defaults и скриптах загрузки. Дома буду - попробую поточнее написать.


Я, оказывается оставил себе в документик еще кусочек чьих-то мыслей, когда гуглил. Так что, к сожалению, автора привести не могу... Не в обиду автору. Вот избранное:

...Во первых не стоит использовать *getty (например fgetty) которые посылают reset (ESC c). Слетает при этом режим unicode у консоле. Стандартное debian'новское getty(agetty) работает с этим нормально.

Режим unicode у меня оказывается пытаются выставить целых три пакета. console-common скрипт keymap.sh с помощью unicode_start выставляет первым, но только на 1 консоле (как я понимаю, getty еще не запущены и остальные виртуальные консоли еще не открыты). Затем пытается console-tools скрипт console-screen.sh тоже с помощью unicode_start. Сразу срабатывает защита от дурака, и пишет, что консоль уже в UTF-8. О необходимости перевести остальные консоли он как то не задумывается. И наконец срабатывает console-cyrillic. Он unicode_start не использует, все делает сам, поэтому благодаря ему unicode появляется в последствии в остальных 5 консолях. Если encoding или ttys в конфе для console-cyrillic указано не правильно, то получаются твои симптомы.

И в третьих, удивительный глюк с ter-uni-norm. Это 512 байтный фонт. Отчего-то, когда он загружается, только в первой консоле он виден целиком. В остальных консолях от него видно только первые 256 байт, смотрел с помощью displayfont. Отсюда, как я думаю, идут кривости с английскими буквами. Как я думаю, все что должно быть с битом bold отображается с выставленным 8 битом, т.е. из второй половины таблицы, вместо того, чтобы быть чуток поярче. Простенький workaround - загрузить сначала 256 фонт. Например cyr -s ter-slav-norm;cyr -s ter-uni-norm. Не знаю кто виноват, но console-cyrillic вне подозрений, это всего лишь перловский скрипт который запускает все правильно...
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

тот же debian 5.0, true debian way, установка иксов из репозитория, точно так же слетает кириллица после остановки х-сервера. кто-то вылечил? кроме как cyr?

Пробовал лечить другими кодировками, шрифтами, размерами и т.п. - не помогло
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

vovkins писал(а):
20.03.2009 22:34
тот же debian 5.0, true debian way, установка иксов из репозитория, точно так же слетает кириллица после остановки х-сервера. кто-то вылечил? кроме как cyr?

Пробовал лечить другими кодировками, шрифтами, размерами и т.п. - не помогло


Вот бьемся над установлением причин... Что же именно происходит? Непонятно
Мне нужен ответ на то, какие действия производит команда (скрипт) cyr. Правда, по занятости, я пока не копался, но это может натолкнуть на дальнейшие решения...
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

а еще не менее интересно что делают иксы, чтобы прибить кириллицу. :(

upd: cyr-таки скриптик :unsure:

Код: Выделить всё

#!/usr/bin/perl

#     cyr -- Setup Cyrillic on Linux console
#     Copyright (C) 1999,2000,2001,2002,2003,2006 Anton Kirilov Zinoviev

#     This program is free software; you can redistribute it and/or modify
#     it under the terms of the GNU General Public License as published by
#     the Free Software Foundation; either version 2 of the License, or
#     (at your option) any later version.

#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU General Public License for more details.

#     If you have not received a copy of the GNU General Public License
#     along with this program, write to the Free Software Foundation, Inc.,
#     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#     Contact the author by e-mail: anton@lml.bas.bg, zinoviev@fmi.uni-sofia.bg

use strict;

my $INSTALLDIR=$0;
$INSTALLDIR =~ s+/[^/]*$++g;
$INSTALLDIR .= "/..";

# $INSTALLDIR="/usr";
# $INSTALLDIR="/usr/local";

my $STDF="/usr/share/consolefonts";
my $ALTSTDF="${INSTALLDIR}/share/consolefonts";
my $FONTDIR="${INSTALLDIR}/share/console-cyrillic";
my $CONSOLETRANSDIR="${INSTALLDIR}/share/console-cyrillic";
my $KEYMAPDIR="${INSTALLDIR}/share/console-cyrillic";

my $MYCONFFILE = "";
if (`whoami` ne "root") {
    $MYCONFFILE = "$ENV{HOME}/.cyr_defaults";
} else {
    $MYCONFFILE = "/etc/console-cyrillic";
}

my $CONFFILE = "";
if (-f "$ENV{HOME}/.cyr_defaults" && `whoami` ne "root") {
    $CONFFILE = "$ENV{HOME}/.cyr_defaults";
} elsif (-f "/etc/console-cyrillic") {
    $CONFFILE = "/etc/console-cyrillic";
}

my $t;
if ( -x "/usr/bin/consolechars" || -x "/bin/consolechars" ) {
    $t="console-tools";
} elsif ( -x "/usr/bin/setfont" || -x "/bin/setfont" ) {
    $t="kbd";
} else {
    &err("cyr: In the system is not installed any of the known\ncyr: console packages. \n");
}

my $verbose='>/dev/null 2>&1';
my $commands='no';

my ($STYLE, $SIZE, $ENCODING, $LAYOUT, $OPTIONS, $FONTFILE, $VTTYS) =
    ("", "", "", "", "", "", "");

if ($CONFFILE) {
    open CONFFILE, $CONFFILE;
    for (<CONFFILE>) {
    if (/^ *\#/) {next;}
    if (/^ *$/) {next;}
    my @words = split;# For compatability with the old (pre 0.7-2) format:
    if ($words[0] =~ /^-/) {
        my $args = "@words @ARGV";
        @ARGV = split ' ', $args;
    } elsif ($words[0] eq "options") {
        shift @words;
        $OPTIONS = "@words";
    } elsif ($words[0] eq "ttys") {
        shift @words;
        $VTTYS = "@words";
    } else {
        if ($words[2]) {
        &err("cyr: Syntax error in the configuration file:\n".
             "cyr:    ". $_ ."\n");
        }
        if ($words[0] eq "style") { $STYLE = $words[1];}
        elsif ($words[0] eq "size") { $SIZE = $words[1];}
        elsif ($words[0] eq "encoding") { $ENCODING = $words[1];}
        elsif ($words[0] eq "layout") { $LAYOUT = $words[1];}
        elsif ($words[0] eq "fontfile") { $FONTFILE = $words[1];}
        else {
        &err("cyr: Syntax error in the configuration file:\n".
             "cyr:    ". $_ ."\n");
        }
    }
    }
    close CONFFILE;
}

my ($km_old, $save, $layread, $fontfileread)=("","","no","no");

while ( $ARGV[0] ) {
    my $op = &get_opt;
    for ($op) {
    if (/^-C$|^--copyright$/) {
        &no_arg;
        print STDOUT <<EOF;
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with bash interpreter; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
EOF
        exit;
    } elsif (/^-k$|^--keymap$/) {
        $km_old = &get_arg;
    } elsif (/^-m$|^--mode$/) {
        my $arg = &get_arg;
        if ($arg eq "80x25" || $arg eq "80x30") {
        $SIZE = "16";
        } elsif ($arg eq "80x28" || $arg eq "80x34") {
        $SIZE = "14";
        } elsif ($arg eq "80x43"||$arg eq "80x50"||$arg eq "80x60") {
        $SIZE = "8";
        } else {
        &err("cyr: Unknown video mode $arg.\n");
        }
    } elsif (/^--font$/) {
        $FONTFILE = &get_arg;
        $fontfileread = "yes";
    } elsif (/^-f$|^--size$/) {
        $SIZE = &get_arg;
    } elsif (/^-s$|^--style$/) {
        $STYLE = &get_arg;
    } elsif (/^-e$|^--encoding$/) {
        $ENCODING = &get_arg;
    } elsif (/^--ttys$/) {
        $VTTYS = &get_arg;
    } elsif (/^-h$|^--help$/) {
        &no_arg;
        my $LTTY=`tty`;
        chomp $LTTY;
        print STDOUT <<EOF;
cyr -- Setup Cyrillic on Linux console
Usage: cyr [OPTIONS]... [KEYBOARD [KBD_OPTIONS ... ]]

-C, --copyright           display copying conditions and warranty information
-h, --help                display this help and exit
    --save                saves given parameters as default for latter usage
-v, --verbose             verbose mode
    --commands            output the commands cyr executes
-s, --style=FONTSTYLE
-f, --size=FONTSIZE       Posible FONTSTYLEs and FONTSIZEs are:
        styles b, c, lenta, antiq and sans with size 16;
        styles a, alt, uni, iso and dos with sizes 8, 14 and 16;
        style  arab  with sizes 8, 14, 16 and 19;
        style  cage  with sizes 8, 10, 11, 12, 14, 15, 16, 18 and 19;
        style  thin  with sizes 14 and 16;
        style  sarge with size 16;
        style  pln   with size  8;
    styles a-asia, b-asia and antiq-asia with size 16;
        styles ter-CHARSET-FACE with sizes 14 and 16,
          where CHARSET is uni, asia or slav and FACE is norm, bold or framebuf.
--font=FONTFILE           Font file to use.  Overwrites --style and --size.
-e, --encoding=ENCODING   Possible ENCODINGs are:
        utf-8 (unicode), cp1251 (ms-cyr, 1251), ibm866 (dos-cyr-ru, cp866, 866),
        iso-8859-5 (cyrillic), koi8-r, koi8-u, mac-cyrillic (mac-cyr),
        mik (dos-cyr-bg), pt154 (asian-cyr), rk1048.
    --ttys=\'TTY1 TTY2 ... \'    Setup Cyrillic in these consoles.
                               Current default: $LTTY.

Supported KEYBOARDs are bg_bds, bg_phon, by, kaz_alt, kaz_gost, mk, mn,
ru, ru_ms, sr, ua and ua_ms.

Supported KBD_OPTIONS are toggle, ctrl_shift_toggle, caps_toggle,
ctrl_alt_toggle, alt_shift_toggle, right_ctrl_toggle, menu_toggle, lwin_toggle,
rwin_toggle, switch, menu_switch, win_switch, lwin_switch and rwin_switch.

Examples:  cyr mk alt_shift_toggle --style arab -f19 -e iso-8859-5 --save
           cyr ru caps_toggle --style=sans --size 16 -e koi8-r --save
       cyr bg_bds toggle -s antiq -f16 --encoding=cp1251 --save
These are for the first usage.  Then it is enough just to type
           cyr
EOF
        exit;
    } elsif (/^--save$/) {
        &no_arg;
        $save="yes";
    } elsif (/^-v$|^--verbose$/) {
        &no_arg;
        $verbose='';
    } elsif (/^--commands$/) {
        &no_arg;
        $commands='yes';
    } elsif (/^arg$/) {
        my $arg = &get_arg;
        if ( $LAYOUT eq "" || $layread eq "no") {
        $LAYOUT = $arg;
        $OPTIONS = "";
        $layread = "yes";
        } else {
        if (-f "${CONSOLETRANSDIR}/option-$arg.kmap") {
            $OPTIONS = "$OPTIONS $arg";
        } else {
            &err("cyr: Unknown keyboard option: ${arg}.\n");
        }
        }
    } else {
        &err("cyr: Unknown option: $_\n");
    }
    }
}

if(! (`tty` =~ m!/dev/tty[0-9]+|/dev/vc/[0-9]+|/dev/console!)) {
    &err("cyr: This command may be executed only in Linux console.\n");
}

if ($fontfileread eq "no" && ($STYLE ne "" || $SIZE ne "")) {
    $FONTFILE = "";
}

if ($LAYOUT eq "") {
    $LAYOUT = $km_old;
}
if ($LAYOUT eq "") {
    &err("cyr: What keyboard to use?\n");
}
if ($FONTFILE eq "") {
    if ($STYLE eq "") {
    &err("cyr: What font style to use?\n");
    }
    if ($SIZE eq "") {
    &err("cyr: What font size to use?\n");
    }
}
if ($ENCODING eq "") {
    &err("cyr: What encoding to use?\n");
}

$ENCODING =~ tr/A-Z/a-z/;
for ($ENCODING) {
    if(/^cp1251$|^ms-cyr$|^1251$/) {$ENCODING = "cp1251";}
    elsif (/^utf-8$|^unicode$/) {$ENCODING = "unicode";}
    elsif (/^ibm866$|^dos-cyr-ru$|^cp866$|^866$/) {$ENCODING = "ibm866";}
    elsif (/^iso-8859-5$|^cyrillic$/) {$ENCODING = "iso-8859-5";}
    elsif (/^mac-cyr$|^mac-cyrillic$/) {$ENCODING = "mac-cyrillic";}
    elsif (/^mik$|^dos-cyr-bg$/) {$ENCODING = "mik";}
    elsif (/^pt154$|^asian-cyr$/) {$ENCODING = "pt154";}
    elsif (/^rk1048$/) {$ENCODING = "rk1048";}
    elsif (! /^koi8-[ru]$/) {
    &err("cyr: Unknown encoding `$_'.\n");
    }
}

$LAYOUT =~ tr/A-Z/a-z/;
for ($LAYOUT) {
    if(/^bds$/) {$LAYOUT = "bg_bds";}
    elsif (/^phon$/) {$LAYOUT = "bg_phon";}
    elsif (! /^sr$|^ua$|^ua_ms$|^ru$|^ru_ms$|^by$|^mk$|^mn$|^bg_bds$|^bg_phon$|^kaz_alt$|^kaz_gost$/) {
    &err("cyr: Unknown keyboard: $_\n");
    }
}

$STYLE =~ tr/A-Z/a-z/;
for ($STYLE) {
    if(/^1$/) {$STYLE = "a";}
    elsif(/^2$|^3$/) {$STYLE = "alt";}
    elsif(/^4$/) {$STYLE = "arab";}
}

if($VTTYS eq "") {
    $VTTYS = `tty`;
}

for my $console (glob $VTTYS) {
    if (-w $console) {
    open CONSOLE, ">$console";
    print CONSOLE "\x{1b}(K";
    if ($ENCODING eq "unicode") {
        print CONSOLE "\x{1b}%G";
    } else {
        print CONSOLE "\x{1b}%@";
    }
    close CONSOLE;
    }
}

if ($FONTFILE eq "") {
    &stylesize($STYLE, $SIZE);
} else {
    &loadfont($FONTFILE);
}

if($t eq "kbd") {
    &kbd_encoding($ENCODING);
} elsif ($t eq "console-tools") {
    &console_tools_encoding($ENCODING);
} else {&err("??????????????????\n")}

if($t eq "console-tools") {
    &execute( "consolechars -v -k ${CONSOLETRANSDIR}/cyrillic-graph.fallback.gz".
    " $verbose");
}

if ($ENCODING eq "unicode") {
    &execute ("kbd_mode -u");
} else {
    &execute ("kbd_mode -a");
}

&execute ("loadkeys ${KEYMAPDIR}/$LAYOUT-$ENCODING.kmap $verbose");
if ("$OPTIONS" ne "") {
    &execute ("loadkeys ${KEYMAPDIR}/option-clear.kmap $verbose");
    for my $op (split ' ', $OPTIONS) {
    &execute ("loadkeys ${KEYMAPDIR}/option-${op}.kmap $verbose");
    }
}

if ($save eq "yes") {
    if (`whoami` eq "root") {
    print STDERR "Warning: root may not use the option --save.\n";
    } else {
    if ($verbose eq "") {
        print STDERR "Saving default options for the next time.\n";
    }
    open CONFFILE, ">$MYCONFFILE";
    if ($FONTFILE eq "") {
        print CONFFILE "style $STYLE\n";
        print CONFFILE "size $SIZE\n";
    } else {
        print CONFFILE "fontfile $FONTFILE\n";
    }
    print CONFFILE "encoding $ENCODING\n";
    print CONFFILE "layout $LAYOUT\n";
    if ($OPTIONS) {print CONFFILE "options $OPTIONS\n";}
    close CONFFILE;
    }
}

sub execute {
    printf STDERR "%s\n", $_[0] if ($commands eq 'yes');
    system ($_[0]);
}

sub loadfont {
    if ($t eq "kbd") {
    for my $tty (glob $VTTYS) {
        &execute ("setfont -v $_[0] -C ${tty} ${verbose}");
    }
    } else {
    for my $tty (glob $VTTYS) {
        &execute ("consolechars -v -f $_[0] --tty=${tty} ${verbose}");
    }
    }
}

sub stylesize {
    my ($style, $size) = @_;
    my $font;
    for ($style){
    if (/^a$/) {$font = "${FONTDIR}/Cyr_a8x${size}.psf";}
    elsif (/^pln$/) {$font = "${FONTDIR}/UniCyrX-pln-8x${size}.psf";}
    elsif (/^ibm$/) {$font = "${FONTDIR}/UniCyrX-ibm-8x${size}.psf";}
    elsif (/^b$/) {$font = "${FONTDIR}/alt-b-8x${size}.psf";}
    elsif (/^c$/) {$font = "${FONTDIR}/alt-c-8x${size}.psf";}
    elsif (/^uni$/) {$font = "${FONTDIR}/UniCyr_8x${size}.psf";}
    elsif (/^alt$/) {$font = "${FONTDIR}/alt_8x${size}.psf";}
    elsif (/^dos$/) {$font = "${FONTDIR}/866_8x${size}.psf";}
    elsif (/^antiq$/) {$font = "${FONTDIR}/alt-antiq-8x${size}.psf";}
    elsif (/^lenta$/) {$font = "${FONTDIR}/UniCyr-lenta-8x${size}.psf";}
    elsif (/^sans$/) {$font = "${FONTDIR}/UniCyr-sans-8x${size}.psf";}
    elsif (/^cage$/) {$font = "${FONTDIR}/CAG-8x${size}.psf";}
    elsif (/^thin$/) {$font = "${FONTDIR}/thin-${size}.psf";}
    elsif (/^sarge$/) {$font = "${FONTDIR}/sarge-${size}.psf";}
    elsif (/^a-asia$/) {$font = "${FONTDIR}/pt154_a8x${size}.psf";}
    elsif (/^b-asia$/) {$font = "${FONTDIR}/pt154_b8x${size}.psf";}
    elsif (/^antiq-asia$/) {$font = "${FONTDIR}/pt154_antiq8x${size}.psf";}
    elsif (/^ter-uni-norm$/) {
        $font = "${ALTSTDF}/Uni3-Terminus${size}.psf.gz";
    } elsif (/^ter-uni-bold$/) {
        $font = "${ALTSTDF}/Uni3-TerminusBoldVGA${size}.psf.gz";
    } elsif (/^ter-uni-framebuf$/) {
        $font = "${ALTSTDF}/Uni3-TerminusBold${size}.psf.gz";
    } elsif (/^ter-slav-norm$/) {
        $font = "${ALTSTDF}/CyrSlav-Terminus${size}.psf.gz";
    } elsif (/^ter-slav-bold$/) {
        $font = "${ALTSTDF}/CyrSlav-TerminusBoldVGA${size}.psf.gz";
    } elsif (/^ter-slav-framebuf$/) {
        $font = "${ALTSTDF}/CyrSlav-TerminusBold${size}.psf.gz";
    } elsif (/^ter-asia-norm$/) {
        $font = "${ALTSTDF}/CyrAsia-Terminus${size}.psf.gz";
    } elsif (/^ter-asia-bold$/) {
        $font = "${ALTSTDF}/CyrAsia-TerminusBoldVGA${size}.psf.gz";
    } elsif (/^ter-asia-framebuf$/) {
        $font = "${ALTSTDF}/CyrAsia-TerminusBold${size}.psf.gz";
    } elsif (/^arab$/) {
#        if($t eq "kbd") { &err("cyr: The style ${style} is not possible on your system.\n"); }
        if($size eq "8") {$size = "08";}
        $font = "${STDF}/LatArCyrHeb-${size}.psf.gz";}
    elsif (/^iso$/) {
#        if($t eq "kbd") { &err("cyr: The style ${style} is not possible on your system.\n"); }
        if($size eq "8") {$size = "08";}
        $font = "${STDF}/iso05.f${size}.psf.gz";}
    else { &err("cyr: Font style `$_' is not known.\n"); }
    }
    if (-f $font) {
    &loadfont($font);
    } else {
    &err("cyr: Font size ${size} is not possible with style `${style}'.\n");
    }
}

sub kbd_encoding {
    for ($_[0]) {
    if (/^cp1251$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/cp1251_to_uni.trans $verbose");
    } elsif (/^ibm866$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/cp866_to_uni.trans $verbose");
    } elsif (/^iso-8859-5$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/8859-5_to_uni.trans $verbose");
    } elsif (/^koi8-r$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/koi8-r_to_uni.trans $verbose");
    } elsif (/^koi8-u$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/koi8-u_to_uni.trans $verbose");
    } elsif (/^mac-cyrillic$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/mac-cyrillic_to_uni.trans $verbose");
    } elsif (/^mik$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/mik_to_uni.trans $verbose");
    } elsif (/^pt154$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/pt154_to_uni.trans $verbose");
    } elsif (/^rk1048$/) {
        &execute ("setfont -m ${CONSOLETRANSDIR}/rk1048_to_uni.trans $verbose");
    } elsif (/^unicode$/) {
    } else {
        &err("cyr: Unknown encoding `$_'.\n");
    }
    }
}

sub console_tools_encoding {
    for ($_[0]) {
    if (/^cp1251$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/cp1251.acm.gz $verbose");
    } elsif (/^ibm866$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/cp866.acm.gz $verbose");
    } elsif (/^iso-8859-5$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/iso8859-5.acm.gz $verbose");
    } elsif (/^koi8-r$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/koi8-r.acm.gz $verbose");
    } elsif (/^koi8-u$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/koi8-u.acm.gz $verbose");
    } elsif (/^mac-cyrillic$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/MacCyrillic.acm.gz $verbose");
    } elsif (/^mik$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/bulgarian-mic.acm.gz $verbose");
    } elsif (/^pt154$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/pt154.acm.gz $verbose");
    } elsif (/^rk1048$/) {
        &execute ("consolechars -v --acm ${CONSOLETRANSDIR}/rk1048.acm.gz $verbose");
    } elsif (/^unicode$/) {
    } else {
        &err("cyr: Unknown encoding `$_'.\n");
    }
    }
}

sub err {
    printf STDERR $_[0];
    printf STDERR "cyr: Try `cyr --help for more information.\n";
    exit 2;
}

my $op;

sub get_opt {
    for (my $arg=$ARGV[0]) {
    if (/^-$/) {
        $op = "arg";
    } elsif (/^--[^=]*/ || /^-./) {
        $op = $&;
    } else {
        $op = "arg";
    }
    }
    return $op;
}

sub get_arg {
    for ($ARGV[0]) {
    shift @ARGV;
    if (/^-$/) {
        return "-";
    } elsif (/^--[^=]*=(.*)/ || /^-[^-](..*)/) {
        if ($1) { return $1; }
        &err("cyr: Option ". $op ." requires an argument.\n");
    } elsif (/^-/) {
        my $arg = shift @ARGV;
        if ($arg) {
        return $arg;
        } else {
        &err("cyr: Option ". $op ." requires an argument.\n");
        }
    } else {
        return $_;
    }
    }
}

sub no_arg {
    for ($ARGV[0]) {
    if (/^--.*=/) {
        &err("cyr: Option `${op}' doesn't allow an argument.\n");
    } elsif (/^-[^-](..*)/) {
        $ARGV[0] = "-$1";
    } else {
        shift @ARGV;
    }
    }
}
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
level0
Сообщения: 1
ОС: Debian Lenny

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение level0 »

а еще не менее интересно, что проблема актуальна только на машинах с многоядерным процессором :crazy:
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

хмм, проверял? а то я как-то даж не задумывался.
но все-таки хочется понять как работает скриптик, т.к. сам не особо шарю :(
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение georgy_sh »

Специально решил попробовать установить с NetInstall CD. Поставив систему в обычном графическом режиме, выбрав русский язык при инсталляции. Локаль ru_RU.UTF-8 (идем в ногу со временем, товарищи). В консоли вместо русских символов квадратики. Видимо проблема в стандартном шрифте. Переконфигурирование решает. Однако сам факт неприятный.
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

georgy_sh писал(а):
23.03.2009 19:48
Специально решил попробовать установить с NetInstall CD. Поставив систему в обычном графическом режиме, выбрав русский язык при инсталляции. Локаль ru_RU.UTF-8 (идем в ногу со временем, товарищи). В консоли вместо русских символов квадратики. Видимо проблема в стандартном шрифте. Переконфигурирование решает. Однако сам факт неприятный.


georgy_sh! быть может, Вы, опытным взглядом окинув скрипт cyr, подскажете какие именно изменения он применяет по дефолту, т.е. если исполнять его без дополнительных параметров?
я имею ввиду, что по Вашей мысли, дело в стандартном шрифте. в нашем случае исполнение cyr тоже все решает. по неопытности определиться не можем, что же именно меняется после исполнения.
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

экспериментировал я сегодня с экранами приветствия и картинками для grub. в итоге после многократных перезагрузок и изменений в menu.lst c помощью startupmanager (картинки, меню, задержка меню, цвета меню и разрешение) кириллица в моей консоли встала на постоянку... не могу, к сожалению, вывести правило почему именно (а желания менять всё снова и постоянно перезагружаться пока нет).

у кого какие мысли? мой последний menu.lst:

timeout 5
## ## End Default Options ##

title Debian GNU/Linux, kernel 2.6.26-1-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda1 ro vga=795 splash
initrd /boot/initrd.img-2.6.26-1-686

title Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.26-1-686

### END DEBIAN AUTOMAGIC KERNELS LIST


p.s. не уверен, что все настройки startupmanager сохраняются в menu.lst
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

vga=795


У меня тоже вылечило))) как ни странно... :drinks:

P.S. у кого еще была проблема - отпишитесь помогло или нет
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение KernelPanic »

vovkins писал(а):
24.03.2009 14:19
У меня тоже вылечило))) как ни странно...
Действительно, странно, так как я не припомню режима vga=795.
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

http://www.pendrivelinux.com/vga-boot-mode...een-resolution/

источник, конечно, не объективный, но подобный режим есть вроде как
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

vovkins писал(а):
24.03.2009 17:14
http://www.pendrivelinux.com/vga-boot-mode...een-resolution/

источник, конечно, не объективный, но подобный режим есть вроде как


http://en.wikipedia.org/wiki/VESA_BIOS_Ext...eo_mode_numbers
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
anjolio
Сообщения: 663
Статус: радист
ОС: debian squeeze

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение anjolio »

level0 писал(а):
23.03.2009 16:19
а еще не менее интересно, что проблема актуальна только на машинах с многоядерным процессором

отнюдь, наблюдал такое на старой машинке с Celeron 2.6, когда lenny ещё заморожен не был
The two most common things in the Universe are hydrogen and stupidity. (Harlan Ellison)
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

все это конечно, хорошо, что заработало благодаря vga=795, но мне бы все же хотелось расставить точки со скриптом cyr, ибо есть куча случаев, в которых это будет "не тот" метод...
без изменения разрешения после выполнения скрипта cyr кириллица работает. выходит, может работать и так, я имею ввиду. что мешает? иксы опять-же. но как именно?
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
vovkins
Сообщения: 17
ОС: Debian, Gentoo

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение vovkins »

хотелось бы услышать хотя бы толкование скриптика cyr... а там может быть что-то натолкнет на решение :unsure:
Ubuntu is an African Word that means "Gentoo is too hard for me"
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение ТВЭЛ »

Такая же фигня. И console-cyrillic настраивать пробовал, потом его вообще снёс, пробовал cyr, настраивал. Читал много информации в сети, ксатит у убунтоидов похожие проблемы - видимо, именно с Lenny они начались. Раньше Etch ставился идеально, а теперь Lenny сразу после установки с нерусской консолью.

А все мои потуги русифицировать привели к половинчатому решению. Вроде бы русский есть, некоторые файлы отображаются нормально. Но при переключении раскладки набираются не все символы, некоторые ромбами какими-то, и вообще вся консоль портится как-то, вплоть до того, что можно стереть приглашение. Недавно командой cat попробовал вывести XML-файл в UTF-8 (*.doc), так консоль вообще с ума сошла, всё исковеркалось.

Что-то нарушили в Lenny, в этом корень проблемы.
Время не ждет.
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение KernelPanic »

Забавно, только сейчас обратил внимание, у меня тоже самое :) Так как русский язык в консоли не использую, то раньше не замечал.
Спасибо сказали:
Nymin
Сообщения: 1095
Статус: -
ОС: GNU/Linux

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение Nymin »

У меня на sid обновился console-cyrillic, теперь все отлично :)
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение KernelPanic »

В ветке sid версия console-cyrillic такая же, как и в lenny ;)
Обновились версии пакетов console-setup и console-data, возможно, дело в них.
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

vovkins писал(а):
26.03.2009 18:57
хотелось бы услышать хотя бы толкование скриптика cyr... а там может быть что-то натолкнет на решение :unsure:


Вот и я о том же. Т.е. моих знаний хватило на то, чтобы просмотреть сам скрипт, понять что участвуют шрифты и пр., и пр. Но, ответа на вопрос о том, что именно слетает после запуска иксов и восстанавливается после исполнения cyr, я не нашел. Причем это что-то применяется cyr-ом по умолчанию, без ввода ему дополнительных параметров. Соответственно, мне бы хотелось в идеале сравнить: состояние (конфиг) консоли на машине без иксов (или без запущенных), после запуска иксов и при иксах, после исполнения cyr. Т.о. можно будет сопоставить первое и последнее состояние на предмет одинаковости и, вероятно, станет видно их различие со вторым состоянием. Вывести, что меняется, что - нет.
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение KernelPanic »

KernelPanic писал(а):
27.03.2009 01:03
Забавно, только сейчас обратил внимание, у меня тоже самое :) Так как русский язык в консоли не использую, то раньше не замечал.
Наврал маленько :). Все работает, просто в момент ввода логина если переключить на русский, то косяки будут. После залогивания проблем с кириллицей нет.
Спасибо сказали:
gogi
Сообщения: 2
ОС: Debian GNU/Linux

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение gogi »

Добавлю свои наблюдения по поводу слетающей консоли. Сам проблему заметил давно (ещё в etch'e) и на работе (Intel, Nvidia) и дома (AMD, Nvidia) и то что она появляется после установки графического окружения. Поначалу пытался решить, а потом забил и привык пользоваться костылём cyr. Неудобно, но хоть как-то помогает.
И вот недавно купил я себе нетбук Acer Aspire One и естественно поставил туда debian. Установил гнома и... впервые за долгое время консоль не слетела. :rolleyes: Я уж обрадовался, подумал что наконец-то этот противный баг пофиксили, но теперь вижу что нет. Сейчас на всех трёх доступных мне компах сижу на squeezy с примерно одинаковым набором программ и бага нет только на нетбуке. А там встроенная графика от интель. Так что виноват наверное всё таки драйвер нвидии и его зависимости которые он тянет.
Надо чтобы пользователи debian+ati ещё отписались как у них с этим.
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение arkhnchul »

так же.
мысль такая: проблема исчезает, если: 1) убрать все, кроме console-tools и 2) установить какой-нибудь видеорежим консоли, отличный от normal (==фреймбуфер). Подозрения: мабуть шрифт в vga=normal хранится где-нить в видеопамяти, и иксы ее как-то нехорошо юзают?
Losing is fun!
Спасибо сказали:
Аватара пользователя
ТВЭЛ
Сообщения: 132
ОС: основана на SlackWare

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение ТВЭЛ »

Я ставил Lenny с netinstall, там исксов вообще нет, и сразу русский квадратиком был, ещё до установки иксов, не то что до их запуска. Так что иксы не при чем, по крайней мере в моём случае.
Время не ждет.
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

ТВЭЛ писал(а):
27.03.2009 20:32
Я ставил Lenny с netinstall, там исксов вообще нет, и сразу русский квадратиком был, ещё до установки иксов, не то что до их запуска. Так что иксы не при чем, по крайней мере в моём случае.


Если квадратиками, то, смею предположить, здесь дело скорее в одном из пакетов cyrillic-console, console-data или console-setup.
Мой случай: я переустанавливал иксы и гнома, и было так: с ними - кракозяблики, без них - нормальная кириллица, с возвращением - кракозяблы.
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение KernelPanic »

Попробуйте удалить пакет console-cyrillic через purge и выполнить переконфигурацию пакета console-setup:
# dpkg-reconfigure console-setup
По большому счету, пакет console-cyrillic вообще не нужен.
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

arkhnchul писал(а):
18.03.2009 10:54
Есть вероятность, что при загрузке системы включить кириллицу в консоли пытаются несколько скриптов, тогда выходит они могут перебивать друг друга.

!!
вспомнил, у меня так и было! с теми же симптомами - после переключения из кед слетал шрифт. Не помню, правда, точно, как я к этому пришел... Лечил сносом console-cyrillic и установкой console-tools, и еще как-то колдовал в /etc/defaults и скриптах загрузки. Дома буду - попробую поточнее написать.


товарищ arkhnchul! я все жду Вашго комментария насчет того, что несколько скриптов перебивают друг друга... заранее благодарю.
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали:
Аватара пользователя
sinnergy
Сообщения: 128
Статус: interested one
ОС: debian sq/sid, arch, freebsd

Re: КРЯЗОЗЯБЛЫ в консоли Debian 5 Lenny

Сообщение sinnergy »

KernelPanic писал(а):
01.04.2009 20:37
Попробуйте удалить пакет console-cyrillic через purge и выполнить переконфигурацию пакета console-setup:
# dpkg-reconfigure console-setup
По большому счету, пакет console-cyrillic вообще не нужен.


Mar 17 2009, в 15:36
поставил console-setup из исходников, 1.28. установка прошла успешно, без ошибок. console-cyrillic предварительно уничтожен )
итог 50/50 букв/символов отображаются нормально, остальные ввиде смайликов... очень забавно выглядит это в консольном mc... он весь словно окрыт маленькими смайликами-пакманами... работать так не получится...

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


# dpkg-reconfigure console-setup дает (у меня) те же результаты. только виды кракозябликов меняются ))
Я умею говорить по-русски!
http://tyv.name/action/
Спасибо сказали: