Перейти на первую страницу сайта
Перейти на первую страницу сайта
Здесь вы можете посмотреть ссылки других пользователей, а так же создать свою базу адресов/ссылок интересных для вас ресурсов интернета, если зарегестрируетесь.
  Показывать по:   категориям
алфавиту
Каталог
Руководство / HOWTO по конфигурации и установке минимального
ядра 2.6.12 (или kernel 2.6.11 2.6.12.1 2.6.12.2 2.6.12.3 2.6.12.4)
на Fedora Core 2 и FC-3


АНОТАЦИЯ
Необходимость компиляции ядра возникает при
  • подключение драйверов устройств (например АЦП PCI-карта )
  • расширения функциональности ядра (например Layer-7, patch-o-matic ng, esfq)
  • при создание минимального ядра Linux, содержащего только необходимые для работы модули ядра


  • В данном руководстве излагаются основные практические моменты для людей, которые впервые пытаются устанавливать ядро на Fedora Core 2 или FC-3, или просто заинтересовались созданием ядра, которое не содержит ненужные опции (например драйвера для не существующих SCSI устройств или под другие экзотические устройства).

    КЛЮЧЕВЫЕ СЛОВА: минимальное ядро Linux, Fedora Core 2, Fedora Core 3, FC-3, kernel 2.6 2.6.12.3 2.6.12.1, 2.6.12.1, MBR (Master Boot Record).

    ПОЛЕЗНЫЕ РЕСУРСЫ ИНТЕРНЕТА:
    http://www.kernel.org/mirrors/
    http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-2.0.html
    http://rpm.pbone.net/index.php3
    http://www.slackware.ru/show_forum.ghtml?Forum_id=372&root_id=2009&depth=infinite
    http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
    http://winscp.net/eng/index.php
    http://dos710.h12.ru/articles/multios/multios.htm
    http://www.bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=7&m=83498


    ПОМОГАЛИ
    jackill
    Dimez


    ВСТУПЛЕНИЕ
    Конфигурация параметров ядра наиболее трудоемкая и ответсвенная задача, от этого зависит сможете-ли Вы удачно запустить свой оптимизированный kernel 2.6, или система зависнет при загрузке, выведя на экран сообщение типа
          Kernel panic – not sysncing:
          VFS: Unable to mount root fs on unknown-block(0,0)
    или после успокающего сообщения
          Uncompressing Linux... ok
    появится
          RAMDISK:incomplete write

    Если Вы уже попробовали конфигурировать ядро, то заметили множество опций конфигурации, чтение их назначения в начале может показатся увлекательным, но потом утомляет и в конечном итоге отвлекает от основной задачи – создание оптимального работающего ядра. Конечно можно пойти путем проб и ошибок, однако на это может уйти так много времени, так что сама мысль о перекомпиляции kernel 2.6 вызовет нервную дрожь.

    Ядро 2.6 модульное поэтому можно выбрать то что действительно необходимо, а при необходимости посредством наложения патчей обеспечить поддержку дополнительных устройств (например АЦП PCI-карта) или дополнительных возможностей ядра (например Layer-7, patch-o-matic ng, esfq). От того как много опций выбрано, изменится время компиляции ядра, а время компиляции (в зависимости от мощности процессора) может составлять часы.

    Поэтому вначале рассмотрим конфигурацию минимального kernel 2.6 (а именно 2.6.12.4), в котором включено только самое необходимое для функционирования системы. Данная конфигурация в дальнейшем может послужить хорошей основой для дальнейшей конфиграции ядра для сервера ISP (Internet Server Provider) на базе Linux.

    На мой (Andrejs Spunītis) взгляд Linux пока более пригоден для использования в качестве сервера или рабочей станции под специализированные задачи (например рабочего места програмиста, измерительной системы и так далее) нежели в качестве офисного десктопа.

    Сервер на базе опреционной системе Linux не требователен к ресурсам компьютера, так как может обойтись без графического интерфейса (без оконных менеджеров и X-сервера ). Раз так, то для наших экспериментов подойдет какой нибудь Celeron c 64Мб оперативки. Но, ВНИМАНИЕ, перекомпиляция на таком компьютере kernel 2.6 может занять часы.... поэтому если у вас имеется мощный компьютер с установленным Linux то оптимальным будет сборка kernel 2.6 на мощном компьютере с последующей установкой его на слабеньком сервачке. В моем случае у меня есть удаленный доступ к P4 2.8GHz (с установленной Fedora Core 3) который работает в институте. Однако если взять конфигурационный файл ядра прилагающийся с дистрибутивом Fedora Core 3 (этот конфигурационный файл .config можно достать из rpm содержащим исходные коды ядра, напрмер kernel-2.6.9-1.667.src.rpm) и перекомпелировать его на P4 2.8GHz то потребуется около часа и еще некоторое время (при сборке ядра на более мощном удаленном компьютере) чтобы передать по сети порядка 80 мегабайт заархивированных результатов компиляции ядра и модулей. Немного забегая вперед, при миниальной конфигурации ядра, Вы соберете ядро чей размер будет меньше 5 мегабайт, а сама компиляция займет меньше 10 минут на P4 2.8GHz.

    Рассмотрим конфигурацию минимального ядра kernel 2.6.12 ( 2.6.12.4 2.6.12.3 2.6.12.2 2.6.12.1 ) и как собрать ядро и модули на одной машине(более быстрой) и перенести их на другую (медленную).

    1. Если у Вас есть удаленный доступ к мощной машине с установленной операционной системой Linux то выполните этот пункт. В моем случае мощный компьютер это P4 2.8GHz с установленной Fedora Core 3. Удаленно зайдите в систему Linux. Если Вы работаете на десктопе Windows то Вам для удаленного доступа к Unix/Linux потребуется SSH клиент. Для этих целей мне понравились две програмки под Windows:
          PuTTY – для работы с терминалом Linux
          WinSCP – для обмена файлами между Linux и Windows
    При работе с програмой PuTTY есть одна неприятная особенность, которая заключается в том, что при работе с файловым менеджером Midnight Commander ( mc ) вместо прямых линий будет всякий мусор (garbige) как то квадратики или твердый знак ъ ъъ и так далее. Для того что бы линии в mc оставались линиями, а не квадратики или знак ъ ъъ (это зависист от выбранной кодироввки в PuTTY) необходимо после входа в систему запустить Midnight Commander командой:
          # LANG=c mc


    2. Скачать "The latest stable version of the Linux kernel" последнее стабильное ядро с ближайшего зеркала http://www.kernel.org/mirrors/ , например команда:
          # wget http://www.lv.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.4.tar.bz2


    3. После того как kernel скачан, необходимо его разархивировать. Конечно Midnight Commander может это сделать, однако времени на это уйдет больше, чем выполнив в консоли команду разархивации:
          # tar -xjf linux-2.6.12.4.tar.bz2


    4. Зайдем в разархивированную директорию, и запустим программу конфигурации ядра:
          # make menuconfig

    Если после данной команды будут выданы сообщения об ошибках, то проверьте установлена ли библиотека ncurses: # rpm -qa |grep ncurses
    Сразу обратим внимание на предпоследнюю опцию:
          Load an Alternate Configuration File
    которая позволяет загрузить ранее созданный конфигурационный. Это очень удобно когда Вы уже однажды создали для своей системы конфигурацию для данной версии ядра, иначе файл конфигурации может "поплыть". Для того чтобы воспользоваться файлом конфигурации доставшимся от старого ядра надо выполнить следующие команды:
    # make oldconfig
    # make menuconfig

    при этом у Вас появится возможность включить новые опции входящие в новое ядро.


    5. Рассмотрим кратко основные моменты конфигурации ядра 2.6 без которых не загрузится система. Раз написали “без которых не загрузится система” то рассмотрим кратко этапы загрузки Linux.
          a. Включили питание компьютера
    b. Пикнул жесткий диск. Напомним что жесткий диск разбит на блоки. Если возникло желание посмотреть как организован жеский диск вашего Linux наберите команду: # sfdisk -l
    Tип используемой файловой системы нам надо знать при конфигурации ядра. На жестком диске может быть создано до 4 физических разделов (Primary partitions). Первые 128 байт первого блока жесткого диска содержат информацию о том как разбит на партиции жесткий диск, а оставшиеся 384 байта первого блока жесткого диска назывются MBR (Master Boot Record). В MBR записана программа производящая загрузку операционной системы для меня это GRUB (GRUB при установке системы был непосредственно установлен в MBR)
           Небольшое лирическое отступление, но мне оно кажется крайне уместным в этом месте. Не секрет что иногда возникает желание восстановить боот сектор (MBR) чтобы вернуться к Windows, но увы, после неудачной инсталяции Linux на черном фоне дисплея нет возможности выбрать из меню Windows. Главное не надо отчаватся и рвать на себе волосы, ваш Windows цел и не вредим! Для того что бы вернутся к нему вставьте загрузочный CD-rom (WinXP), выберете Recovery Console и введите следующие две команды:   fixboot   и   fixmbr  ; после чего перезагрузите компьютер, и ваш Windows сразу начнет грузится, не оставив малейших признаков о том что был установлен Linux :).
    c. Появилось окно GRUB, в котором есть возможность выбора загружаемой операционной системы... конечно выбрали Linux
    d. На черном экране монитора появляется надпись, например:
            Booting ‘Fedora Core (2.6.xx.xx)’ 
              root (hd0,1)
            File system type is ext2fs, partition type 0x83
            kernel /vmlinuz-2.6.xx.xx ro root=LABEL=/ rhgb quet
              [Linux bzImage, setup=0xc00, size=0x*** ]
            initrd  /initrd-2.6.xx.xx.img
              [Linux-initrd @ 0x***, 0x*** bytes]
            Uncompressing Linux… ok, booting the kernel.
              audit(***.*): initialized
            Init version 2.XX
    Uncompressing относится к тому, что ядро пожато (bzImage... была такая раньше команда) Из этих сообщений следует, что Linux грузится с RAM диска initrd файловая система которого ext2fs. Важно отметить, что для работы с initrd нужно при конфигурации включить поддержку ROM FS. А для работы RAM-диском в ядре включить “RAM disk support”.initrd позволяет поддерживать доступ к модулям ядра.

    Вернемся к основным моментам конфигурации которые связаны с поддержкой устройств в Linux, как было ранее написано kernel 2.6 модульный, образно говоря ядро может быть представлено в виде вешалки с крючками, где крючечки создаются в самом ядре, а то что на них вешается – module (смотри рисунок).

    Если крючечек не будет создан в ядре, то ядро не сможет использовать модуль. При конфигурации ядра есть выбор: встроить опцию в ядро или создать в ядре соответвующий “крючочек” для того чтобы на него можно было при необходимости подвесить соответствующий модуль. Важно отметить, что поддержку жесткого диска можно тоже сделать в качестве модуля.... однако в этом случае есть вероятность что может не включиться DMA для винтов. Поэтому поддержку такого оборудования компьютера как контролер жестких дисков, сетевой карты и так далее желательно непосредственно встривать в ядро 2.6 Linux.

    После того как в ядро встроена поддержка устройств компьютера, необходимо включить опции отвечающие за работу с файловой системы, поддержку сетевых протоколов и так далее. Опять из кучи опций раздела “File systems” необходимо включить в ядро те которые используются системой, то что вам надо можно увидеть при загрузки системы см. пункт “d” данного параграфа: работу с сжатым диском RAM, ext2fs, ext3fs; более подробно остановимся в следующем пункте.


    6. Осуществим непосредственное, практическое, конфигурирование ядра. Поскольку лучше один раз увидеть, чем сто раз услышать далее конфигурация kernel 2.6.12 ( 2.6.12.1. 2.6.12.2 2.6.12.3 2.6.12.4 ) будет последовательно продемонсрирована на картинках. Ниже картинок которые специфичные для Вашей конфигурации будут коментарии.

    Code maturity level options

    General Setup В первой опции можно написать некоторое название, которое будет доавлено к концу названия ядра, в даном примере окончание “-L7”

    Loadable module support

    Processor type and features Для определения типа процессора выполните команду: # cat /proc/cpuinfo
       Firmware Drivers

    Power management options (ACPI, APM) Без поддержки ACPI придется выключать питание компьютера, как это деллось лет 10 назад: нажатием на кнопку питание на корпусе компьютера
       ACPI (Advanced Configuration and Power Interface) Support
       CPU Frequency scaling

    Bus options (PCI, PCMCIA, EISA, MCA, ISA)
       PCCARD (PCMCIA/CardBus) support
       PCI Hotplug Support

    Executable file formats

    Device Drivers
       Generic Driver Options
       Memory Technology Devices (MTD)
       Parallel port support Не включаем поддержку паралельного порта (обычно к этому порту подключается принтер)
       Block devices RAM-disk support: позволяет работать с диском в оперативной памяти
    Initial RAM disk (initrd.img) support: initrd - это образ, который используется при загрузке ядра.
    Default RAM disk size: установите значение 16384, если размер мал, то при загрузке системы может быть выдано сообщение: RAMDISK: incomplete write
          IO Schedulers
       ATA/ATAPI/MFM/RLL support Здесь важно выбрать именно те опции, которые соответсвуют Вашему компьютеру. Для того что бы узнать что у Вас установлено наберите команду # lspci |grep IDE
    В моем случае это “Intell PIIXn chipset support”
       SCSI device support Нету SCSI устройств
       Multi-device support (RAID and LVM)
       IEEE 1394 (FireWire) support
       I2O device support
       Networking support
          Networking options
             IP: Virtual Server Configuration
             Network packet filtering (replaces ipchains)
                IP: Netfilter Configuration
             QoS and/or fair queueing
          ARCnet devices
          Ethernet (10 or 100Mbit) Выберете свой тип сетевой карты, для определения сетевой карты используйте команду: # lspci |grep Ethernet
          Ethernet (1000 Mbit)
          Ethernet (10000 Mbit)
          Token Ring devices
          Wireless LAN (non-hamradio)
          Wan interfaces
       Telephony Support
       Input device support
          Hardware I/O ports
       Character devices
          Serial drivers
          IPM
          Watchdog Cards
          Ftape, the floppy tape device driver
          TPM devices
       I2C support
       Dallas's 1-wire bus
       Misc devices
       Multimedia devices
          Digital Video Broadcasting Devices
       Graphics support
          Console display driver support
       Sound
       USB support
          USB Gadget Support
       MMC/SD Card support
       InfiniBand support

    File systems ext2fs –если не отметить, то Fedora Core 2 при загрузке выдаст сообщение
       VFS: Unable to mount root fs on unknown-block(0,0)
    ext3fs – файловая система используемая Fedora Core 2
    ROM file system support – для работы initrd
       XFS support
       CD-ROM/DVD Filesystems
       DOS/FAT/NT Filesystems
       Pseudo filesystems Virtual memory file system support – необходима для работы Fedora Core 2, FC-3
       Miscellaneous filesystems
       Network File Systems
       Partition Types
       Native Language Support

    Profiling support

    Kernel hacking

    Security options

    Cryptographic options

    Library routines


    7. Завершив процесс конфигурации необходимо собрать ядро. Сборка ядра состоит их компиляции ядра и компиляции моделей
        # make bzImage
        # make modules


    8. Создадим архив содержащий файлы которые будут установлены на слабую машину
    Создадим директорию которая будет содержать результаты сборки ядра, например:   # mkdir /KERN
    Установим откомпелированные модули в созданную директорию, командой:   # make modules_install INSTALL_MOD_PATH=/KERN
    Скопируем файл Sysmap:   # cp System.map /KERN
    Скопируем файл bzImage:   # cp arch/i386/boot/bzImage /KERN
    Заархивируем директорию содержащую результат сборки ядра и по сети скопируем на слабый компьютер:   # tar -cjf KERN.tar.bz2 KERN


    9. Установка ядра
    Разархивируем созданный архив:  # tar -xjf KERN.tar.bz2
    Копируем модули:   # cp -R lib/modules/2.6.12.4-L7/ /lib/modules/
    Интслалируем ядро:   # installkernel 2.6.12.4-L7 bzImage System.map


    10. Перезапускаем компьютер и имеем простейшее работающее ядро :)



    PS
    Возможно собирать ядро лучше в rpm, тогда apt-get или yum, тогда они видят какое у тебя ядро и не напрягаются зависимостями.
    В ряде случаев действительно лучше делать rpm, например я создавал rpm для iptables, iproute после наложения патчей esfq и pom.
    Но я сторонник обходится как можно с меньшим (по возможности) количесвтом дополнительных программ, поэтому там где для программы важно место располложения исходников ядра я просто в спец файле или в опциях указываю путь к исходникам ядра.

    Обсуждение в форуме на www.linux.org.ru


    Andrejs Spunītis: spunitis AT one.lv
    7 август, 2005 год.




    www.top.lv --> Информация
    можно хранить свои линки и смотреть остальные

    Top.LV


    Rambler's Top100