How-to`s — Как пересобирают ядро
Думаю, манов и хавтушек по поводу пересборки ядра уже достаточно много, но тем не менее, опишу как этот процесс происходил в моем случае. Скажу сразу - я не linux-гуру, да и доступа к хавтушкам у меня на момент пересборки не было по причине отсутствия интернета.
Первым делом (если нового ядра у нас нет), копируем его в /usr/src/linux:
sudo mkdir /usr/src/linux #на случай, если папки нет
sudo cp /media/XA_1210_DVD/files/soft/Unix/System/"Linux Kernel 2.6.36"/linux-2.6.36.tar.bz2 /usr/src/linux/kernel-2.6.36.tar.bz2 #да, я читаю Ксакепа =)
Испоьзовать sudo нужно потому что папка /usr/src принадлежит пользователю root. Можно, конечно, использовать su (или зайти под рутом ради такого дела).
Дальше можно или перейти в папку /usr/src/linux (что бы не мучить sudo и меньше писать), или делать все как раньше. Я решил переползти, ибо ленив. Поскольку все дальнейшие операции проихводятся из /usr/src/linux, то придется сделать su
su #повышаем привелегии до root
cd /usr/src/linux #переход
tar -xf kernel-2.6.36.tar.bz2 #распаковываем ядро. можно былот добавить флаг -v, но тогда вывод будет ОЧЕНЬ большим
Теперь в папке /usr/src/linux есть архив и папка с исходниками ядра. Архив нам больше не нужен, и мы его удаляем:
rm kernel-2.6.36
Исходники у меня только от одной версии, поэтому я перетащил их в /usr/src/linux, а пустую папку linux-2.6.36 удалил:
mv linux-2.6.36/* /usr/src/linux/
rm -rf linux-2.6.36
Что мы имеем? В папке /usr/src/linux лежат исходники ядра, которое мы хотим скомпилировать (возможно, с какими-то своими опциями), и использовать. Так что теперь перейдем непосредственно к этому.
!дальше я следую указаниям Slackbook 2.0
Первым делом приводим ядро к базовому состоянию:
make mrproper
Что конкретно делает эта команда - пока не особо себе представляю(но обязательно разберусь и расскажу). Но от рекомендаций отступать не будем.
Дальще у нас есть 3 вариант. Можно воспользоваться традиционной текстовой системой. Будет задано много вопросов, на основании ответов будет создан config-файл. Но если ошибетесь - придется начинать заново. Еще есть вариант, основаный на меню, или графическая X-based утилита. Вариант запуска такие:
make config #text Q&A
make menuconfig #menu-based
make xconfig #x-based
Если хотите использовать третий вариант, то сперва убедитесь, что Xorg запущен. Я воспользовался вторым вариантом - менюшным.
make menuconfig
Интерфейс примерно такой же, как и у установщика Slackware.
Кстати, маленький момент - имеет смысл (если вы новичек) все-равно работать в Xorg-е. Это упростит процесс, так как всегда можно посмотреть нужную информацию, если вы не уверены в ответе.
Поскольку конфигурирует ядро каждый по-своему, и рассказывать конкретику несколько не уместно, дам пару общих советов, от нуба - нубам, так сказать.
1) Проверяйте тип процессора и поддержку вашей файловой системы (особенно последнее)
2) не знаете, что это - не выключайте. А то потом система не включится
Теперь, конгда конфигурирование нового ядра закончилось, приступим непосредственно к компиляции. Согласно того же Slackbook, необходимо подготовить дерево исходников:
make dep #ввод этой команды не обязателен
make clean
Теперь скомпилируем само ядро:
make bzImage
make modules
Процесс занимает некоторое время (причем может занять немало), особенно создание образа ядра. Модули компилируются несколько быстрее.
Теперь необходимо установить ядро. Оригинальное (нынешнее) лежит в /boot и называется vmlinuz. Поскольку в случае ошибки в конигурации ядра система откажется загружаться, то лучше сделать возможной загрузку как с нового, так и со старого ядра:
mv /boot/vmlinuz /boot/vmlinuz.old #rename old kernel
cat /arch/i386/boot/bzImage > /boot/vmlinuz #copying new kernel to /boot
mv /boot/System.map /boot/System.map.old #rename old System.map
cp System.map /boot/System.map
make modules_install
Все! Новое ядро готово, и установлено. Но пока не будем перегружаться, а залезем в /etc/lilo.conf, что бы сделать возможной загрузку старого ядра, на случай неполадок в работе нового. Надо просто добавить в lilo.conf следующие строки, в ту часть, где описываются варианты загрузки:
image = /boot/vmlinuz.old
root = /dev/sda2 # у меня корневой раздел на sda2, у вас он может быть другой. Посмотрите в той части, которая описывает загрузку vmlinuz
label = LinuxDef
read-only
Потом бодро пишем
sudo /sbin/lilo
и перезагружаемся!
Скажу сразу - с первой попытки рабочее ядро я не собрал =) Но цель данного топика несколько иная. Я просто хотел поделиться с новичками в мире Linux знаниями о том, как это делать в принципе. А в принципе это не сложно. Надеюсь, что я смог разбудить у людей любопытство, жажду потыкать по всяким кнопочкам и поиграться с разными опциями - три вещи, ведущие нас на пути познания.
* Является кросс-постом с моим ЖЖ Gramnik
Первым делом (если нового ядра у нас нет), копируем его в /usr/src/linux:
sudo mkdir /usr/src/linux #на случай, если папки нет
sudo cp /media/XA_1210_DVD/files/soft/Unix/System/"Linux Kernel 2.6.36"/linux-2.6.36.tar.bz2 /usr/src/linux/kernel-2.6.36.tar.bz2 #да, я читаю Ксакепа =)
Испоьзовать sudo нужно потому что папка /usr/src принадлежит пользователю root. Можно, конечно, использовать su (или зайти под рутом ради такого дела).
Дальше можно или перейти в папку /usr/src/linux (что бы не мучить sudo и меньше писать), или делать все как раньше. Я решил переползти, ибо ленив. Поскольку все дальнейшие операции проихводятся из /usr/src/linux, то придется сделать su
su #повышаем привелегии до root
cd /usr/src/linux #переход
tar -xf kernel-2.6.36.tar.bz2 #распаковываем ядро. можно былот добавить флаг -v, но тогда вывод будет ОЧЕНЬ большим
Теперь в папке /usr/src/linux есть архив и папка с исходниками ядра. Архив нам больше не нужен, и мы его удаляем:
rm kernel-2.6.36
Исходники у меня только от одной версии, поэтому я перетащил их в /usr/src/linux, а пустую папку linux-2.6.36 удалил:
mv linux-2.6.36/* /usr/src/linux/
rm -rf linux-2.6.36
Что мы имеем? В папке /usr/src/linux лежат исходники ядра, которое мы хотим скомпилировать (возможно, с какими-то своими опциями), и использовать. Так что теперь перейдем непосредственно к этому.
!дальше я следую указаниям Slackbook 2.0
Первым делом приводим ядро к базовому состоянию:
make mrproper
Что конкретно делает эта команда - пока не особо себе представляю(но обязательно разберусь и расскажу). Но от рекомендаций отступать не будем.
Дальще у нас есть 3 вариант. Можно воспользоваться традиционной текстовой системой. Будет задано много вопросов, на основании ответов будет создан config-файл. Но если ошибетесь - придется начинать заново. Еще есть вариант, основаный на меню, или графическая X-based утилита. Вариант запуска такие:
make config #text Q&A
make menuconfig #menu-based
make xconfig #x-based
Если хотите использовать третий вариант, то сперва убедитесь, что Xorg запущен. Я воспользовался вторым вариантом - менюшным.
make menuconfig
Интерфейс примерно такой же, как и у установщика Slackware.
Кстати, маленький момент - имеет смысл (если вы новичек) все-равно работать в Xorg-е. Это упростит процесс, так как всегда можно посмотреть нужную информацию, если вы не уверены в ответе.
Поскольку конфигурирует ядро каждый по-своему, и рассказывать конкретику несколько не уместно, дам пару общих советов, от нуба - нубам, так сказать.
1) Проверяйте тип процессора и поддержку вашей файловой системы (особенно последнее)
2) не знаете, что это - не выключайте. А то потом система не включится
Теперь, конгда конфигурирование нового ядра закончилось, приступим непосредственно к компиляции. Согласно того же Slackbook, необходимо подготовить дерево исходников:
make dep #ввод этой команды не обязателен
make clean
Теперь скомпилируем само ядро:
make bzImage
make modules
Процесс занимает некоторое время (причем может занять немало), особенно создание образа ядра. Модули компилируются несколько быстрее.
Теперь необходимо установить ядро. Оригинальное (нынешнее) лежит в /boot и называется vmlinuz. Поскольку в случае ошибки в конигурации ядра система откажется загружаться, то лучше сделать возможной загрузку как с нового, так и со старого ядра:
mv /boot/vmlinuz /boot/vmlinuz.old #rename old kernel
cat /arch/i386/boot/bzImage > /boot/vmlinuz #copying new kernel to /boot
mv /boot/System.map /boot/System.map.old #rename old System.map
cp System.map /boot/System.map
make modules_install
Все! Новое ядро готово, и установлено. Но пока не будем перегружаться, а залезем в /etc/lilo.conf, что бы сделать возможной загрузку старого ядра, на случай неполадок в работе нового. Надо просто добавить в lilo.conf следующие строки, в ту часть, где описываются варианты загрузки:
image = /boot/vmlinuz.old
root = /dev/sda2 # у меня корневой раздел на sda2, у вас он может быть другой. Посмотрите в той части, которая описывает загрузку vmlinuz
label = LinuxDef
read-only
Потом бодро пишем
sudo /sbin/lilo
и перезагружаемся!
Скажу сразу - с первой попытки рабочее ядро я не собрал =) Но цель данного топика несколько иная. Я просто хотел поделиться с новичками в мире Linux знаниями о том, как это делать в принципе. А в принципе это не сложно. Надеюсь, что я смог разбудить у людей любопытство, жажду потыкать по всяким кнопочкам и поиграться с разными опциями - три вещи, ведущие нас на пути познания.
* Является кросс-постом с моим ЖЖ Gramnik