Ключевые слова:nfs, freebsd, install, boot, pxe, (найти похожие документы)
From: Aleksey L Keda <http://www.lissyara.su>
Date: Mon, 4 Oct 2007 14:31:37 +0000 (UTC)
Subject: Пример инсталляции FreeBSD c сетевого диска, через NFS
Оригинал: http://www.lissyara.su/?id=1373
Итак. Задача - поставить FreeBSD на HP OmniBook 500. Машинка,
ничего особенного из себя не представляет - PIII-733, 256 RAM, 30G
HDD. Есть док станция со совей батарейкой, CD-ROM, FDD.
Для начала, откусываю кусок харда акронисом - там стоит
лицензиозная винда, которая может пригодится. После чего пытаюсь
загрузиться с CD-ROM. В общем-то всё хорошо, но вот на моменте
детектирования этого самого CD-ROM машина уходит в себя... Вернее не
уходит, но и момент этот не проскакивает.
Ладно, втыкаю любимую загрузочную флэшку, логично рассуждая - мне
бы забутится, дальше разберусь. Облом. Колдование над опциями BIOS и
попытки выбрать её при загрузке ни к чему не привели.
Пошёл, покурил, подумал. Думаю - с флоппика ставиться - изврат,
хотя можно было на него закинуть тока ядро, остальное на флэшку. Это
уже проходил, когда делал загрузку по сети. На этом момете мозги
встают на место и соображаю - можно загрузиться по сети, и оттуда же и
поставить - благо опция загрузки по сети на буке есть.
Поехали. Для данного действа я выбрал отдельную подсеть, в которой
будут всего два компа - мой и ноут. (соединить их через свич, или
кроссовером - не забудте :)) Втыкаем CD-ROM, монтируем, копируем:
lissyara$ mount_cd9660 /dev/acd0 /cdrom/
lissyara$ cd /cdrom/
lissyara$ mkdir -p /shares/bsd6.2
lissyara$ ( tar --create --file=- * ) | \
? ( cd /shares/bsd6.2/ ; tar --extract --file=- )
Почему извращённый метод копирования? Там много хардлинков (тока
для ISO9660 они как-то иначе называются), и после копирования при
помощи cp размер прилично увеличится. Пока копируется, с другой
консоли ставим isc-dhcp:
lissyara$ cd /usr/ports/net/isc-dhcp3-server
lissyara$ make install clean
В вылезшем синем окошке посымал все галки - мне нужен минимальный
функционал. Пока собирается, и копируется, чешем на третью консоль,
пишем файл с описанием экспортируемых по NFS файловых систем:
lissyara$ more /etc/exports
#
/shares/bsd6.2 -maproot=root -network 192.168.0.0 -mask 255.255.0.0
Также, прописываем запук nfsd и dhcpd в /etc/rc.conf:
lissyara$ cat /etc/rc.conf | tail -4
nfs_server_enable="YES"
nfs_server_flags="-u -n 4"
dhcpd_enable="YES"
inetd_enable="YES"
lissyara$
У меня локалка висит на одной сетевухе, её я трогать не стал,
просто доткнул вторую, какой-то попавшийся под руку dlink. Его я тоже
прописал в /etc/rc.conf, что тоже привожу тут, чтобы был понятен
дальнейший конфиг dhcpd:
lissyara$ cat /etc/rc.conf | grep vr0
ifconfig_vr0="inet 192.168.200.254 netmask 255.255.255.0"
lissyara$
Ещё необходим tfdpd. Я использовал штатный, запускающийся через inetd:
lissyara$ grep tftp /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /shares/bsd6.2
#tftp dgram udp6 wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
lissyara$
К этому моменту isc-dhcp должен уже проинсталлится, и рисуем его
конфиг:
lissyara$ more /usr/local/etc/dhcpd.conf
# dhcpd.conf
option domain-name "my-domain.local";
option domain-name-servers my-domain.local;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style ad-hoc;
log-facility local7;
# This is a very basic subnet declaration.
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.10 192.168.200.20;
option routers lissyara.my-domain.local;
next-server 192.168.200.254;
option root-path "192.168.200.254:/shares/bsd6.2";
filename "/boot/pxeboot";
}
lissyara$
Ну и всё. Я вырубаю комп, мне надо сетевуху доткнуть, а вы можете
запустить всё это руками:
rpcbind
nfsd -u -t -n 4
mountd -r
inetd
/usr/local/etc/rc.d/isc-dhcpd start
После чего, включаем ноут, и выставляем загрузку по сети. Всё
получилось, тока ядро сумничало, и обнаружив корневую систему на NFS
(ну, не само обнаружило конечно, это DHCP сказал откуда монтировать),
загрузилось с неё. Получили полноценную фряху загруженную по сети на
ноуте... Прикольно, но не совсем то, что мне надо было. Конечно, можно
было все операции сделать руками - благо дистрибутив тут,
примонтировался, но - так неинтересно, да и всё равно sysinstall
запускать - временную зону я руками ставить не умею :(
Вспомнил, что когда грузишься с диска, файловая система в памяти,
маленький диск на пару мегов. Вот на него и надо было загрузиться, а
не на скопированный сидюк. Это уже было проще, такое я [58]проходил
раньше, посему, решилось просто - добавление строчки в конфиг лоадера
- имя устройства я подсмотрел загрузившись с сидюка:
lissyara$ more /shares/bsd6.2/boot/loader.conf | grep vfs
vfs.root.mountfrom="ufs:/dev/md0c"
lissyara$
Перезагружаем ноут, и наблюдаем окошко sysinstall. После разбиения
диска, выбора компонентов и прочих подготовительных операций, в
последнем окне, надо выбрать откуда инсталлим:
6 Media Choose the installation media type
Выбираем NFS:
6 NFS Install over NFS
и вводим путь к шаре с дистирибутивом:
+----------------------- Value Required ------------------------+
| Please enter the full NFS file specification for the remote |
| host and directory containing the FreeBSD distribution files. |
| This should be in the format: hostname:/some/freebsd/dir |
| +-----------------------------------------------------------+-+
| |192.168.200.254:/shares/bsd6.2 | |
+-+-----------------------------------------------------------+-+
| [ OK ] Cancel |
+---------------------------------------------------------------+
Всё.
См. также http://wiki.opennet.ru/NetworkBoot