FastNetMon

Tuesday, 24 November 2009

Установка FreeBSD 7.2 / 8.0 на fastvps.ru

Стандартно FreeBSD Hetzner.de не ставят, но предоставляют Rescue систему на базе FreeBSD, которая представляет собой в сущности LiveCD, но с доступом по сети. Как раз из него мы и будем ставить операционку.


Подготовка

Итак, переводим сервер в 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=8843 metric 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

4 comments :

  1. Вот делать-то больше нечего, чем руками разбивать диск. У вас же есть sysinstall, в котором есть замечательные менюшки Fdisk и Label, смысл какой всех этих ваших действий?!

    ReplyDelete
  2. Если сделано руками, значит так удобнее. Как минимум, это скриптуется в отличие от sysinstall.

    ReplyDelete
  3. неверные адресы :

    213.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

Note: only a member of this blog may post a comment.