ury cherez sposob xmodmap : xruskb ot Alexander V. Lukaynov <mailto:lav@yars.free.net> <ftp://ftp.yars.free.net/pub/software/unix/X11/> (primary site) <ftp://ftp.relcom.ru/pub/x11/cyrillic/> Ona mozhet ponadobit'sya dlya rusifikacii X11R5 terminalov, naprimer zheleznyh, ili emulyatorov pod MS Windows. Dlya ee primeneniya s XFree86 luchshe otklyuchit' modul' XKB v /etc/X11/XF86Config direktivoj XkbDisable. Pravil'naya raskladka dlya xruskb: jcukeng-cyr.xmm Proverit' rusifikaciyu X mozhno programmoj xev: klaviatura dolzhna generirovat' pravil'nye XkeySym dlya kirillicy (0x6xx), a xev dolzhna pokazyvat' Cyrillic_IE i pr. pri nazhatii russkih bukv, a ne OCyrcumflex e.t.c. 3.11. Kak cmontirovat' disk, chtoby russkie imena fajlov byli vidny ? Dlya vfat primerno tak (ctrochka iz /etc/fstab/): /dev/hda5 /mnt/d vfat noexec,rw,umask=002,codepage=866,iocharset=koi8-r,gid=100 0 0 Potom mount /mnt/d. Eshche v yadro (>=2.0.36) dolzhny byt' vklyucheny sootvetstvuyushchie kodovye stranicy (vozmozhno, v vide modulej /lib/modules/`uname -r`/fs/nls_*) - CP866 i KOI8-R, tak chto vozmozhno (hotya skoree vsego net) yadro pridetsya perekompilirovat'. Dlya CD, soderzhashchego fajly s russkimi imenami: $ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom Parametr codepage dlya isofs ne nuzhen, v fajlovoj sisteme JOLIET imena fajlov hranyatsya v UNICODE. Smysl etih opcij mozhno uznat' v 'man mount' ili v dokumentacii ishodnikov yadra /usr/src/linux/Documentation/filesystems/ ili /usr/doc/kernel/filesystems/ 3.12. * Kak uvidet' russkie bukvy v imenah fajlov na diske Samba? Dlya servera dobavit' v /etc/smb.conf [global] character set = koi8-r client code page = 866 preserve case = yes short preserve case = yes default case = lower mangle case = no CHtoby pravil'no montirovalis' smb razdely nado pri kompilyacii yadra ukazat' (yadro dolzhno byt' >=2.2.20 ) CONFIG_NLS_DEFAULT="koi8-r" CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp866" CONFIG_SMB_NLS=y CONFIG_NLS=y 3.13. Kak perekodirovat' iz DOS/Win kodirovki v KOI8-R ? Perekodirovshchikov CP1251 i CP866 --> KOI8-R prosto ogromnoe kolichestvo. Ne nado pisat' novyh ;-) Naibolee shiroko rasprostraneny iconv (vhodit v postavku glibc) i GNU recode ( <ftp://prep.ai.mit.edu/pub/gnu/recode/>) $ iconv -f866 -tKOI8-R -o<outfile> infile $ recode CP1251..KOI8-R winfile.txt Eshche odin URL dlya recode - <http://www.iro.umon- treal.ca/~pinard/recode/>. Perekodirovshchik russkogo teksta s avtomaticheskim opredeleniem ishodnoj kodirovki: <ftp://oskin.macomnet.ru/pub/linux/misc/xcode.c> V konce koncov sgoditsya obychnyj lynx : $ lynx -assume_local_charset cp866 file.txt 3.14. * Kak s pomoshch'yu Vim redaktirovat' fajly v razlichnyh kodirovkah? :e ++enc=cp1251 winfile.txt Zagruzit' fajl, schitaya, chto on v ukazannoj kodirovke, i perekodirovat' ego v kodirovku, v kotoroj rabotaet redaktor. 3.15. * Kak sozdavat' i redaktirovat' fajly v UTF-8 v redaktore VIM ? VIM dolzhen byt' versii 6.x i sobran s podderzhkoj Multibyte: configure --with-features=huge --enable-multibyte Predpolozhim, konsol' rusificirovana v KOI8-R, togda v VIM nado dat' komandy : :set encoding=utf-8 :set fileencoding=utf-8 :set termencoding=koi8-r V RedHat VIM raznesen na neskol'ko paketov. vim-common-6.1-2 vim-minimal-6.1-2 vim-enhanced-6.1-2 Redaktor vi, vhodyashchij v vim-minimal sobran bez Multibyte, vim iz vim- enhanced -- s podderzhkoj. Nado pol'zovat'sya redaktorom vim. 3.16. Mozhno li nauchit' Vim ponimat' hotkei, kogda vklyuchena russkaya raskladka klaviatury? V /.vimrc: set langmap=jq,cw,ue,kr,et,ny,gu,shi,shcho i t.d. 3.17. Kak prikrutit' k Golded/LNX pochtovuyu bazu v 866 kodirovke ? Vo-pervyh, nuzhno vzyat' GoldEd+ c <http://golded- plus.sourceforge.net>. Krome togo, nuzhno vzyat' tablicy perekodirovki (naprimer iz paketa rusifikacii, prohodivshego po fajlehe aftnged i lezhashchego na <http://collage.etel.ru/fileechos/ftn/> i propisat' ih v golded.cfg, primerno tak: AREAPATH /mnt/c/fido/fecho/ AREAFILE FastEcho XLATPATH /home/ak/.golded/chars XLATLOCALSET KOI8 XLATIMPORT IBMPC XLATEXPORT IBMPC XLATCHARSET KOI8 IBMPC koi_866.chs XLATCHARSET IBMPC KOI8 866_koi.chs IGNORECHARSET 3.18. Mozhno li v mc uvidet' pusskie bukvy? Mozhno. F9 - options - display bits - Full 8 bit V poslednih versiyah 'mc' poyavilas' podderzhka razlichnyh Charset-ov . |ta opciya dolzhna byt' vklyuchena pri kompilyacii 'mc' . $ ./configure --enable-charset .... 3.19. less Yuriy.Kaminskiy@p21.f517.n5020.z2.fidonet.org pishet: pri nastroennoj lokali ukazyvat' LESSCHARSET _HE HADO_. Bolee togo, v ~/.lesskey nado dobavit' #env LESSCHARSET= chtoby on ignoriroval ustanovku LESSCHARSET= glupymi programmami (k primeru, man :) [posle etogo nado zapustit' lesskey dlya polucheniya binarnogo fajla ~/.less] V protivnom sluchae on ne budet vyzyvat' set- locale(LC_CTYPE,"") i, kak sledstvie, ne budet icase search dlya russkih bukv. 3.20. telnet Esli voznikayut problemy s vvodom russkih simvolov, nado napisat' fajlik ~/.telnetrc so sleduyushchej strokoj: DEFAULT set outbinary Vy mozhete vstretit' problemy pri rabote v kodirovke Win-1251 -- ne peredaetsya malen'kaya russkaya bukva "ya" 0xff. U protokola TELNET 0xff -- eto pervyj simvol upravlyayushchej posledovatel'nosti. Daby peredat' sobstvenno "ya", nuzhno ego udvaivat' : 0xff, 0xff. V KOI8-R takoj problemy net. 3.21. CHto delat', esli "sletela" konsol' ? Skoree vsego na konsol' byl skopirovan kakoj-to dvoichnyj fajl, gde sluchajno vstretilas' pereklyuchayushchaya ESC-posledovatel'nost'. Togda : Sbros terminala : $ echo -ne "\033c" nabrat' vslepuyu, ili s rabotayushchej konsoli : # echo -ne "\033c" >/dev/ttyX Pereklyuchenie na downloaded font $ echo -ne "\033(K" (vozmozhno, eshche pridetsya peregruzit' fonty, no eto smotrya kak konsol' sorvalo...) Esli vyvalilas' kakaya-to programma, kotoraya ispol'zuet curses, to proshche $ stty sane V Red Hat vse eto delayut reset; setsysfont <ctrl-j> reset - iz ncurses Sm. 'man console_codes' i 'man stty' 3.22. Kak rusificirovat' TeX pod koi8-r? Vse voprosy po TeX rekomenduetsya zadavat' v ru.tex. FAQ iz etoj konferencii i prochaya informaciya po TeX v Rossii nahodyatsya po adresu <http://myke.webjump.com/tex/>. TeX i LaTeX vo vseh sovremennyh distributivah govoryat po-russki s razdachi. V etom sluchae imeetsya dokument cyrguide.*, kotoryj i soderzhit razvernutyj otvet na vopros o rusifikacii TeX. Perenosy ne vsegda rabotayut "iz korobki", inogda nado popravit' language.dat, i peresobrat' formaty. Vot chto pishet Alex Nikiforov: Esli uzh o poslednih versiyah, to v RH-6.0 s tetex 0.9 u menya poluchilos' tak: $ texconfig vybrat' hyphenation -> latex raskommentirovat' russian Dobavit' v LaTeX fajlah \usepackage[T2A]{fontenc} \usepackage[koi8-r]{inputenc} \usepackage[english,russian]{babel} i v fajle mozhno pereklyuchat'sya mezhdu russkim i anglijskim komandami \Russian i \Engish CHto by dobavit' formaty iz cyrplain nabora v texconfig vybrat' FORMATS i dobavit' cyrtxinf tex language.dat cyrtxinf.ini dlya russkogo texinfo. Analogichno dlya cyrblue i cyramstx. CHto by dobavit' format cyrtex ( russkij TeX ) proshche v kataloge web2c vypolnit': initex '\input cyrtex.ini \dump' i brosit' simvolicheskuyu ssylku s imenem cyrtex na tex ( naprimer v /usr/bin ) CHto by pereklyuchitsya na russkij v etih plain formatah ispol'zovat' komandu \language N gde N - nomer, pod kotorym chislitsya russkij yazyk v poluchivshejsya raskladke. V principe mozhno zamenit' v konfiguracii ruhypen na ruenhyp i ostavit' tol'ko sovmestnye russko-anglijskie pravila perenosa, no detal'no eto ne proveryal i podrobno opisat' ne mogu. 3.23. * Gde vzyat' russkie Type1 ps fonty v KOI8-R? Sovremennye Type1 fonty v obshchem ne obyazany imet' informaciyu o "kodirovke", a dolzhny prosto soderzhat' russkie simvoly s imenami glifov tipa "afii10049" (Association for Font Information Interchange). O "vektore kodirovki" dolzhno zabotit'sya prilozhenie, porozhdayushchee ps. Sm. dokumenty Adobe: · <http://partners.adobe.com/asn/developer/technotes.html> (Fonts section) · <http://partners.adobe.com/asn/developer/PDFS/TN/5013.Cyrillic_Font_Spec.pdf> Free fonty Type1 c russkimi simvolami: · SHarashkinskie: <ftp://ftp.ice.ru/pub/fonts/type1/> · PsCyr, avtor kollekcii Konstantin Chumachenko, mantejner - Aleksandr Lebedev: <ftp://con155.phys.msu.su/pub/russian/psfonts/>, zerkalo <ftp://ftp.vsu.ru/pub/tex/font-packs/pscyr/> · "TopTeams": <http://www.topteam.bg/linux/fonts.html>, kopiya <ftp://ftp.ice.ru/pub/fonrs/type1/> Takzhe sm. Cyrillic-HOWTO p."Kirillicheskie shrifty" <http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian/Cyrillic- HOWTO-russian.html> K sozhaleniyu, nekotorye prilozheniya vidyat tol'ko pervye 256 simvolov Type1 shrifta (Latin1 ili ISO_8859-1). Imenno dlya takih prilozhenij nuzhny "othakannye" shrifty, gde vmesto "circumflex" i "cedilla" raspolozheny simvoly KOI8-R. Vzyat' mozhno naprimer s: <ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/> Prochitajte README. 3.24. Gde najti horoshie russkie shrifty dlya X Window System? Krome rasprostranennyh shriftov Cronyx sushchestvuyut gorazdo bolee ergonomichnye shrifty iz proekta Cyr-RFX Dmitriya Bolhovityanova: <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/> Font -cronyx-fixed-* s polnym sootvetstviem koi8-r , v tom chisle s ramkami: <ftp://ftp.ice.ru/pub/fonts/X11> Russkie fonty iz KSI-Linux: <ftp://ftp.ksi-linux.com/pub/patches/> Russkie fonty iz Black Cat Linux: <ftp://ftp.blackcatlinux.com/pub/blackcat-linux/6.2/SRPMS/SRPMS/urw- fonts-2.0-4bc.src.rpm> 3.25. Emacs/XEmacs Berem iso8859-5 shrifty s <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr_rfx/>. Podklyuchaem ih k iksam, i vybiraem v menyu Mule nuzhnuyu kodirovku. Ochen' blagorodnye izovye shrifty mozhno vzyat' na lyubom zerkale GNU v kataloge intlfonts. konkretno, naprimer, <ftp://ftp.chg.ru/pub/gnu/intlfonts/intlfonts-1.2-split/European.tar.gz> (131Kb). V Debian oni uzhe est'. Podrobnaya instrukciya po rusifikacii XEmacs imeetsya po adresu <http://www.linux.zp.ua/xemacs/>. 3.26. Kak pusificipovat' dosemu ? Klaviatupa - lyubym dosovym pusifikatopom. Krome togo, est' patchik v <http://www.ice.ru/~vitus/misc/>, kotoryj pozvolyaet obojtis' bez rusifikatora klaviatury. V X-ah - rekomenduetsya, tak kak pozvolyaet izbezhat' dvuh klavish pereklyucheniya - odnoj v DOS drugoj - na ostal'nom desktope. Pri rabote s udalennym dosemu (po telnet/ssh/rsh) - neobhodim. Fonty - v konsol'nom dosemu tem zhe pusifikatopom, v X-ovom - postavit' font s 866-oj kodipovkoj. Vzyat' mozhno po adpesam <http://www.ice.ru/~vitus/works/x11.html>, <ftp://ftp.dosemu.org/dosemu/Development/>vga_cyr8x16.pcf.gz ili <http://www.inp.nsk.su/~bolkhov/files/fonts/vga4dosemu/>. 3.27. A kak rusificirovat' StarOffice (tam zhe - a pochemu on u menya ne stavitsya i t.p. Pochitajte zamechatel'nuyu stranichku Leona Kantera po adresu - <http://www.blackcatlinux.com/StarOffice/> Sostavaitel' FAQ byl by rad uznat', v kakoj mere svedeniya na etoj stranice primenimy k Open Office i Star Office 6. 3.28. Kak rusificirovat' AbiWord? Obratites' po adresu <http://www.hippo.ru/~hvv/abiword/> 3.29. Kak sdelat' russkoyazychnyj interfejs v Mozilla? <http://www.mozilla.ru/download/> Vot bolee obshchaya i bolee udobnaya v plane ustanovki iz samoj mozilly ssylka: <http://www.mozilla.org/projects/l10n/mlp_status.html> 3.30. Kak rusificirovat' Netscape {4|3}/nauchit' ego ponimat' win-kodirovku ? · Voz'mite Netscape 4.06 i vyshe, sobrannyj pod glibc2, ego rusificirovat' ne nado. Brat' ego zhelatel'no u proizvoditelya vashego distributiva. (pri nastroennoj lokali, xkb i shriftah, ustanovlennyh soglasno otvetu na vopros 0.13) Eshche, netscape imeet merzkuyu privychku zapominat' shrifty v ~/.netscape/preferences.js (i, kazhetsya, eshche gde-to). I esli on vovremya ne uvidel kakoj-to shrift, to on mozhet ego voobshche nikogda ne uvidet'. Inogda pomogaet tol'ko polnoe iznichtozhenie direktorii ~/.netscape · dlya teh, kto ne ispytyvaet lyubvi k paduchemu tormoznomu monstru: netscape 3.xx osoboj rusifikacii tozhe ne trebuyut - dostatochno prosto shriftov v kodirovke koi8-r, no s win-kodirovkoj budut, estestvenno, problemy. Edinstvennaya pakost' - upravlyayushchie elementy form (knopki/selektory i t.d.) vyvodyatsya v latin1. Lechitsya echo 'Netscape*documentFonts.charset*koi8-r: iso-8859-1' | xrdb -merge posle chego koi8-shrifty poyavlyayutsya v spiske shriftov dlya "Western". (otnyne vasha kodirovka po umolchaniyu imenno ona, a pro koi zabud'te.) Netscape 3.x beretsya s <ftp://archive.netscape.com> Login:archive Password:oldies dir tam ne rabotaet, kachajte /archive/index.html · Principial'no ne rusificiruemye veshchi: u oboih netskejpov (3 i 4) budut trudnosti so stranicami v kodirovke, ne sootvetstvuyushchej 'meta content-type' v zagolovke (tradicionnaya problema serverov s vyborom kodirovok i avtorov, pol'zuyushchihsya tulzami ot MS). He lechitsya nichem, krome haka binarnikov. CHto eshche huzhe - esli v dokumente yavno ukazan shrift, i takoj shrift, ne daj bog, u vas imeetsya (estestvenno, ne rusificirovannyj), to im vse i budet narisovano. Reshenij dva: ili ne imet' v sisteme ne-rusificirovannyh shriftov vovse, ili otklyuchit' v netskejpe avtomaticheskuyu zagruzku izobrazhenij. (pri etom "zaodno", kak ni stranno, otklyuchitsya i pokaz shriftov, ukazannyh v dokumente. Hazhav Alt-I, vy poluchite vozmozhnost' posmotret' kartinki. Hadeyus', tekst k etomu momentu vy uzhe zapomnili ;) 3.31. Kak mne zastavit' prilozhenie dlya iksov ispol'zovat' shrifty s koi8-r, a ne iso8859-1 ? a) Postarajtes' vyyasnit', otkuda prilozhenie beret imya fonta. CHashche vsego prilozhenie hranit imena ispol'zuemyh fontov v "baze resursov": v personal'noj /.Xdefaults ili sistemnoj /usr/X11R6/lib/X11/app- defaults/ baze. Imena ispol'zuemyh fontov hranitsya v forme XLFD, t.e. tam mozhno primenyat' "*". Naprimer: Netscape*fontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-koi8-r Posmotret' "resursy" prilozheniya mozhno utilitoj appres : $ appres XTerm V man prakticheski na lyubuyu X programmu imeetsya sekciya RESOURCES. Esli programma napisana s primeneniem kakogo-libo "Toolkit"-a : GTK, Qt, Motif, e.t.c., chashche vsego dostatochno rusificirovat' Toolkit. Rusifikaciya GNOME/Gtk i Qt takim sposobom opisana chut' nizhe. b) S pomoshch'yu klyucha -fn font ili -font font. |tot klyuch obrabatyvaetsya v XLIB i on skoree vsego budet rabotat' v lyuboj X programme. c) Metod grubogo haka. Nuzhno vzyat' russkie shrifty s <ftp://ftp.relcom.ru/pub/x11/cyrillic/fonts/>, tam est' shrifty adobe-*-koi8-1 (c fonts.alias, delayushchim iz nih -iso8859-1), no real'no soderzhashchie kirillicu v koi8-r v starshej polovine. Pri etom shrifty s temi zhe imenami i "nastoyashchimi" simvolami iso8859-1 stanovyatsya nedostupny. Standartnyh shriftov iz XFree86-cyrillic-fonts nedostatochno. Krome togo, puti k russkim shriftam v konfige iksov ili font-servera dolzhny byt' vperedi vseh prochih. Odnako luchshe ne ispol'zovat' etot metod, a napisat' avtoru programmy (ili prislat' emu patch ;) dlya vyneseniya imeni fonta v "resurs". 3.32. Pochemu v Gnome ili programmah, ispol'zuyushchih GTK+, koe-gde russkij tekst vyvoditsya latinicej? Gde propisyvayutsya ispol'zuemye imi shrifty? Esli gtk ne nahodit nuzhnyh shriftov (v chastnosti, nuzhnogo razmera), on rezhet 8-j bit. SHrifty zadayutsya v /etc/gtk/gtkrc.$LANG. Poetomu nuzhno sozdat' fajl gtkrc.ru ili popravit' sushchestvuyushchij. Vnutri dolzhno byt' primerno sleduyushchee (nazvaniya shriftov, razmery i prochie atributy mozhno ispravit' po vkusu, no eti shrifty dolzhny soderzhat' kirillicu v koi8-r): style "gtk-default-ru" { fontset = "-cronyx-helvetica-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-courier-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-fixed-medium-r-normal--*-*-*-*-*-*-koi8-r,\ -cronyx-times-medium-r-normal--*-*-*-*-*-*-koi8-r" } class "GtkWidget" style "gtk-default-ru" I skopirovat' etot fajl v 'gtkrc.ru_RU.KOI8-R' ili sdelat' symlink: $ cd /etc/gtk/ $ ln -s gtkrc.ru gtkrc.ru_RU.KOI8-R Podrobnosti sm. <http://www.gtk.org/tutorial/gtk_tut-21.html>, a takzhe <http://www.linux.org.ru/gnome/> 3.33. Qt i russkoyazychnye programmy <http://kde.ru/docs.php?action=index> 3.34. Kak rusificirovat' KDE? <http://www.kde.org/international/russia/localization.html> 3.35. CHto sdelat', chtoby bylo mozhno rabotat' v yunikodnoj lokali (ru_RU.UTF-8) v konsoli i v iksah? K sozhaleniyu, "zhelezo" konsoli IBM-PC (VGA/SVGA) mozhet otobrazhat' tol'ko 256 simvolov odnovremenno. Eshche 32 simvola ot®edayut ramki. Esli pozhertvovat' atributami, kolichestvo simvolov mozhno dovesti do 512. Dlya UNICODE yavno malovato. Sm. Console programming HOWTO <http://devel.linvision.com/doc/fbh/current/index.html> Esli ustraivayut eti ogranicheniya, to perehod (paket console-tools) v/iz odnobajtovogo rezhima konsoli v rezhim UTF-8 osushchestvlyaetsya komandami unicode_start(1) i unicode_stop(1) . Uznat' tekushchij rezhim mozhno komandoj vt-is-UTF8(1) . Dokumentaciya - v console-tools/lct.txt |mulyator terminala XTerm v X Window ne imeet apparatnyh ogranichenij. Zapusk : xterm -u8 s fontami *-iso10646-1 . Naibolee sovremennye programmy ne ispol'zuyut "terminal'nyj vvod-vyvod" voobshche, a napisany s ispol'zovaniem ToolKit-ov, podderzhivayushchih UNICODE (Qt, GTK, Java .e.t.c.) ili napryamuyu pol'zuyutsya vozmozhnostyami GUI X Window. Dlya pravil'noj raboty prilozhenij v UTF-8 neobhodimo, chtoby sistemnaya lokal' takzhe byla UTF-8, naprimer LANG="ru_RU.UTF-8" . Dopolnitel'naya informaciya: UTF-8 and UNICODE FAQ: <http://www.cl.cam.ac.uk/~mgk25/unicode.html> The Unicode HOWTO: <http://www.tldp.org/HOWTO/Unicode-HOWTO.html> How do Unix terminals work?: <http://czyborra.com/unicode/terminals.html> Unicode Howto for KDE developers: <http://developer.kde.org/documentation/library/kdeqt/kde3arch/KDE- Unicode-Howto.html> Est' mikro-HOWTO vot zdes': <http://lists.debian.org/debian- russian/2001/debian-russian-200111/msg00203.html> 3.36. Kto zanimaetsya perevodom dokumentacii i pol'zovatel'skih interfejsov na russkij yazyk? Russian Linux Documentation Project: <http://rldp.linux.ru.net>. Vedet Alexsandr Mikhailov, <mailto:alexmikh@mail.ru> Informaciya: <http://www.tldp.org/vlist.html#te> Russkaya komanda perevoda GNU: <http://www.gnu.org.ru>, <http://www- ru.gnu.org.ru/>, <http://www2.iro.umontreal.ca/~pinard/po/registry.cgi?team=ru> Proekt Alekseya Mahotkina "Manpages-Ru" posvyashchen perevodu paketa manpages na russkij yazyk. <http://www.alexm.here.ru/manpages-ru> KDE: <http://www.kde.org/international/russia/> GNOME: <http://www.linux.org.ru/gnome/> 4. Sistemnoe administrirovanie 4.1. A kakie byvayut versii yadra Linuksa ? A pochemu pri apgrejde/kompilyacii yadra u menya #$@#$#@%@#$%@#$? A chto takoe development-yadra i voobshche, pochemu govoryat, chto novaya versiya yadra - 2.2.x vyshla vchera, kogda ya mesyac nazad skachal 2.3.kakuyu-to ? Kakim yadrom luchshe pol'zovat'sya ? (Alex Kanavin, adres vyshe, Alexey Mahotkin <mailto:alexm@hsys.msk.ru>) Nachnem s oficial'noj serii yader, vypuskaemyh neposredstvenno Linusom Torval'dsom. Prezhde vsego, nado razobrat'sya, chto takoe stabil'nye i nestabil'nye yadra (stable i development) i kak oni numeruyutsya. Pust' imeetsya yadro versii a.b.c · a - eto osnovnoj nomer versii. Menyaetsya on raz v neskol'ko let, kak pravilo, kogda nestabil'naya seriya s ochen' sushchestvennymi izmeneniyami stanovitsya stabil'noj. · b - eto patchlevel. Imenno on opredelyaet, yavlyaetsya li dannoe yadro stabil'nym ili net. Esli on chetnyj - yadro stabil'noe, esli nechetnyj - nestabil'noe. CHisla a i b v vide a.b nazyvaetsya seriej yader. · s - eto sublevel. On opredelyaet nomer yadra v serii. Oficial'nye yadra v vide ishodnyh tekstov mozhno skachat' s <ftp://ftp.kernel.org> i ego mnogochislennyh mirrorov (rossijskij: <ftp://ftp.ru.kernel.org>, no im luchshe ne pol'zovat'sya, tak kak on ne mirrorit .bz2, esli vam nuzhen imenno rossijskij mirror, to poprobujte <ftp://ftp.rmt.ru/>, <ftp://ftp.chg.ru/Mirrors/ftp.kernel.org/> ili <http://ftp.chg.ru/Mirrors/ftp.kernel.org/>). [pol'zuyas' sluchaem, hochu peredat' soobshchenie dlya <ftp://ftp.chg.ru> , <ftp://ftp.ru.kernel.olg> i drugih oficial'nyh rossjskih mirrorov: esli uzh vy mirrorite, naprimer, redhat, to delajte eto celikom i kazhdyj den', a ne raz v mesyac kusochkami. A to apdejty u vas poyavlyayutsya cherez mesyac posle togo, kak oni byli vylozheny na ftp.redhat.com, da i to - tol'ko k poslednej versii. Nu i komu nuzhen takoj "oficial'nyj" mirror? Vzyalis' byt' zerkalom - delajte eto kak sleduet, ne mozhete - otkazhites'.] Krome polnyh ishodnyh tekstov yadra tam zhe mozhno najti patchi - znachitel'no men'shie po razmeru fajly, pozvolyayushchie prevratit' ishodniki versii a.b.c v ishodniki versii a.b.c+1 c pomoshch'yu komandy patch. |ti zhe patchi hodyat po fajlehe usyslnx. Stabil'nye yadra prednaznacheny dlya shirokogo ispol'zovaniya i problemy pri ih ispol'zovanii ili kompilyacii vstrechayutsya nechasto. Kak pravilo v stabil'nyh seriyah ot versii k versii tol'ko ispravlyayutsya oshibki i dobavlyayutsya drajvera, ne trebuyushchie izmenenij v samom yadre i horosho sebya zarekomendovavshie. Stabil'nye yadra mozhno bezboyaznenno obnovlyat', ne trogaya prochij soft - esli vy ostaetes' v ramkah odnoj serii, problem vozniknut' ne dolzhno. (Po krajnej mere v teorii, na praktike, vozmozhno, pridetsya vernut'sya k staromu yadru i podozhdat' vyhoda eshche odnoj versii.) Novye versii vyhodyat nechasto - primerno raz v mesyac, i rezhe. Nestabil'nye yadra, naoborot, ne prednaznacheny dlya ispol'zovaniya massami. |to poligon dlya testirovaniya mnozhestva raznoobraznyh vozmozhnostej, tol'ko poyavivshihsya i eshche ne gotovyh dlya ispol'zovaniya nikem, krome ih sobstvennyh razrabotchikov i lyudej, ch'e hobbi - zabavlyat'sya s nestabil'nymi yadrami. Zdes' ot versii k versii mozhet menyat'sya ochen' mnogoe i pravil'nuyu rabotu nikto ne obeshchaet (vprochem, to zhe otnositsya i k stabil'nym yadram, no v menee "zhestkom" smysle). Pri ih ispol'zovanii nuzhno byt' gotovym ko vsemu. Prezhde vsego k tomu, chto yadro prosto ne skompiliruetsya. Potom ono mozhet ne zagruzit'sya, zavisat', portit' fajlovuyu sistemu i voobshche vsyacheski glyuchit'. Krome togo, mozhet nachat' glyuchit' soft, vzaimodejstvuyushchij s yadrom napryamuyu. Nestabil'nye yadra vyhodyat gorazdo chashche stabil'nyh - inogda neskol'ko novyh yader v nedelyu. Kak nestabil'naya seriya stanovitsya stabil'noj i naoborot ? Ochen' prosto: v kakoj-to moment Linus Torvalds ob®yavlyaet t.n. feature freeze, posle chego k vklyucheniyu v nestabil'noe yadro prinimayutsya tol'ko ispravleniya oshibok (bugfix). CHerez nekotoroe vremya ocherednoj versii prisvaivaetsya nomer ne a.b.c+1, a a.b+1.0 ili a+1.0.0 - tak poyavlyaetsya novaya stabil'naya seriya, vokrug chego mass-media ustraivayut bol'shuyu shumihu :) Eshche cherez nekotoroe vremya vypusk versij v predydushchej stabil'noj serii prekrashchaetsya i proishodit t.n. fork ili razvetvlenie - odnovremenno s ocherednym stabil'nym yadrom poyavlyaetsya nestabil'noe, otlichayushcheesya ot pervogo tol'ko nomerom versii. Zamet'te, chto terminy "stabil'nyj" i "nestabil'nyj" v chem-to uslovny. Ponyatno, chto "nestabil'noe" yadro 2.3.128 za neskol'ko minut do ego prevrashcheniya v stabil'noe yadro 2.4.0 po opredeleniyu stabil'no, a stabil'noe yadro 2.2.xxx, v kotorom obnaruzhena fatal'naya oshibka raspredeleniya pamyati -- opyat' zhe po opredeleniyu nestabil'no. V obshchem, sami ponimat' dolzhny, ne malen'kie. V silu otkrytosti processa razrabotki yadra Linux sushchestvuet neskol'ko pobochnyh vetvej razvitiya. Odnoj iz osnovnyh takih vetvej yavlyayutsya yadra serii -ac, kotorye vypuskaet Alan Koks -- odin iz osnovnyh razrabotchikov Linuksa. Vo-pervyh, seriya -ac sluzhit svoeobraznym buferom, v kotorom testiruyutsya nekotorye novye drajvera, vozmozhnosti, etc. pered tem, kak etot, uzhe ottestirovannyj, drajver budet otpravlen Linusu. Vo-vtoryh, v yadrah -ac imeetsya opredelennyj nabor veshchej, kotorye ne ustraivayut Linusa, no ustraivayut Alana i k tomu zhe dostatochno populyarny. Sushchestvuyut takzhe eshche neskol'ko menee vazhnyh (hotya vashe mnenie po etomu voprosu mozhet otlichat'sya) pobochnyh vetok: naprimer, International Kernel Patch s podderzhkoj sil'noj kriptografii, devfs-patch s podderzhkoj fajlovoj sistemy /dev, ran'she byla otdel'naya podderzhka ISDN, nu i tak dalee i tomu podobnoe). Krome togo, mnogie proizvoditeli distributivov rasprostranyayut yadro s opredelennymi patchami, kotorye oni schitayut neobhodimymi i kotorye luchshe vpisyvayutsya v infrastrukturu distributiva). Kakim zhe yadrom vse-taki pol'zovat'sya? Prostejshij otvet: tem, kotoroe vhodit v ispol'zuemyj vami distributiv. |tot otvet priemlem dlya bol'shinstva pol'zovatelej Linuksa. Esli zhe vy okazalis' v situacii, kogda, naprimer, nuzhnoe vam zhelezo podderzhivaetsya tol'ko v kakom-to patche, kotoryj ne voshel ni v odnu iz osnovnyh vetvej, znachit, vam pridetsya brat' ishodniki original'nogo yadra, patchi, kotorye ispol'zovali sozdateli distributiva, patchi, kotorye neobhodimy lichno vam, prikladyvat' vse eti patchi drug k drugu, kompilirovat' i ustanavlivat' yadro vruchnuyu (nu, ili sozdat' svoj sobstvennyj paket na osnove distributivnogo). Vam takzhe pridetsya otslezhivat' vyhod novyh versij patcha, kontaktirovat' s ego avtorom, srazhat'sya s ego glyukami i prilagat' vsyacheskie usiliya k tomu, chtoby onyj patch, nakonec, priobrel oficial'nyj status. Vozmozhny i drugie varianty, pri kotoryh mozhet potrebovat'sya peresborka, naibolee ochevidnyj - vy stolknulis' s oshibkoj v yadre, kotoraya ispravlena v bolee svezhej versii. V etom sluchae stoit sperva vyyasnit', ne vylozhil li proizvoditel' vashego distributiva ispravlennoe yadro na svoj ftp server, v to zhe mesto, gde lezhat prochie obnovleniya. Takoe yadro dostupno v forme paketa (rpm ili deb), prigodnogo k neposredstvennoj ustanovke paketnym menedzherom, libo v distributive imeetsya sistema avtomaticheskogo obnovleniya paketov. Esli zhe vam prosto hochetsya postavit' bolee svezhuyu versiyu yadra ili peresobrat' yadro bez vsyakoj prichiny ("ubrat' lishnie drajvera", "izuchit' process sborki" i t.p. prichinami ne schitayutsya ;-), rekomenduetsya ser'ezno podumat', prezhde chem pristupat' k dejstviyam. Ne stoit chinit' to, chto ne slomano. Ob®em trafika ru.linux, posvyashchennyj problemam pri peresborke yadra ves'ma velik i ne nado eshche bol'she ego uvelichivat' :-). Odnako obnovleniya yadra ot proizvoditelya vse-taki ustanavlivat' rekomenduetsya v lyubom sluchae :-) Itak, vy reshili samostoyatel'no skompilirovat'/ustanovit' yadro. Esli ono development - ochen' rekomenduetsya podpisat'sya na spisok rassylki linux-kernel. V lyubom sluchae zhelatel'no prosmatrivat' glazami patchi pered ustanovkoj (osobenno na predmet dobavleniya novyh opcij i izmenenij v kataloge Documentation). Eshche krajne rekomenduetsya ostavlyat' staroe yadro i delat' v lilo otdel'nyj target tipa oldlinux, na nego pokazyvayushchij. Pri smene stabil'noj serii na bolee novuyu stabil'nuyu nado prochest' Documentation/Changes - kak minimum. A luchshe - vse iz etogo kataloga, chto otnositsya k vashemu zhelezu i softu. 4.2. Kak proizvesti kompilyaciyu yadra? |to zalozheno v ustanovkah linuksa ili zdes' est' kakie hitrosti? cd /usr/src/linux Opcii, s kotorymi kompiliruetsya yadro (tip processora, drajvery kotorye nuzhno vklyuchit' (vozmozhno v vide modulej) i eshche sotni drugih veshchej), zadayutsya v fajle /usr/src/linux/.config. Tak vot, zhelatel'no ne sozdavat' ego samomu s nulya (osobenno, esli vy sobiraete yadro pervyj/vtoroj/tretij raz v zhizni ili nalozhili patch na ishodniki iz kotoryh uzhe chto-to kompilirovali), a vzyat' za osnovu .config s kotorym bylo sobrano staroe, rabotayushchee yadro. Pri etom vam prezhde vsego nado vydat' komandu make oldconfig - ona ispol'zuetsya, kogda est' .config ot _drugoj_ (obychno, bolee staroj) versii yadra, i nuzhno prosto poluchit' tochno takoj zhe dlya tekushchej (vozmozhno, otvetiv na paru voprosov o teh fichah, kotoryh v starom ne bylo), ne otvechaya zanovo na vse tri sotni voprosov. Zatem vydajte make menuconfig i isprav'te te opcii, radi kotoryh vy sobstvenno i reshili peresobrat' yadro. Esli vy ispol'zuete Red Hat i hotite vospol'zovat'sya temi .config, c pomoshch'yu kotoryh byli sobrany yadra v etom distributive, to voz'mite ih iz kernel-sources-*.i386.rpm/usr/src/linux/configs/ Zatem: make dep make clean make zImage (make bzImage dlya yader versij > 2.2) make modules Esli u vas ran'she stoyala eta zhe versiya yadra, to udalite starye moduli ot etogo yadra (/lib/modules/versiya). make modules_install /usr/src/linux/arch/i386/boot/(b)zImage - i est' svezhesobrannoe yadro. Ego teper' mozhno poinstalirovat' na mesto starogo. Hotya luchshe snachala poprobovat', rabotaet li ono. Nuzhno dobavit' v lilo.conf eshche odin vybor - naprimer, linux.test, - kotoryj beret yadro pryamo iz /usr/src/linux/arch/i386/boot/zImage. (Valentin Nechayev <mailto:nnlx@nn.kiev.ua>) YA ppedlagayu dpugoj metod - ppovepen tol'ko dlya Red Hat'a. cd /usr/src/linux-nuzhnaya_vepsiya vi Makefile i zamenit' extraversion na svoj - nappimep, EXTRAVERSION = -vasya1 posle etogo vse to zhe samoe, no 1. make modules_install postavitsya v svoj otdel'nyj katalog 2. ustanovka (ppavil'naya!) yadpa v /boot sdelaetsya sama chepez make install 3. eto rabotaet tol'ko s yadrami 2.2.x (u 2.0 prosto net parametra EXTRAVERSION) i, po krajnej mere teoreticheski, mozhet "slomat'" chej-nibud' avtokonfigurator, rasschityvayushchij na n.n.nn po uname -r. (Alexander Pevzner, 2:5020/59.9) Tem, kto otvazhilsya na sborku yadra lichno pod sebya, sovetuem obratit' vnimanie na sleduyushchie fakty: · V nachale yadernogo Makefile (/usr/src/linux/Makefile) est' peremennaya EXTRAVERSION. Ispol'zuya ee mozhno poluchat' yadra odnoj i toj zhe versii, no s nazvaniyami, otlichayushchimisya suffiksom (napr, 2.2.12-20 i 2.2.12-vasya). |to horosho, poskol'ku pozvolyaet sohranit' ekzemplyar yadra, kotoryj zavedomo umeet gruzit'sya. Rodnoe yadro, s kotorym stavilas' sistema, luchshe sohranit' na sluchaj vsyakih nepriyatnostej. Hado tol'ko ne zabyt' dobavit' dopolnitel'nuyu zapis' v /etc/lilo.conf (dostatochno imet' vsego 2 zapisi: na rodnoe yadro i na svezhesobrannoe). · V redhate v /usr/src/linux pravil'no rabotaet make install i make modules_install. YAdro i moduli kopiruyutsya v nuzhnoe mesto i pravil'no nastraivayutsya simvolicheskie linki. Prichem, chto priyatno, eto otnositsya ne tol'ko k yadram, poluchennym v vide .src.rpm, no i esli prosto vzyat' yadro s ftp.kernel.org, vse zarabotaet. (etu pravil'nuyu ustanovku osushchestvlyaet redhatovskij skript /sbin/installkernel, vhodyashchij v paket s firmennym yadrom redhata, poetomu pered make install zhelatel'no ubedit'sya v nalichii etogo skripta (Alex Kanavin).) EXTRAVERSION v etih yadrah po defoltu ne vystavleno, poetomu yadro budet poluchat'sya pod imenem navrode 2.2.13 (konechno, EXTRAVERSION pri zhelanii mozhno vystavit') · Kogda yadro sobiraetsya v dereve, v kotorom uzhe sobiralos' yadro, ochen' rekomenduetsya posle make *config skazat' make clean. Vo vsyakom sluchae, esli kakie-to chasti yadra byli pereseleny v moduli ili obratno, nado delat' eto _obyazatel'no_, inache est' shans sobrat' nepravil'noe (ne rabotayushchee) yadro. 4.3. Kak izmenit' maksimal'noe kolichestvo otkrytyh fajlov? V yadrah 2.2.10 i bolee novyh: echo 30000 > /proc/sys/fs/file-max echo 30000 > /proc/sys/fs/inode-max i sdelat' ulimit -n 2000 pered zapuskom nuzhnogo demona. Cifry podbirayutsya pod zadachu. (Yuriy Kaminsky 2:5020/517.21) I ne zabyt', chto esli programma ispol'zuet select, to budet bol'shoj-bol'shoj oblom. Vplot' do zatiraniya steka i padeniya (at least glibc-2.0 - sm. /usr/include/gnu/types.h - i izhe s nim; ispravleniya #define __FD_SETSIZE 1024 na nuzhnoe chislo i peresborki vseh prilozhenij i bibliotek , kotorye mogut zayuzat' select dlya deskriptorov vyshe 1024 budet dostatochno [t.e., skazhem, esli X'ovomu prilozheniyu nuzhno otkryvat' bolee 1024 fajlov, to neobhodimo peresobirat' Xlib i Xt kak minimum]; ah, da, samu libc peresobirat', vrode, ne nuzhno). 4.4. Podskazhite, pls, www/ftp gde mozhno poluchit' doku po administrirovaniyu Linux'a. <http://www.linuxdoc.org> Ha russkom yazyke - posmotrite na <http://linux-ve.chat.ru> 4.5. Q/A: development site dlya libc, binutils, ld.so <ftp://ftp.yggdrasil.com/private/hjl> - esli komu-to ponadobilas' tuhlyatina. V chastnosti, imenno tam nado iskat' libc5 poslednih versij) Sejchas vse eto lezhit na <ftp://ftp.kernel.org/pub/linux/software/> i ego lokal'nyh mirrorah. ( <ftp://ftp.ru.kernel.org> ne mirrorit .bz2 (na 20% men'she gz, mnogoe iz kataloga linux/kernel/people v .gz ne vykladyvaetsya), poetomu vmesto <ftp://ftp.ru.kernel.org> luchshe pol'zovat'sya <ftp://ftp.rmt.ru> ili <http://ftp.filesearch.ru>) 4.6. Kak zagruzhaetsya sistema? Ochen' korotko, podrobnee mozhno prochest' v vyshenazvannyh istochnikah: yadro montiruet kornevuyu fajlovuyu sistemu, i zapuskaet pervyj process init, razyskav ego ispolnyaemyj fajl v neskol'kih standartnyh mestah. |tot process chitaet svoj konfiguracionnyj fajl /etc/inittab (man inittab) i zapuskaet vse ostal'nye processy soglasno instrukciyam iz etogo fajla. Obychno v inittab propisyvaetsya zapusk processov *getty, upravlyayushchih terminalami, virtual'nymi konsolyami i posledovatel'nymi liniyami (to est' imenno *getty otvetstvenny za zapusk login (sravnivayushchij imya i parol', ukazannye pol'zovatelem, s tem, chto propisano v /etc/passwd i v sluchae uspeha zapuskayushchij sootv. shell), pppd, ifcico i t.d., chto imenno zapuskaetsya i v kakom sluchae - zavisit ot konkretnogo getty). Dlya virtual'nyh konsolej obychno ispol'zuetsya mingetty, dlya modemov - mgetty. Krome togo, zdes' zhe propisyvayutsya skripty, zapuskayushchiesya na razlichnyh t.n. "urovnyah vypolneniya", iz kotoryh v svoyu ochered' zapuskayutsya vse ostal'nye sistemnye servisy, osushchestvlyaetsya nastrojka seti, proverka fajlovoj sistemy i t.d. Sushchestvuet dva podhoda k organizacii etih urovnej i skriptov: BSD i SysV. Oba oni opisany v knizhke |. Nemet (sm. vyshe), a pro SysV mozhno eshche prochest' na <http://www.sensi.org/~alec/unix/redhat/sysv-init.html>. 4.7. Posle udaleniya /var/log/syslog i /var/log/messages i pepezagpuzki eti fajly ne popolnyayutsya i nekotopye soobshcheniya idut na konsol'. Kak ppavil'no chistit' log-i? Logi mogut byt' ot syslog'a i ot otdel'nyh demonov. syslog'ovye logi chistyatsya tak: mv $log ${log}.old (ili rm esli ne nuzhen, no luchshe sohpanit') touch $log kill -1 `cat /var/run/syslogd.pid` Process avtomatiziruetsya s pomoshch'yu logrotate. Kak chistit' ne-syslog'ovye logi - tol'ko RTFM na konkpetnuyu tulzu i nikak inache. 4.8. Gde vzyat' dokumentaciyu na pam? <http://www.kernel.org/pub/linux/libs/pam/> 4.9. V BSD s pomoshch'yu su rutom mozhet stanovit'sya tol'ko user, ppopisannyj v gpuppe wheel, a v Linux'e - kto ugodno. Hehoposho eto kak-to. Mozhet byt', est' put' eto isppavit'? Nado stavit' su ne iz gnu sh_util, kotoraya v principe etogo ne umeet (RTFmanpage na predmet, po ch'ej milosti), a kakuyu-nibud' druguyu. No ezheli su pol'zuet pam (v Red Hat, nappimep i osnovannyh na nem distributivah, a takzhe v Debian 2.2), podobnoe povedenie dostigaetsya dobavleniem stpochki: su auth required pam_wheel.so v /etc/pam.conf, esli pam dpevnij, ili: auth required pam_wheel.so v /etc/pam.d/su, esli ponovee. Takoj mehanizm poluchshe budet, poskol'ku povedenie mozhno vap'ipovat' na hodu. Happimep, manipulipuya papametpami 'group' i 'deny', pazpeshit' eto delat' vsem, kpome odnoj gpuppy: pam_wheel.so group=guest deny Ppavda, modul' etot stpannyj, zabyvaet smotpet' na gid, a smotpit tol'ko na groups... A mozhet tak i nado... V Debian 2.1 nado postavit' paketik secure-su i posmotret' na fajl suauth. V Slackware ot 3.3 (gapantipovano) eto peshaetsya putem pedaktipovaniya /etc/login.defs Huzhno, chto by bylo SU_WHEEL_ONLY yes togda su smogut ispol'zovat' tol'ko vhodyashchie v gpuppu root. V slakvari ot 3.4 (do 4.0, gde su opyat' iz drugoj banki) luchshe prochest' sperva man 5 suauth - tam vozmozhna gorazdo bolee gibkaya nastrojka su, chem tupaya "gruppa nol'". Esli pamyat' ne vpet, to eto zhe sppavedlivo v SuSe 6.x. V SuSE 5.3 su iz sh_util, so vsemi vytekayushchimi. K sozhaleniyu, su, ponimayushchaya login.defs i suauth, stradaet drugimi boleznyami - v chastnosti, ne imeet udobnyh klyuchikov -m i -s. Esli sek'yuriti vazhnee udobstva... 4.10. Kak mozhno ostavlyat' v sisteme kakoe-to kolichestvo virtual'noj pamyati v zarezervirovannom sostoyanii (esli zadacha zapushchena ne iz-pod root'a), ili voobshche limitirovat' pamyat' dlya kazhdogo pol'zovatelya? man setrlimit 4.11. Kak sdelat' tak, chtoby programmy XXXX i YYYY mogli odnovremenno ispol'zovat' modem ili eshche chto-to na terminal'nom portu? Vo-pervyh, oni dolzhny ispol'zovat' odno i to zhe imya fajla dlya dostupa k portu, skazhem, /dev/modem. Esli odna programma ispol'zuet /dev/ttyS0, a drugaya /dev/cua0 (a tret'ya -- /dev/modem, kotoryj link na odin iz etih dvuh :), - to oni tochno perederutsya. Vo-vtoryh, oni dolzhny ispol'zovat' mehanizm lock-fajlov. Havernoe, vse izvestnye programmy ego ispol'zuyut, no vse zhe. V-tret'ih, oni dolzhny videt' loki drug druga. To est', v ih konfiguracii dolzhen byt' ukazan odin i tot zhe katalog dlya sozdaniya lokov, oni dolzhny ispol'zovat' odin i tot zhe format imen fajlov (obychno LCK..<imya fajla porta>), odin i tot zhe format samih fajlov (obychno desyat' simvolov -- PID programmy v ASCII), i imet' privilegii, dostatochnye dlya sozdaniya i udaleniya svoih lok-fajlov.