faqs.org.ru

 Главная > Операционные системы > Семейство 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" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru