Portál AbcLinuxu, 23. dubna 2024 15:27


Dotaz: jak se zbavit unicode

13.2.2018 08:52 ik | skóre: 4
jak se zbavit unicode
Přečteno: 992×
Odpovědět | Admin
Zdravím znalce, potřeboval bych mít nastaveny tty konzole po startu Linux/systemd v ASCII modu a locales v C nebo ISO8859. V /etc/vconsole.conf mám FONT_UNIMAP="none", FONT_MAP="8859-2", KEYMAP="cz-lat2-prog", FONT="eurlatgr" a v /etc/locale.conf mám LANG="C", LC_CTYPE="cs_CZ.iso8859-2". To stejné je i v initramfs.

kbd_mode je po restartu v UTF, terminál má nastaven stty iutf8 a klávesnice píše piškvorky.

systemd-vconsole-setup.service sice nastaví fonty, proměnné a klávesnici, ale UTF8 nechá aktivní, takže musím udělat ručně "unicode_stop unicode_start unicode_stop", aby věci začaly fungovat. Na něco jsem zapomněl, nebo je to zase ono pro systemd klasické "pozři a zmrv"?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.2.2018 10:00 NN
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Odpovědět | | Sbalit | Link | Blokovat | Admin
dpkg-reconfigure locales ?
13.2.2018 10:06 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
?

OS je RH/systemd
13.2.2018 10:21 karbous
Rozbalit Rozbalit vše Re: jak se zbavit unicode
to se nastavuje v .profile ne?

neco jako (zmen na to co potrebujete):

export LANG=en_US.utf8
13.2.2018 10:34 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Děkuji, ale můj dotaz se netýká nastavení locales a input modu v terminálu, ale nastavení generátoru znaků v textové konzoli. Textové (tty) konzole mají čtyři mody (scancode - RAW, keycode - MEDIUMRAW, ASCII - XLATE, UTF-8 - UNICODE). Já potřebuji, aby byly konzole po bootu v XLATE modu, ale nevím, jak toho dosáhnout, systemd to nastavuje do UNICODE. Defaultní LANG=en_US.utf8 samozřejmě tento UNICODE mod vyžaduje. Komické je, že kdysi byl problém unicode zapnout, teď je - aspoň pro mne - problém unicode vypnout.
13.2.2018 11:02 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepomohl ani parametr kernelu vt.default_utf=0 ...
Pavel 'TIGER' Růžička avatar 13.2.2018 11:36 Pavel 'TIGER' Růžička | skóre: 53
Rozbalit Rozbalit vše Re: jak se zbavit unicode
... a sestavil si znova init?
13.2.2018 12:16 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
tady právě tápu. Ten vt.default_utf jsem zadal do grubu jako parametr při spouštění kernelu. To nepomohlo.

Nevím, kam tento parametr zadat (ani zda je tento parametr to, co pomůže). dracut -f vzal hodnoty z /etc/locale.conf a /etc/vconsole.conf a zapsal si je do /etc/ v initramfs, to jsem zkontroloval, ale v těchto souborech se o nastavení konzolí na XLATE mod nic neříká.
Aleš Janda avatar 14.2.2018 13:33 Aleš Janda | skóre: 23 | blog: kýblův blog | Praha
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Odpovědět | | Sbalit | Link | Blokovat | Admin
Řešení nemám, ale mohl bych se ze zvědavosti zeptat na důvod? Nějak si neumím představit, proč by někdo vypínal tak užitečnou věc. Sice je pravda, že 8bitové kódování je jednoduché, ale čekal bych, že jeho podpora bude jen menší a menší, programů očekávajících nebo přímo vyžadujících Unicode (resp. UTF-8) víc a víc. A jestli je dnes jeho vypnutí těžké, v budoucnu už to může být nemožné.

Popravdě mi už tak 10 let nic než UTF-8 vůbec nedává smysl. Tak by mě zajímal use case tohoto dotazu :-) Díky.
Zahrajte si trojšachy přes internet :-)
14.2.2018 15:58 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Mi zase nedává smysl UNICODE mapování na konzoli, to je věc pohledu. Mimochodem - tty konzole je VGA: tedy pokud do znakového generátoru nacpu 512 glyphů, tak se připravím o půlku barev - a stejně i tak mám k dispozici jen malinký přemapovaný kousek z UTF prostoru. Nic užitečného v tom nevidím. Samozřejmě nemluvím o podpoře v X11, v kancelářských aplikacích a ve webových prohlížečích, to je zcela bez diskuse.

Díval jsem se do scriptů dracutu - je tam použita další proměnná do /etc/vconsole.conf, kterou jaksi ve skoupé dokumentaci k systemd neuvedli - je to boolean UNICODE. Pokud se nastaví na NO, tak systemd-vconsole-setup.service konzoli přepne do XLATE a shodí iutf8 flag v stty, což je na třičtvrti cesty k cíli. Bohužel potom musím stejně ručně přeloudovat klávesovou mapu.

Tak na okraj mne napadlo - žije ještě pan Jan Kasprzak a ostatní autoři klávesových map pro tty?

Co se týče initramfs, tak v něm se non-unicode nastavení neprovede, přestože v image jsou správné konfigurační soubory. Ještě se na to podívám; co se dá dělat, myslel jsem, že zdejší lidi od Redhatu o tom něco budou vědět, když dracut a systemd ...
Josef Kufner avatar 14.2.2018 17:48 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Používat na konzoli jiné kódování než v X11 je naprosto zbytečná komplikace. A používat něco jiného, než zbytek světa je ještě větší zbytečná komplikace. Jestli ti to za to stojí …

Pokud by šlo o provoz nějaké hodně staré nenahraditelné aplikace, tak bych spíš šel cestou překonfigurování jednoho terminálu. Třeba starý xterm umí mnoho obskurních věcí.
Hello world ! Segmentation fault (core dumped)
15.2.2018 08:54 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Jiné kódování než v X11 není žádná komplikace, když tam žádné X11 nejsou. A ISO8859 není žádná obskurnost. To byste mohl říci, že čeština je zbytečná komplikace, protože ji nepoužívá zbytek světa. A jak jsem již psal - textová konzole stejně standardně zobrazuje jen 256 znaků, tak by mělo být fuk, jaké mapování v ní chci používat. Čtyřicet let to fungovalo bez problémů. Nechápu, proč mne LP připravil o další možnost volby.
16.2.2018 17:37 Jindřich Makovička | skóre: 17
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Přiznám se, že taky nechápu, k čemu by mi dneska 8859-2 bylo. Všechno, co jsem za víc jak 10 let v češtině napsal (a většina ostatních lidí, co pracuje v Linuxu) je v UTF-8. Kdybych to chtěl na ISO-2 konzoli číst, stejně ten text musí něco zkonvertovat, tak proč to nenechat udělat rovnou samotnou konzoli? Jasně, můžu tím pověřit třeba Emacs/MULE, ale přijde mi to jako masochismus, když už jsme se díky Unicode těchhle rovnáků na vohejbáky zbavili.
16.2.2018 19:31 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Myslím, že to nechápe skoro nikdo. Ale také je vidět, že úplně zničené to není a tazatel se zjevně propracovává k řešení, i když ho to stojí čas a fakticky jen jeho, protože jinak asi jsou skutečně lokální jednobytová kodování mimo zájem.
4.10.2018 15:45 magor
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Myslím, že to nechápeš vůbec. Mluví o tty která byla/je standardně v iso-8859-1, protože jak píše unicode je tam zbytečnost, protože mapa zabírá více paměti, stejně tam ty znaky většina adminů nevyužije. Ačkoliv paměti jsou už dnes v GiB pořád je to z principu zbytečnost a když to tam někdo nepotřebuje, měl by mít možnost použít mapu dle své vůle alespoň takovou jaká je v kernelu v nls volbách, třeba i azbuku.
14.2.2018 17:00 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus tohle
15.2.2018 08:45 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Ano, to je přesně to, co celou dobu zkouším. Jenže ten systemd helper je binárka a na studování zdrojáků nemám dostatek zkušeností. Evidentně je v ní bug, nebo je jen tak narychlo splácaná a dokumentace je nedostatečná.
15.2.2018 10:13 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Jen pro jistotu co vypíše.
localectl list-keymaps | grep cz
15.2.2018 11:37 ik | skóre: 4
Rozbalit Rozbalit vše Re: jak se zbavit unicode
Vypíše to to, co má:
cz
cz-bksl
cz-cp1250
cz-dvorak-ucw
cz-lat2
cz-lat2-prog
cz-qwerty
cz-qwerty_bksl
cz-rus
cz-us-qwertz
sunt5-cz-us
sunt5-us-cz
Současný stav mého poznání v této věci je tento: binárka /usr/lib/systemd/systemd-localed už nastavuje konzoli korektně, to po přidání nedokumentované proměnné UNICODE do /etc/vconsole.conf

Jenže, podle man stránky by to měla udělat automaticky při bootu, údajně aktivací z systemd-udevd. Ale zřejmě neudělá, konzole zůstane v UTF8. Nebo to možná udělá nějak napůl, protože třeba příkaz showconsolefont vykreslí (pro ISO8859-2) krásnou českou sadu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.