%articles.ent; ]>
Бездисковый X-сервер: руководство по настройке Jerry Kendall
jerry@kcis.com
28 декабря 1996 1996 Jerry Kendall &tm-attrib.freebsd; &tm-attrib.3com; &tm-attrib.microsoft; &tm-attrib.sun; &tm-attrib.general; С помощью нескольких друзей из списка рассылки 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) приводится ниже. <filename>config.sys</filename> [menu] menuitem=normal, normal menuitem=unix, unix [normal] .... normal config.sys stuff ... [unix] <filename>autoexec.bat</filename> @ECHO OFF goto %config% :normal ... normal autoexec.bat stuff ... goto end :unix cd \netboot nb8390.com :end Получение программ для сетевой загрузки (на сервере) Откомпилируйте программы net-boot, расположенные в каталоге /usr/src/sys/i386/boot/netboot. Вы должны прочесть замечания в начале файла Makefile. Измените настройки, как это нужно. Сделайте резервную копию оригинала на тот случай, если что-то пойдёт не так, как ожидалось. Когда построение будет закончено, должно получиться 2 выполнимых файла для &ms-dos;, nb8390.com и nb3c509.com. Одна из этих программ и будет тем, что вам нужно запустить на бездисковом сервере. Она будет загружать ядро с сервера. На этом этапе поместите обе программы на загрузочную дискету &ms-dos;, созданную ранее. Определите, какую программу нужно запускать (на бездисковой системе) Если вы знаете, какой набор микросхем используется в вашем адаптере Ethernet, это легко. Если у вас используется набор микросхем NS8390 или другой на ее основе, то нужно использовать nb8390.com. Если у вас используется набор микросхем на основе &tm.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, то пошлите программе &man.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 Если вы не используете &man.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 Приветствуются любые замечания и вопросы.