Компиляция ядра OpenBSD для AMD K8
Получение исходников
От того, какая ветка ядра будет использоваться для компиляции ( current или stabile ), а так же в зависимости от того нужно исходники обновить, или скачать с нуля, будут использоваться различные команды:
Скачиваем current "с нуля":
cd /usr cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
Скачиваем stable "с нуля":
cd /usr cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_9 -P src
Обновляем current:
cd /usr/src cvs -q up -Pd
Обновляем stable:
cd /usr/src cvs -q up -rOPENBSD_4_9 -Pd
ВАЖНО! Если обновляемые исходники были получены с другого сервера или с CD, в команду обновления необходимо добавить параметр "-d anoncvs@anoncvs.ca.openbsd.org:/cvs":
cd /usr/src cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
Добавление оптимизирующих ключей в Makefile
Подробнее об оптимизирующих ключах: ключи gcc компилятора, безопасные ключи для AMD.
cd /usr/src/sys/arch/amd64/conf config GENERIC.MP cd ../compile/GENERIC.MP nano Makefile
В файле комментируем переменную CMACHFLAGS и добавляем свой вариант ключей:
#CMACHFLAGS= -mcmodel=kernel -mno-red-zone -mno-sse2 -mno-sse \
-mno-3dnow -mno-mmx -msoft-float -fno-omit-frame-pointer
CMACHFLAGS= -mcmodel=kernel -msse2 -msse -m3dnow -mmmx \
-msoft-float -fomit-frame-pointer -mno-red-zone
Компилируем и устанавливаем ядро
# Чтобы отключить вывод можно использовать: # make clean && make depend 1>/dev/null && make 1>/dev/null make clean && make depend && make make install reboot
Компилируем userland
После компиляции ядра настоятельно рекомендуется перекомпилировать и его окружение (набор системных утилит, взаимодействующих с ядром).
# Очищаем /usr/obj директорию и ребилдим ссылки: rm -rf /usr/obj/* cd /usr/src make obj # Убеждаемся, что все необходимые директории созданы: cd /usr/src/etc && env DESTDIR=/ make distrib-dirs # Компилируем: cd /usr/src make build
Либо можно сделать это всё вот так (silent userland rebuild):
rm -rf /usr/obj/* 1>/dev/null && cd /usr/src && make obj 1>/dev/null \ && cd /usr/src/etc && env DESTDIR=/ make distrib-dirs \ && cd /usr/src && make build 1>/dev/null