1) Что описывает этот документ?
2) Кому и почему следует сделать это?
3) Описание процесса перехода
3.0) Предварительные меры
3.1) Компиляция и установка системы в формате ELF
3.2) Компиляция и установка ядра в формате ELF
4) Полезные ссылки
1) Что описывает этот документ?
Данный документ описывает каким образом можно перевести FreeBSD с формата a.out
на формат ELF.
2) Кому и почему следует сделать это?
Всем, кто использует FreeBSD и собирается в дальнейшем использовать FreeBSD.
Данная операция производится один раз. Этой операцией сдедует воспользоваться потому, что
поддержка версий 2.2.X закончена, а вы, скорее всего, захотите пользоваться новым программным
обеспечением, поставляемым в виде портов (aka ports).
Документ будет полезен пользователям, у которых возникли проблемы при переводе ядра из формата a.out в формат ELF.
Данную операцию aout-to-elf следует проводить для старых версий FreeBSD (aka 2.2.X и 3.0-SNAP до 15.09.1998)), а пункт 3.2 будет полезен пользователям FreeBSD-3.0, желающим перейти на 3.0-STABLE.
3) Описание процесса перехода.
3.0) Предварительные меры
Настоятельно рекомендуем осуществить резервное копирование!
Следует рассмотреть содержимое каталога /etc
и сравнить
его с содержимым каталога /usr/src/etc
. Изменения, произошедшие, от версии 3.0-aout
к версии 3.0-STABLE-ELF значительны.
Например: появились новые системные псевдо-пользователи (bind, tty, kmem).
Система при сборке захочет воспользоваться этими пользователями, а не найдя их - сборка новой версии прекратится с сообщением об ошибке...
Для проведения данной операции рекомендуется использование инструмента mergemaster
из /usr/ports/sysutils
.
3.1) Компиляция и установка системы в формате ELF
Перейдите в однопользовательский режим с помощью команды:
# shutdown nowлибо загрузите систему с опцией
-s
и выполните в командной строке:
# fsck -p # mount -u / # mount -a -t ufs # swapon -aОчистите
/usr/obj
:
# cd /usr/obj # chflags -R noschg * # rm -rf *Проверьте количество свободного пространства:
# df -k ........БУДЬТЕ ОСТОРОЖНЫ! Обратите внимание на количество свободного места тома /usr!!!
# setenv BINFORMAT aout # make aout-to-elf-build |& tee build.logМожно выпить чашечку кофе и т.д. Данная операция займет несколько часов. После её окончания следует заглянуть в build.log и проверить наличие ошибок. Если ошибок нет - то можно проводить инсталляцию.
# make aout-to-elf-installПроцесс инсталляции ELF-версии достаточно интерактивен и интуитивен. В конце концов произойдет следующее:
3.2) Компиляция и установка ядра в формате ELF
# cd /sys/i386/confСледует рассмотреть ядро LINT. Некоторые драйверы поменяли свои название, а некоторые и вовсе были исключены.
wcd0
на acd0
.Итак, после исправлений в вашем ядре:
# config -r MY_KERNEL # cd ../../compile/MY_KERNEL # make depend # make # file kernel kernel: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked, not stripped #После сборки ядра ОС может выдать сообщение, о том, что новое ядро собрано в формате ELF, а загрузчик вашей ОС не поддерживает ядро в этом формате.
Следует сделать следующее:
узнать название загрузочного диска (например:wd0s1
);
# cat /etc/fstabобязательно убедится (!!!) в существовании каталога
/boot
;
создать файл /boot.config
следующим образом:# echo /boot/loader > /boot.configДалее самая опасная операция:
# setenv SLICE wd0s1 # disklabel -B -b /boot/boot1 -s /boot/boot2 $SLICEЕсли данная операция завершилась нормально, инсталлируем новое ядро:
# cd /sys/compile/MY_KERNEL # make installПосле перезагрузки (в момент загрузки FreeBSD) вы увидите следующее:
>> FreeBSD/i386 BOOT
4) Полезные ссылки
New i386 boot blocks
Syscons update
The time to complete the ELF transition has come
Making the world your own