Ключевые слова:xterm, diskless, freebsd, pxe, boot, (найти похожие документы)
From: Алексей Кеда (lissyara) <admin@lissyara.su.>
Date: Mon, 25 Nov 2007 18:21:07 +0000 (UTC)
Subject: Бездисковые терминалы на FreeBSD
Оригинал: http://www.lissyara.su/?id=1191
Итак, немного предыстории. Две довольно большие конторы, и одна
маленькая. Один домен на всех, общая локалка. Всё хорошо, но конторы
надо разделать, по техническим и политическим причинам. Примерно 40
человек работали в терминале. С ними и произошли проблемы -
использовался линуксовый тонкий клиент - достался по наследству, и при
переключении клиентов в другую сеть, они потеряли свои конфиги.
Копание в скриптах клиента ничего не дало - везде поменял одну сеть на
другую, но бестолку. Сидеть и подробно разбираться в чужом творении -
откровенно не хотелось. Да и не люблю я пингвинов, наверно, потому,
что готовить не умею :))
Изыскания на сайте FreeBSD привели к хандбуку. Согласно нему,
всё было просто. В общем-то, так и оказалось. На 6-й ветке тонкий
клиент завёлся и заработал влёт, но был косяк - у меня много старых
машин, и старых сетевух - они грузились по сети с дискеток, а не с
PXE-биоса сетевухи. Как оказалось, нету ни одной дискеты, которая
могла бы загрузить и переварить лоадер FreeBSD. Ближе всех к истине
оказался microsoft - у них есть загрузочная дискета для удалённой
установки, оно грузило, запускало, но как-то неправильно передавала
параметры - лоадер не получал адреса сервера и своего IP....
Помучавшись несколько дней, пришёл к выводу - с дискеты надо
грузить ядро фряхи, и корневую ФС, остальное монтировать с сети. Тока
вот в 6-й ветке, мне так и не удалось ужать ядро и корневую ФС с
уилитами до приемлемого размера. Пришлось собирать тестовую машину,
ставить 4-ю ветку. Там всё получилось, и, как выяснилось, на дискету
достаточно положить только ядро :)))
Итак. Ставим ОСь, обновляем исходные тексты системы,
пересобираем мир, ядро. Пишем примерно такой конфиг ядра (для 4.11 -
на 6.0 отличия минимальные, и всё одинаково хорошо работает и в одной
и в другой ветке.)
# ядро не обязательно делать именно таким.
# Просто, чем оно меньше будет, тем быстрей будут грузиться
# клиенты. Юзеры - народ нервный :)))
machine i386
cpu I586_CPU
cpu I686_CPU
ident diskless-1
maxusers 0
options MATH_EMULATE
options INET
options FFS
options FFS_ROOT
options SOFTUPDATES
options MFS
options MD_ROOT
options NFS
options NFS_ROOT
options PROCFS
options COMPAT_43
device isa
device eisa
device pci
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device atkbdc0 at isa? port IO_KBD
device atkbd0 at atkbdc? irq 1 flags 0x1
device psm0 at atkbdc? irq 12
device vga0 at isa?
device sc0 at isa? flags 0x100
device agp
device npx0 at nexus? port IO_NPX irq 13
device apm0 at nexus? disable flags 0x20 # Advanced Power Management
device de
device em
device txp
device vx
device miibus
device dc
device fxp
device pcn
device rl
device sf
device sis
device ste
device tl
device tx
device vr
device wb
device xl
device bge
device ed0 at isa? disable port 0x280 irq 10 iomem 0xd8000
device ex
device ep
device fe0 at isa? disable port 0x300
device xe
pseudo-device loop
pseudo-device ether
pseudo-device pty
pseudo-device md
# следующие строки добавлял я - до этого момента лишь убирал лишнее
# цвет консоли - кому как удобней, и буфер консоли
options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options SC_KERNEL_CONS_ATTR=(FG_RED|BG_BLACK)
options SC_HISTORY_SIZE=2022
# как раз опции для поддержки бездисковых клиентов
options BOOTP
options BOOTP_NFSROOT
options BOOTP_COMPAT
Расписывать какая опция за что отвечает - не буду, это уже
было. Конфиг обзываем, например, main-diskless. Добавляем такую
строчку в /etc/make.conf:
# Опция необязательная, нужна для загрузки ядра по TFTP а не по NFS.
# Я захотел сдеть так, вы - можете иначе.
LOADER_TFTP_SUPPORT=YES
После чего, пишем небольшой скрипт:
#!/bin/sh
export DESTDIR=/usr/local/tftp/freebsd.4.11
kernell_config="main-diskless"
mkdir -p ${DESTDIR} && \
cd /usr/src && make cleandir && make clean && make cleandir && make clean && \
make world DESTDIR=${DESTDIR} && \
cd /usr/src/etc && \
make distribution DESTDIR=${DESTDIR} && \
cd /usr/src && \
make kernel DESTDIR=${DESTDIR} KERNCONF=${kernell_config} && \
echo "Building Completed"
Ну, и сделав его исполняемым, запускаем. Ждём завершения работы, в
указанной директории (/usr/local/tftp/freebsd.4.11 - но можно и
поменять, в скрипте) должна появиться вся система, и ядро. По
окончании работы скрипта, советую проверить наличие и того, и другово.
Пока собирется мир и ядро, организуем сервер tftp, раскомментив и
слегка подправив строчку в /etc/inetd.conf:
# Следующие две строки - на самом деле - одна, просто у меня не влезли.
tftp dgram udp wait root /usr/libexec/tftpd
tftpd -l -s /usr/local/tftp/freebsd.4.11 -u root
Даём команду inetd перечитать свой конфиг (если он у вас запущен и
работает. Если не запущен, смотрите тут)
/usr/home/lissyara/>killall -1 inetd
Если есть желание логгировать запросы к tftpd, добавляем в
/etc/syslog.conf такие строки:
# TFTPd
!tftpd
*.* /var/log/tftpd.log
Затем создаём файлик и даём команду syslogd перечитать свой конфиг:
/usr/home/lissyara/>touch /var/log/tftpd.log
/usr/home/lissyara/>killall -1 syslogd
/usr/home/lissyara/>
Также, нам необходимо организовать расшаривание создаваемой
корневой системы по NFS, для этого, добавляем такие строки в
/etc/rc.conf (значение опций можно посмотреть тут)
# NFS
nfs_server_enable="YES"
nfs_server_flags="-u -n 50"
rpcbind_enable="YES"
Также расшариваем будущую корневую ФС тонких клиентов, для этого
вносим в файл /etc/exports такие строки:
# То, что расшариваем по NFS
/usr/local/tftp/freebsd.4.11 -maproot=root -network 192.168 -mask 255.255.0.0
На первый раз, можно запустить руками, или перезагрузиться, если
мир с ядром уже собрались и проинсталлились. Если будте запускать
руками, то я использую такой скрипт (вообще, он для перезапуска, чё-то
у меня не получается штатными средсвами перезапустить всю эту кучу
демонов, если правил /etc/exports)
#!/bin/sh
killall -9 rpcbind
killall -9 nfsd
killall -9 mountd
sleep 2
rpcbind
nfsd -u -n 40
mountd -r
Если используете виндовый DHCP - добавляете в него опции, у меня же
стоит isc-dhcp, посему даю опции для него:
next-server 192.168.110.254;
option root-path "192.168.110.254:/usr/local/tftp/freebsd.4.11";
filename "/boot/pxeboot";
Ну, перезупускаем dhcp, и если мир с ядром установились, пробуем
загузиться с машины подерживающей PXE. Должно получиться. Правда, сам
клиент будет по мелочи ругаться - sendmail и прочие не запустятся.
Также надо сразу подправить файл
/usr/local/tftp/freebsd.4.11/etc/fstab до такого состояния:
# fstab for diskless clients
# Корневая система в режиме только чтение (пока в rw укажите, потом смените,
# после окончательной настройки)
192.168.110.254:/usr/local/tftp/freebsd.4.11 / nfs ro 0 0
# дерево портов. Можно пользоваться и локальным - кому как удобней.
192.168.110.254:/usr/ports /usr/ports nfs rw 0 0
Собственно, дальнейшие работы я производил с тонкого клиента (ага,
загрузившись по сети на двухголовом ксеноне с гигабитной сеткой и 3Gb
памяти :)))) - надо писать конфиги, и устанавливать иксы, ибо целью
было, не посадить юзеров за консоль FreeBSD, а подрубить их к
виндовому серверу терминалов. Есть и другой метод - jail - можно
на родительской машине зайти в корневую директорию для клиентов, как в
клетку. Но - мне этот мето не подходил - я экспортировал с 6-й
FreeBSD, а на клиентах была 4.11 (перенёс с машины на машину tar`ом).
Посему ищем самую мощную доступную машину, и грузимся с неё.
Для начала, надо передвинуть с /var всё, что нужно, т.к. на тонком
клиенте /var находитя в оперативной памяти (надо сказать такую феню -
если / смонтировать в режиме чтения-записи, то /var, /tmp и /dev не
создаются в оперативке, а вот если всё в режиме только чтения - фря
создаёт их в оперативке), а собсно из родного /var нам надо лишь
/var/db/pkg который мы переместим в /usr/local/var/db/pkg. Для этого,
надо завести переменную окружения $PKG_DBDIR. Для этого, правим файл
/root/.cshrc, вносим в его начало такую строчку:
setenv PKG_DBDIR /usr/local/var/db/pkg
Делаем логоф-логон рута, проверяем:
/root/>echo $PKG_DBDIR
/usr/local/var/db/pkg
/root/>
Всё путём. Можно собирать из портов ПО. Нa 4.11 (на шохе - влёт) у
меня не собрался xorg - но я и не особо пытался, посему собираем
XFree4. C ним тоже не всё гладко, поэтому добавляем в /etc/make.conf
такие строки:
# Опция необязательная, нужна для загрузки ядра по TFTP а не по NFS.
# Я захотел сдеть так, вы - можете иначе.
# заметтьте - тут эта опция потому, что я пересобирал ядро с
#тонкого клиента, у которого свой конфиг.
LOADER_TFTP_SUPPORT=YES
# опции касающиеся иксов
InstallAppDefFiles= NO
InstallXdmConfig= NO
HasSecureRPC= NO
HasPam= NO
После чего, собираем такой список софта:
XFree86-Server-4.5.0_4 XFree86-4 X server and related programs
XFree86-clients-4.5.0_3 XFree86-4 client programs and related files
XFree86-fontDefaultBitmaps-4.5.0_1 XFree86-4 default bitmap fonts
XFree86-fontEncodings-4.5.0_1 XFree86-4 font encoding files
XFree86-libraries-4.5.0 XFree86-4 libraries and headers
expat-2.0.0_1 XML 1.0 parser written in C
fontconfig-2.3.2_6,1 An XML-based font configuration API for X Windows
freetype2-2.2.1_1 A free and portable TrueType font rendering engine
gettext-0.14.5_2 GNU gettext package
gmake-3.81_1 GNU version of 'make' utility
imake-4.5.0 Imake and other utilities from XFree86
ldconfig_compat-1.0_8 Ldconfig compatibility script
libXft-2.1.7_1 A client-sided font API for X applications
libiconv-1.9.2_2 A character set conversion library
libtool-1.5.22_2 Generic shared library support script
pkg-config-0.21 A utility to retrieve information about installed libraries
png-1.2.12_1 Library for manipulating PNG images
rc_subr-1.31_1 Common startup and shutdown subroutines used by scripts
rdesktop-1.5.0 RDP client for Windows NT/2000/2003 Terminal Server
xfree86-dri-4.5.0 OpenGL hardware acceleration drivers for XFree86
xterm-222 Terminal emulator for the X Window System
Я собирал вначале rdesktop, а уже затем всё оставшееся (осталось
то, что начиналось на заглавную букву X :)). Пока собирается ПО,
настраиваем систему - я настроил русскую локаль, и привёл
/etc/rc.conf к такому состоянию:
# Русский язык в консоли
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
scrnmap="koi8-r2cp866"
# Запускаем sshd для удалённого доступа к клиентам
sshd_enable="YES"
# Убираем запуск sendmail (я вообще поставил на тонких клиентов exim :))
sendmail_enable="NONE"
# Включаем syslogd (пусть месаги всякие пишет)
syslogd_enable="YES"
# включаем крон - я установил /usr/ports/sysutils/bsdstats и настроил на
# запуск днём - нехай в России будет больше фрях :))
cron_enable="YES"
# Размер /var для бездисковой станции (в 512-байтных блоках!)
varsize="6144" # У меня - 3 мегабайта
# Опции касающиеся мыши. У мeня у всех PS/2
moused_enable="YES"
moused_type="auto"
moused_port="/dev/psm0"
Далее, пишем такой набор скриптов:
/usr/home/lissyara/>more /usr/local/etc/rc.d/thin_startup.sh
#!/bin/sh
# Используемые в иксах переменные:
# ${x_keyboard} - модель клавы
# ${x_mouse_proto} - протокол мыши
# ${x_mouse_device} - устройство мыши
# ${x_horiz_sync} - горизонтальная развёртка
# ${x_vert_refresh} - частота обновления кадров
# ${x_vga_driver} - драйвер видеокарты
# ${x_color_bits} - скольки битный цвет в иксах
# Ввиду того, что по DHCP клиент не получает DNS-сервер,
# указываем его тут
dns_server_ip="192.168.0.254"
# сервер времени в локальной сети (у меня много старых компов с чуть живыми
# батрейками, а F1 юзеры уже давно сами нажимать научились :))
local_ntp_server="192.168.0.253"
# Имя пользователя, от которого будут работать иксы.
x_username="ThinUser"
x_user_profile_dir="/var/user_profile"
users_configs_dir="/usr/local/etc/thin_configs"
PATH="/sbin:/bin:/usr/sbin:/usr/bin:\
/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin"
# Если завершение работы - ничё не делаем.
case "$1" in
stop)
# нихрена не делаем :)
# Просто, без этого пункта, при остановке тонкого клиента,
# снова запускаются иксы
;;
# Если старт - запускаем rdesktop
start)
# синхронизируем время на клиенте (в фоне, т.к.
# сервер может вообще не ответить)
ntpdate -b ${local_ntp_server} &
# Вытаскиваем персональные настройки клиента.
# Определяем его MAC-адрес
client_mac=`ifconfig | grep ether | awk '{print $2}' | \
tr -d ":" | tr "[:lower:]" "[:upper:]" | tail -1`
# Инклюдим персональный конфиг клиента, если он сущствует
if [ -s ${users_configs_dir}/${client_mac}.conf ]
then
. ${users_configs_dir}/${client_mac}.conf
else
. ${users_configs_dir}/defaults.conf
fi
# Стругаем директорию, где будет лежать конфиг иксов
mkdir -p /var/etc/X11
rm -R /etc/X11 >/dev/null 2>&1
ln -s /var/etc/X11 /etc/X11 >/dev/null 2>&1
# Глобальная конфигурация - создаём пользовательский конфиг
# иксов из шаблона - xorg.conf.template
. ${users_configs_dir}/conf/xorg.conf.template
# hostname
hostname ${win_user_name}.${win_domain}
rm /etc/resolv.conf >/dev/null 2>&1
ln -s /var/etc/resolv.conf /etc/resolv.conf >/dev/null 2>&1
echo "domain ${win_domain}" > /var/etc/resolv.conf
echo "nameserver ${dns_server_ip}" >> /var/etc/resolv.conf
# Создаём домашнюю директорию для пользователя
mkdir -p ${x_user_profile_dir}/${x_username}
# На этом этапе можно подрубить swap - если на клиентах мало памяти.
# Выглядеть это будет примерно так (где /swap смонтирована с машины
# на которой расшарена директория с правами на запись по NFS
# if [ ! -s /swap/${client_mac}.swp ]
# then
# echo "Adding SWAP file...."
# dd if=/dev/zero of=/swap/${client_mac}.swp bs=1m count=128
# swapon /swap/${client_mac}.swp
# else
# echo "Adding SWAP file...."
# swapon /swap/${client_mac}.swp
# fi
# Запускаем бесконечный цикл
${users_configs_dir}/conf/rdesktop_polling.sh ${win_user_name} \
${win_ts_server} ${x_user_profile_dir} ${x_username} &
# Валим %)
exit;
. /usr/local/etc/thin_configs/conf/thin_startup.sh
# конец скрипта
;;
# справка по использованию
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac
exit;
Файл /usr/home/lissyara/>more /usr/local/etc/thin_configs/conf/rdesktop_polling.sh
#!/bin/sh
# Параметры --> переменные
win_user_name="$1"
win_ts_server="$2"
x_user_profile_dir="$3"
x_username="$4"
# Запускаем бесконечный цикл
while test 1 -eq 1
do
# считаем число процессов rdesktop.
rdesktop_proc="`ps -ax | grep rdeskt | grep -v grep | \
grep -v '/bin/sh' | wc -l`"
# ПРоверяем, работает ли rdesctop
if [ ${rdesktop_proc} -ne 1 ]
then
# создаём файл .xinitrc
echo "exec /usr/local/bin/rdesktop \
-u ${win_user_name} -n ${win_user_name} \
-d grand-prix -f -N ${win_ts_server}" > \
${x_user_profile_dir}/${x_username}/.xinitrc
# Даём на неё ему права
chown ${x_username} ${x_user_profile_dir}/${x_username}
su ${x_username} -c /usr/X11R6/bin/startx 2>/dev/console &
# Засыпаем на 35 секунд, потом снова будем проверять.
# sleep 35
fi
sleep 35
done
#-k en-us
exit;
После чего не забываем сделать их исполняемыми и заводим нужного
юзера:
/usr/home/lissyara/>pw useradd ThinUser -d /var/user_profile/ThinUser
/usr/home/lissyara/>chmod +x /usr/local/etc/rc.d/thin_startup.sh
/usr/home/lissyara/>chmod +x /usr/local/etc/thin_configs/conf/rdesktop_polling.sh
/usr/home/lissyara/>
Ну, можно завести себя, чтоб ходить по ssh, можно разрешить вход
руту. Кому как удобней - тут о секурности можно не особо
беспокоится... Также кладём конфиг для иксов -
/usr/local/etc/thin_configs/conf/xorg.conf.template
# Этот файл не написан мною с нуля, откуда-то скатан рабочий образец и
# рашпилем (это такой напильник с крупными зубьями :)) подрихтован под
# свои нужды. Соответственно комменты - минимальны, и тока в тех местах,
# где вместо фиксированных настроек прописаны переменные.
# Создаём конфиг иксов в /etc/X11/xorg.conf (не забываем, что эта директория
# у меня является симлинком на ``/var/etc/X11'', т.к. ``/'' подмонтирован в
# режиме только чтения.)
echo "# Конфиг тонкого клиента ${win_user_name}. Создан автоматически из
# шаблона ``/usr/local/etc/thin_configs/xorg.conf.template''
# ${current_date} в ${current_time}
Section \"Module\"
Load \"dbe\"
SubSection \"extmod\"
Option \"omit xfree86-dga\"
EndSubSection
Load \"type1\"
Load \"freetype\"
EndSection
Section \"Files\"
RgbPath \"/usr/X11R6/lib/X11/rgb\"
FontPath \"/usr/X11R6/lib/X11/fonts/local\"
EndSection
Section \"ServerFlags\"
Option \"DontZap\"
EndSection
Section \"InputDevice\"
Identifier \"Keyboard1\"
Driver \"kbd\"
Option \"AutoRepeat\" \"500 30\"
Option \"XkbDisable\"
Option \"XkbRules\" \"xfree86\"
# Если поставить клаву отличающуюся от 102 то будет лочиться клава
# при нажатии ALT+SHIFT - в принципе, правиться в иксовых раскладках
# тока мне это нафик не нужно....
Option \"XkbModel\" \"${x_keyboard:-pc102}\"
Option \"XkbLayout\" \"en\"
EndSection
Section \"InputDevice\"
Identifier \"Mouse1\"
Driver \"mouse\"
Option \"Protocol\" \"${x_mouse_proto:-SysMouse}\"
Option \"Device\" \"${x_mouse_device:-/dev/sysmouse}\"
Option \"Emulate3Buttons\"
Option \"Emulate3Timeout\" \"50\"
Option \"ZAxisMapping\" \"4 5\"
EndSection
Section \"Monitor\"
Identifier \"monik\"
HorizSync ${x_horiz_sync:-30-70}
VertRefresh ${x_vert_refresh:-60-100}
EndSection
Section \"Device\"
Identifier \"monik_device\"
VendorName \"Unknown\"
BoardName \"Unknown\"
Driver \"${x_vga_driver:-vesa}\"
Option \"NoAccel\" \"0\"
EndSection
Section \"Screen\"
Identifier \"Screen 1\"
Device \"monik_device\"
Monitor \"monik\"
DefaultDepth 24
Subsection \"Display\"
Depth ${x_color_bits:-24}
Modes ${x_resolution:-\"1024x768\" \"800x600\" \"640x480\"}
ViewPort 0 0
EndSubsection
EndSection
Section \"ServerLayout\"
Identifier \"Simple Layout\"
Screen \"Screen 1\"
InputDevice \"Mouse1\" \"CorePointer\"
InputDevice \"Keyboard1\" \"CoreKeyboard\"
EndSection
" >/etc/X11/XF86Config
# в xorg конфиг называется иначе
#> /etc/X11/xorg.conf
Выкладываем дефолтовый конфиг клиента -
/usr/local/etc/thin_configs/defaults.conf, который сразу можно
подравить под себя (имя домена и сервера)
# first.config
# Имя пользователя - используется для имени хоста,
# и для имени, с которым коннектится
win_user_name="change_user_name_in_config"
# Домен в которых будет логиниться юзер
win_domain="CHANGE-DOMAIN-NAME-IN-CONFIG"
# Имя сервера терминалов
win_ts_server="TS"
# Настройки иксов.
# Горизонтальная развёртка
x_horiz_sync="30-70"
# Частота обновления кадров
x_vert_refresh="60-100"
# Драйвер видеокарты
x_vga_driver="vesa"
# Скольки битный цвет
x_color_bits="24"
# Разрешение моника (именно в одинарных и двойных кавычках!!)
x_resolution='"1024x768"'
Также, надо сделать симлинк /tmp --> /var/tmp
/usr/home/lissyara/>cd /
//>rm -R tmp/
//>ll / | grep tmp
//>ln -s /var/tmp
//>ll
lrwxr-xr-x 1 root wheel 8B 14 ноя 06:38 tmp -> /var/tmp
//>
Пожалуй, всё. Перезагружаемся, смотрим - подымутся ли иксы. Должны
подняться. Типичный конфиг клиента выглядит так:
/usr/home/lissyara/>more /usr/local/etc/thin_configs/0050BF694851.conf
# Имя пользователя - используется для имени хоста,
# и для имени, с которым коннектится
win_user_name="lissyara"
# Домен в которых будет логиниться юзер
win_domain="DOMAIN.NAME.OF.MY.DOMAIN"
# Имя сервера терминалов
win_ts_server="TerminalServerName"
# Настройки иксов.
# Горизонтальная развёртка
x_horiz_sync="30-70"
# Частота обновления кадров
x_vert_refresh="85"
# Драйвер видеокарты
x_vga_driver="s3virge"
# Скольки битный цвет
x_color_bits="24"
# Разрешение моника (именно в одинарных и двойных кавычках!!)
x_resolution='"1024x768"'
Список драйверов можно глянуть тут:
/usr/X11R6/lib/modules/drivers/>ls -alh
total 3586
drwxr-xr-x 2 root wheel 1K 15 ноя 09:57 .
drwxr-xr-x 9 root wheel 1K 15 ноя 09:57 ..
-r--r--r-- 1 root wheel 113K 15 ноя 09:57 apm_drv.o
-r--r--r-- 1 root wheel 14K 15 ноя 09:57 ark_drv.o
-r--r--r-- 1 root wheel 47K 15 ноя 09:57 ati_drv.o
-r--r--r-- 1 root wheel 146K 15 ноя 09:57 atimisc_drv.o
-r--r--r-- 1 root wheel 138K 15 ноя 09:57 chips_drv.o
-r--r--r-- 1 root wheel 32K 15 ноя 09:56 cirrus_alpine.o
-r--r--r-- 1 root wheel 9K 15 ноя 09:56 cirrus_drv.o
-r--r--r-- 1 root wheel 24K 15 ноя 09:56 cirrus_laguna.o
-r--r--r-- 1 root wheel 22K 15 ноя 09:57 cyrix_drv.o
-r--r--r-- 1 root wheel 202K 15 ноя 09:56 glint_drv.o
-r--r--r-- 1 root wheel 49K 15 ноя 09:57 i128_drv.o
-r--r--r-- 1 root wheel 40K 15 ноя 09:56 i740_drv.o
-r--r--r-- 1 root wheel 197K 15 ноя 09:57 i810_drv.o
-r--r--r-- 1 root wheel 198K 15 ноя 09:56 mga_drv.o
-r--r--r-- 1 root wheel 65K 15 ноя 09:56 neomagic_drv.o
-r--r--r-- 1 root wheel 251K 15 ноя 09:57 nsc_drv.o
-r--r--r-- 1 root wheel 75K 15 ноя 09:56 nv_drv.o
-r--r--r-- 1 root wheel 89K 15 ноя 09:57 r128_drv.o
-r--r--r-- 1 root wheel 139K 15 ноя 09:57 radeon_drv.o
-r--r--r-- 1 root wheel 36K 15 ноя 09:56 rendition_drv.o
-r--r--r-- 1 root wheel 39K 15 ноя 09:56 riva128.o
-r--r--r-- 1 root wheel 48K 15 ноя 09:56 s3_drv.o
-r--r--r-- 1 root wheel 69K 15 ноя 09:56 s3virge_drv.o
-r--r--r-- 1 root wheel 71K 15 ноя 09:56 savage_drv.o
-r--r--r-- 1 root wheel 73K 15 ноя 09:57 siliconmotion_drv.o
-r--r--r-- 1 root wheel 526K 15 ноя 09:56 sis_drv.o
-r--r--r-- 1 root wheel 66K 15 ноя 09:56 tdfx_drv.o
-r--r--r-- 1 root wheel 43K 15 ноя 09:56 tga_drv.o
-r--r--r-- 1 root wheel 127K 15 ноя 09:56 trident_drv.o
-r--r--r-- 1 root wheel 61K 15 ноя 09:56 tseng_drv.o
-r--r--r-- 1 root wheel 19K 15 ноя 09:57 vesa_drv.o
-r--r--r-- 1 root wheel 15K 15 ноя 09:57 vga_drv.o
-r--r--r-- 1 root wheel 327K 15 ноя 09:57 via_drv.o
-r--r--r-- 1 root wheel 34K 15 ноя 09:56 vmware_drv.o
/usr/X11R6/lib/modules/drivers/>
Замечу, что драйвер vesa - практически универсальный, но не всегда
он тянет большое разрешение и частоту обновления, он - выход на
крайний случай, когда не удалось подобрать драйвер производителя.
Осталось последнее - у меня больше половины клиентов, без сетевух с
поддержкой PXE - надо создать загрузочную дискету. Для этого выполняем
такой набор телодвижений (без комментов, тока примечание - делалось на
FreeBSD4.11 на 6.1 будет отличаться.)
/usr/home/lissyara/>mkdir boot_floppy
/usr/home/lissyara/>cd boot_floppy
/usr/home/lissyara/boot_floppy/>dd if=/dev/zero of=boot_floppy.img count=1440 bs=1k
1440+0 records in
1440+0 records out
1474560 bytes transferred in 2.135704 secs (690433 bytes/sec)
/usr/home/lissyara/boot_floppy/>vnconfig -s labels -c /dev/vn0 boot_floppy.img
/usr/ho..skipped.._ppy/>disklabel -Brw -b /boot/boot1 -s /boot/boot2 vn0c fd1440
/usr/home/lissyara/boot_floppy/>newfs -i 32768 -m 0 -p 0 -o space /dev/vn0c
Warning: Block size restricts cylinders per group to 6.
Warning: 1216 sector(s) in last cylinder unallocated
/dev/vn0c: 2880 sectors in 1 cylinders of 1 tracks, 4096 sectors
1.4MB in 1 cyl groups (6 c/g, 12.00MB/g, 64 i/g)
super-block backups (for fsck -b #) at: 32
/usr/home/lissyara/boot_floppy/>mount /dev/vn0c /mnt
/usr/home/lissyara/boot_floppy/>mkdir -p /mnt/boot
/usr/home/lissyara/boot_floppy/>cp /boot/loader /mnt/boot
/usr/home/lissyara/boot_floppy/>echo "echo Loading kernel..." >> /mnt/boot/loader.rc
/usr/home/lissyara/boot_floppy/>echo "load /kernel" >> /mnt/boot/loader.rc
/usr/ho..skipped.._ppy/>echo "echo Kernel loaded successful" >> /mnt/boot/loader.rc
/usr/home/lissyara/boot_floppy/>echo "autoboot 1" >> /mnt/boot/loader.rc
/usr/home/lissyara/boot_floppy/>cp /kernel ./
/usr/home/lissyara/boot_floppy/>gzip --best kernel
/usr/home/lissyara/boot_floppy/>ls -alh kernel.gz
-r-xr-xr-x 1 root wheel 944K 17 ноя 15:28 kernel.gz
/usr/home/lissyara/boot_floppy/>cp kernel.gz /mnt/
/usr/home/lissyara/boot_floppy/>umount /mnt
/usr/home/lissyara/boot_floppy/>vnconfig -u vn0
/usr/home/lissyara/boot_floppy/>
Всё. Пишем полученный флоп такой командой:
dd if=boot_floppy.img of=/dev/fd0
P.S. C дискеты довольно долго грузиться, ядро всё же не
маленькое...
P.S.2 Писалось после сделанного, мог чего-то забыть...
P.S.3 Не забываем сделать корень "ro"!
Интересует мнение пользователей видузовзкого терминалсервера. Почему то у меня плохо работает при использование rdesktop переключение раскладки вызывает "клюк(и)" и при дальнейших нажатиях клавиш виндовс неправильно воспринимает их, и может запустить справку стереть строчку текста и всякие др. гадости.
P.S. у меня навторская сборка.