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

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » SSH

Удаленная переустановка FreeBSD через SSH [2010]
Возникла задача удаленного реинсталла сервера c установленной FreeBSD, осложнявшаяся отсутствием KVM как класса и сложностью доступа к серверу.
Погуглив, было найдено это описание. То, что и было нужно. Нам понадобятся две вещи:

1.ISO-образ будущей устанавливаемой системы
2.Пакет утилит mfsBSD

Приступим к созданию загрузочного имиджа.

Создадим рабочую директорию:

# mkdir /usr/zzz
# cd /usr/zzz

Выкачиваем ISO:

# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/ISO-IMAGES/8.1/FreeBSD-8.1-RELEASE-amd64-disc1.iso

Выкачиваем 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/

Тюним конфиги под свои реалии:

# cp 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"# cp rc.conf.sample rc.conf

hostname="mfsbsd"
defaultrouter="192.168.109.14"
ifconfig_em0="inet 192.168.109.35 netmask 255.255.255.0" #т.к. сетевая карта известна, то можно ее явно указать

varmfs="YES"
varsize="64m"

sshd_enable="YES"
sendmail_enable="NONE"
cron_enable="NO"# echo «nameserver 8.8.8.8″ >resolv.conf

Монтируем ISO-шник в диру /cdrom

# mdconfig -a -t vnode -f ../../FreeBSD-8.1-RELEASE-amd64-disc1.iso md0
# mount_cd9660 /dev/md0 /cdrom/
# make BASE=/cdrom/8.1-RELEASE/

Extracting base and kernel ... done
Removing unnecessary files from distribution ... done
Installing configuration scripts and files ... done
Generating SSH host keys ... done
Configuring boot environment ... done
Creating usr.uzip ... done
Copying user packages ... done
Creating and compressing mfsroot ... done

Вот и готова наша палочка-выручалочка:

# ls -la *.img
-rw-r--r--  1 root  493  45088768 Nov 11 19:30 mfsboot.img

заливаем ее на удаленную машинку:

# scp mfsboot.img user@remotehost:~/

Далее, заходим на наш удаленный тазик.

Т.к. конфигурацию партиций менять не планировалось, то получаем информацию о текущих партициях:

# bsdlabel /dev/ad0s1 > ~/label.txt

которую нужно где-то сохранить

# scp ~/label.txt user@remotehost:~/

туда же отправляем /etc/fstab

# scp /etc/fstab user@remotehost:~/

Едем дальше:

Осталось записать наш имидж в начало диска:

# dd if=mfsboot.img of=/dev/ad0 bs=1m
dd: /dev/ad0: Operation not permitted

Вот нас и посетила розовая птица обломинго… Но не все так безнадежно – нам поможет в решении этой засады:

# sysctl kern.geom.debugflags=16

kern.geom.debugflags: 0 -> 16# dd if=mfsboot.img of=/dev/ad0 bs=1m

43+0 records in
43+0 records out
45088768 bytes transferred in 2.797733 secs (16116181 bytes/sec)

Все, мы «закатали» наш временный загрузочный образ и можем ребутаться:

# shutdown -r now

после ребута заходим на наш тазик по ssh сразу под рутом и продолжаем:
Т.к. у sysinstall есть проблемы с созданием устройств в devfs, то сделаем это за него.

В начале пометим системный диск как пустой:

mfsbsd# dd if=/dev/zero of=/dev/ad0 count=2

2+0 records in
2+0 records out
1024 bytes transferred in 0.001632 secs (627369 bytes/sec)

Создадим слайс, размером во весь диск с записью загрузочного кода в сектор 0:

mfsbsd# fdisk -BI /dev/ad0

******* Working on device /dev/ad0 *******
fdisk: invalid fdisk partition table found
fdisk: Class not found

Создаем стандартную метку для диска (включая загрузочный код):

mfsbsd# bsdlabel -wB /dev/ad0s1

Возвращаем обратно инфу о партициях:

scp user@remotehost:/home/user/label.txt .

и реанимируем их:

mfsbsd# bsdlabel -R /dev/ad0s1 label.txt

Форматируем наши партиции:

mfsbsd# newfs /dev/ad0s1a

/dev/ad0s1a: 512.0MB (1048576 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 128.02MB, 8193 blks, 16448 inodes.
super-block backups (for fsck -b #) at:
160, 262336, 524512, 786688mfsbsd# newfs /dev/ad0s1e

/dev/ad0s1e: 512.0MB (1048576 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 128.02MB, 8193 blks, 16448 inodes.
super-block backups (for fsck -b #) at:
160, 262336, 524512, 786688mfsbsd# newfs /dev/ad0s1d

/dev/ad0s1d: 512.0MB (1048576 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 128.02MB, 8193 blks, 16448 inodes.
super-block backups (for fsck -b #) at:
160, 262336, 524512, 786688mfsbsd#  newfs /dev/ad0s1f

/dev/ad0s1f: 5631.0MB (11532192 sectors) block size 16384, fragment size 2048
using 31 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
super-block backups (for fsck -b #) at:
160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976, 3387328, 3763680, 4140032, 4516384, 4892736, 5269088, 5645440, 6021792, 6398144,
6774496, 7150848, 7527200, 7903552, 8279904, 8656256, 9032608, 9408960, 9785312, 10161664, 10538016, 10914368, 11290720

Подготавливаем плацдарм для будущей ОС:

mfsbsd# mount /dev/ad0s1a /mnt/
mfsbsd# mkdir /mnt/var
mfsbsd# mkdir /mnt/usr
mfsbsd# mkdir /mnt/tmp
mfsbsd# mount /dev/ad0s1d /mnt/var/
mfsbsd# mount /dev/ad0s1e /mnt/tmp/
mfsbsd# mount /dev/ad0s1f /mnt/usr/

Все, работу по подготовке к инсталляции FreeBSD через сеть мы закончили.
Настало время sysinstall – запускаем его и выбираем пункт меню Custom. В пункте Options ОБЯЗАТЕЛЬНО меняем значение Install Root на /mnt .
Далее посещаем Distributions с выбором там опции Minimal. В Media выбираем ближайший к нам ftp. Финализируем Commit’ом.

Если все хорошо, то появится заветный вопрос «Visit the general configuration menu for a chance to set any last options?», ответ на который зависит от вас.
Мы же продолжаем дальше:

mfsbsd# cp /etc/resolv.conf /mnt/etc/
mfsbsd# cp /etc/rc.conf /mnt/etc/

после чего удалите из него все лишнее.
Опционально:

mfsbsd# cp /etc/ssh/sshd_config /mnt/etc/ssh/

Возвращаем назад fstab:

# scp user@remotehost:/home/user/fstab /mnt/etc

Чрутимся в /mnt:

mfsbsd# chroot /mnt

копируем на место ядро и его модули:

mfsbsd# cp -Rp /boot/GENERIC/* /boot/kernel

Меняем пасс на рута:

mfsbsd# passwd root

Changing local password for root
New Password:
Retype New Password:

Финальный ребут:

# shutdown -r now

Скрестив пальцы, молимся великому пингу и ожидаем поднятия сервера с новой осью 


Источник: http://subnets.ru/blog/?p=1626
Категория: SSH | Добавил: oleg (16.12.2010) | Автор: Панфилов Алексей
Просмотров: 1205 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2024