Copyright © 1996 Jerry Kendall
28 декабря 1996
FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.
3Com и HomeConnect это зарегистрированные торговые марки 3Com Corporation.
Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media и Windows NT это или зарегистрированные торговые марки или торговые марки Microsoft Corporation в Соединенных Штатах и/или других странах.
Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS и Ultra это торговые марки или зарегистрированные торговые марки Sun Microsystems, Inc. в Соединенных Штатах и других странах.
Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''™'' или ''®''.
С помощью нескольких друзей из списка рассылки FreeBSD-hackers я смог настроить бездисковый X-терминал. Создание X-терминала, во-первых, требует сначала настройки бездисковой системы с минимальным набором утилит, доступных через NFS. Те же самые шаги были применены для создания двух разных бездисковых систем. Первая из них была altair.example.com. Бездисковый X-терминал, который работал на моей старой машине 386DX-40. На ней был диск объемом 340 мегабайт, но я не хотел его менять. Так что машина загружалась с antares.example.com по сети Ethernet. Второй системой является 486DX2-66. Я настроил (полностью) бездисковую систему FreeBSD, которая не использует локальный диск. Сервером в этом случае выступает Sun 670MP под управлением SunOS™ 4.1.3. В обоих случаях требовалась одна и та же начальная настройка.
Я уверен, что к этому есть что добавить. Пожалуйста, присылайте мне любые замечания.
Так как сетевые начальные загрузчики не будут работать с некоторыми резидентными (TSR) и прочими программами, используемыми в MS-DOS®, то лучше создать отдельную загрузочную дискету, или, если вы можете, создать меню MS-DOS, которое будет (при помощи файлов config.sys/autoexec.bat) спрашивать, какую конфигурацию следует загрузить при запуске системы. Я использовал последний метод и он прекрасно работает. Мое меню MS-DOS (6.x) приводится ниже.
Откомпилируйте программы ''net-boot'', расположенные в каталоге /usr/src/sys/i386/boot/netboot. Вы должны прочесть замечания в начале файла Makefile. Измените настройки, как это нужно. Сделайте резервную копию оригинала на тот случай, если что-то пойдёт не так, как ожидалось. Когда построение будет закончено, должно получиться 2 выполнимых файла для MS-DOS, nb8390.com и nb3c509.com. Одна из этих программ и будет тем, что вам нужно запустить на бездисковом сервере. Она будет загружать ядро с сервера. На этом этапе поместите обе программы на загрузочную дискету MS-DOS, созданную ранее.
Если вы знаете, какой набор микросхем используется в вашем адаптере Ethernet, это легко. Если у вас используется набор микросхем NS8390 или другой на ее основе, то нужно использовать nb8390.com. Если у вас используется набор микросхем на основе 3Com® 509, то используйте программу загрузки nb3C509.com. Если вы не уверены в том, что у вас установлено, попробуйте использовать любой, и если он выдаст сообщение “No adapter found”, попробуйте другой. Кроме этого, вам ничего не остается делать.
Загрузите бездисковую систему без каких-либо файлов config.sys/autoexec.bat. Попробуйте запустить загрузочную программу для вашего адаптера Ethernet.
Мой адаптер Ethernet работает на наборе WD8013 в 16-разрядном режиме, так что я запускаю nb8390.com
C:> cd \netboot C:> nb8390 Boot from Network (Y/N) ? Y BOOTP/TFTP/NFS bootstrap loader ESC for menu Searching for adapter.. WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66 Searching for server...
Теперь моя бездисковая система пытается найти машину, которая выступает в качестве сервера загрузки. Запомните строку addr выше, позже она вам понадобится. Перезагрузите бездисковую систему и измените ваши файлы config.sys и autoexec.bat, чтобы они выполняли эти действия автоматически. Может быть, в меню. Если вы запускали nb3c509.com, а не nb8390.com, то выводимые сообщения будут точно такими же. Если вы получили сообщение “No adapter found” после Searching for adapter..., проверьте правильность задания параметров времени компиляции в файле Makefile.
Проверьте, что в файле /etc/inetd.conf имеются записи для tftp и bootps. Ниже показаны мои записи:
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot # # Additions by who ever you are bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab
Если вы изменили файл /etc/inetd.conf, то пошлите программе inetd(8) сигнал HUP. Для этого найдите ID процесса inetd командой ps -ax | grep inetd | grep -v grep. После этого пошлите ему сигнал HUP. Это делается командой kill -HUP <pid>. Это заставит inetd повторно прочесть свой конфигурационный файл.
Не забыли ли вы строку с addr из вывода начального загрузчика на бездисковой системе? Как вы можете угадать, теперь он вам требуется.
Добавьте запись в файл /etc/bootptab (может быть, вам потребуется его создать). Она должна иметь следующий вид:
altair:\ :ht=ether:\ :ha=004001432666:\ :sm=255.255.255.0:\ :hn:\ :ds=199.246.76.1:\ :ip=199.246.76.2:\ :gw=199.246.76.1:\ :vm=rfc1048:
Строки имеют такой смысл:
altair | название бездисковой системы без доменной части. |
ht=ether | тип оборудования ''ethernet''. |
ha=004001432666 | аппаратный адрес (число, записанное ранее). |
sm=255.255.255.0 | маска подсети. |
hn | указывает серверу посылать клиенту его имя хоста. |
ds=199.246.76.1 | указывает клиенту расположение сервера имен. |
ip=199.246.76.2 | указывает клиенту его IP-адрес. |
gw=199.246.76.1 | указывает клиенту маршрутизатор по умолчанию. |
vm=... | просто оставьте это так. |
Замечание: Проверьте правильность настройки IP-адресов, адреса выше являются моими.
Создайте каталог /tftpboot, в котором будут располагаться конфигурационные файлы для бездисковых систем, которые будет обслуживать сервер. Эти файлы будут именоваться cfg.ip, где ip является IP-адресом бездисковой системы. Конфигурационный файл для altair будет носить название /tftpboot/cfg.199.246.76.2. Его содержимое:
rootfs 199.246.76.1:/DiskLess/rootfs/altair hostname altair.example.com
Строка hostname altair.example.com просто указывает бездисковой системе её полное доменное имя.
Строка rootfs 199.246.76.1:/DiskLess/rootfs/altair указывает бездисковой системе местоположение ее корневой файловой системы, монтируемой по протоколу NFS.
Замечание: Корневая файловая система, монтируемая через NFS, будет монтироваться в режиме только для чтения.
Дерево для бездисковой системы может быть смонтировано повторно с правом на выполнение операций чтения и записи, если это потребуется.
Я использую свой никому не нужный 386DX-40 в качестве выделенного X-терминала.
Дерево для altair имеет такой вид:
/
/bin
/etc
/tmp
/sbin
/dev
/dev/fd
/usr
/var
/var/run
Вот реальный список файлов:
-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel -r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh -rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc -rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys -rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts -rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair -r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init -r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig -r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs -r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot -r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount -r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local -r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV
Если вы не используете devfs(5) (которая во FreeBSD 5.X по умолчанию активирована), то должны убедиться, что запускали команду MAKEDEV all в каталоге dev.
Мой /etc/rc для altair выглядит вот так:
#!/bin/sh # PATH=/bin:/ export PATH # # configure the localhost /sbin/ifconfig lo0 127.0.0.1 # # configure the ethernet card /sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00 # # mount the root filesystem via NFS /sbin/mount antares:/DiskLess/rootfs/altair / # # mount the /usr filesystem via NFS /sbin/mount antares:/DiskLess/usr /usr # /usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1 # # Reboot after X exits /sbin/reboot # # We blew up.... exit 1
Приветствуются любые замечания и вопросы.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.