Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> установка по сети

Пример инсталляции FreeBSD c сетевого диска, через NFS.

Автор: lissyara.


    Итак. Задача - поставить 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 запускать - временную зону я руками ставить не умею :(
   Вспомнил, что когда грузишься с диска, файловая система в памяти, маленький диск на пару мегов. Вот на него и надо было загрузиться, а не на скопированный сидюк. Это уже было проще, такое я проходил раньше, посему, решилось просто - добавление строчки в конфиг лоадера - имя устройства я подсмотрел загрузившись с сидюка:
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                      |
+---------------------------------------------------------------+

Всё.



размещено: 2007-10-04,
последнее обновление: 2007-10-04,
автор: lissyara


freeman_tnu, 2007-10-04 в 16:13:56

Абалденно классно )) сенк за статью!

squid, 2007-10-04 в 16:52:08

статья интересная, спрашивал на форуме
а можно как то в такой дистриб добавить свои готовые пакеты ?
типа как на сидюке

GreenX, 2007-10-15 в 9:41:13

Если нет CD привода, но лежит образ, то можно так сделать:
mdconfig -a -t vnode -f /raid1/freebsd/6.2-release-i386-disk1.iso -u 0
mount_cd9660 /dev/md0 /mnt/instcd

eugene, 2008-08-26 в 1:44:16

>да и всё равно sysinstall запускать - временную зону я >руками ставить не умею :(

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ну, и если другой часовой пояс, то по аналогии...

densan, 2009-01-20 в 17:36:13

При попытке установить FreeBSD7.1. Выдал: Can't work out which disk we are booting from.
Guessed BIOS device 0xffffffff not found by probes, defaulting to disk0
Лечиться заменой файла pxeboot в дистрибутиве на файл pxeboot из 6.3

solo, 2009-12-22 в 22:54:53

странно все сделано по статье, машина словила пребут но как только доходит до
\"Trying to mount root from nfs:
NFS ROOT: 192.168.15.1:/usr/shares/bsd/mnt\"
и засыпает

айпи адреса в конфигах перепроверил, не знаю что даже предпринять.

egor_g, 2010-04-25 в 2:05:56

Проблема как у solo, только через некоторое время выдает
"NFS MOUNT RPC error: 60"

egor_g, 2010-04-25 в 2:16:35

Все заработало.
У меня нет домена и DNS провайдера на второй сетевухе
Убрал в /usr/local/etc/dhcpd.conf все упоминания о домене и заработало

я, 2010-06-09 в 17:04:30

при загрузке фри, во время монченья выдало ROOT MOUNT ERROR
нфс гружу модулем, из ядра убрал

BlackCat, 2010-08-22 в 2:21:02

При установке 8.1 не монтируется корневая фс, лечится заменой в loader.conf:
vfs.root.mountfrom="ufs:/dev/md0c"
на
vfs.root.mountfrom="ufs:/dev/md0a"
Использовался образ FreeBSD-8.1-RELEASE-i386-bootonly.iso

Александр, 2010-09-08 в 17:38:53

Все сделал по статье, в процессе инсталяции доходит до Mounting 192.168.0.254:/tftpboot over NFS on /dist
и засыпает. Все конфиги перепроверил, не знаю что делать. Помогите.

Александр, 2010-09-13 в 12:03:46

Отвєчаю на свой жє вопрос: прі стартє nfs в сєті должєн бить хотя би один включенний компьютєр, в протівном случає, всє запускаєтся но клиент отваливаєтся по тамауту. В моєм случає в сєті било два компьютєра: с кого ставилась сістєма, і на кого ставилась сістєма, єстєствєнно что на момєнт старта пєрвого компьютєра второй бил виключєн. Как только подключіл в сеть третий компьютер, которий єстєствєнно бил включєн всє заработало. Возможно ето особєнності сістєми, а возможно моі крівиє рукі. Хотєлось би услишать коментаріі боле кваліфіцированих в етом вопросє людєй.

grvs, 2010-11-16 в 8:11:50

В nfs_server_flags="-u -n 4" нужно добавить -t чтобы nfsd использовал TCP сокет

Felix, 2012-01-25 в 11:45:52

grvs, 2010-11-16 в 8:11:50

В nfs_server_flags="-u -n 4" нужно добавить -t чтобы nfsd использовал TCP сокет


у меня без параметра -t на link up тормозит так что если у кого на 8.2 линк не переподнимается то -t в rc.conf
nfs_server_flags="-u -n 4 -t

и -n 4 можно убрать толку от него нету всеравно разовый коннект

Felix, 2012-01-25 в 11:52:57

BlackCat, 2010-08-22 в 2:21:02

При установке 8.1 не монтируется корневая фс, лечится заменой в loader.conf:
vfs.root.mountfrom="ufs:/dev/md0c"
на
vfs.root.mountfrom="ufs:/dev/md0a"
Использовался образ FreeBSD-8.1-RELEASE-i386-bootonly.iso


Аналлогично на 8.2

если без параметра  vfs.root.mountfrom="ufs:/dev/md0a"
в /shares/bsd6.2/boot/loader.conf

то грузится просто консоль с просьбой ввести пользователя а потом ручками sysinstall а если спараметром то норм грузится как с диска

пасиб ребят вылучшие :)



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.058 секунд
Из них PHP: 26%; SQL: 74%; Число SQL-запросов: 86 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 35286