<HTML><HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
-<META NAME="DESCRIPTION" CONTENT="ïÐÉÓÁÎÉÅ ËÁË ÓÄÅÌÁÔØ NFS-ÒÕÔ ÄÌÑ
-X-ÔÅÒÍÉÎÁÌÁ ÍÉÎÉÍÁÌØÎÙÈ ÒÁÚÍÅÒÏ× ÉÓÐÏÌØÚÕÑ ÄÉÓÔÒÉÂÕÔÉ× Debian
+<META HTTP-EQUIV="Content-Type" "text/html; charset=utf-8">
+<META NAME="DESCRIPTION" CONTENT="Описание как сделать NFS-рут для
+X-терминала минимальных размеров используя дистрибутив Debian
etch">
<TITLE>Creating diskless X-terminal with Debian etch</TITLE>
</HEAD><BODY>
-<H1>óÏÚÄÁÎÉÅ ÂÅÚÄÉÓËÏ×ÏÇÏ X-ÔÅÒÍÉÎÁÌÁ Ó ÐÏÍÏÝØÀ Debian etch</h1>
+<H1>Создание бездискового X-терминала с помощью Debian etch</h1>
<p>
-÷ ÓÏÓÔÁ× Debian etch ×ÈÏÄÑÔ ÐÁËÅÔÙ ltsp-server É ltsp-utils, ÓÐÅÃÉÁÌØÎÏ
-ÐÒÅÄÎÁÚÎÁÞÅÎÎÙÅ ÄÌÑ ÓÏÚÄÁÎÉÑ ÔÏÎËÉÈ ËÌÉÅÎÔÏ×. îÏ ÍÎÅ ÞÔÏ-ÔÏ ÐÏÌÕÞÉ×ÛÁÑÓÑ
-"ÔÏÎËÏÓÔØ" ÎÅ ÐÏÎÒÁ×ÉÌÁÓØ.
+В состав Debian etch входят пакеты ltsp-server и ltsp-utils, специально
+пÑ\80едназнаÑ\87еннÑ\8bе длÑ\8f Ñ\81озданиÑ\8f Ñ\82онкиÑ\85 клиенÑ\82ов. Ð\9dо мне Ñ\87Ñ\82о-Ñ\82о полÑ\83Ñ\87ивÑ\88аÑ\8fÑ\81Ñ\8f
+"тонкость" не понравилась.
</p>
<p>
-ðÏÜÔÏÍÕ Ñ ÐÏÛÅÌ ÄÒÕÇÉÍ ÐÕÔÅÍ
+Поэтому я пошел другим путем
</p>
<p>
-óÎÁÞÁÌÁ Ñ ÞÅÓÔÎÏ ÐÏÐÙÔÁÌÓÑ ×ÏÓÐÏÌØÚÏ×ÁÔØÓÑ debootstrap, ÎÏ ËÁË
-×ÙÑÓÎÉÌÏÓØ, ÚÁ×ÉÓÉÍÏÓÔÉ Õ ÔÒÅÂÕÅÍÙÈ ÄÌÑ X-ÔÅÒÍÉÎÁÌÁ ÐÁËÅÔÏ× ÔÁËÉÅ,
-ÞÔÏ ÏÊ. ðÏÌÕÞÉÔÓÑ ÎÅ ÍÅÎØÛÅ, ÞÅÍ Õ ltsp.
+Сначала я честно попытался воспользоваться debootstrap, но как
+выяснилось, зависимости у требуемых для X-терминала пакетов такие,
+что ой. Получится не меньше, чем у ltsp.
</p>
<p>
-á ÍÎÅ × ÉÔÏÇÅ ÕÄÁÌÏÓØ ÕÌÏÖÉÔØÓÑ × 28íÂ. ôÏÖÅ ÍÎÏÇÏ, ÎÏ ÕÖÅ ÅÓÌÉ
-ÚÁÈÏÞÅÔÓÑ, ÍÏÖÎÏ ×ÍÅÓÔÏ ÓÅÔÅ×ÏÊ ÚÁÇÒÕÚËÉ ÎÅÎÕÖÎÕÀ 32í CF-ËÕ ÎÁ IDE
-ÐÒÉÃÅÐÉÔØ.
+А мне в итоге удалось уложиться в 28Мб. Тоже много, но уже если
+захочется, можно вместо сетевой загрузки ненужную 32Мб CF-ку на IDE
+пÑ\80иÑ\86епиÑ\82Ñ\8c.
</p>
-<h2>ðÏÓÔÁÎÏ×ËÁ ÚÁÄÁÞÉ</h2>
+<h2>Постановка задачи</h2>
<p>
-éÍÅÅÔÓÑ ÓÉÓÔÅÍÁ, ÓÏÄÅÒÖÁÝÁÑ ×ÉÄÅÏËÁÒÔÕ, ÓÅÔÅ×ÕÀ ËÁÒÔÕ Ó PXE-bootrom,
-Ú×ÕËÏ×ÕÀ ËÁÒÔÕ, ÆÌÏÐÏ×ÏÄ É ÎÅÍÎÏÖËÏ ÐÁÍÑÔÉ (Õ ÍÅÎÑ - 64 ÍÂ).
-èÏÞÅÔÓÑ ÞÔÏÂÙ ÜÔÁ ÛÔÕËÁ ÐÒÅ×ÒÁÔÉÌÁÓØ × ÐÏÌÎÏÃÅÎÎÏÅ ÒÁÂÏÞÅÅ ÍÅÓÔÏ, ÇÄÅ
-ÍÏÖÎÏ ÒÁÂÏÔÁÔØ Ó ÐÒÉÌÏÖÅÎÉÑÍÉ, × ÔÏÍ ÞÉÓÌÅ É ÒÁÂÏÔÁÀÝÉÍÉ ÓÏ Ú×ÕËÏÍ,
-ÞÉÔÁÔØ ÄÉÓËÅÔÙ É USB-ÆÌÜÛËÉ.
+Имеется система, содержащая видеокарту, сетевую карту с PXE-bootrom,
+звуковую карту, флоповод и немножко памяти (у меня - 64 мб).
+Хочется чтобы эта штука превратилась в полноценное рабочее место, где
+можно работать с приложениями, в том числе и работающими со звуком,
+читать дискеты и USB-флэшки.
</p>
<p>
-äÌÑ ÜÔÏÇÏ ÎÁÍ ÎÕÖÎÏ ÞÔÏÂÙ ÎÁ ÜÔÏÊ ÓÉÓÔÅÍÅ ÚÁÐÕÓÔÉÌÉÓØ X-ÓÅÒ×ÅÒ, nasd
-(ÖÅÌÁÀÝÉÅ ÍÏÇÕÔ ÒÁÚÒÁÂÏÔÁÔØ ×ÁÒÉÁÎÔ Ó PulseAudio ÉÌÉ esd), É Ä×Á floppyd
-- ÏÄÉÎ ÎÁ ÄÉÓËÏ×ÏÄ, ÄÒÕÇÏÊ ÎÁ ÕÓÔÒÏÊÓÔ×Ï /dev/sda1.
+Для этого нам нужно чтобы на этой системе запустились X-сервер, nasd
+(желающие могут разработать вариант с PulseAudio или esd), и два floppyd
+- один на дисковод, другой на устройство /dev/sda1.
</p>
-<h2>ðÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÄÅÊÓÔ×ÉÊ:</h2>
+<h2>Последовательность действий:</h2>
<p>
-óÎÁÞÁÌÁ ÓÏÂÉÒÁÅÍ ÑÄÒÏ Ó ÐÏÍÏÝØÀ kernel-package. ÷ ÐÁËÅÔ. ñÄÒÏ ÓÏÂÉÒÁÅÍ
-ÂÅÚ initrd, ÓÏ ×ÓÅÍÉ ÎÕÖÎÙÍÉ ÍÏÄÕÌÑÍÉ ÓÅÔÅ×ÙÈ ËÁÒÔ É ÐÏÄÄÅÒÖËÏÊ NFS-root
-×ÎÕÔÒÉ. ú×ÕË É ÐÏÄÄÅÒÖËÕ USB ÍÏÖÎÏ ÍÏÄÕÌÑÍÉ. USB ÎÁÍ ÎÕÖÎÁ ÒÁÄÉ
-usb-storage, ÞÔÏÂÙ ÍÏÖÎÏ ÂÙÌÏ ×ÔÙËÁÔØ ÆÌÜÛËÉ × ÔÅÒÍÉÎÁÌ É ÉÈ ÞÉÔÁÔØ Ó
-ÐÏÍÏÝØÀ mtools
+Сначала собираем ядро с помощью kernel-package. В пакет. Ядро собираем
+без initrd, со всеми нужными модулями сетевых карт и поддержкой NFS-root
+внутри. В смысле <b>NFS-клиент не должен быть модулем</b>. Иначе
+NFS-root не включится.
+</p><p>
+Звук и поддержку USB можно модулями. USB нам нужна ради
+usb-storage, чтобы можно было втыкать флэшки в терминал и их читать с
+помощью mtools. Кроме того, может оказаться полезным использовать
+внешнюю USB-аудиокарту
</p>
<p>
-âÅÒÅÍ ÎÁÂÏÒ ÓÌÅÄÕÀÝÉÊ ÐÁËÅÔÏ× (ÎÅËÏÔÏÒÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÂÕÄÕÔ
-ÎÅÕÄÏ×ÌÅÔ×ÏÒÅÎÙ, ÎÏ ÄÌÑ ÎÕÖÎÏÊ ÎÁÍ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ È×ÁÔÉÔ)
+Берем набор следующий пакетов (некоторые зависимости будут
+неудовлетворены, но для нужной нам функциональности хватит)
</p>
<pre>
libc6
busybox
-modutils (ÜÔÏ ÅÓÌÉ Ó ÑÄÒÏÍ 2.4. åÓÌÉ 2.6, ÔÏ module-init-tools)
+modutils (это если с ядром 2.4. Если 2.6, то module-init-tools)
libwrap0
portmap
nfs-common
zlib1g
libfreetype6
xserver-xorg-core
-xserver-xorg-video-ati <i>(ÜÔÏ Õ ÍÅÎÑ ati. õ ×ÁÓ ÍÏÖÅÔ ÂÙÔØ ÄÒÕÇÏÅ. ÷
-ÐÒÉÎÃÉÐÅ, installed-size Õ ÄÒÁÊ×ÅÒÏ× ÍÁÌÅÎØËÉÊ, ÍÏÖÅÔÅ ÈÏÔØ ×ÓÅ
-ÚÁÓÏÂÁÞÉÔØ)</i>
+xserver-xorg-video-ati <i>(это у меня ati. У вас может быть другое. В
+пÑ\80инÑ\86ипе, installed-size Ñ\83 дÑ\80айвеÑ\80ов маленÑ\8cкий, можеÑ\82е Ñ\85оÑ\82Ñ\8c вÑ\81е
+засобачить)</i>
xserver-xorg-input-kbd
xserver-xorg-input-mouse
xserver-xorg-input-evdev
</pre>
<p>
-÷ÙÂÉÒÁÅÍ ÎÅËÏÔÏÒÕÀ ÄÉÒÅËÔÏÒÉÀ (Õ ÍÅÎÑ /var/diskless), ÏÔËÕÄÁ ÜÔÏ ÄÅÌÏ
-ÂÕÄÅÔ ÒÁÚÄÁ×ÁÔØÓÑ ÐÏ NFS.
+Выбираем некоторую директорию (у меня /var/diskless), откуда это дело
+будет раздаваться по NFS.
</p>
<p>
-òÁÓÐÁËÏ×Ù×ÁÅÍ ÔÕÄÁ ÐÅÒÅÞÉÓÌÅÎÙÎÎÙÅ ÐÁËÅÔÙ c ÐÏÍÏÝØÀ
+Распаковываем туда перечисленынные пакеты c помощью
</p>
<pre>
-dpkg-deb -X ÐÁËÅÔ ÄÉÒÅËÔÏÒÉÑ
+dpkg-deb -х пакет директория
</pre>
<p>
-îÉËÁËÉÅ postinst ÓËÒÉÐÔÙ ÎÅ ×ÙÐÏÌÎÑÀÔÓÑ, ÎÏ × ÄÁÎÎÏÍ ÓÌÕÞÁÅ
-ÎÅÔÒÉ×ÉÁÌØÎÙÈ postinst-ÓËÒÉÐÔÏ× É ÎÅÔ. ÷ÍÅÓÔÏ ÜÔÏÇÏ ÄÅÌÁÅÍ ÓÌÅÄÕÀÝÅÅ
+Никакие postinst скрипты не выполняются, но в данном случае
+нетривиальных postinst-скриптов и нет. Вместо этого делаем следующее
</p>
<pre>
# chroot /var/diskless /bin/busybox sh
/ # exit
</pre>
<p>
-÷Ù, ÎÁ×ÅÒÎÏÅ, ÕÄÉ×ÉÔÅÓØ: "á ÇÄÅ ÖÅ ÐÁËÅÔ xkb-data". á ÎÅÔÕ. íÙ ÂÕÄÅÍ ÚÁÐÕÓËÁÔØ xkbcomp Ó ÈÏÓÔÁ, ÐÒÉ ÌÏÇÉÎÅ ÉÚ .xsession. ôÁËÉÍ ÏÂÒÁÚÏÍ Õ ËÁÖÄÏÇÏ ÀÚÅÒÁ ÍÏÖÅÔ ÂÙÔØ ÓÏÂÓÔ×ÅÎÎÁÑ ÒÁÓËÌÁÄËÁ ËÌÁ×ÉÁÔÕÒÙ.
+Вы, наверное, удивитесь: "А где же пакет xkb-data". А нету. Мы будем запускать xkbcomp с хоста, при логине из .xsession. Таким образом у каждого юзера может быть собственная раскладка клавиатуры.
</p>
-ôÅÐÅÒØ ÎÁÄÏ ÄÏÐÏÌÎÉÔÅÌØÎÏ ÓÏÚÄÁÔØ ÆÁÊÌ
+Теперь надо дополнительно создать файл
<tt>/var/diskless/etc/X11/Xwrapper.config</tt>
-(Ñ ÎÅ ÍÕÄÒÓÔ×ÕÑ ÌÕËÁ×Ï ÓËÏÐÉÒÏ×ÁÌ ÅÇÏ Ó ÈÏÓÔÁ),
-ÓÏÚÄÁÔØ ÓÉÍÌÉÎË <tt>/var/diskless/etc/X11/X</tt>, ×ÅÄÕÝÉÊ ÎÁ
-<tt>/usr/bin/Xorg</tt> (ÁÇÁ,
-ÉÍÅÎÎÏ ÓÏ ÓÌÜÛÏÍ ×ÎÁÞÁÌÅ). âÏÌØÛÉÅ ÜÓÔÅÔÙ ÍÏÇÕÔ ÓÏÚÄÁ×ÁÔØ ÅÇÏ ÚÁÊÄÑ ×
-chroot É ÚÁÐÕÓÔÉ× ÔÁÍ busybox-Ï×ÓËÉÊ ÛÅÌÌ, ÎÏ Ñ É ÔÁË ÏÂÏÛÅÌÓÑ,
-ÓÏÚÄÁÔØ ÄÉÒÅËÔÏÒÉÉ /dev /tmp É /var/log É ÎÁÓÅÌÉÔØ dev ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍÉ
-ÓÐÅÃÉÁÌØÎÙÍÉ ÆÁÊÌÁÍÉ. õ ÍÅÎÑ ÔÁÍ
+(Ñ\8f не мÑ\83дÑ\80Ñ\81Ñ\82вÑ\83Ñ\8f лÑ\83каво Ñ\81копиÑ\80овал его Ñ\81 Ñ\85оÑ\81Ñ\82а),
+создать симлинк <tt>/var/diskless/etc/X11/X</tt>, ведущий на
+<tt>/usr/bin/Xorg</tt> (ага,
+именно со слэшом вначале). Большие эстеты могут создавать его зайдя в
+chroot и запустив там busybox-овский шелл, но я и так обошелся,
+создать директории /dev /tmp и /var/log и населить dev соответствующими
+специальными файлами. У меня там
<pre>
audio dsp0 mem port sda1 sda13 sda3 sda7 tty1 tty5
audio0 fd0 mixer psaux sda10 sda14 sda4 sda8 tty2 tty6
dsp kmem null sda sda12 sda2 sda6 tty0 tty4 zero
</pre>
<p>
-÷ ÐÒÉÎÃÉÐÅ, ÞÁÓÔØ tty ÍÏÖÎÏ ÐÏÏÔÒÙ×ÁÔØ, ÄÁ É ÒÁÚÄÅÌÙ sda ËÒÏÍÅ sda1 ÎÅ
-ÎÕÖÎÙ.
+В принципе, часть tty можно поотрывать, да и разделы sda кроме sda1 не
+нужны.
</p>
<p>
-ëÌÁÄÅÍ xorg.conf × /etc/X11 (Õ ÎÅÇÏ ÄÏÌÖÅÎ ÂÙÔØ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÜÌÅÍÅÎÔ
-font-path, ÕËÁÚÙ×ÁÀÝÉÊ ÎÁ ÆÏÎÔ-ÓÅÒ×ÅÒ) É ÉÍÅÅÍ ÐÒÁËÔÉÞÅÓËÉ ÇÏÔÏ×ÕÀ
-ÓÉÓÔÅÍÕ, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ init.
+Кладем xorg.conf в /etc/X11 (у него должен быть единственный элемент
+font-path, указывающий на фонт-сервер) и имеем практически готовую
+систему, за исключением init.
+<p>
+Если у нас несколько терминалов, которым нужны разные конфигурации x-ов,
+то описываем в xorg.conf несколько секций ServerLayout с
+идентификаторами, соответствущими именам хостов (которые будут потом
+розданы по dhcp как option host-name).
</p>
<p>
-÷ÍÅÓÔÏ init ËÌÁÄÅÍ ÛÅÌÌÏ×ÓËÉÊ ÓËÒÉÐÔ ÓÌÅÄÕÀÝÅÇÏ ÓÏÄÅÒÖÁÎÉÑ:
+Вместо init кладем шелловский скрипт следующего содержания:
</p>
<font face="monospace">
<font color="#aaaa00">echo</font><font color="#ff6060"> mounting all filesystems</font><br>
mount /proc<br>
mount /proc/bus/usb<br>
-<font color="#aaaa00">echo</font><font color="#ff6060"> clearing /tmp</font><br>
-<font color="#aaaa00">cd</font> /tmp<font color="#aaaa00">&&</font> rm -rf * .sockets .X0-lock<br>
+mount -t ramfs none /tmp</br>
+chmod 1777 /tmp</br>
<br>
<font color="#aaaa00">echo</font><font color="#ff6060"> -n starting floppyd</font><br>
floppyd -r root -d /dev/fd0<font color="#aaaa00">&&</font> <font color="#aaaa00">echo</font><font color="#ff6060"> -n </font><font color="#aaaa00">"</font><font color="#ff6060"> floppy</font><font color="#aaaa00">"</font><font color="#ff6060"> </font><br>
floppyd -r root -s <font color="#ff6060">5704</font> /dev/sda1<font color="#aaaa00">&&</font> <font color="#aaaa00">echo</font><font color="#ff6060"> -n </font><font color="#aaaa00">"</font><font color="#ff6060"> flash</font><font color="#aaaa00">"</font><br>
<font color="#aaaa00">echo</font><font color="#ff6060"> .</font><br>
<br>
+HOSTNAME=`hostname`
+dmesg > /var/log/dmesg.$hostname.log
respawn <font color="#aaaa00">"</font><font color="#ff6060">nasd -aa</font><font color="#aaaa00">"</font><br>
-respawn <font color="#aaaa00">"</font><font color="#ff6060">X -query wagner.wagner.home</font><font color="#aaaa00">"</font><br>
+respawn <font color="#aaaa00">"</font><font color="#ff6060">X -query wagner.wagner.home -logfile /var/log/Xorg.$HOSTNAME.log -layout $HOSTNAME</font><font color="#aaaa00">"</font><br>
<font color="#aaaa00">wait</font><br>
</font>
-ôÅÐÅÒØ ÐÏÌÕÞÉ×ÛÕÀÓÑ ÄÉÒÅËÔÏÒÉÀ ÎÁÄÏ ÒÁÚÄÁÔØ ÐÏ NFS Ó ÏÐÃÉÑÍÉ
+Теперь получившуюся директорию надо раздать по NFS с опциями
rw,no_root_squash
-É ÍÏÖÎÏ ÎÁÓÔÒÁÉ×ÁÔØ ÓÏÂÓÔ×ÅÎÎÏ ÚÁÇÒÕÚËÕ.
+и можно настраивать собственно загрузку.
+<h2>Настройка X-ов</h2>
+<p>Как можно было заметить выше, X-серверу на терминале передается опция
+"-layout $HOSTNAME", позволяющая задать свою конфигурацию X-ов для
+каждого терминала.</p>
+<p>
+Соответственно, в <tt>/var/diskless/etc/X11/xorg.conf</tt> должна
+присутствовать секция ServerLayout с идентификатором, соответствующем
+имени терминала.
+<pre>
+Section "ServerLayout"
+ Identifier "xterm5"
+ Screen "xterm5-screen"
+ InputDevice "Generic Keyboard"
+ InputDevice "USB Mouse"
+EndSection
+</pre>
+и соответствующая секция Screen
+<pre>
+Section "Screen"
+ Identifier "xterm5-screen"
+ Device "FoxConOnboard"
+ Monitor "Roverscan"
+ DefaultDepth 16
+ ...
+</pre>
-<h2>îÁÓÔÒÏÊÒËÁ ÚÁÇÒÕÚËÉ</h2>
+
+<h2>Настройрка загрузки</h2>
<p>
-óÔÁ×ÉÍ ÎÁ ÈÏÓÔ ÐÁËÅÔÙ syslinux, dhcp3-server É tftp-hpa. ÷ ËÏÍÁÎÄÎÕÀ ÓÔÒÏËÕ
-tftp-hpa ÎÕÖÎÏ ÄÏÂÁ×ÉÔØ ÏÐÃÉÀ -r blksize, ÐÏÔÏÍÕ ÞÔÏ Õ ÎÅËÏÔÏÒÙÈ PXEboot
-ROM ÐÒÏÂÌÅÍÙ Ó ÜÔÏÊ ÏÐÃÉÅÊ.
+Ставим на хост пакеты syslinux, dhcp3-server и tftp-hpa. В командную строку
+tftp-hpa нужно добавить опцию -r blksize, потому что у некоторых PXEboot
+ROM пÑ\80облемÑ\8b Ñ\81 Ñ\8dÑ\82ой опÑ\86ией.
</p>
<p>
-/usr/lib/pxelinux.0 É ÑÄÒÏ ÉÚ /var/diskless/boot ËÏÐÉÒÕÅÍ ×
+/usr/lib/pxelinux.0 и ядро из /var/diskless/boot копируем в
/var/lib/tftpboot.
</p>
<p>
-óÏÚÄÁÅÍ ÄÉÒÅËÔÏÒÉÀ /var/lib/ftpboot/pxelinux.cfg É ÐÏÍÅÝÁÅÍ ÔÕÄÁ ÆÁÊÌ
-default ÓÌÅÄÕÀÝÅÇÏ ÓÏÄÅÒÖÁÎÉÑ:
+Создаем директорию /var/lib/ftpboot/pxelinux.cfg и помещаем туда файл
+default следующего содержания:
<pre>
-DEFAULT term root=/dev/nfs ip=192.168.217.5:192.168.217.1:192.168.217.1:255.255.255.0:xterm3:eth0:dhcp nfsroot=192.168.217.1:/var/diskless rw
+DEFAULT term root=/dev/nfs ip=dhcp rw
LABEL term
KERNEL vmlinuz-2.4.27-terminals
</pre>
<p>
-åÓÌÉ ÐÏÞÉÔÁÔØ ÐÏÌÕÞÛÅ ÄÏËÕÍÅÎÔÁÃÉÀ ÎÁ ÏÐÃÉÀ nfsroot × ÑÄÒÅ, ÍÏÖÅÔ ÂÙÔØ
-ÕÄÁÓÔÓÑ ÏÂÏÊÔÉÓØ ÂÅÚ ËÏÍÁÎÄÙ ip, ËÏÔÏÒÁÑ ÆÁËÔØÞÅÓËÉ ÐÒÉ×ÏÄÉÔ Ë
-ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÎÁÌÉÞÉÑ ÏÔÄÅÌØÎÏÇÏ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÏÇÏ ÆÁÊÌÁ ÄÌÑ ËÁÖÄÏÇÏ
-ÔÅÒÍÉÎÁÌÁ. îÏ Ñ ÐÏËÁ ÎÅ ÓÔÁÌ Ó ÜÔÉÍ ÚÁÍÏÒÁÞÉ×ÁÔÓØÑ, ÐÏÔÏÍÕ ÞÔÏ pxelinux
-ÐÏÚ×ÏÌÑÅÔ ÉÓËÁÔØ ËÏÎÆÉÇÕÒÁÃÉÏÎÎÙÊ ÆÁÊÌ ÐÏ IP-ÁÄÒÅÓÕ ÉÌÉ mac-ÁÄÒÅÓÕ, Á
-ÞÅÒÅÚ ÜÔÏÔ ÆÁÊÌ ÍÏÖÎÏ (× ×ÉÄÅ ÎÅÐÏÎÉÍÁÅÍÙÈ ÑÄÒÏÍ ÏÐÃÉÊ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ,
-ËÏÔÏÒÙÅ ÐÏÔÏÍ ÍÏÖÎÏ ÓËÒÉÐÔÏÍ ÉÚ×ÌÅÞØ ÉÚ /proc/cmdline) ÐÅÒÅÄÁÔØ ÍÎÏÇÏ
-ÔÁËÏÇÏ, ÞÔÏ ÎÅ ×ÐÉÓÙ×ÁÅÔÓÑ × DHCP.
+pxelinux
+позволяет искать конфигурационный файл по IP-адресу или mac-адресу, а
+через этот файл можно (в виде непонимаемых ядром опций командной строки,
+которые потом можно скриптом извлечь из /proc/cmdline) передать много
+такого, что не вписывается в DHCP. Но у меня пока в этом необходимости
+не возникло.
+</p>
+<p>
+Сделать ядро, которое грузится нормально на терминалах с очень разным
+железом - вполне реально, а все последующее можно сконфигурировать из
+init-скрипта опираясь на hostname.
</p>
<p>
-÷ dhcpd.conf ÐÉÛÅÍ ÒÁÚÄÅÌ host ÄÌÑ ÔÅÒÍÉÎÁÌÁ. (ÅÓÌÉ ÔÅÒÍÉÎÁÌÏ× ÍÎÏÇÏ,
-ÍÏÖÎÏ ÎÁÐÉÓÁÔØ ÏÄÉÎ ÒÁÚÄÅÌ group, ÎÏ ÜÔÏ ÕÖ ÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁÃÉÀ ÎÁ
-pxelinux É dhcpd ÓÁÍÉ)
+В dhcpd.conf пишем раздел host для терминала. (если терминалов много,
+можно написать один раздел group, но это уж читайте документацию на
+pxelinux и dhcpd сами)
</p>
<pre>
host xterm3 {
next-server 192.168.217.1;
option domain-name "wagner.home";
filename "pxelinux.0";
- option root-path "wagner.wagner,home:/var/diskless/";
+ option root-path "/var/diskless";
}
</pre>
<p>
-çÌÁ×ÎÏÅ, ÎÅ ÚÁÂÙÔØ ËÏÍÁÎÄÕ next-server, ÐÏÔÏÍÕ ÞÔÏ ÅÓÌÉ PXE BootRom ÐÒÅËÒÁÓÎÏ ÏÂÈÏÄÉÔÓÑ ÂÅÚ ÎÅ£, ÔÏ pxelinux ÐÏÞÅÍÕ-ÔÏ ÎÁÞÉÎÁÅÔ ÔÁÝÉÔØ Ó×ÏÊ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ É ÑÄÒÏ Ó ÁÄÒÅÓÁ 0.0.0.0.
+Главное, не забыть команду next-server, потому что если PXE BootRom прекрасно обходится без неё, то pxelinux почему-то начинает тащить свой файл конфигурации и ядро с адреса 0.0.0.0.
</p>
<p>
-ôÅÐÅÒØ ÓÔÁ×ÉÍ xfs, ÏÔÒÙ×ÁÅÍ Õ ÎÅÇÏ ÉÚ ËÏÎÆÉÇÁ no-listen = tcp,
-É ÒÁÚÒÅÛÁÅÍ ÏÂÓÌÕÖÉ×ÁÎÉÅ ÔÅÒÍÉÎÁÌÏ× × display manager. ÷ xdm ÄÌÑ ÜÔÏÇÏ ÎÅÏÂÈÏÄÉÍÏ ÚÁËÏÍÅÎÔÁÒÉÔØ ÓÔÒÏÞËÕ
+Теперь ставим xfs, отрываем у него из конфига no-listen = tcp,
+и разрешаем обслуживание терминалов в display manager. В xdm для этого необходимо закоментарить строчку
<pre>
DisplayManager.requestPort: 0
</pre>
-× xdm-config É ÒÁÓËÏÍÅÎÔÁÒÉÔØ ÓÔÒÏÞËÕ
+в xdm-config и раскоментарить строчку
<pre>
* # any host can get a login window
</pre>
-× Xaccess.
+в Xaccess.
</p>
<p>
-çÏÔÏ×Ï, ÍÏÖÎÏ ÇÒÕÚÉÔØÓÑ.
+Готово, можно грузиться.
</p>
<h2>TBD</h2>
-îÁÕÞÉÔØÓÑ ÐÏÌÕÞÁÔØ aÄÒÅÓ ÆÏÎÔ-ÓÅÒ×ÅÒÁ É ÁÄÒÅÓ ÈÏÓÔÁ, ÐÅÒÅÄÁ×ÁÅÍÏÇÏ × ÏÐÃÉÀ query ÐÏ dhcp (ÏÐÃÉÉ font-server É x-display-manager)
-
+Научиться получать aдрес фонт-сервера и адрес хоста, передаваемого в опцию query по dhcp (опции font-server и x-display-manager)
+<p>
+Для этого надо пересобрать busybox включив там встроенный dhcp-клиент, и
+немного попатчить этот клиент, поскольку эти опции он из коробки не
+умеет.
</BODY>
</HTML>