Files
oav/mirrors/sparc64-nfsroot/sparc64-nfsroot-ru.html
2023-03-20 12:18:38 +01:00

238 lines
8.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html><head><title>Daemon News : Booting FreeBSD 5.0 on a Sun machine over the network</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body bgcolor="#ffffff">
<h2>Загрузка FreeBSD 5.0 на Sun машине через сеть</h2>
<h3>Anthony Volodkin &lt;<a href="mailto:anthonyv@brainlink.com">anthonyv@brainlink.com</a>&gt;</h3>
<h2>Введение</h2>
<p class="Normal">
За последние годы порт FreeBSD-sparc64 привлек значительное внимание разработчиков.
За годы было сделано многое; тем не менее, еще много предстоит сделать в области
поддержки устройств и устойчивости. Одним из недостатков порта FreeBSD-sparc64
является недостаточная поддержка некоторых набортных устройств SCSI, которые
используются на Sun Ultra 1, Ultra 2 и возможно других моделях. Это препятствует
распознаванию FreeBSD присоединенных дисководов и, таким образом, загрузке с
диска.
</p>
<p class="Normal">
Для того, чтобы позволить разработчикам протестировать их код, особенно драйверы
дисков, необходима загрузка машины без использования диска. FreeBSD Handbook
описывает процедуру загрузки бездисковой рабочей станции, но это не полностью
применимо к загрузке системы FreeBSD-sparc64 на машине, такой как Ultra 2. Решение
ниже вовлекает использование TFTP и поддержку ядром корневого раздела, подмонтированного
через NFS, для загрузки FreeBSD из сети.
</p>
<p class="Normal">
Наш пример установки вовлек быструю i386 машину, работающую под управлением
FreeBSD 4.7-RELEASE и Sun Ultra 2 с FreeBSD 5.0-DP2. Эта процедура применима к
широкому диапазону аппаратного обеспечения Sun и будет работать с поздними
выпусками FreeBSD 5.0.
</p>
<h2>Установка DHCPd</h2>
<p class="Normal">
Сперва нам необходимо загрузить и установить isc-dhcpd 3.x на машину, которая
также будет выступать в роли сервера TFTP/NFS. Вы можете обнаружить его в
<tt>/usr/ports/net/isc-dhcp3/</tt>. После завершения основной конфигурации
dhcpd, такой как определения подсети, диапазонов адресов IP, етс., мы можем
приступить к добавлению раздела host для машины, загружающейся из сети.
</p>
<p class="Normal">
Вот пример:
</p>
<pre> host divine {
hardware ethernet 08:00:20:89:cf:f3;
option host-name "divine.local.non-standard.net";
fixed-address 192.168.1.5;
always-reply-rfc1048 on;
filename "loader.nfs";
next-server 192.168.1.3;
option root-path "192.168.1.3:/storage3/sparc64-nfsroot";
}
</pre>
<p class="Normal">
Поле <tt>filename</tt> указывает на имя файла, которое должно быть первоначально
послано машине после ее первого DHCP/BOOTP запроса. Поле <tt>next-server</tt>
определяет, какой сервер должен быть использован для загрузки ядра, используя
TFTP или NFS. Опция <tt>root-path</tt> описывает, где расположено ядро на сервере
NFS.
</p>
<h2>Установка TFTPd</h2>
<p class="Normal">
Следующим шагом мы используем встроенный демон TFTP, который поставляется с
FreeBSD. Тем не менее, конфигурация по умолчанию в <tt>/etc/inetd.conf</tt>
в данном случае не будет работать правильно. Нарушения Доступа (даже пока
соответствующие права доступа не были установлены) и другие ошибки происходят
когда клиент запрашивает "/loader.nfs" вместо "loader.nfs" или наоборот.
Для того, чтобы заставить это работать, мы должны модифицировать <tt>inetd.conf</tt>
примерно следующим образом:
</p>
<pre> tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
</pre>
<p class="Normal">
Этим мы добиваемся цели, и запрос "/loader.nfs" становится идентичен "loader.nfs".
Теперь все что нам нужно сделать, это получить loader.nfs и поместить его в
директорию /tftpboot. Вы можете загрузить его с
<a href="http://non-standard.net/freebsd/loader.nfs">http://non-standard.net/freebsd/loader.nfs</a>
Для избежания каких-либо проблем с правами доступа, просто выполните следующее:
</p>
<pre> chown -R nobody:nobody /tftpboot
chmod -R 755 /tftpboot
</pre>
<h2>Установка NFS</h2>
<p class="Normal">
Теперь нам нужно загрузить ISO живой файловой системы с
<a href="ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-sparc64/5.0-DP2-disc2.iso">ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-sparc64/5.0-DP2-disc2.iso</a>
(используйте
<a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors-ftp.html">зеркало</a>),
и подмонтировать его, используя vnconfig. Обратите внимание, что <tt>vnconfig</tt> для FreeBSD 4.7
известен как <tt>mdconfig</tt> в FreeBSD 5.0-CURRENT.
</p>
<pre> vnconfig vn0 5.0-DP2-disc2.iso # ассоциируем vn0 с образом cd
mount -t cd9660 /dev/vn0c /mnt # монтируем образ
</pre>
<p class="Normal">
Скопируйте содержимое директории /mnt куда-нибудь на вашу машину. Простая
команда <tt>cp</tt> будет работать; тем не менее, живая файловая система
содержит символические ссылки, так что лучше использовать <tt>rsync</tt>.
</p>
<pre> cd /storage3/sparc64-nfsroot # переходим в будующую директорию nfsroot
rsync --progress -avr /mnt/ . # извлекаем содержимое
umount /mnt
vnconfig -u vn0
</pre>
<p class="Normal">
Создайте /etc/fstab в директории nfsroot (в данном случае это
/storage3/sparc64-nfsroot) и добавьте в него следующую информацию:
</p>
<pre> # Device Mountpoint FStype Options Dump Pass#
192.168.1.3:/storage3/sparc64-nfsroot / nfs rw 0 0
</pre>
<p class="Normal">
Добавьте следующее к /etc/exports для разрешения машине, загружающейся
из сети, монтировать ее корневую файловую систему из /storage3/sparc64-nfsroot:
</p>
<pre> /storage3/sparc64-nfsroot -maproot=root 192.168.1.5
</pre>
<p class="Normal">
Запустите демоны NFS (Если в качестве сервера вы используете машину 5.0-CURRENT,
воспользуйтесь командой <tt>rpcbind</tt> вместо <tt>portmap</tt>):
</p>
<pre> portmap
nfsd -u -t -n 4
mountd -r
rpc.statd
rpc.lockd
</pre>
<p class="Normal">
Если вы также хотите запускать NFS в момент загрузки, добавьте следующее в
/etc/rc.conf
</p>
<pre> portmap_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
</pre>
<p class="Normal">
Теперь мы готовы к сборке выборочного ядра sparc64. Ядро GENERIC, находящееся
на образе CD, не включает в себя опций, необходимых для успешной бездисковой
загрузки. Мы должны получить исходники 5.0-CURRENT, используя cvsup (обратитесь
к FreeBSD handbook для получения дальнейших инструкций) и отредактировать
"/usr/src/sys/sparc64/conf/DIVINE" (DIVINE будет нашим ядром-примером),
добавив следующее:
</p>
<pre> options BOOTP # Использовать BOOTP для получения IP адреса/имени хоста
options BOOTP_NFSROOT # Монтировать корневую файловую систему через NFS,
используя информацию BOOTP
options BOOTP_NFSV3 # Использовать NFS v3 для монтирования корня NFS
options BOOTP_COMPAT # Временное решение для прерванных демонов bootp.
options BOOTP_WIRED_TO=hme0 # Использовать интерфейс fxp0 для BOOTP
</pre>
<p class="Normal">
Затем мы соберем ядро. На машине i386 возможно пересеченное компилирование
sparc64 kernel/world:
</p>
<pre> cd /usr/src/
make TARGET_ARCH=sparc64 buildworld # buildworld для порта sparc64
make TARGET_ARCH=sparc64 buildkernel # собираем ядро sparc64
</pre>
<p class="Normal">
Когда этот процесс завершится, мы перенесем файлы:
</p>
<pre> mv /storage3/sparc64-nfsroot/boot/kernel /storage3/sparc64-nfsroot/boot/kernel.GENERIC
# перемещаем дерево ядра по умолчанию в nfsroot в другое место
mkdir /storage3/sparc64-nfsroot/boot/kernel
# создаем новую директорию kernel
cp /usr/obj/sparc64/usr/src/sys/DIVINE/* /storage3/sparc64-nfsroot/boot/kernel/
# копируем ядро, равно как и модули, в новую директорию kernel
</pre>
<p class="Normal">
Обратите внимание, что важно не делать <tt>cp -r</tt>, поскольку в директорию
kernel будут скопированы ненужные для нас в данный момент исходники.
</p>
<h2>Загрузка Sun машины</h2>
<p class="Normal">
Наконец, на приглашении OpenBoot введите следующее:
</p>
<pre> ok (0) boot net:dhcp,192.168.1.3,loader.nfs
</pre>
<p class="Normal">
Этим мы укажем необходимость использования DHCP для получения адреса IP, затем
для загрузки и выполнения loader.nfs с 192.168.1.3 через TFTP. После этого вы
увидите обычное приглашение программы login. Если ваша Ultra 2 не поддерживает
эти загрузочные опции, вы можете обновить программное обеспечение производителя
(<a href="http://sunsolve.sun.com/">http://sunsolve.sun.com/</a>).
</p>
<p class="Normal">
Комментарии или исправления приветствуются на
<a href="mailto:anthonyv@brainlink.com">anthonyv@brainlink.com</a>. Особая
благодарность Jake Burkholder за его вклад.
</p>
<p class="Normal">
</p>
<hr noshade="noshade" color="#dadada"><br>
<font class="Small">
Автор имеет все авторские права на эту статью.<br>
</font>
</body></html>