Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Заметки пользователя Linux. О компиляции ядра 2.6.0. Часть 2. Файл Changes

(C) В.А.Костромин, kos @ rus-linux dot net

21 декабря 2003 г., последние изменения внесены 23 декабря 2003 г.

Часть 1. Файл README

В этой части я рассмотрю содержание файла Documentation/Changes, поставляемого с исходными кодами ядра версии 2.6.0. Первое, на что я обратил внимание, - это то, что этот документ предполагает, что ваша система уже работает под управлением как минимум ядра 2.4.x. Если это не так, то рекомендуется просмотреть файл Changes, поставляемый с ядрами 2.4.x для получения дополнительной информации: большая часть этой информации не повторяется здесь.

В самом начале файла Changes написано, что имеется уже и русский перевод этого файла, размещающийся по адресу http://oblom.rnc.ru/linux/kernel/Changes.ru. Поскольку в тот момент, когда я первый раз читал файл Changes, у меня не было доступа к Интернет, я не смог сразу проверить, так ли это на самом деле. А когда я все же добрался до Интернета, оказалось, что сайта http://oblom.rnc.ru/ не существует в природе. Видимо, какой-то из наших дуболомов решил устроить облом всем интересующимся новым ядром и сообщил о том, что вот, дескать, имеется русский перевод, включите ссылку в ваш текст. Такие вот гады водятся в земле нашей!

Но это эмоции, а мне так или иначе пришлось продолжать читать английский вариант. Настоящая страница представляет собой достаточно полное изложение содержания файла Documentation/Changes, во всяком случае я постарался привести здесь все ценное, что есть в этом файле.

  1. Во-первых, снова напоминается, что ваша система должна уже работать на ядре версии 2.4.х. Кроме того, должны быть установлены как минимум следующие версии перечисленных ниже программ (в файле Documentation/Changes сказано, как можно определить номер установленной у вас версии, а также дана ссылка на местоположение требуемой версии каждого пакета):

    Таблица 2. Минимальные требования по наличию пакетов в системе.

    Пакет Требуемая версия Команда для определения номера установленной версии Адрес местонахождения нужной версии
    Gnu C 2.95.3 # gcc --version gcc-2.95.3.tar.gz
    Gnu make 3.78 # make --versionmake-3.78.1.tar.gz
    binutils 2.12 # ld -vbinutils
    util-linux 2.10o # fdformat --versionutil-linux
    module-init-tools 0.9.10 # depmod -Vmodule-init-tools
    e2fsprogs 1.29 # tune2fse2fsprogs-1.29.tar.gz
    jfsutils 1.1.3 # fsck.jfs -Vjfs
    reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogsreiserfsprogs-3.6.3.tar.gz
    xfsprogs 2.1.0 # xfs_db -Vxfsprogs-2.1.0.src.tar.gz
    pcmcia-cs 3.1.21 # cardmgr -Vpcmcia-cs-3.1.21.tar.gz
    quota-tools 3.09 # quota -Vlinuxquota
    PPP 2.4.0 # pppd --versionppp-2.4.0.tar.gz
    isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep versionisdn4k-utils.v3.1pre1.tar.gz
    nfs-utils 1.0.5 # showmount --versionnfs-utils, nfs-utils
    procps 3.1.13 # ps --versionprocps
    oprofile 0.5.3 # oprofiled --versionOProfile, OProfile
    Очевидно, что не все эти программы абсолютно необходимы в любой системе - если у вас нет, например, устройств PCMCIA (PC Card), то вам нет нужды заботиться о наличии и версии пакета pcmcia-cs.
  2. Требование относительно использования компилятора gcc версии 2.95.x (x >= 3) выдвинуто для достижения абсолютной стабильности ядра. Вы можете использовать gcc 3.0.x, если хотите, хотя при этом могут возникнуть проблемы из-за того, что процесс компиляции ядра с этими продуктами не был достаточно тщательно протестирован. Версия gcc 2.96 от Red Hat тоже может использоваться, но вы должны применять gcc-2.96-74 или более поздние. Имейте в виду, что версия gcc-2.96-54 не создает корректного ядра.
    Что касается опций оптимизации, то будет неразумным задавать что-либо большее, чем -O2. Если вы используете gcc-2.95.x или более поздние версии, не используйте -fstrict-aliasing.
  3. Новые версии пакета util-linux обеспечивают поддержку дисков большего объема, поддержку новых опций команды mount, распознают больше поддерживаемых типов разделов диска, включают команду fdformat, которая работает также и с ядрами серии 2.4, и другие улучшения. Вероятно вам стоит установить обновленную версию этого пакета.
  4. В ядро теперь входит новый загрузчик модулей, которому требуется для работы пакет module-init-tools. Новый загрузчик модулей обратно совместим с ядрами серии 2.4.x.
  5. Эти изменения в структуре каталога /lib/modules требуют также, чтобы был обновлен пакет mkinitrd. (А в таблице 2 пакет mkinitrd почему-то не указан!) Пакет можно найти по следующей ссылке: Mkinitrd
  6. В последних версиях пакета e2fsprogs устранены несколько ошибок в программах fsck и debugfs. Очевидно, что обновление этого пакета является неплохой идеей.
  7. В файле Documentation/Changes рекомендуется также обновить следующие пакеты:
    • Powertweak Этот пакет обеспечивает получение информации об аппаратном обеспечении и ядре Linux и может использоваться для настройки ядра и аппаратуры для достижения максимальной производительности и для просмотра установок аппаратуры и ядра. Если вы используете версию 0.1.17 этого пакета или более раннюю, вы должны обновить ее до версии 0.99.0 или более высокой. Использование старых версий может привести к проблемам при использовании разделяемой памяти.
    • Ksymoops Если случится непредвиденное и ваше новое ядро "упадет", вам потребуется версия 2.4 программы ksymoops для того, чтобы декодировать отчет; за более подробной информацией обратитесь к файлу REPORTING-BUGS в корневом каталоге исходных кодов ядра.
  8. Архитектурные изменения
    • Файловая система DevFS сейчас включена в состав ядра. О деталях вы можете узнать из текстов, приведенных в Documentation/filesystems/devfs/*.
    • Реализована поддержка 32-bit UID. Пользуйтесь!
    • Документация к функциям переносится во встроенную документацию, реализованную в виде специальным образом отформатированных комментариев, размещаемых вместе с их определениями в исходных кодах ядра. Эти комментарии с помощью специальных SGML-шаблонов (templates), размещаемых в каталоге Documentation/DocBook, могут быть преобразованы в DocBook-файлы, которые затем могут конвертироваться посредством DocBook-стилей (DocBook stylesheets) в форматы PostScript, HTML, PDF и некоторые другие. Для того, чтобы конвертировать из формата DocBook в выбранный вами формат, вы должны установить пакет Jade, а также соответствующий выбранному формату DocBook Stylesheets.
    • Поддержка устройств PCMCIA (PC Card) теперь частично реализована в основном коде ядра. Обратите на это внимание, когда будете перекомпилировать ваше ядро ;-).
      И не забудьте поставить последний релиз пакета pcmcia-cs.
    • Intel P6 (IA32) microcode. В ядро был добавлен драйвер, который позволяет обновлять микрокод Intel IA32.
  9. Сетевая поддержка
    • Функции IP-файерволлинга и код NAT были снова переписаны заново. Новое программное обеспечение сетевой фильтрации (включая обратно совместимые модули ipfwadm и ipchains) в настоящее время распространяются отдельно. Если вам небходимы развитые средства сетевого конфигурирования, вам стоит рассмотреть возможность использования сетевых инструментов из пакета ip-route2.
      Необходимые пакеты вы можете найти по следующим ссылкам: iptables-1.2.tar.bz2, iptables-1.2.tar.bz2, iptables-1.2.tar.bz2, Ip-route2.
    • Драйвер PPP был реструктурирован с целью поддержки множественных соединений (multilink) и для обеспечения возможности соединения по разным видам каналов (over diverse media layers). Если вы используете PPP, обновите pppd по меньшей мере до версии 2.4.0.
      Если вы не используете devfs, вы должны создать файл устройства /dev/ppp, что делается от имени root-а командой :
      mknod /dev/ppp c 108 0
      
      Если вы решили обеспечить поддержку ppp в виде модуля, вы должны вписать следующие строки в файл /etc/modules.conf:
      alias char-major-108	ppp_generic
      alias /dev/ppp		ppp_generic
      alias tty-ldisc-3	ppp_async
      alias tty-ldisc-14	ppp_synctty
      alias ppp-compress-21	bsd_comp
      alias ppp-compress-24	ppp_deflate
      alias ppp-compress-26	ppp_deflate
      
      Если вы используете devfsd и поддержка ppp реализована в виде модуля, вы должны иметь следующую строку в файле /etc/devfsd.conf:
      LOOKUP	PPP	MODLOAD
      
    • Isdn4k-utils. Из-за изменения в длине поля телефонного номера утилита isdn4k-utils должны быть перекомпилирована или (что предпочтительнее) обновлена.
    • NFS-utils. В ядрах версии 2.4 и более ранних nfs-сервер должен был знать о всех клиентах, которые могли иметь доступ к файлам посредством протокола NFS. Эту информацию ядро могло получить от демона "mountd" в тот момент, когда клиент монтировал файловую систему, либо от "exportfs" на этапе старта системы. exportfs получал информацию об активных клиентах из /var/lib/nfs/rmtab.
      Такой подход довольно ненадежен, поскольку зависит от корректности rmtab, что не всегда обеспечивается. Даже если система работает хорошо, rmtab имеет тот недостаток, что содержит массу устаревших записей, которые никогда не удаляются.
      В версии 2.6 появилась опция, в соответствии с которой ядро сообщает демону mountd о том, что он получен запрос от неизвестного хоста, и mountd может дать ядру соответствующую информацию об экспортируемых ресурсах. Таким образом устраняется зависимость от rmtab и ядру теперь необходимо знать только об активных в данный момент клиентах.
      Чтобы задействовать эти новые возможности, вы должны до запуска exportfs или mountd выполнить команду:
        mount -t nfsd nfsd /proc/fs/nfs
      
      Рекомендуется чтобы все NFS-сервисы были защищены со стороны Интернет файерволами.

В отличие от исходных кодов ядра версии 2.4.х я не обнаружил в каталоге Documentation файла Configure.help, содержащего подсказки к опциям конфигурации ядра. В книге [1] я рекомендовал распечатать этот файл и использовать его как подсказку на этапе конфигурирования ядра. Как следует из приведенного выше объяснения теперь комментарии встроены в ядро и чтобы их распечатать, надо еще предварительно установить пакеты Jade и DocBook Stylesheets. А иначе придется пользоваться только встроенной подсказкой.

Ну что ж, пора переходить к практическим действиям: Часть 3. Процесс конфигурации нового ядра.

Список литературы и ссылки.

  1. В.А.Костромин, "Linux для пользователя", изд. БХВ-Петербург, 2002 год, серия "Самоучитель", 650 стр.