Подготовка
Итак, переводим сервер в FreeBSD Rescue 32 бита и перезагружаем его. После перезагрузки видим замечательную и такую привычную (года 4 не видел) надпись:
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 7.2-RELEASE (GENERIC) #0: Fri May 1 08:49:13 UTC 2009
Узнаем настройки сети
Теперь нам необходимо узнать все настройки для работы сети, их можно взять прямо здесь:
DNS:
cat /etc/resolv.conf
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 213.133.100.100
IP ( ip: 85.10.193.55, mask: 0xffffffe0 ):
ifconfig re0
re0: flags=8843metric 0 mtu 1500
options=389b
ether 00:16:17:ea:ff:3d
inet 85.10.193.55 netmask 0xffffffe0 broadcast 85.10.193.63
media: Ethernet autoselect (100baseTX)
status: active
GW ( 85.10.193.33 ):
netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 85.10.193.33 UGS 0 5213 re0
85.10.193.32/27 link#1 UC 0 0 re0
85.10.193.33 00:26:88:76:01:87 UHLW 2 0 re0 634
127.0.0.1 127.0.0.1 UH 0 0 lo0
255.255.255.255 0.0.0.0 UHb 0 0 plip0
Internet6:
Destination Gateway Flags Netif Expire
::1 ::1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 U lo0
fe80::1%lo0 link#3 UHL lo0
ff01:3::/32 fe80::1%lo0 UC lo0
ff02::%lo0/32 fe80::1%lo0 UC lo0
Официальная документация Hetzner.de
Официальный мануал, на основе которого мы будем действовать: http://wiki.hetzner.de/index.php/FreeBSD_installieren
Разбивка диска
Посмотрим, какие диски у нас есть в системе:
ls /dev/ad*
/dev/ad4 /dev/ad4s2 /dev/ad6 /dev/ad6s2
/dev/ad4s1 /dev/ad4s3 /dev/ad6s1 /dev/ad6s3
Итого, видим, что у нас два жестких диска: /dev/ad4 и /dev/ad6, ставить FreeBSD будем на первый (/dev/ad4) из них, т.к. я банально пока не умею делать RAID-1 во FreeBSD.
Создаем на диске один слайс (-I) и переустанавливаем загрузочный код (-B) (жалобы на Geom можно игнорировать):
fdisk -BI /dev/ad4
******* Working on device /dev/ad4 *******
fdisk: Geom not found: "ad4"
Если же вместо означенной ошибки выводится:
******* Working on device /dev/ad4 *******
fdisk: Class not found
То можно не волноваться, это варнинг, а не ошибка.
В итоге получаем следующую схему:
ls /dev/ad4*
/dev/ad4 /dev/ad4s1
Более подробно:
fdisk /dev/ad4
******* Working on device /dev/ad4 *******
parameters extracted from in-core disklabel are:
cylinders=581421 heads=16 sectors/track=63 (1008 blks/cyl)
Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=581421 heads=16 sectors/track=63 (1008 blks/cyl)
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
start 63, size 586072305 (286168 Meg), flag 80 (active)
beg: cyl 0/ head 1/ sector 1;
end: cyl 812/ head 15/ sector 63
The data for partition 2 is:
The data for partition 3 is:
The data for partition 4 is:
Установка загрузчика и разметка дисков
Ставим загрузчик (-B обозначает, что загрузочный код будет взят с файла /boot/boot и записан на диск, а -w делает стандартный label на слайс, как я понял, это некое подобие таблицы разделов, но в пределе слайс ):
bsdlabel -wB /dev/ad4s1
Разбивка разделов
Запускаем редактор label-а на слайсе:
bsdlabel -e /dev/ad4s1
И видим следующую таблицу разделов:
# /dev/ad4s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 586072289 16 unused 0 0
c: 586072305 0 unused 0 0 # "raw" part, don't edit
Нажимаем i (дада, Вы угадали, это редактор vi и мы должны перейти в режим редактирования)
Приводим к следующему виду:
# /dev/ad4s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: * 16 4.2BSD 0 0
b: 4G * swap 0 0
c: * 0 unused 0 0 # "raw" part, don't edit
Если же у Вас есть требуемая квалификация, то можете разбить диск с отдельными /var, /, /usr и /tmp для этого потребуется примерно следующая схема (но обратите внимание! мой мануал основывается не на ней, а на предыдущей схеме разбивки):
# /dev/ad4s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 2G 16 4.2BSD 0 0 # /
b: 20G * swap 0 0
d: 100G * 4.2BSD 0 0 # /var
e: 8G * 4.2BSD 0 0 # /tmp
f: * * 4.2BSD 0 0 # /usr
А почему после d сразу e - потому что "The partition identifier is a single letter in the range `a' to `h' By convention, partition `c' is reserved to describe the entire disk." (отобразил на английском, а очень хотелось покрыть матом).
Нажимаем ESC и вводим : wq и энтер.
Теперь наша таблица разделов имеет следующий вид:
ls /dev/ad4*
/dev/ad4 /dev/ad4s1 /dev/ad4s1a /dev/ad4s1b /dev/ad4s1c
При этому в /dev/ad4s1a мы будем ставить систему, а /dev/ad4s1b служит SWAP ом.
Форматируем root раздел в файловую систему UFS:
newfs /dev/ad4s1a
Монтируем root
mount /dev/ad4s1a /mnt
Запускаем инсталлятор
sysinstall
Идем в "Custom", "2 Options View/Set various installation options" и значение в поле "Install Root" заменяем на "/mnt" (для того, чтобы появился диалог редактирования необходимо нажать "пробел") и после этого нажимаем Q для выхода в вышестоящее меню.
Кстати, в предыдущем меню есть настройка "Release Name", стандартно там вписано "8.0-RELEASE", значит стандартно будет ставить FreeBSD 8, а не 7.2.
Теперь заходим в "5 Distributions Select distribution(s) to extract" и пробелом выбираем "[X] A Minimal The smallest configuration possible" (либо ставим комплект "User", который более оптимален и не так урезан, я рекомендую именно его) и выходим в главное меню.
При выборе User на предложение "FreeBSD Documentation Installation Menu" отвечаем Cancel а при предложении установить порты ("Would you like to install the FreeBSD ports collection") отвечаем Yes.
Выбираем носитель, с которого будет выполняться установка: "6 Media Choose the installation media type", "6 NFS Install over NFS" и вводим одну из следующих строк в зависимости от необходимой битности дистрибутива (в нашем случае нужна 32 битная версия):
Для FreeBSD 8 пути следующие:
213.133.99.100:/nfs/freebsd/8.0_32
213.133.99.100:/nfs/freebsd/8.0_64
Для 7.2:
213.133.99.100:/nfs/freebsd/64
213.133.99.100:/nfs/freebsd/32
Теперь для начала установки "7 Commit Perform any pending Partition/Label/Extract actions"
Ждем пока ставится BASE System. Когда выдается запрос "│ Visit the general configuration menu for a chance to set any last options?" выбираем No и выходим из меню, далее "X Exit Exit this menu (returning to previous)".
Можно видеть, что инсталлятор поставил нам FreeBSD по пути /mnt:
ls /mnt
.cshrc COPYRIGHT dev libexec proc sbin usr
.profile bin etc media rescue sys var
.snap boot lib mnt root tmp
Последние настройки
Чрутимся в свежеустановленную FreeBSD:
chroot /mnt
Если славливаем ошибку:
chroot /mnt
chroot: /usr/local/bin/bash: No such file or directory
То пробуем монтировать так:
chroot /mnt /bin/sh
Делаем что-то мистическое с ядром (кто расскажет, для чего это, получит плюшку):
cp -Rp /boot/GENERIC/* /boot/kernel/
Открываем конфиг сети:
vi /etc/rc.conf
И вписываем туда следующее:
hostname="rechnername.domain.tld"
sshd_enable="YES"
ifconfig_re0="DHCP"
sendmail_enable="NONE"
fsck_y_enable="YES"
background_fsck="NO"
Заполняем список DNS:
vi /etc/resolv.conf
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 213.133.100.100
Заполняем fstab:
vi /etc/fstab
# dev mnt type opt dump pass
/dev/ad4s1b none swap sw 0 0
/dev/ad4s1a / ufs rw 1 1
А для случая с раздельными разделами это будет выглядеть так:
/dev/ad4s1a / ufs rw 1 1
/dev/ad4s1b none swap sw 0 0
/dev/ad4s1d /var ufs rw 1 1
/dev/ad4s1e /tmp ufs rw 1 1
/dev/ad4s1f /usr ufs rw 1 1
Задаем пароль для root:
passwd
Разрешаем руту входить по SSH:
vi /etc/ssh/sshd_config
Там находим строку "#PermitRootLogin no" и заменяем ее на "PermitRootLogin yes"
Теперь выходим из chroot среды посредством нажатия CTRL+D
Отмонтируем раздел:
umount /mnt
Перезагружаемся:
shutdown -r now
Ну и тут все стандартно, ждем пока машинка перезагрузится и готовимся морально к заказу KVM :)
У меня загрузилась раза с 5го только (пришлось переставить на другой диск, т.к. ночь и KVM не подключают, а загрузка стояла со второго диска), но загрузилась :)
uname -a
FreeBSD rechnername.domain.tld 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May 1 08:49:13 UTC 2009 root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
А тем временем, немного негатива -- после пары жестких ребутов в процессе эксперимента Фря ругалась: mount: /dev/ad6s1a : Operation not permitted что на русском означает "запусти-ка товарищ fsck" (о чем рапортовало в dmesg):
fsck /dev/ad6s1a
Заранее прошу прощения за возможные косяки и ошибки (особенно в терминологии и понимании процесса) в мануале, я ни минуты ни бсдшник, а простой линуксойд :)
Если требуется RAID, то переходим к мануалу: http://phpsuxx.blogspot.com/2009/12/raid-1-freebsd-72.html
Вот делать-то больше нечего, чем руками разбивать диск. У вас же есть sysinstall, в котором есть замечательные менюшки Fdisk и Label, смысл какой всех этих ваших действий?!
ReplyDeleteЕсли сделано руками, значит так удобнее. Как минимум, это скриптуется в отличие от sysinstall.
ReplyDeleteневерные адресы :
ReplyDelete213.133.99.100:/nfs/freebsd/8_32
213.133.99.100:/nfs/freebsd/8_64
у хецнера используются с указанием подверсий. Например 8.0 :
213.133.99.100:/nfs/freebsd/8.0_32
213.133.99.100:/nfs/freebsd/8.0_64
Фиксед, спасибо!
ReplyDelete