Пересборка ядра
Все делать из /usr/src/linux (если ядро из поставки). Если был сделан upgrade пакета kernel_headers, то м.б. придется сделать ссылки для /usr/include/asm и /usr/include/linux.
- make mrproper (удалить весь мусор от предыдущей конфигурации). Если хочется сохранить предыдущую конфигурацию, то сказать: make dep; make clean.
- конфигурация ядра (не советую делать SCSI-драйвера модулями; увы приходится это делать, если надо писать на ATAPI CD-RW)
- make config (в виде ответов на вопросы: Y, N или M), надежно (ничего не забудешь поменять ;), 500 вопросов, на половину из которых не знаешь что сказать.
- make menuconfig (в виде меню), удобно (нужен ncurses_devel).
- make xconfig (под X-Windows), очень удобно :)
- make oldconfig (все ответы из .config)
- make dep
- make bzImage (не надо слепо следовать устаревшей инструкции и делать make boot, он не влезет в загрузчик)
- make modules
- insmod loop до перемещения модулей, а то не найдет loop0
- удаляем совсем старую копию модулей (если она есть)
rm -rf /lib/modules/2.2.5-22-old (нужен для mkinitrd) - делаем текущий набор модулей старым
mv /lib/modules/2.2.5-22 /lib/modules/2.2.5-22-old - инсталируем новый набор модулей (в /lib/modules/2.2.5-22)
make modules_install - если все-таки сделал SCSI в виде модуля (или еще какой-нибудь модуль нужен при загрузке; ide-scsi не нужен), то пересобери initrd (отредактировать /etc/conf.modules (/etc/modules.conf в RedHat 7.0) - вставить alias scsi_hostadapter имя-драйвераи соответствующие options имя-драйвера имя-драйвера="параметры"; проверить alias eth0 - и выполнить
mkinitrd /boot/имя-нового-initrd 2.2.5-22
после чего отредактировать /etc/lilo.conf). Также необходимо сделать, если раньше был модуль SCSI, а теперь его убрал или включил в ядро. - копируем получившийся arch/i386/boot/bzImage в /boot/bzImage.new (переименовав старый, если надо)
- копируем получившийся System.map в /boot/System.map (переименовав старый?), klogd сначала пытается смотреть в /boot/System.map; если версия ядра не совпадает, то в /System.map, а если и там не совпадает, то в /usr/src/linux/System.map
- добавляем новую секцию в /etc/lilo.conf со ссылками на новое ядро и м.б. initrd (обязательно сохранив возможность загрузки старого ядра, System.map, modules?, где взять module-info для нового ядра?)
- /sbin/lilo -v
- перезагружаемся - DMA все-равно приходится включать вручную через hdparm, ибо не любит он WD :(
- /usr/src/linux занимает теперь 70МБ (RH 6.2 - 80 MB, RH 7.0 - 106 MB)
- скомпилированный emu10k1 не грузится, приходится брать модуль из дистрибутива