FreeBSD у меня установлена на pentium 2 с частотой 350 MHz, где компиляция ядра занимает около 2-х суток. Поэтому я решил сэкономить время (попутно и электричество) и собрать новое ядро из под виртуальной машины. Машина для сборки ПК с процессором Intel Core i3 3.1 GHz, 2 ядра + HyperThreading. Система FreeBSD 8.3 на виртуальной машине VirtualBox.
К радости, надо сказать, сборка нового ядра заняла около 15 минут времени.
Замечания:
- Все операции следует выполнять под рутом;
- Описание компиляции и настройки ядра приводится мною не будут.
Если устанавливаемые в конфигах опции нового ядра будут отличаться от конфигов старого, то необходимо отключить все настройки системы использующие отключаемые опции.
Достаточно комментировать все опции в настройках использующие возможности старого самосборного ядра. Такие настройки могут быть в /etc/rc.conf.
Самое первое что нужно, до начала каких-либо манипуляций с ядром системы, скопировать заведомо рабочую версию ядра ( в идеале GENERIC ) в отдельную папку, например:
#: cp -Rp /boot/kernel /boot/kernel.good
Трансплантация скомпилированных ядер
После того, как на виртуальной машине было скомпилировано новое ядро, установлено и по возможности протестировано, необходимо перенести ядро на основную систему. Для этого можно воспользоваться архиватором tar.
Делаем архив рабочего ядра системы на виртуальной машине:
#: tar -cf krn2m.tar /boot/kernel/*
Переносим архив krn2m.tar на основную систему и распаковываем
#: tar -xf krn2m.tar -C /tmp/
Таким образом в директорию /tmp/boot/kernel/ будут перемещены все необходимые файлы ядра. Эту директорию переименуем в kernel.krn2m и перенесем в папку /boot:
#: mv /tmp/boot/kernel/ /boot/kernel.krn2m
Далее воспользуемся командой nextboot, которая одноразово задает ядро для следующей загрузки. Обратите внимание на путь к ядру, он читается относительно директории /boot :
#: nextboot -k kernel.krn2m
Если nextboot ни на что не ругнулась, все ок, при этом был создан файл /boot/nextboot.conf. Можно перезагружаться.
После загрузки смотрим на каком мы ядре:
#: uname -a
Если все работает, то фиксируем изменения — устанавливаем новое ядро по дефолту. А старое переименовываем в kernel.old2
#: mv /boot/kernel /boot/kernel.old2
#: mv /boot/kernel.krn2m /boot/kernel
Дело сделано.
No comments:
Post a Comment