1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Компиляция ядра Linux

Тема в разделе "FAQ", создана пользователем Zik, 27 июн 2009.

  1. Zik

    Zik Модератор

    Регистрация:
    3 май 2007
    Сообщения:
    0
    Симпатии:
    219
    Баллы:
    0
    Итак, наконец, ты поставил себе Линух и сидишь под ним вот уже который день/неделю/месяц. Но вот продвинутый друг/подруга намекнул тебе (а может, ты и сам догадался), что ядро твоей операционки, как бы это помягче сказать... морально устарело и его требуется обновить.

    Намекнуть то намекнул (догадаться то догадался), а вот как это сделать? Не дрейфь, объясню "на пальцах"...

    Итак... пристегнуть ремни и... прямым ходом на _http://ftp.kernel.org, а если влом тратить бабло на трафик или повремёнку, то сливай с какого-нибудь диска (а на сэкономленные деньги купи пива: отпраздновать твою первую компиляцию ядра :) ). С _http://ftp.kernel.org качаешь подходящую версию ядра... здесь скажу пару слов о существующих ядрах Linux. Сейчас существуют, можно сказать, четыре ветви развития ядер:

    1. Ядра версии 2.4.xx - наиболее "качественные" на мой взгляд ядра, xx - цифра, чем она выше, тем новее ядро (далее везде: x - цифры версии слитого ядра).


    2. Ядра версии 2.5.xx - так называемые экспериментальные, нестабильные ядра, если ты в душе экспериментатор и в детстве взрывал на балконе магний или селитру, можешь смело качать :) , ощущения получишь незабываемые.


    3. Ядра версии 2.2.xx - скажу честно, что ЭТО такое я не знаю, не знаю и того, ПОЧЕМУ до сих пор развивается эта ветвь, когда существует 2.4.xx. Себе я эти ядра не ставил, так что советовать не буду.


    4. Ядра версии 2.6.xx эти ядра вобрали в себя всё наиболее стабильное из ветки 2.5.xx. Ядро работает значительно быстрее всех остальных, но есть маленькое но: новый формат модулей и как следствие проблемы с установкой дров(всё описанное ниже к этой ветке не применимо).


    Ядро слил? Слил... Теперь логинишься в систему под root'ом. Далее, если у тебя дистриб "Красной шапки" или "Мандрэйка" даёшь команду:

    Код:
     rpm -q kernel-headers kernel-source make dev86

    Если эти rpm'ы не установлены, поставь их. Возможно, на других дистрибах тоже придётся проверить их наличие.


    Потом идёшь в папку, куда слил ядро (заметь папка должна находиться на Linux-разделе, т. е. Ext2/Ext3/ReiserFS и даёшь команду:
    Код:
      tar zxvf [B]имя_слитого_файла.tar.gz[/B]
    Эта команда распакует ядро. Теперь идёшь в появившуюся папку (что-то вроде linux-x.x.xx) и даёшь одну из следующих команд, на выбор:

    если ты сидишь под Иксами:

    Код:
     make xconfig
    если ты - консольник:

    Код:
     make config
    или

    Код:
     make menuconfig
    Все эти команды запускают утилиту настройки будущего ядра. На мой взгляд, наиболее удобна утилита, вызываемая последней командой. Все эти тулзы делают ОДНО И ТОЖЕ и выбор одной из них, определяется лишь личными предпочтениями.

    По конфигурированию ядра могу дать лишь общие советы, т. к. настройка ядра индивидуальна для каждого компа. Общие советы:

    1. Если у тебя PentiumPro/II/III/IV, Celeron или AMD K6 и выше, включи поддержку MTRR;

    2. Запрети установку модулей для чипсетов, которых у тебя нет, например: CMD640, etc;

    3.
    Разреши поддержку Generic PCI bus-master DMA и использование DMA по умолчанию(Use DMA be defaults);

    4. Разреши поддержку твоего чипсета, например: VIA82C586 для VIA VP2/3 и MVP3 материнских плат;

    5.
    Разреши только те SCSI-контроллеры, которые у тебя есть, если их у тебя нет, запрещай все нафиг;

    6. Запрети все сетевые устройства, которых у тебя нет, и поддержка которых тебе нафиг не сдалась;

    7.
    Установи значение Unix98 PTYs равное 128;

    8. Установи 'persistant dma buffer' в настройках звука;

    9. Запрети все файловые системы, которые тебе не нужны, оставь лишь те, которые у тебя действительно есть, например: ISO 9660 CDROM, VFAT, Second extended fs, Ext2, Ext3, /dev/pts, /proc;

    10. Если твой комп не сервак, то запрети все сетевые файловые системы(NFS);

    11. Если у тебя нет ISDN-модема, запрети все ISDN-устройства;

    12. Запрети поддержку IPv6;

    13.
    Если у тебя нет ноутбука или PCMCIA-карт запрети их поддержку;

    14. Если юзаешь dial-up, разреши поддержку протокола PPP(Point to Point Protocol);


    В общем, разреши поддержку только тех устройств, которые у тебя есть! И ещё: в некоторых пунктах можно выбрать одно из трёх значений: Y/M/N, так вот:

    Y - разрешить поддержку на уровне ядра;

    M - разрешить поддержку на уровне модуля ядра;

    N - запретить поддержку.


    "Что же выбирать, если хочешь включить поддержку, Y или M" - спросишь ты. Мой совет: если хочешь, чтобы ядро быстрее грузилось и не хочешь лишнего геморроя с подключением модулей, выбирай - Y; если же хочешь, чтобы ядро занимало меньше памяти, выбирай - M, но тогда придётся возиться с подключением модулей, а это тема для другой статьи... которая может быть и появится... Когда закончишь, сохрани все изменения и вываливайся в консоль. Теперь даёшь команду:

    Код:
     make dep
    Создаётся так называемый файл зависимостей. Следующие команды с пояснениями:

    Код:
    make clean 
    - убираем лишний исходный код;

    Код:
     make bzImage 
    - создаём сжатый модуль ядра;

    Код:
     make modules
    - создаём модули;

    Код:
     make modules_install 
    - устанавливаем модули;

    Всё, ядро скомпилено, но не спеши давать команду reboot, необходимо внести изменения в загрузчик. Сначала копируй файлик /путь_к_ядру/arch/i386/boot/bzImage в папку /boot. Далее привожу пример конфигурации LILO. Правь файл /etc/lilo.conf. Вот пример:

    Код:
     boot=/dev/hda
    
    map=/boot/map
    
    timeout=50
    
    prompt
    
    message=/boot/message
    
    default=kernel-2.2.16
    
    vga=normal
    
    read-only
    
    install=/boot/boot.b
    
    image=/boot/bzImage
    
    label=kernel-2.2.16
    
    root=/dev/hda3
    
     image=/boot/kernel-x.x.xx
    
    label=kernel-x.x.xx
    
    root=/dev/hda3
    Вместо hda3 ставь свой Linux-раздел и вместо kernel-2.2.16 будет стоять твоё собственное старое ядро. Код, выделенный зелёным, - код загрузки нового ядра(подробнее смотри в доках по LILO). После сохранения даёшь команду:

    Код:
    lilo
    Вот и всё!

    Код:
     reboot
    После чего в меню выбираешь kernel-x.x.xx и смотришь: если не грузится, загрузи старое ядро и проверь все свои шаги, особенно, конфигурирование; если ядро загрузилось, даёшь команду:

    Код:
    uname -r
    Должна появиться версия слитого ядра. Потом создаешь загрузочную дискету, так, на всякий случай:

    Код:
    mkbootdisk --device /dev/fd0 x.x.xx
    Всё! Идёшь пить пиво... если деньги сэкономил :)


    Автор: Krot
     
    Последнее редактирование: 27 июн 2009
    2 пользователям это понравилось.
  2. onthar

    onthar Команда форума Админ

    Регистрация:
    8 янв 2008
    Сообщения:
    0
    Симпатии:
    609
    Баллы:
    0
    Все актуальные дистры используют именно это ядро.
    ЗЫ Компиляция.
     
  3. procik

    procik Новичок

    Регистрация:
    3 июл 2009
    Сообщения:
    3
    Симпатии:
    2
    Баллы:
    0
    1 человеку нравится это.
  4. Dr. MefistO

    Dr. MefistO Крывіч Глобальный модератор

    Регистрация:
    3 авг 2008
    Сообщения:
    152
    Симпатии:
    254
    Баллы:
    0
    Спасибо! Очень ценные статьи...
    Щас вот как раз с этой бедой столкнулся. И... первый опыт оказался плачевным)
     

Поделиться этой страницей