Задача: Установка FreeBSD на удаленном сервере, к которому имеется доступ только через SSH и на котором отсутствует возможность обновления FreeBSD штатными средствами (например, установлен Linux или очень старая версия FreeBSD).Решение: 1. Сформировать отдельный загрузочный образ с настроенными параметрами сетевого соединения и активным ssh-сервером. 2. Записать данный образ на диск удаленного сервера и перезагрузиться.
Готовим загрузочный образ на локальной FreeBSD-системе.
Загружаем установочный ISO-образ:
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/ISO-IMAGES/...
Загружаем mfsBSD:
fetch http://people.freebsd.org/~mm/mfsbsd/mfsbsd-latest.tar.gz
Распаковываем и переходим в получившуюся директорию:
tar xvzf mfsbsd-1.0-beta1.tar.gz
cd mfsbsd-1.0-beta1/conf/
Правим файлы конфигурации и добавляем параметры сетевого соединения удаленного хоста:
На базе примера loader.conf.sample создаем loader.conf
geom_uzip_load="YES"
mfs_load="YES"
mfs_type="mfs_root"
mfs_name="/mfsroot"
tmpfs_load="YES"
vfs.root.mountfrom="ufs:/dev/md0"
mfsbsd.rootpw="123456"
На базе примера rc.conf.sample создаем rc.conf
# Настраиваем параметры сети для сетевого интерфейса em0
hostname="mfsbsd"
defaultrouter="192.168.1.1"
ifconfig_em0="inet 192.168.1.5 netmask 255.255.255.0"
varmfs="YES"
varsize="64m"
# Включаем SSH-сервер
sshd_enable="YES"
Добавляем адрес DNS-сервера:
echo "nameserver 8.8.8.8" >resolv.conf
Монтируем установочный ISO-образ
mdconfig -a -t vnode -f ../../FreeBSD-8.1-RELEASE-amd64-disc1.iso md0
mount_cd9660 /dev/md0 /cdrom/
Собираем загрузочный образ для удаленного сервера:
make BASE=/cdrom/8.1-RELEASE/
В результате будет получен файл mfsboot.img, который следует скопировать на удаленный сервер.
scp mfsboot.img user@remotehost:~/
Внимание ! Перед манипуляциями с удаленным сервером, рекомендуется обязательно провести эксперимент на локальной машине, повторив на ней все дальнейшие шаги.
Заходим на удаленный сервер.
Записываем созданный загрузочный образ в начало диска:
dd if=mfsboot.img of=/dev/sda bs=1m
Перезагружаем сервер:
shutdown -r now
После перезагрузки заходим на сервер по ssh и запускаем инсталлятор sysinstall.
Если возникнут проблемы с созданием устройств в devfs, то разбиваем диск вручную:
Пометим системный диск как пустой:
dd if=/dev/zero of=/dev/ad0 count=2
Создадим слайс, размером во весь диск с записью загрузочного кода в сектор 0:
fdisk -BI /dev/ad0
Создаем стандартную разметку диска и устанавливаем загрузчик:
bsdlabel -wB /dev/ad0s1 auto
Форматируем разделы:
newfs /dev/ad0s1a
newfs /dev/ad0s1e
newfs /dev/ad0s1d
newfs /dev/ad0s1f
Создаем точки монтирования:
mount /dev/ad0s1a /mnt/
mkdir /mnt/var
mkdir /mnt/usr
mkdir /mnt/tmp
mount /dev/ad0s1d /mnt/var/
mount /dev/ad0s1e /mnt/tmp/
mount /dev/ad0s1f /mnt/usr/
Запускаем sysinstall и выбираем пункт меню "Custom". В пункте Options обязательно меняем значение "Install Root" на /mnt.
Далее посещаем раздел "Distributions" и выбираем опцию Minimal. В блоке "Media" выбираем ближайшее ftp-зеркало. Жмем Commit.
Копируем созданные для установочного образа настройки сети или устанавливаем параметры в процессе работы sysinstall (не забудьте активировать ssh-сервер):
cp /etc/resolv.conf /mnt/etc/
cp /etc/rc.conf /mnt/etc/
Если диск разбивался вручную, после установки необходимо откорректировать fstab.
Копируем GENERIC-ядро в директорию /boot/kernel:
chroot /mnt
cp -Rp /boot/GENERIC/* /boot/kernel
Еще раз все проверив перезагружаем сервер.
URL: http://subnets.ru/blog/?p=1626 http://www.freebsd.org/doc/en/articles/remote-install/index....
Обсуждается: http://www.opennet.dev/tips/info/2492.shtml