Главная > Операционные системы > Семейство UNIX > |
RU.LINUX FAQ list |
Секция 2 из 4 - Предыдущая - Следующая
Все секции
- 1
- 2
- 3
- 4
фонт-серверах можно использовать шрифты TrueType. Для Red Hat фонт-сервер xfsft входит в пакет XFree86-xfs. <http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/> 3.10. * Как сделать так, чтобы в иксах русские буквы вводились везде ? Существует два основных способа русификации клавиатуры X : - XKB, применяющийся в современном X11R6 - xmodmap, применявшийся в X11R5 При русификации X 3.3.x через XKB в /etc/X11/XF86Config должно быть прописано: Section "Keyboard" ... XkbRules "xfree86" XkbModel "pc101" XkbLayout "ru" XkbOptions "grp:shift_toggle" EndSection Для X 4.0.x Section "InputDevice" ... Driver "keyboard" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "ru" Option "XkbOptions" "grp:shift_toggle" EndSection В зависимости от клавиатуры опция Model может быть "pc101", "pc104" или "pc105", а комбинации переключения: grp:toggle правый Alt (с "фиксацией") grp:caps_toggle Caps_Lock grp:shift_toggle два Shift grp:ctrl_shift_toggle Control+Shift grp:ctrl_alt_toggle Control+Alt Для 4.0.x добавились новые : grp:alt_shift_toggle Alt+Shift grp:menu_toggle Menu (модель должна быть pc104, pc105) Если есть проблемы с XKB, прочтите <http://www.tsu.ru/~pas| cal/other/xkb/> Там же есть ссылки на "переключатели клавиатуры", например xxkb, описание, как использовать несколько раскладок одновременно, назначать клавиши переключения раскладок и много других интересных вещей. Наиболее развитая программа для переключения клавиатуры через способ xmodmap : xruskb от 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/> Она может понадобиться для русификации X11R5 терминалов, например железных, или эмуляторов под MS Windows. Для ее применения с XFree86 лучше отключить модуль XKB в /etc/X11/XF86Config директивой XkbDisable. Правильная раскладка для xruskb: jcukeng-cyr.xmm Проверить русификацию X можно программой xev: клавиатура должна генерировать правильные XkeySym для кириллицы (0x6xx), а xev должна показывать Cyrillic_IE и пр. при нажатии русских букв, а не OCyrcumflex e.t.c. 3.11. Как cмонтировать диск, чтобы русские имена файлов были видны ? Для vfat примерно так (cтрочка из /etc/fstab/): /dev/hda5 /mnt/d vfat noexec,rw,umask=002, codepage=866, iocharset=koi8-r, gid=100 0 0 (в одну строчку) Потом mount /mnt/d. Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые страницы (возможно, в виде модулей /lib/modules/`uname -r`/fs/nls_*) - CP866 и KOI8-R, так что возможно (хотя скорее всего нет) ядро придется перекомпилировать. Для CD, содержащего файлы с русскими именами: $ mount -t iso9660 -o iocharset=koi8-r /dev/cdrom /mnt/cdrom Параметр codepage для isofs не нужен, в файловой системе JOLIET имена файлов хранятся в UNICODE. Смысл этих опций можно узнать в 'man mount' или в документации исходников ядра /usr/src/linux/Documentation/filesystems/ или /usr/doc/kernel/filesystems/ 3.12. Как увидеть русские буквы в именах файлов на диске Samba? Добавить в /etc/smb.conf [global] character set = koi8-r client code page = 866 preserve case = yes short preserve case = yes 3.13. * Как перекодировать из DOS/Win кодировки в KOI8-R ? Перекодировщиков CP1251 и CP866 --> KOI8-R просто огромное количество. Не надо писать новых ;-) Наиболее широко распространены iconv (входит в поставку glibc) и GNU recode ( <ftp://prep.ai.mit.edu/pub/gnu/recode/>) $ iconv -f866 -tKOI8-R -o<outfile> infile $ recode CP1251..KOI8-R winfile.txt Еще один URL для recode - <http://www.iro.umon| treal.ca/~pinard/recode/>. Перекодировщик русского текста с автоматическим определением исходной кодировки: <ftp://oskin.macomnet.ru/pub/linux/misc/xcode.c> В конце концов сгодится обычный lynx : $ lynx -assume_local_charset cp866 file.txt 3.14. Как прикрутить к Golded/LNX почтовую базу в 866 кодировке ? Во-первых, нужно взять GoldEd+ c <http://asa.i-connect.ru>. Библиотека uulib, необходимая для его сборки, лежит на <http://www.uni-frankfurt.de/~fp/uudeview/> Кроме того, нужно взять таблицы перекодировки (например из пакета русификации, проходившего по файлэхе aftnged и лежащего на <http://collage.etel.ru/fileechos/ftn/> и прописать их в golded.cfg, примерно так: 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.15. Можно ли в mc увидеть pусские буквы? Можно. F9 - options - display bits - Full 8 bit Кроме этого, могут оказаться необходимыми еще некоторые действия. Просмотр файлов в mc запускается через nroff (по крайней мере, в mc, идущем с Slackware'96). В неправленном файле /usr/lib/mc/mc.ext мы имеем запуск nroff'а с ключами -Tascii В Slackware'96 при таком положении вещей русских букв вы не увидите, а вот если исправить на -Tlatin1 тогда увидите. Та же проблема и с man'ом. Если у меня есть файл с русскими буквами, то вызов, скажем man ar приводит к ерунде на экране несмотря на LESSCHARSET=koi8-r. Приходится править /usr/lib/man.config 3.16. less Yuriy.Kaminskiy@p21.f517.n5020.z2.fidonet.org пишет: при настроенной локали указывать LESSCHARSET _НЕ НАДО_. Более того, в ~/.lesskey надо добавить #env LESSCHARSET= чтобы он игнорировал установку LESSCHARSET= глупыми программами (к примеру, man :) [после этого надо запустить lesskey для получения бинарного файла ~/.less] В противном случае он не будет вызывать set| locale(LC_CTYPE,"") и, как следствие, не будет icase search для русских букв. 3.17. telnet Если возникают проблемы с вводом русских символов, надо написать файлик ~/.telnetrc со следующей строкой: DEFAULT set outbinary Вы можете встретить проблемы при работе в кодировке Win-1251 -- не передается маленькая русская буква "я" 0xff. У протокола TELNET 0xff -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать : 0xff, 0xff. В KOI8-R такой проблемы нет. 3.18. Что делать, если "слетела" консоль ? Скорее всего на консоль был скопирован какой-то двоичный файл, где случайно встретилась переключающая ESC-последовательность. Тогда : Сброс терминала : $ echo -ne "\033c" набрать вслепую, или с работающей консоли : # echo -ne "\033c" >/dev/ttyX Переключение на downloaded font $ echo -ne "\033(K" (возможно, еще придется перегрузить фонты, но это смотря как консоль сорвало...) Если вывалилась какая-то программа, которая использует curses, то проще $ stty sane В Red Hat все это делают reset; setsysfont <ctrl-j> reset - из ncurses См. 'man console_codes' и 'man stty' 3.19. * Как русифицировать TeX под koi-8? Все вопросы по TeX рекомендуется задавать в ru.tex. FAQ из этой конференции и прочая информация по TeX в России находятся по адресу <http://myke.webjump.com/tex/>. TeX и LaTeX во всех современных дистрибутивах говорят по-русски с раздачи. В этом случае имеется документ cyrguide.*, который и содержит развернутый ответ на вопрос о русификации TeX. Переносы не всегда работают "из коробки", иногда надо поправить language.dat, и пересобрать форматы. Вот что пишет Alex Nikiforov: Если уж о последних версиях, то в RH-6.0 с tetex 0.9 у меня получилось так: $ texconfig выбрать hyphenation -> latex раскомментировать russian Добавить в LaTeX файлах \usepackage[T2A]{fontenc} \usepackage[koi8-r]{inputenc} \usepackage[english,russian]{babel} и в файле можно переключаться между русским и английским командами \Russian и \Engish Что бы добавить форматы из cyrplain набора в texconfig выбрать FORMATS и добавить cyrtxinf tex language.dat cyrtxinf.ini для русского texinfo. Аналогично для cyrblue и cyramstx. Что бы добавить формат cyrtex ( русский TeX ) проще в каталоге web2c выполнить: initex '\input cyrtex.ini \dump' и бросить символическую ссылку с именем cyrtex на tex ( например в /usr/bin ) Что бы переключится на русский в этих plain форматах использовать команду \language N где N - номер, под которым числится русский язык в получившейся раскладке. В принципе можно заменить в конфигурации ruhypen на ruenhyp и оставить только совместные русско-английские правила переноса, но детально это не проверял и подробно описать не могу. 3.20. * Где взять русские Type1 ps фонты в KOI8-R? Современные Type1 фонты в общем не обязаны иметь информацию о "кодировке", а должны просто содержать русские символы с именами глифов типа "afii10049" (Association for Font Information Interchange). О "векторе кодировки" должно заботиться приложение, порождающее ps. См. документы Adobe: - <http://partners.adobe.com/asn/developer/technotes.html> (Fonts section) - ttp://partners.adobe.com/asn/developer/PDFS/TN/5013.Cyrillic_Font_Spec.pdf> Free фонты Type1 c русскими символами: - Шарашкинские: <ftp://ftp.ice.ru/pub/fonts/type1/> - PsCyr, автор коллекции Konstantin Chumachenko, мантейнер - Александр Лебедев: <ftp://mch5.chem.msu.su/pub/russian/psfonts/>, зеркало <ftp://ftp.vsu.ru/pub/tex/font-packs/pscyr/> - "TopTeams": <http://www.topteam.bg/linux/fonts.html>, копия <ftp://ftp.ice.ru/pub/fonrs/type1/> Также см. Cyrillic-HOWTO п."Кириллические шрифты" <http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian/Cyrillic- HOWTO-russian.html> К сожалению, некоторые приложения видят только первые 256 символов Type1 шрифта (Latin1 или ISO_8859-1). Именно для таких приложений нужны "отхаканные" шрифты, где вместо "circumflex" и "cedilla" расположены символы KOI8-R. Взять можно например с: <ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/> Прочитайте README. 3.21. Где найти хорошие русские шрифты для иксов? Кроме распространенных шрифтов Cronyx существуют гораздо более эргономичные шрифты из проекта Cyr-RFX Дмитрия Болховитянова: <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr-rfx/> Фонт -cronyx-fixed-* с полным соответствием koi8-r , в том числе с рамками: <http://mail.ice.ru/cyrfonts> Русские фонты из KSI-Linux: <ftp://ftp.ksi-linux.com/pub/patches/> Русские фонты из Black Cat Linux: <ftp://ftp.blackcatlinux.com/pub/blackcat-linux/6.2/SRPMS/SRPMS/urw- fonts-2.0-4bc.src.rpm> 3.22. Emacs/XEmacs Берем iso8859-5 шрифты с <http://www.inp.nsk.su/~bolkhov/files/fonts/cyr_rfx/>. Подключаем их к иксам, и выбираем в меню Mule нужную кодировку. Очень благородные изовые шрифты можно взять на любом зеркале GNU в каталоге intlfonts. конкретно, например, <ftp://ftp.chg.ru/pub/gnu/intlfonts/intlfonts-1.2-split/European.tar.gz> (131Кб). В Debian они уже есть. 3.23. Как pусифициpовать dosemu ? Клавиатуpа - любым досовым pусификатоpом. Кроме того, есть патчик в <http://www.ice.ru/~vitus/misc/>, который позволяет обойтись без русификатора клавиатуры. В X-ах - рекомендуется, так как позволяет избежать двух клавиш переключения - одной в DOS другой - на остальном десктопе. При работе с удаленным dosemu (по telnet/ssh/rsh) - необходим. Фонты - в консольном dosemu тем же pусификатоpом, в X-овом - поставить фонт с 866-ой кодиpовкой. Взять можно по адpесам <http://www.ice.ru/~vitus/works/x11.html>, <ftp://ftp.dosemu.org/dosemu/Development/>vga_cyr8x16.pcf.gz или <http://www.inp.nsk.su/~bolkhov/files/fonts/vga4dosemu/>. 3.24. А как русифицировать StarOffice (там же - а почему он у меня не ставится и т.п. Почитайте замечательную страничку Леона Кантера по адресу - <http://www.blackcatlinux.com/StarOffice/> 3.25. Как русифицировать Netscape/научить его понимать win-кодировку ? - Возьмите Netscape 4.06 и выше, собранный под glibc2, его русифицировать не надо. Брать его желательно у производителя вашего дистрибутива. (при настроенной локали, xkb и шрифтах, установленных согласно ответу на вопрос 0.13) Еще, netscape имеет мерзкую привычку запоминать шрифты в ~/.netscape/preferences.js (и, кажется, еще где-то). И если он вовремя не увидел какой-то шрифт, то он может его вообще никогда не увидеть. Иногда помогает только полное изничтожение директории ~/.netscape - для тех, кто не испытывает любви к падучему тормозному монстру: netscape 3.xx особой русификации тоже не требуют - достаточно просто шрифтов в кодировке koi8-r, но с win-кодировкой будут, естественно, проблемы. Единственная пакость - управляющие элементы форм (кнопки/селекторы и т.д.) выводятся в latin1. Лечится echo 'Netscape*documentFonts.charset*koi8-r: iso-8859-1' | xrdb -merge после чего koi8-шрифты появляются в списке шрифтов для "Western". (отныне ваша кодировка по умолчанию именно она, а про koi забудьте.) Netscape 3.x берется с <ftp://archive.netscape.com> Login:archive Password:oldies dir там не работает, качайте /archive/index.html - Принципиально не русифицируемые вещи: у обоих нетскейпов (3 и 4) будут трудности со страницами в кодировке, не соответствующей 'meta content-type' в заголовке (традиционная проблема серверов с выбором кодировок и авторов, пользующихся тулзами от MS). Не лечится ничем, кроме хака бинарников. Что еще хуже - если в документе явно указан шрифт, и такой шрифт, не дай бог, у вас имеется (естественно, не русифицированный), то им все и будет нарисовано. Решений два: или не иметь в системе не-русифицированных шрифтов вовсе, или отключить в нетскейпе автоматическую загрузку изображений. (при этом "заодно", как ни странно, отключится и показ шрифтов, указанных в документе. Нажав Alt-I, вы получите возможность посмотреть картинки. Надеюсь, текст к этому моменту вы уже запомнили ;) 3.26. Как мне заставить приложение для иксов использовать шрифты с koi8-r, а не iso8859-1 ? a) Постарайтесь выяснить, откуда приложение берет имя фонта. Чаще всего приложение хранит имена используемых фонтов в "базе ресурсов": в персональной /.Xdefaults или системной /usr/X11R6/lib/X11/app- defaults/ базе. Имена используемых фонтов хранится в форме XLFD, т.е. там можно применять "*". Например: Netscape*fontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-koi8-r Посмотреть "ресурсы" приложения можно утилитой appres : $ appres XTerm В man практически на любую X программу имеется секция RESOURCES. Если программа написана с применением какого-либо "Toolkit"-а : GTK, Qt, Motif, e.t.c., чаще всего достаточно русифицировать Toolkit. Русификация GNOME/Gtk таким способом описана чуть ниже. b) С помощью ключа -fn font или -font font. Этот ключ обрабатывается в XLIB и он скорее всего будет работать в любой X программе. c) Метод грубого хака. Нужно взять русские шрифты с <ftp://ftp.relcom.ru/pub/x11/cyrillic/fonts/>, там есть шрифты adobe-*-koi8-1 (c fonts.alias, делающим из них -iso8859-1), но реально содержащие кириллицу в koi8-r в старшей половине. При этом шрифты с теми же именами и "настоящими" символами iso8859-1 становятся недоступны. Стандартных шрифтов из XFree86-cyrillic-fonts недостаточно. Кроме того, пути к русским шрифтам в конфиге иксов или фонт-сервера должны быть впереди всех прочих. Однако лучше не использовать этот метод, а написать автору программы (или прислать ему patch ;) для вынесения имени фонта в "ресурс". 3.27. * Почему в Gnome или программах, использующих GTK+, кое-где русский текст выводится латиницей? Где прописываются используемые ими шрифты? Если gtk не находит нужных шрифтов (в частности, нужного размера), он режет 8-й бит. Шрифты задаются в /etc/gtk/gtkrc.$LANG. Поэтому нужно создать файл gtkrc.ru или поправить существующий. Внутри должно быть примерно следующее (названия шрифтов, размеры и прочие атрибуты можно исправить по вкусу, но эти шрифты должны содержать кириллицу в 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" И скопировать этот файл в 'gtkrc.ru_RU.KOI8-R' или сделать symlink: $ cd /etc/gtk/ $ ln -s gtkrc.ru gtkrc.ru_RU.KOI8-R Подробности см. <http://www.gtk.org/tutorial/gtk_tut-21.html>, а также <http://www.linux.org.ru/gnome/> 4. Системное администрирование 4.1. А какие бывают версии ядра Линукса ? А почему при апгрейде/компиляции ядра у меня #$@#$#@%@#$%@#$? А что такое девелопмент-ядра и вообще, почему говорят, что новая версия ядра - 2.2.x вышла вчера, когда я месяц назад скачал 2.3.какую-то ? Каким ядром лучше пользоваться ? (Alex Kanavin, адрес выше, Alexey Mahotkin <mailto:alexm@hsys.msk.ru>) Начнем с официальной серии ядер, выпускаемых непосредственно Линусом Торвальдсом. Прежде всего, надо разобраться, что такое стабильные и нестабильные ядра (stable и development) и как они нумеруются. Пусть имеется ядро версии a.b.c - a - это основной номер версии. Меняется он раз в несколько лет, как правило, когда нестабильная серия с очень существенными изменениями становится стабильной. - b - это patchlevel. Именно он определяет, является ли данное ядро стабильным или нет. Если он четный - ядро стабильное, если нечетный - нестабильное. Числа a и b в виде a.b называется серией ядер. - с - это sublevel. Он определяет номер ядра в серии. Официальные ядра в виде исходных текстов можно скачать с <ftp://ftp.kernel.org> и его многочисленных мирроров (российский: <ftp://ftp.ru.kernel.org>, но им лучше не пользоваться, так как он не миррорит .bz2, если вам нужен именно российский миррор, то попробуйте <ftp://ftp.rmt.ru/>, <ftp://ftp.chg.ru/Mirrors/ftp.kernel.org/> или <http://ftp.chg.ru/Mirrors/ftp.kernel.org/>). Кроме полных исходных текстов ядра там же можно найти патчи - значительно меньшие по размеру файлы, позволяющие превратить исходники версии a.b.c в исходники версии a.b.c+1 c помощью команды patch. Эти же патчи ходят по файлэхе usyslnx. Стабильные ядра предназначены для широкого использования и проблемы при их использовании или компиляции встречаются нечасто. Как правило в стабильных сериях от версии к версии только исправляются ошибки и добавляются драйвера, не требующие изменений в самом ядре и хорошо себя зарекомендовавшие. Стабильные ядра можно безбоязненно обновлять, не трогая прочий софт - если вы остаетесь в рамках одной серии, проблем возникнуть не должно. (По крайней мере в теории, на практике, возможно, придется вернуться к старому ядру и подождать выхода еще одной версии.) Новые версии выходят нечасто - примерно раз в месяц, и реже. Нестабильные ядра, наоборот, не предназначены для использования массами. Это полигон для тестирования множества разнообразных возможностей, только появившихся и еще не готовых для использования никем, кроме их собственных разработчиков и людей, чье хобби - забавляться с нестабильными ядрами. Здесь от версии к версии может меняться очень многое и правильную работу никто не обещает (впрочем, то же относится и к стабильным ядрам, но в менее "жестком" смысле). При их использовании нужно быть готовым ко всему. Прежде всего к тому, что ядро просто не скомпилируется. Потом оно может не загрузиться, зависать, портить файловую систему и вообще всячески глючить. Кроме того, может начать глючить софт, взаимодействующий с ядром напрямую. Нестабильные ядра выходят гораздо чаще стабильных - иногда несколько новых ядер в неделю. Как нестабильная серия становится стабильной и наоборот ? Очень просто: в какой-то момент Linus Torvalds объявляет т.н. feature freeze, после чего к включению в нестабильное ядро принимаются только исправления ошибок (bugfix). Через некоторое время очередной версии присваивается номер не a.b.c+1, а a.b+1.0 или a+1.0.0 - так появляется новая стабильная серия, вокруг чего масс-медиа устраивают большую шумиху :) Еще через некоторое время выпуск версий в предыдущей стабильной серии прекращается и происходит т.н. fork или разветвление - одновременно с очередным стабильным ядром появляется нестабильное, отличающееся от первого только номером версии. Заметьте, что термины "стабильный" и "нестабильный" в чем-то условны. Понятно, что "нестабильное" ядро 2.3.128 за несколько минут до его превращения в стабильное ядро 2.4.0 по определению стабильно, а стабильное ядро 2.2.xxx, в котором обнаружена фатальная ошибка распределения памяти -- опять же по определению нестабильно. В общем, сами понимать должны, не маленькие. В силу открытости процесса разработки ядра Linux существует несколько побочных ветвей развития. Одной из основных таких ветвей являются ядра серии -ac, которые выпускает Алан Кокс -- один из основных разработчиков Линукса. Во-первых, серия -ac служит своеобразным буфером, в котором тестируются некоторые новые драйвера, возможности, etc. перед тем, как этот, уже оттестированный, драйвер будет отправлен Линусу. Во-вторых, в ядрах -ac имеется определенный набор вещей, которые не устраивают Линуса, но устраивают Алана и к тому же достаточно популярны. Существуют также еще несколько менее важных (хотя ваше мнение по этому вопросу может отличаться) побочных веток: например, International Kernel Patch с поддержкой сильной криптографии, devfs-patch с поддержкой файловой системы /dev, раньше была отдельная поддержка ISDN, ну и так далее и тому подобное). Кроме того, многие производители дистрибутивов распространяют ядро с определенными патчами, которые они считают необходимыми и которые лучше вписываются в инфраструктуру дистрибутива). Каким же ядром все-таки пользоваться? Простейший ответ: тем, которое входит в используемый вами дистрибутив. Этот ответ приемлем для большинства пользователей Линукса. Если же вы оказались в ситуации, когда, например, нужное вам железо поддерживается только в каком-то патче, который не вошел ни в одну из основных ветвей, значит, вам придется брать исходники оригинального ядра, патчи, которые использовали создатели дистрибутива, патчи, которые необходимы лично вам, прикладывать все эти патчи друг к другу, компилировать и устанавливать ядро вручную (ну, или создать свой собственный пакет на основе дистрибутивного). Вам также придется отслеживать выход новых версий патча, контактировать с его автором, сражаться с его глюками и прилагать всяческие усилия к тому, чтобы оный патч, наконец, приобрел официальный статус. Возможны и другие варианты, при которых может потребоваться пересборка, наиболее очевидный - вы столкнулись с ошибкой в ядре, которая исправлена в более свежей версии. В этом случае стоит сперва выяснить, не выложил ли производитель вашего дистрибутива исправленное ядро на свой ftp сервер, в то же место, где лежат прочие обновления. Такое ядро доступно в форме пакета (rpm или deb), пригодного к непосредственной установке пакетным менеджером, либо в дистрибутиве имеется система автоматического обновления пакетов. Если же вам просто хочется поставить более свежую версию ядра или пересобрать ядро без всякой причины ("убрать лишние драйвера", "изучить процесс сборки" и т.п. причинами не считаются ;-), рекомендуется серьезно подумать, прежде чем приступать к действиям. Не стоит чинить то, что не сломано. Объем трафика ru.linux, посвященный проблемам при пересборке ядра весьма велик и не надо еще больше его увеличивать :-). Однако обновления ядра от производителя все-таки устанавливать рекомендуется в любом случае :-) Итак, вы решили самостоятельно скомпилировать/установить ядро. Если оно development - очень рекомендуется подписаться на список рассылки linux-kernel. В любом случае желательно просматривать глазами патчи перед установкой (особенно на предмет добавления новых опций и изменений в каталоге Documentation). Еще крайне рекомендуется оставлять старое ядро и делать в lilo отдельный target типа oldlinux, на него показывающий. При смене стабильной серии на более новую стабильную надо прочесть Documentation/Changes - как минимум. А лучше - все из этого каталога, что относится к вашему железу и софту. 4.2. Как произвести компиляцию ядра? Это заложено в установках линукса или здесь есть какие хитрости? cd /usr/src/linux Опции, с которыми компилируется ядро (тип процессора, драйверы которые нужно включить (возможно в виде модулей) и еще сотни других вещей), задаются в файле /usr/src/linux/.config. Так вот, желательно не создавать его самому с нуля (особенно, если вы собираете ядро первый/второй/третий раз в жизни или наложили патч на исходники из которых уже что-то компилировали), а взять за основу .config с которым было собрано старое, работающее ядро. При этом вам прежде всего надо выдать команду make oldconfig - она используется, когда есть .config от _другой_ (обычно, более старой) версии ядра, и нужно просто получить точно такой же для текущей (возможно, ответив на пару вопросов о тех фичах, которых в старом не было), не отвечая заново на все три сотни вопросов. Затем выдайте make menuconfig и исправьте те опции, ради которых вы собственно и решили пересобрать ядро. Если вы используете Red Hat и хотите воспользоваться теми .config, c помощью которых были собраны ядра в этом дистрибутиве, то возьмите их из kernel-sources-*.i386.rpm/usr/src/linux/configs/ Затем: make dep make clean make zImage (make bzImage для ядер версий > 2.2) make modules Если у вас раньше стояла эта же версия ядра, то удалите старые модули от этого ядра (/lib/modules/версия). make modules_install /usr/src/linux/arch/i386/boot/(b)zImage - и есть свежесобранное ядро. Его теперь можно поинсталировать на место старого. Хотя лучше сначала попробовать, работает ли оно. Нужно добавить в lilo.conf еще один выбор - например, linux.test, - который берет ядро прямо из /usr/src/linux/arch/i386/boot/zImage. (Valentin Nechayev <mailto:nnlx@nn.kiev.ua>) Я пpедлагаю дpугой метод - пpовеpен только для Red Hat'а. cd /usr/src/linux-нужная_веpсия vi Makefile и заменить extraversion на свой - напpимеp, EXTRAVERSION = -vasya1 после этого все то же самое, но 1. make modules_install поставится в свой отдельный каталог 2. установка (пpавильная!) ядpа в /boot сделается сама чеpез make install 3. это работает только с ядрами 2.2.x (у 2.0 просто нет параметра EXTRAVERSION) и, по крайней мере теоретически, может "сломать" чей-нибудь автоконфигуратор, рассчитывающий на n.n.nn по uname -r. (Alexander Pevzner, 2:5020/59.9) Тем, кто отважился на сборку ядра лично под себя, советуем обратить внимание на следующие факты: - В начале ядерного Makefile (/usr/src/linux/Makefile) есть переменная EXTRAVERSION. Используя ее можно получать ядра одной и той же версии, но с названиями, отличающимися суффиксом (напр, 2.2.12-20 и 2.2.12-vasya). Это хорошо, поскольку позволяет сохранить экземпляр ядра, который заведомо умеет грузиться. Родное ядро, с которым ставилась система, лучше сохранить на случай всяких неприятностей. Надо только не забыть добавить дополнительную запись в /etc/lilo.conf (достаточно иметь всего 2 записи: на родное ядро и на свежесобранное). - В редхате в /usr/src/linux правильно работает make install и make modules_install. Ядро и модули копируются в нужное место и правильно настраиваются символические линки. Причем, что приятно, это относится не только к ядрам, полученным в виде .src.rpm, но и если просто взять ядро с ftp.kernel.org, все заработает. EXTRAVERSION в этих ядрах по дефолту не выставлено, поэтому ядро будет получаться под именем навроде 2.2.13 (конечно, EXTRAVERSION при желании можно выставить) - Когда ядро собирается в дереве, в котором уже собиралось ядро, очень рекомендуется после make *config сказать make clean. Во всяком случае, если какие-то части ядра были переселены в модули или обратно, надо делать это _обязательно_, иначе есть шанс собрать неправильное (не работающее) ядро. 4.3. Как изменить максимальное количество открытых файлов? В ядрах 2.2.10 и более новых: echo 30000 > /proc/sys/fs/file-max echo 30000 > /proc/sys/fs/inode-max и сделать ulimit -n 2000 перед запуском нужного демона. Цифры подбираются под задачу. (Yuriy Kaminsky 2:5020/517.21) И не забыть, что если программа использует select, то будет большой-большой облом. Вплоть до затирания стека и падения (at least glibc-2.0 - см. /usr/include/gnu/types.h - и иже с ним; исправления #define __FD_SETSIZE 1024 на нужное число и пересборки всех приложений и библиотек , которые могут заюзать select для дескрипторов выше 1024 будет достаточно [т.е., скажем, если X'овому приложению нужно открывать более 1024 файлов, то необходимо пересобирать Xlib и Xt как минимум]; ах, да, саму libc пересобирать, вроде, не нужно). 4.4. Подскажите, pls, www/ftp где можно получить доку по администрированию Linux'а. <http://www.linuxdoc.org> На русском языке - посмотрите на <http://linux-ve.chat.ru> 4.5. Q/A: development site для libc, binutils, ld.so <ftp://ftp.yggdrasil.com/private/hjl> - если кому-то понадобилась тухлятина. В частности, именно там надо искать libc5 последних версий) Сейчас все это лежит на <ftp://ftp.kernel.org/pub/linux/software/> и его локальных миррорах. [а теперь все дружно: <ftp://ftp.ru.kernel.org> - У-Р-О-Д-Ы! Поскольку не миррорят .bz2 архивы, а многое из этого в .gz не выкладывается. Ребята - может, мне вам винт на несчастный гигабайт подкинуть, на бедность? Взялись быть русским миррором - так делайте это как следует. Не можете - откажитесь, по крайней мере, майнтейнеры не будут ошибочно уверены, что в России нормальный миррор. (Alex Korchmar) Добавка от Alex Kanavin для <ftp://ftp.chg.ru>: если уж вы миррорите, например, redhat, то делайте это целиком и каждый день, а не раз в месяц кусочками. А то апдейты у вас появляются через месяц после того, как они были выложены на ftp.redhat.com, да и то - только к последней версии. Ну и кому нужен такой "официальный" mirror? ] 4.6. Как загружается система? Очень коротко, подробнее можно прочесть в вышеназванных источниках: ядро монтирует корневую файловую систему, и запускает первый процесс init, разыскав его исполняемый файл в нескольких стандартных местах. Этот процесс читает свой конфигурационный файл /etc/inittab (man inittab) и запускает все остальные процессы согласно инструкциям из этого файла. Обычно в inittab прописывается запуск процессов *getty, управляющих терминалами, виртуальными консолями и последовательными линиями (то есть именно *getty ответственны за запуск login (сравнивающий имя и пароль, указанные пользователем, с тем, что прописано в /etc/passwd и в случае успеха запускающий соотв. shell), pppd, ifcico и т.д., что именно запускается и в каком случае - зависит от конкретного getty). Для виртуальных консолей обычно используется mingetty, для модемов - mgetty. Кроме того, здесь же прописываются скрипты, запускающиеся на различных т.н. "уровнях выполнения", из которых в свою очередь запускаются все остальные системные сервисы, осуществляется настройка сети, проверка
Секция 2 из 4 - Предыдущая - Следующая
Вернуться в раздел "Семейство UNIX" - Обсудить эту статью на Форуме |
Главная - Поиск по сайту - О проекте - Форум - Обратная связь |