Для удаленной установки FreeBSD из Linux уже есть готовый инструмент который называется Depenguinator. Причины по которым это делается обсуждать не буду, в общем имеем сервер с установленным GNU Linux. Cкачать Depenguinator можно здесь: http://www.daemonology.net/blog/2008-01-29-depenguinator-2.0...
У меня всё это собиралось на Gentoo, поэтому для сборки пришлось поставить app-arch/libarchive
Возможно кому-то прийдётся поставить что-то ещё.
Скачиваем и распаковываем сам depenguinator:
# wget -c <a href="http://www.daemonology.net/depenguinator/depenguin-2.0.tar.g...
# tar -xzpvf depenguin-2.0.tar.gz
Выполняем всё под root'ом, потому как под пользователем не соберётся
Переходим в depenguin-2.0, распаковываем makefs-20080113.tar.gz и выполняем:
# sed -i'' -e'140i\#define ARG_MAX 2048' makefs-2008011/netbsdsrc/lib/libc/gen/glob.c
Потому как версия glibc у нас новее чем у автора из-за чего нормально оно не
собирается, после чего запаковываем всё назад в архив с таким же названием.
Правим depenguinator.conf и готовим authorized_keys для чего выполняем
# ssh-keygen -t rsa && cp ~/.ssh/id_rsa.pub authorized_keys
Правим loader.conf, добавляем поддержку ext2fs, grub я решил оставить, он и под
freebsd работает, а так как grub.conf у нас находится на разедле с ext2 было бы
неплохо иметь возможность его исправить загрузившись во freebsd.
# echo 'ext2fs_load="YES"' >> loader.conf
Собираем загрузочный образ depenguinator'а
# ./makeimage.sh ~/7.2-RELEASE-i386-disc1.iso 7.2-RELEASE authorized_keys
После сборки должен получится disk.img который нужно будет загрузить а сервер.
Для загрузки Depenguinator'а будем использовать swap, для чего меняем его тип fdisk'ом на a5.
Накатываем образ
# dd if=disk.img of=/dev/sda2
Правим grub.conf, для загрузки Depenguinator'а
title Depenguinator
root (hd0,1)
makeactive
chainloader +1
После чего меняем умолчательную загрузку на Depenguinator и затаив дыхание перегружаемся :)
Если всё прошло нормально то после перезагрузки мы должны получить ssh с
доступом по ключу, который мы создавали.
Готовим диск и монтируем нашу будущую систему в /mnt. Если у нас на сервере всего один жёсткий
диск - оставляем Linux'овый /boot и swap который мы используем под Depenguinator, осталные разделы
удаляем и вместо них создаём slice для FreeBSD. Если же дисков несколько, например имеем software'ный
raid можно извлечь из него один винчестер и полностью использовать для FreeBSD. В результате получим
возможность загрузки GNU Linux, Depenguinator и FreeBSD.
Так как сервер у меня новый то ставить на него решил 7.2-RELEASE-amd64, для
чего копируем по ssh с первого диска base и kernels:
# scp -r base kernels 1.1.1.1:/mnt/usr
Устанавливаем базовую систему:
# cd /mnt/usr/base && cat base.?? | tar --unlink -xpzf - -C /mnt
# cd /mnt/usr/kernels && cat generic.?? | tar --unlink -xpzf - -C /mnt/boot
# cd /mnt/boot; rmdir /mnt/boot/kernel; mv /mnt/boot/GENERIC /mnt/boot/kernel
Редактируем /mnt/boot/loader.conf, добавляем
ext2fs_load="YES"
Редактируем /mnt/etc/fstab под свои разделы.
Редактируем /mnt/etc/rc.conf, добавляем имя хоста, настройки сети и т.д.
Редактируем /mnt/etc/ssh/sshd_config ставим
PermitRootLogin yes
Копируем ключ для доступа по ssh
# mkdir /mnt/root/.ssh && cp /root/.ssh/authorized_keys /mnt/root/.ssh
Монтируем boot'овый раздел linux'а и снова правим grub.conf, теперь добавляем
загрузку уже новой системы:
title FreeBSD
root (hd0,2,a)
kernel /boot/loader
Снова меняем умолчательную загрузку но уже на FreeBSD и снова затаив дыхание перегружаемся :)
После перезагрузки мы должны получить доступ по ssh с авторизацией по ключу.
Советую для начала всё это проделать на виртуалке, ну или на компьютере стоящем рядом :)
Если что-то не получилось, дополнительную информацию можно найти здесь:
http://daemonicdispatches.disqus.com/the_depenguinator_versi.../
http://stderr.de/blog/bryar.cgi/id_2625
http://gist.github.com/45741
URL:
Обсуждается: http://www.opennet.dev/tips/info/2223.shtml