Документация по ОС FreeBSD Суббота, 18.01.2025, 12:44
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Как перевести систему от a.out к ELF (миграция с 2.X на 3.X)
Что описывает этот документ?

Данный документ описывает каким образом можно перевести FreeBSD с формата a.out на формат ELF. 

Кому и почему следует сделать это?

Всем, кто использует 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.

Описание процесса перехода.
Предварительные меры

Настоятельно рекомендуем осуществить резервное копирование!

Следует рассмотреть содержимое каталога /etc и сравнить его с содержимым каталога /usr/src/etc. Изменения, произошедшие, от версии 3.0-aout к версии  3.0-STABLE-ELF значительны.

Например: появились новые системные псевдо-пользователи (bind, tty, kmem).
Система при сборке захочет воспользоваться этими пользователями, а не найдя их - сборка новой версии прекратится с сообщением об ошибке...
Для проведения данной операции рекомендуется использование инструмента mergemaster из /usr/ports/sysutils. 

Компиляция и установка системы в формате 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!!!
При переходе с формата a.out на ELF понадобится около 400Mb свободного места. (синтаксис csh)
# setenv BINFORMAT aout # make aout-to-elf-build |& tee build.log
Можно выпить чашечку кофе и т.д. Данная операция займет несколько часов. После её окончания следует заглянуть в build.log и проверить наличие ошибок. Если ошибок нет - то можно проводить инсталляцию.
# make aout-to-elf-install
Процесс инсталляции ELF-версии достаточно интерактивен и интуитивен. В конце концов произойдет следующее:

все "бинарники" будут заменены на аналогичными, но в формате ELF;
все библиотеки (aka libs) в формате a.out будут перенесены в соответствующие им директории на уровень ниже ../aout
(например: aout-библиотеки из /usr/lib будут перемещены в /usr/lib/aout) 
Компиляция и установка ядра в формате ELF

# cd /sys/i386/conf
Следует рассмотреть ядро LINT. Некоторые драйверы поменяли свои название, а некоторые и вовсе были исключены.
Например: драйвер CD-ROM'а был переписан и название устройства изменено с >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
Категория: Установка и настройка | Добавил: oleg (08.12.2007)
Просмотров: 757 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025