[Linux] заменить ядро

uncle17

что-то опять потянуло на эксперименты...
Как заменить ядро с 2.6.12 на 2.6.14, не потеряв настройки, опции и т.д.
По инету вроде рылся, но особо даже не знаю, куда искать...

stm8808080

А что за дистрибутив?
В дебиане, например ядро для атлона: apt-get install linux-image-2.6.14-1-k7

uncle17

у меня ядро в исходниках. Дистр - Мандрива 2006 x86_64

stm8808080

если ты собираешь ядра сам, то нужно скопировать файл ".config" из исходников старого ядра в новое, после чего сделать "make oldconfig", который спросит только про новые фичи, а старые настройки возьмет из предыдущей конфигурации.

uncle17

о как... и потом
make
make install
?
А откатить потом как, если вдруг чего не то?

uncle17

З.Ы. не... лучше всё подробно )

stm8808080

а предыдущее ядро ты сам собирал и ставил или оно стандартное из дистрибутива?

uncle17

из дистрибутива

stm8808080

А в дистрибутиве точно нет готового 2.6.14? Как это узнать в Мандриве я не знаю, сам сижу на Дебиане.
Если нет, то надо читать общую инфу по сборке и установке ядер (я уже не помню деталей — давно вручную не собирал а лучше специальную для мандривы инфу. Наверняка у них есть готовый набор скриптов для сборки и установки ядер.
Если все будешь делать вручную:
Конфигурацию старого ядра наверняка можно откуда-то вытащить. У меня, например, она лежит в /boot/config-2.6.14-1-k7.
(при копировании в папку исходников этот файл нужно переименовать в .config) Еще может быть в /proc/config.gz (нужно распаковать перед использованием)
Далее за точность не ручаюсь.
make oldconfig
make dep
make bzImage
make modules
make modules_install
потом скопировать ядро из arch/x86_64/boot/bzImage предположительно в /boot/vmlinuz-2.6.14-my
нацелить туда загрузчик (lilo, grub или что там у тебя обязательно оставив старое ядро в качестве альтернативы — всегда можно будет загрузить его, если что-то пойдет не так

uncle17

ох ёпт... Спасиб за развернутость... буду образовываться:)

danilov

 
потом скопировать ядро из arch/x86_64/boot/bzImage предположительно в /boot/vmlinuz-2.6.14-my
 
А в загрузчик (lilo) ещё нужно прописывать какой-то initrd.img - какое отношение он имеет к ядру?
Можно ли его взять из старой конфигурации (при перекомпиляции ядра)?

stm8808080

initrd — это образ файловой системы, содержащей модули ядра. При загрузке этот образ разворачивается в память, и ядро оттуда берет необходимые модули (драйверы так как с винта оно взять не может без драйверов винта . Если собрать компактное ядро непосредственно под целевой компьютер, все необходимые для загрузки драйверы можно поместить внутрь ядра (в отличие от их сборки в виде модулей). Тогда initrd не нужен.
Если использовать конфигурацию универсального ядра, то без initrd не обойтись. Как собирать initrd — не знаю. Это за меня всегда делает дебиановская инфраструктура сборки ядер.

stm8808080

Старый взять нельзя

danilov

А как он (debian) это делал? То есть с уже скомпилиным ядром, понятно, проставляется этот initrd, а если
самому собирать? В смысле, чё это за инфраструктура сборки? Она собирает тоже из исходников?

stm8808080

да, там все для людей сделано. Ставишь пакет с исходниками ядра, конфигурируешь его, дальше одной командой make-kpkg собираются ядро+модули+initrd в дебиановский пакетик (deb, типа rpm). Остается только установить этот пакетик. Все автоматом разложится в нужные места, и сразу в GRUB пропишется. Красота.

shlyumper

он тебя наебал. на ядрах 2.6.x нужно только
make oldconfig
make
make modules_install

uncle17

а .config переписывать не надо? А если надо, то не пойму, куда

shlyumper

если сам собираешь, то все нужные для загрузки драйвервы вкомпиливаешь в ядро, и инитрд тебе нахрен не нужен.
Тут писали уже про initrd, только чувак котоырй писал, не просек фишку сам, похоже. initrd нужен только для того, чтобы сделать универсальное ядро, которое грузится на любом железе и т.п. "Компактность" ядра тут совершенно не при чем. Если ты знаешь, какое железо будет во время загрузки, то ты спокойно компилируешь нужные части в ядро, и грузишься без извращений. Если ты не знаешь, какое будет железо во время загрузки (а дефолтное ядро из package конечно же не знает - оно ж супер-пупер универсальное то тогда делаешь минимальное ядро и initrd, в который напихиваешь все возможные драйвера + хитрый скрипт, который пытается при старте подгрузить все известные модули. В общих чертах примерно так.

shlyumper

Ну йопта, обратись же ты наконец к документации. Ну или хотя бы к одному из 1000 уже написанных для тебя рецептов.
Например: http://www.digitalhermit.com/linux/Kernel-Build-HO...

sergey_m

> Как заменить ядро с 2.6.12 на 2.6.14, не потеряв настройки, опции и т.д.
В ядре хранятся какие-то настройки?

sergey_m

он тебя наебал. на ядрах 2.6.x нужно только
make oldconfig
make
make modules_install
Отцы линукса не выдержали и раскололись.

stm8808080

Ну значит я в далекие времена 2.4.х покончил с забавой ручной сборки ядер. Вижу, что прогресс с тех пор ушел далеко вперед.
Писав про initrd я исходил из того, что конфигурация меняться не будет, то есть будет собрано универсальное ядро.

akelsh

все не правильно.
если ядро патченное, то тебе надо найти аналогичные патчи для 2.6
если там ничего такого нет, то make menuconfig (на ncurces или make xconfig или make gconfig
а если совсем извращенец можещь make config или руками конфиг править
потом make bzImage
копируешь образ в boot
и дальше прописываешь в загрузчике
опционально может быть с модулями тогда надо еще make modules и make modules_install

erotic

Эээ... Вопросик, быть может глупый...
Почему не
make dep modules bzImage modules_install install
?

dgaf

less /usr/src/linux/README

shlyumper

потому что в 2.6.x переписали Makefile'ы все подругому.
Оставить комментарий
Имя или ник:
Комментарий: