Инсталляция Linux-Kernel 2.4 на Redhat 7


Yuri N. Looshnya ten.n@t [при помощи www.linuxnewbie.org] Январь 25, 2001
Кто из истинных энтузиастов Linux хоть раз не "копался" в ядре? Таких практически нет. А кто из тех же энтузиастов не пробовал разобраться с новым, 2.4.0, ядром? Я тоже энтузиаст и тоже захотел с ним разобраться, точнее разобраться в его работе. Тем более, что я в данное время работаю на Redhat 7.0, который адаптирован к работе с 2.4-ядром. Почему бы не проверить уровень адаптации и заодно работу нового ядра?

В начале статьи хотелось бы сообщить всем, что НЕ обязательно бродить по сети в поисках чего-нибудь экзотического по поводу компиляции *инсталляции* нового ядра - можно просто почитать README и/или CHANGES - документацию, которая идет с новым ядром. Думаю, что вы найдете там много интересного для себя. По крайней мере, я сделал примерно так же - собрал кучу информации, потом выстроил ее в правильном порядке и получилось что-то типа "инсталляция шаг за шагом". Я не буду останавливаться на специфических вопросах для каждого ПК, которые вы можете прочесть в процессе установки нового ядра. Рекомендую вам использовать для этого "xconfig".


... Все эти "шаманства" были произведены на "только_что_проинсталлированном" Redhat 7 на AMD 700MHz с Voodoo 3 3000 PCI и 128MB RAM ...

Шаг 1. Вошел в систему как root.

Шаг 2. Загрузил "linux-2.4.0.tar.gz" в домашнюю директорию. Так как я вошел в систему как root, то домашней директорией будет /root.

Шаг 3. Распаковал "linux-2.4.0.tar.gz":

'tar xvzf linux-2.4.0.tar.gz'

Шаг 4. В результате третьего шага появилась новая директория "linux" в /root директории. Захожу в нее (можно с помощью 'cd') и запускаю 'make mrproper'.

Я не увидел ничего сложного во всем вышеперечисленном, тем более, что это описывается в README, которое поставляется с новым ядром.

Шаг 5. Дальше - интересней. Теперь необходимо загрузить апдейт "gcc" с http://www.redhat.com/support/errata/RHBA-2000-132.htm. Этот апдейт новее, чем рекомендует README. Файл 'gcc-2.96-69.i386.rpm' помещаю в /root. Инструкции по инсталляции/обновлению 'gcc' можно найти по тому же URL'у, на котором лежит апдейт. Почитав немного инструкции, делаю следующее:

'rpm -Fvh gcc-2.96-69.i386.rpm'

Шаг 6. Проверяю правильность установки/апдейта с помощью:

'gcc --version'

Шаг 7. Иду на http://www.kernel.org/ за 'util-linux 2.10o', так как это рекомендуется в CHANGES-файле (я имел 2.10m). Инсталлирую это:

'./configure'
'make'
'make install'

Для проверки правильности инсталляции использую:

'fdformat --version'

Шаг 8. Я также загрузил 'modutils-2.4.0', которые находятся на kernel.org в rpm-формате. Инсталляция:

'rpm -Fvh modutils-2.4.0.i386.rpm'

и проверка версии:

'insmod -V'
<--- в первой строке появившегося вы сможете увидеть версию modutils --- >

Шаг 9. Апдейт пришлось проделать с 'ksymoops-2.4.0-1.i386.rpm' и 'e2fsprogs-1.19-0.i386.rpm. Но, к сожалению, все оказалось не так просто: 'ksymoops' не захотел модернизироваться с помощью 'rpm -Fvh', а с помощью 'rpm -ivh' я получил "conflicts with file from package kernel-utils-2.2.16-22". Пришлось пропустить данную процедуру в надежде на хороший исход в дальнейшем :)

Шаг 10. По рекомендации 'CHANGES'-файла я зашел на ftp://rawhide.redhat.com/pub/rawhide/i386/RedHat/RPMS/ для обновления 'mkinitrd'. Данный пакет был загружен в rpm-формате и проинсталлирован:

'rpm -Fvh mkinitrd-2.9-1.i386.rpm'

Проверки версии после модернизации оказалась той, что нужно.

Шаг 11. Запуск 'make xconfig' для создания '.config'-файла в linux-директории.

Шаг 12. Важный шаг. Я просмотрел 'Makefile' для внесения в него кое-каких изменений. Дело в том, что строка 'export INSTALL_PATH=/boot' по умолчанию закомментирована (#). Так как я поместил ядро в директорию /root, то пришлось расскоментировать данную строку, чтобы мой Redhat поместил ядро в /boot-директорию, а не в /root.

Шаг 13. Запускаю 'make dep' - все пока чудесно!

Шаг 14. 'make bzImage' - error'ов нет ;)

Шаг 15. 'make modules' ...ok...

Шаг 16. После запуска 'make modules_install' и 3-секундного ожидания я подумал, что неплохо было бы сделать backup моей module-директории.

Шаг 17. Копирую мое новое ядро ('bzImage') в /home директорию как backup:

'cp /root/linux/arch/i386/boot/bzImage /home/bzImage'

Шаг 18. Копирую новое ядро в /boot директорию и переименовываю его 'mykernel-2.4.0':

'cp /root/linux/arch/i386/boot/bzImage /boot/mykernel-2.4.0'

Шаг 19. Теперь очередь за редактированием /etc/lilo.conf для загрузки по умолчанию нового ядра. Мой новый lilo.conf файл:

        boot=/dev/hda
        map=/boot/map
        install=/boot/boot.b
        prompt
        timeout=50
        message=/boot/message
        linear
        default=new

        image=/boot/mykernel-2.4.0
        label=new
        root=/dev/hda1
        read-only

        image=/boot/vmlinuz-2.2.16-22
        label=old
        root=/dev/hda1
        read-only

Шаг 20. Набираю в консоли 'lilo'. Получаю: 'Fatal:no images defined'. Все это случилось потому, что я забыл изменить строку 'default' с 'linux' на 'new' в lilo.conf. Когда я изменил это и запустил 'lilo' опять - все было прекрасно.

Шаг 21. Перезагрузка

Все работает чудесно. Если у вас возникли проблемы на этом уровне, то попробуйте загрузить модули с помощью 'modprobe'. Удачи



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости