|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> настройка
—> diskless
Тонкие клиенты под FreeBSD
Автор: lissyara.
Почти три года назад, я написал статью о создании тонких клиентов (бездисковые машины с загрузкой по сети) под FreeBSD. С той поры утекло много воды, из той организации я уволился, на новом месте этого не потребовалось. А вот на старом - первые-вторые пеньки продолжали работать, и есть не просили =)
Так получилось, что в ту контору я вернулся, приходящим админом - между моими приходами там успело смениться три или четыре администратора - раскурочили всё что смогли, не считая пары серверов, в том числе и того с которого грузились тонкие клиенты. Стрёмно, видать - на нём висела почти вся контора =) После нескольких месяцев разгребания, восстановления и обновления добрался и до тонких клиентов. За прошедшее время появилось много новых и хороших идей у меня, ещё больше хорошего воплотили разработчики FreeBSD.
Немного теории. Дано - куча старых тазиков, типа пни первые-вторые-третьи, без хардов, с количеством RAM около 64Mb (+64/-16). На первых пеньках стоят сетевухи с поддержкой загрузки по сети - PXE (fxp/xl). В BIOS вторых-третьих пней зашит загрузчик для сетеых карт типа RTL8139[a/b/c/d]. Машинки будут стягивать по TFTP загрузчик, он, уже по NFS будет вытаскивать ядро, модули и параметры. После загрузки ОС, запускаются иксы и rdesktop - подключаемся к виндовому терминал-серверу.
Дополнительные задачи, которые не были реализованы вообще, или реализованы криво в предыдущей версии - корректное монтирование/отмонтирование флэшек на ходу, проброска звука из терминальной сессии на локальную машину, и, самое главное - возможность запуска X-сервера без конфигурационного файла - ибо именно прописывание разрешения, частоты развёртки, и т.п. для Win-админов было самым сложным.
Итак, собирать будем на базе FreeBSD 7.2. Особенных требований к машине, откуда всё это грузиться будет, нет. Тока чтоб сама смогла загрузиться, да и всё =)) Чтоб меньше елозила диском, при работе и раздаче по сети файловых систем - побольше рамы (хотя бы 256Mb) - всё влезет в кэш, и к диску будет минимум обращений.
Готовим машину для раздачи файловых систем по NFS и TFTP. Прописываем запуск NFS-сервера:
router$ grep --after-context=4 NFS /etc/rc.conf
# NFS
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 40"
rpcbind_enable="YES"
nfs_client_enable="YES"
router$
| Прописываем файловые системы, расшаренные по сети:
router$ cat /etc/exports
# То, что расшариваем по NFS
#/usr/ports/distfiles -maproot=root -network 192.168 -mask 255.255.0.0
/usr/ports /usr/src -maproot=root -network 192.168 -mask 255.255.0.0
#/pxeroot -maproot=root -network 192.168 -mask 255.255.0.0
#/usr/src -maproot=root -network 192.168 -mask 255.255.0.0
/shares/tftp/7.2/eliron -maproot=root -ro -network 192.168 -mask 255.255.0.0
router$
| Раскомментируем, и немного подправляем строки запуска tftpd через inetd:
router$ grep shares /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s \
/shares/tftp/7.2/eliron -u root
tftp stream tcp nowait root /usr/libexec/tftpd tftpd -l -s \
/shares/tftp/7.2/eliron -u root
router$
| Не забываем запустить сам inetd:
router$ grep inetd /etc/rc.conf
inetd_enable="YES"
| Прописываем запуск DHCP-сервера (у меня DHCP сервер (isc-dhcp30-server) находиться на этой же машине, у вас может находиться на другой):
router$ grep --after-context=5 DHCPd /etc/rc.conf
# DHCPd
dhcpd_enable="YES"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
#dhcpd_ifaces="fxp0 dc0 sk0"
dhcpd_ifaces="fxp0 sk0"
#dhcpd_flags="-d "
router$
| У меня, настройки для заданной сети выглядят в dhcpd.conf примерно так:
subnet 192.168.110.0 netmask 255.255.255.0 {
range 192.168.110.1 192.168.110.199;
option routers 192.168.110.254;
option subnet-mask 255.255.255.0;
option netbios-name-servers 192.168.0.19, 192.168.0.251;
option netbios-dd-server 192.168.110.253;
option netbios-node-type 8;
option broadcast-address 192.168.110.255;
option ntp-servers 192.168.0.253;
next-server 192.168.110.254;
# option root-path "192.168.130.254:/shares/tftp/4.11/gp";
option root-path "192.168.110.254:/shares/tftp/7.2/eliron";
filename "/boot/pxeboot";
option domain-name-servers 192.168.0.19;
option domain-name "grand-prix";
option domain-name-servers 192.168.0.251, 192.168.0.19;
}
| Заливаем сорцы (csup) выбранного релиза, и собираем мир и ядро в директорию, которая будет расшарена по NFS/TFTP, устанавливаем системные конфиги:
router$ mkdir -p /shares/tftp/7.2/eliron
router$ cd /usr/src/
router$ make buildworld && make buildkernel && make installworld \
? DESTDIR=/shares/tftp/7.2/eliron && make installkernel \
? DESTDIR=/shares/tftp/7.2/eliron && \
? make distribution DESTDIR=/shares/tftp/7.2/eliron
| После сборки мира и ядра, монтируем по nullfs порты и исходные коды ядра, относительно корневой директории будущих тонких клиентов:
router$ mount -t nullfs /usr/ports /shares/tftp/7.2/eliron/usr/ports
mount: /shares/tftp/7.2/eliron/usr/ports: No such file or directory
router$ mkdir -p /shares/tftp/7.2/eliron/usr/ports
router$ mount -t nullfs /usr/ports /shares/tftp/7.2/eliron/usr/ports
router$ mount -t /usr/src /shares/tftp/7.2/eliron/usr/src/
| Также, монтируем файловую систему устройств (понадобиться при сборке некоторых портов):
router$ mount -t devfs devfs /shares/tftp/7.2/eliron/dev
| Сразу же, копируем некоторые файлы, которые нам понадобяться при дальнейшей работе - или для удобства дальнейшей работы:
router$ cp /root/.cshrc /shares/tftp/7.2/eliron/root/
| И рисуем конфиги - резольвера:
router$ cat /shares/tftp/7.2/eliron/etc/resolv.conf
search grand-prix
nameserver 192.168.0.251
nameserver 192.168.0.19
router$
| Системного файла сборочной информации - make.conf:
router$ cat /shares/tftp/7.2/eliron/etc/make.conf
# kernel config
KERNCONF=NFSBOOT
# added by lissyara 2007-07-19 in 01:08
PORTSDIR?= /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
# Дефолтовая кодировка заголовков
WITH_DEFAULT_CHARSET?= koi8-r
# Отключаем IPv6
WITHOUT_IPV6= yes
# Версия BDB - в чём ведёт свои БД подсказок
WITH_BDB_VER= 1
# Подержка перекодировки (для заголовков)
WITH_ICONV= yes
.endif
# vim
.if ${.CURDIR} == ${PORTSDIR}/editors/vim
WITHOUT_X11=yes
NO_GUI=yes
.endif
# GD
.if ${.CURDIR} == ${PORTSDIR}/graphics/gd
WITH_ICONV=yes
.endif
# rdesktop
.if ${.CURDIR} == ${PORTSDIR}/net/rdesktop
WITH_ICONV= yes
.endif
router$
| Собственно, на этом моменте я попробовал загрузить одну машину с новой фрёй, но - обломался =) Я собрал GENERIC ядро, а оно по сети не грузиться =) Поэтому, чуть ниже будет ещё одна пересборка ядра, уже из chroot.
Теперь можно делать chroot в корневую директорию тонких клиентов, и собирать необходимый софт:
router$ chroot /shares/tftp/7.2/eliron
router$
| Ставим rdesktop - для подключения клиента к виндовому серверу терминалов:
router$ setenv BATCH yes
router$ cd /usr/ports/
router$ make -C net/rdesktop install clean
| Иксы - полностью:
router$ make -C x11/xorg install clean
| Ставим monitord - он будет отслеживать падения rdesktop и перезапускать его при необходимости:
router$ make -C sysutils/monitord install clean
| Где-то между делом - пока собираются порты - пересобираем ядро (это я пересобирал - а вы могли просто не собирать на этапе инсталляции клиента). Рисуем конфиг для ядра - оно мало отличается от GENERIC:
router$ mkdir -p /root/scripts
router$ cd /usr/src/sys/i386/conf/
router$ ln -s /root/scripts/NFSBOOT
router$ cat /root/scripts/NFSBOOT
# thin clients kernel config
include GENERIC
ident NFSBOOT-GENERIC
# цвет консоли - кому как удобней, и буфер консоли
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
router$
| Также, пишем такие конфигурационные файлы/скрипты - для старта/работы тонкого клиента. Для начала реализуем монтирование/отмонтирование флэшек в тонких клиентах - через devd:
router$ diff -Nru /etc/devd.conf /etc/devd.by.lissyara.conf
--- /etc/devd.conf 2009-07-22 18:01:02.000000000 +0000
+++ /etc/devd.by.lissyara.conf 2009-07-22 21:01:02.000000000 +0000
@@ -325,3 +325,16 @@
action "/etc/acpi_ac $notify";
};
*/
+
+# added by lissyara 2009-07-02 in 10:45 MSK
+# if inserted flash - mount it
+attach 100 {
+ device-name "umass[0-9]+";
+ action "/root/scripts/mount.da0.sh &";
+};
+# if usb flash removed - force umount it
+detach 100 {
+ device-name "umass[0-9]+";
+ action "/root/scripts/umount.da0.sh &";
+};
+
router$
| Собственно, скрипт монтирования - не забываем сделать исполняемым:
router$ more /root/scripts/mount.da0.sh
#!/bin/sh
# ждём устаканивания системы
sleep 2
# опции монтирования - шоп русские имена файлов показало
# и запись была синхронной
options="-o sync -L ru_RU.KOI8-R -D CP866"
# c флэшкой возможны два варианта - da0s1 и da0 - смотря как
# оно форматировалось. чаще всего первый, но попадается и второй
# добавлено через пару недель: попался и третий вариант =))
if test -r /dev/da0s1
then
device="/dev/da0s1"
else
if test -r /dev/da0s2
then
device="/dev/da0s2"
else
device="/dev/da0"
fi
fi
# запускаем fsck - чтоб не материлось
/sbin/fsck_msdosfs -y -p $device
# монтируем флэшку
/sbin/mount_msdosfs $options $device /mnt
# через пару секунд рестартуем hald - бывает виснет =(
sleep 2 && /usr/local/etc/rc.d/hald restart &
# запускаем sync раз в секунду
/root/scripts/sync.sh &
router$
| Кладём файл делающий sync раз в секунду:
router$ more /root/scripts/sync.sh
#!/bin/sh
echo $? > /tmp/sync.pid
while true
do
sync
sleep 1
done
router$
| Скрипт выполняющий отмонтирование:
router$ more /root/scripts/umount.da0.sh
#!/bin/sh
# на всякий случай
sync
# принудительно отмонтируем флэшку
umount -f /mnt &
# ждём пару секунд
sleep 2
# убиваем скрипт выполняющщий синхронизацию
kill `cat /tmp/sync.pid`
# рестартуем hald
/usr/local/etc/rc.d/hald restart
router$
| Рисуем главный конфигурационный файл системы - rc.conf:
router$ cat /etc/rc.conf
# rc.conf
# Русский язык в консоли
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
scrnmap="koi8-r2cp866"
# Убираем запуск sendmail (я вообще поставил на тонких клиентов exim :))
sendmail_enable="NONE"
sendmail_submit_enable="NO"
exim_enable="YES"
exim_flags="-q60m -oP /var/run/exim.pid"
# имя хоста
hostname="thin-client"
# rootfs in read-only
root_rw_mount="NO"
# чтоб не пытался сохранять энтропию в файл
entropy_file="NO"
# файл с hostid
hostid_file="/tmp/hostid"
# чтоб не обновляло сообщение дня
update_motd="NO"
# нет устройств для дампа
dumpdev="NO"
# мышь
moused_enable="YES"
# var on memory
varmfs="YES"
varsize="2m"
populate_var="YES"
# tmp on memory
tmpmfs="YES"
tmpsize="1m"
# ssh
sshd_enable="YES"
# на всякий случай - вдруг хард подключу =)
fsck_y_enable="YES"
# hald and other
gnome_enable="YES"
hald_enable="YES"
#hald_flags="--verbose=yes --daemon=no"
dbus_enable="YES"
polkitd_enable="YES"
# start X trough monitord(8)
#monitord_enable="YES"
# указываем свой конфиг вместо штатного
devd_flags="-f /etc/devd.by.lissyara.conf"
# пара задумок на будущее. ещё года через три реализую =)
# BlueTooth
#hcsecd_enable="YES"
#
#fusefs_enable="YES"
# bugs =)
mkdir -p /var/cache/hald/ >/dev/null 2>&1
mkdir -p /var/run/PolicyKit >/dev/null 2>&1
/usr/sbin/chown :polkit /var/run/PolicyKit >/dev/null 2>&1
/bin/mkdir -p /var/lib/misc >/dev/null 2>&1
/usr/bin/touch -f /var/lib/misc/PolicyKit.reload >/dev/null 2>&1
/usr/sbin/chown :polkit /var/lib/misc/PolicyKit.reload >/dev/null 2>&1
/bin/chmod 0664 /var/lib/misc/PolicyKit.reload >/dev/null 2>&1
mkdir -p /var/log/exim >/dev/null 2>&1
/usr/sbin/chown 26:6 /var/log/exim >/dev/null 2>&1
| По последней секции - пара пояснений. Все указанные директории, права, и владельцы выдернуты из инсталляционных скриптов dbus, hald и прочей хиромантии. На тонком клиенте раздел /var создаётся в памяти, и, разумеется, там указанные директори отсутствуют. Конечно, можно было поправить файл /etc/mtree/BSD.var.dist. Тока лениво, да и при обновлениях придётся его снова править. Так проще и надёжней =)
Создаём файл монтирования файловых систем - fstab следующего содержания:
router$ cat /etc/fstab
# fstab for diskless clients
# Device Mountpoint FStype Options Dump Pass#
192.168.110.254:/shares/tftp/7.2/eliron / nfs ro 0 0
#192.168.110.254:/usr/ports /usr/ports nfs rw 0 0
proc /proc procfs rw 0 0
tmpfs /etc/X11 tmpfs rw 0 0
router$
| Опять же - пара пояснений - procfs используется monitord(8), для отслеживания работы приложений. Файловая система в памяти - tmpfs, с любопытной точкой монтирования, используется для хранения конфигурационного файла X-сервера - когда его приходиться запускать с ним (последние иксы достаточно умные, чтобы в 80% случаев работать вообще без конфигурационного файла).
Создаём конфиг для monitord, следующего содержания:
router$ more /usr/local/etc/monitord.conf
#
# my email (only for test, after - to /dev/null)
#email = root
#smtp-server = localhost
# user options delay service start script parameters
# up X
root auto 10 rdesktop /root/scripts/rdesktop.sh
router$
| Пишем скрипт инициализации тонкого клиента, и делаем его исполняемым:
router$ cat /usr/local/etc/rc.d/start.thin.client.sh
#!/bin/sh
# conf
domain="grand-prix"
mac_addr_file="/tmp/mac.addr.txt"
user_settings_dir="/root/scripts/thin_configs"
PATH="/sbin:/bin:/usr/sbin:/usr/bin:\
/usr/local/bin:/usr/local/sbin"
# Если завершение работы - ничё не делаем.
case "$1" in
stop)
# нихрена не делаем :)
# Просто, без этого пункта, при остановке тонкого клиента,
# снова запускаются иксы
;;
# Если старт - запускаем rdesktop
start)
# start monitord
sleep 5 && /usr/local/etc/rc.d/monitord forcestart &
# start dhclient
# for iface in `ifconfig -l`
# do
# /etc/rc.d/dhclient start $iface
# done
# синхронизация времени
ntpdate -b $domain &
# get user MAC adderess
client_mac=`ifconfig | grep ether | awk '{print $2}' | \
tr -d ":" | tail -1`
# save MAC to /tmp - for configuration X server
echo $client_mac > $mac_addr_file
# достаём персональный конфиг пользователя - если он есть.
if [ -s ${user_settings_dir}/${client_mac}.conf ]
then
. ${user_settings_dir}/${client_mac}.conf
else
. ${user_settings_dir}/defaults.conf
fi
# set hostname
hostname ${user_name}.${domain}
# set volume to maximum
for mix in `mixer | grep currently | awk '{print $2}'`
do
mixer $mix 100:100
done
;;
# справка по использованию
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac
router$
| Создаём стартовый скрипт для rdesktop - его задача - запуск иксов с нужными параметрами:
router$ cat /root/scripts/rdesktop.sh
#!/bin/sh
# conf
domain="grand-prix"
mac_addr_file="/tmp/mac.addr.txt"
user_settings_dir="/root/scripts/thin_configs"
usb_flash="NO"
PATH="/sbin:/bin:/usr/sbin:/usr/bin:\
/usr/local/bin:/usr/local/sbin"
client_mac="`cat $mac_addr_file`"
# достаём конфиги юзера
if [ -s ${user_settings_dir}/${client_mac}.conf ]
then
. ${user_settings_dir}/${client_mac}.conf
else
. ${user_settings_dir}/defaults.conf
fi
# проверка - надо ли флэшку
if [ $usb_flash = "YES" ]
then
part="-r disk:flash=/mnt"
else
part=""
fi
export DISPLAY=:0
# пишем конфиг .xinitrc
echo "exec sleep 5 && /usr/local/bin/setxkbmap \
-layout us,ru -variant ,winkeys -option grp:ctrl_shift_toggle &
exec /usr/local/bin/rdesktop -c /tmp -d $domain -n `hostname -s`-bsd \
-k en-us -f -L koi8-r -N \
-r sound:local $part -u `hostname -s` $ts" > /tmp/.xinitrc
# создаём конфиг для клавы
echo "-layout us,ru -variant ,winkeys \
-option grp:ctrl_shift_toggle" > /tmp/.Xkbmap
# назначаем хомяком /tmp
export HOME=/tmp
# рисуем конфиг иксов, если надо
. /root/scripts/create.xorg.conf.sh
# стартуем иксы
sleep 3 && /usr/bin/nice -n -20 /usr/local/bin/startx &
| Пишем скрипт для создания конфигурационнго файла X-сервера - если есть необходимость вручную выставить параметры (как уже упоминалось - в большинстве случаев, он сам корректно всё определяет):
router$ cat /root/scripts/create.xorg.conf.sh
#!/bin/sh
# set defaults, if not set
horiz_sync=${horiz_sync:-no}
vert_refresh=${vert_refresh:-no}
vga_driver=${vga_driver:-no}
resolution=${resolution:-no}
# need or not wrote config
if [ "$horiz_sync" != "no" \
-o "$vert_refresh" != "no" \
-o "$vga_driver" != "no" \
-o "$resolution" != "no" ]
then
# reset defaults
if [ "$horiz_sync" = "no" ]
then
horiz_sync="30.0 - 81.0" # for 1280x1024, LCD
fi
if [ "$vert_refresh" = "no" ]
then
vert_refresh="56.0 - 75.0" # for 1280x1024, LCD
fi
if [ "$vga_driver" = "no" ]
then
vga_driver="vesa"
fi
if [ "$resolution" = "no" ]
then
resolution='"1024x768"'
fi
cat /root/scripts/xorg.conf.tpl |\
sed -e "s/__horiz__/$horiz_sync/g" |\
sed -e "s/__vert__/$vert_refresh/g" |\
sed -e "s/__driver__/$vga_driver/g" |\
sed -e "s/__modes__/$resolution/g" > /etc/X11/xorg.conf
fi
router$
| Кладём шаблон конфигурационного файла иксов:
router$ cat /root/scripts/xorg.conf.tpl
#
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/local/lib/xorg/modules"
FontPath "/usr/local/lib/X11/fonts/misc/"
FontPath "/usr/local/lib/X11/fonts/TTF/"
FontPath "/usr/local/lib/X11/fonts/OTF"
FontPath "/usr/local/lib/X11/fonts/Type1/"
FontPath "/usr/local/lib/X11/fonts/100dpi/"
FontPath "/usr/local/lib/X11/fonts/75dpi/"
EndSection
Section "Module"
Load "extmod"
Load "record"
Load "dbe"
Load "glx"
Load "dri"
Load "dri2"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
#DisplaySize 340 270 # mm
Identifier "Monitor0"
HorizSync __horiz__ #30.0 - 81.0
VertRefresh __vert__ #56.0 - 75.0
# Option "DPMS"
EndSection
Section "Device"
Identifier "Card0"
Driver "__driver__"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
# SubSection "Display"
# Viewport 0 0
# Depth 15
# Modes __modes__
# EndSubSection
# SubSection "Display"
# Viewport 0 0
# Depth 16
# Modes __modes__
# EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes __modes__
EndSubSection
EndSection
router$
| Кладём дефолтовый конфиг для тонких клиентов:
router$ mkdir -p /root/scripts/thin_configs/
router$ cat /root/scripts/thin_configs/defaults.conf
# thin clients configurations
# user name
user_name="change_user_name_in_config"
# terminal server
ts="TS2"
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# use next variable only if incorrect display size, or no screen
# need set all options!
#
# Настройки иксов.
# Горизонтальная развёртка
# horiz_sync="30-200"
# Частота обновления кадров
# vert_refresh="60-100"
# Драйвер видеокарты
# vga_driver="vesa"
# Разрешение моника (именно в одинарных и двойных кавычках!!)
# resolution='"1024x768"'
router$
|
Ну, и, наконец, кладём конфигурационный файл лоадера:
router$ cat /boot/loader.conf
# loader configuration
loader_logo="beastie"
autoboot_delay="2"
libiconv_load="YES"
#cd9660_iconv_load="YES"
msdosfs_iconv_load="YES"
#ntfs_iconv_load="YES"
#udf_iconv_load="YES"
tmpfs_load="YES"
drm_load="YES"
# sound
snd_driver_load="YES"
sound_load="YES"
router$
| Для корректной работы sshd необходимо сгенерить ключи. Проще всего это сделать прям в chroot:
router$ chroot /shares/tftp/7.2/eliron
router$ /etc/rc.d/sshd start; /etc/rc.d/sshd stop
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
ff:f8:5c:c7:20:02:c1:4f:0f:61:f0:51:25:7d:c6:eb root@router.local
The key's randomart image is:
+--[RSA1 1024]----+
| .o.+ooo.. |
| .+o. .. +|
| .o.o o.|
| .. . . |
| S . . o |
| . . . E |
| . . o|
| + . . |
| ..+ |
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
9a:f7:6d:63:a3:d2:cb:5b:75:f0:f6:dd:0d:e1:8d:ea root@router.local
The key's randomart image is:
+--[ DSA 1024]----+
| |
| |
| o |
| . * |
| S = =|
| o o +=|
| o .. o =|
| ..o.+= |
| .**Eo |
+-----------------+
Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
48:28:1d:27:8f:57:89:72:4d:0e:7c:78:ea:41:4c:f7 root@router.local
The key's randomart image is:
+--[ RSA 2048]----+
| o++=+. |
| ..BB==. |
| . ++++. E |
| . oo. |
| ...S |
| . |
| |
| |
| |
+-----------------+
Starting sshd.
sshd not running? (check /var/run/sshd.pid).
router$
| Вот и всё. Для работы машинке (тонкому клиенту) требуется около 64 метров памяти (у меня работали на 64+16 - на 64Mb иксы стартуют, но сразу же убиваются ядром - памяти мало, а иногда нормально запускались и работали на 64. Думаю, зависит памяти ушедшей на диски в памяти), процессор - наверно не важно какой - из тех тазиков что выжили есть первый пень на 233 чтоли мегагерца - загружается и работает. Грузиться чуть медленней, чем предыдущая версия, на базе 4.11 и XFree - но, это операция разовая. Перезапуск осуществляется быстрей, monitord в течение 10-15 секунд подымает иксы при падении. Если на тазике есть звуковушка - то звук с сервера пробрасывается на локальную машину, можно музычку послушать =))). За работу флэшек отвечает параметр
в конфигурационном файле каждого конкретного клиента. Без него - флэшка всё равно монтируется, но - в терминальную сессию диск не пробрасывается.
Принцип работы - на старте системы запускается rc.d скрипт start.thin.client.sh. Он задёт имя хоста, запускает monitord (ну, до кучи выставляет звук на полную - бывает тихо он стоит и из терминалки это не поправишь).
Далее, уже запущенный monitord видит, что приложение rdesktop не запущщено - соответсвенно, выполянет скрипт /root/scripts/rdesktop.sh. Он, считывает конфигурационный файл конкретной машины (имя файла состоит из MAC-адреса, типа 00c0265c5c15.conf), создаёт конфигурационные файлы - для запуска иксов - если надо, файл .xinitrc - c указанием что именно запускать X-серверу, и файл с указанием языковой раскладки клавиатуры - .Xkbmap. После всех подготовительных операций, запускаются иксы.
При втыкании флэшки, происходит следующее - devd, заметив что что-то воткнули, и оно совпало с условием в его конфигурационном файле, выполняет указанный там скрипт - /root/scripts/mount.da0.sh. Скрипт проверяет флэшку при помощи fsck_msdosfs и монтирует её. При выдёргивании, всё тот же devd выполняет скрипт отмонтирвоания /root/scripts/umount.da0.sh. Юзеров лучше приучить чтоб ждали секунд несколько после того как записали чего-то. Данные целей будут.
Ну, и, о грустном - куда ж без этого.
1. Забраковалось несколько старых машинок - после загрузки ядра, перед монтированием по NFS корневой файлвоой системы, лезет в консоль такое:
Никакие бубны с ручной раздачей прерываний и прочего непомогают. Помогает отключение acpi через лоадер - но, тогда теряется некоторый функционал, который тоже хотелось окучить - отключение в 10 вечера всех тазиков по планировщику =( Решается установкой нормальной сетевухи - типа fxp, xl, em и прочия. Все машины, на которых была такая бага, с материнками под SLOT1.
2. Кушают много рамы - старая версия требовала мегабайт 40 для работы. Впрочем - это расплата за возможность использовать USB мышки/клавы, и не париться с конфигурацией иксов - в подавляющем большинстве случаев. Минимум, на котором у меня заводилось (настройки по статье, вернее - статья с тех настроек =)) - это ~58 мегабайт (на машине 64 рамы, 8 отдано встроенной видеокарте).
3. Не получилось смонтировать корневую файловую систему в read-only режиме. Хоть ты тресни - пытается в rw монтировать, и монтирует. При этом не понимает что по NFS оно расшарено в режиме тока чтения - на клиентах показывает что оно якбы rw - но записать ничё не получается. Бага задокументирована. Ждём ответа.
Вроде всё. Ушло - вечер на работу - скрипты писал пока компилялось, полчаса на отладку, и два дня на написание статьи =)
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=19300.
|
размещено: 2009-08-18,
последнее обновление: 2010-01-08,
автор: lissyara
|
|
|
|
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP.
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC
Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
Подробное руководство по ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless
Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение
Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга
Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff
Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа
Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL
Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)
Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP
Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools
Network UPS Tools представляет собой набор программ, которые обеспечивают общий
интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP
Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network
Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem
В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID
Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN
Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS
В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL
Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)
Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external
mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid
Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6
Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD
Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc
Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-24, OzZy
Exilog
Exilog инструмент который позволяет красиво визуализировать, просматривать по разным фильтрам логи Exim через симпатишную веб-морду. Использует mysql (или postgresql при желании). Написан на perl.
2009-02-18, Andy
Free-SA
Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server
Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование
Установка VPN сервера mpd5 + сжатие и шифрование
2009-01-26, vp
freebsd + webcamera
Подключение и настройка вебмкамеры для работы с freebsd на примере Logitech QCam STX
2009-01-10, Grishun_U_S
конфиг для офисов
В статье разбирается конфиг для офиса, пользователи которого имеют строгие ограничения по портам. Заворачиваем www трафик на транспарентный прокси, а остальное NAT'им. Эффективно делим канал интернет
2008-12-27, Storoge
sftp+chroot
Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов через sftp, чтобы при этом не страдала безопасность.
2008-12-13, Morty
PurefFTPd
Администрирование pureftpd-сервера с помощью вэб интерфейса Usermanager
2008-12-11, lissyara
termlog
Небольшая простая утилита, использующаяся для записи в файл всего что происходит на терминалах системы. Полезно, когда есть доступ по ssh у тех, кому не очень доверяете. Паранойя - это не плохо =)
2008-11-26, Cancer
SQUID+SAMS +Rejik-(LDAP)
Установка Прокси сервера SQUID с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf,РЕЖИК собственно рубит банеры и запрещает пользователям ходить на запрещенные сайты,
2008-11-22, dvg_lab
php5-oci8
Решение проблем segmentation fault (core dumped) при работе с oracle8-client и php5-oci8
2008-11-21, m0ps
NTP
Пример настройки NTP сервера для локальной сети и клиента, для синхронизации времени с локальный NTP сервером. Обновление ntpd из портов.
2008-11-20, Cancer
SQUID+SAMS +Rejik-(NTLM)
Установка Прокси сервера SQUID с аутентификацией по NTL с красивой мордой SAMS и редиректором REJIK,для учета кто куда ходил + графики в pdf, РЕЖИК собственно рубит банеры и запрещает пользователям хо
2008-11-20, mak_v_
Hotspot
Настройка безпроводной точки доступа (WiFi) на freebsd
2008-11-12, Shaman
Enemy Territory
Появилась у меня такое желание поднять сервер Enemy Territory.
Поискал погуглил, ничего толкового не нашел пришлось все самому делать.
И вот решил поделиться опытом. Начинаем......
2008-11-11, lissyara
Samba+ NT ACL
Использование vfs самбы - модули full_audit и recycle. Настройка для использования в качестве файлопомойки с 500+ одновременно работающих юзеров. Раздача прав через нативный виндовый интерфейс.
2008-11-11, Raven2000
Upgrading OpenBSD
Сегодня мы будем обновлять OpenBSD. Систему необходимо поддерживать в актуальном виде и следить, чтобы все работало, как часы и все дырки были залатаны до прихода врага =)
2008-11-10, lexy
SMSTools 3
Как автоматизировать отправку и обработку входящих сообщений при помощи мобильного телефона, датакабеля и компа
2008-11-06, Cancer
Asterisk IP PBX
Установка VoiP сервера Asterisk IP PBX для соединения двух шлюзов и АТС
2008-10-30, atrium
Samba & CUPS & AD & ACL
Настройка Samba в роли доменного файл-сервера, и CUPS в роли принт-сервера для Windows клиентов
2008-10-17, Raven2000
src & ports
Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD. Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированн
2008-10-13, Morty
Mysql - базовое описание
Базовое описание и принципы работы с MySQL
2008-10-10, Cancer
exim&dovecot + fetchmail + SSL
Exim & Dovecot + Postfixadmin & Roundcube + Fetchmail & smtp_relay
С возможностью отправлять письма через смтп релей провайдера.
С использование SSL шифрование: POP3s IMAPs sSMTP
2008-10-09, m0ps
Дополнительные порты для роутера
Увеличение количества Ethernet портов маршрутизатора за счет свободных портов коммутатора пробросив vlan с сабинтерфейса роутера на интерфейс коммутатора.
2008-10-06, princeps
Bacula
Настройка сервера системы резервного копирования Bacula на FreeBSD для бэкапов FreeBSD и Windows машин
2008-10-02, zheromo
Postfix + DBMail
Создание почтовой системы на основе Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail
2008-10-02, Cancer
SugarForge CRM
SugarForge CRM предоставляет подавляющее большинство функциональных возможностей CRM систем
2008-09-12, arksu
ng_ipacct + squid
Подсчет трафика с помощью ng_ipacct. Связка ng_ipacct + squid + парсер логов + авторизатор + nginx + mysql и куча служебных скриптов для работы всей системы.
2008-09-03, Raven2000
GLPI
Мне надо было найти замену существующей программы инвентаризации, чтобы за компьютерами, принтерами, картриджами, лицензиями и тп был учет. Желательно с дополнительными бонусами типа системы подачи...
2008-09-03, salimk
POWERDNS
Статья о том как мигрировать с DNS сетвера ISC Bind на POWERDNS
2008-09-03, DNK
Rinetd
Редирект TCP портов с помощью утилиты rinetd - просто до безобразия - само прилодение простое, конфиг в одну строчку - что ещё надо для счастья? =)
2008-09-03, L!Ner
eGroupWare
Это сервер групповой работы. Он укомплектован собственным веб-интерфейсом, который обеспечивает доступ к вашим данным с любой платформы по всей планете.
2008-08-30, jafff
MAC адрес
У девайса VoIP Planet VIP-000 слетел MAC адрес и стал FF-FF-FF-FF-FF-FF, как я его востанавливал
2008-08-30, Morty
clonehdd
Перенесение, бэкапирование HDD,легко и просто
2008-07-31, Raven2000
Proxy Auto Configuration
Возникла необходимость автоматически настраивать прокси для всех компов и не бегать например если поменялось что-то на сервере прокси. Для этого давно существует технология Proxy Auto Configuration.
2008-07-29, f0s
NNTP сервер
Конфигурирование собственного NNTP-сервера.
2008-07-28, Al
spamooborona
настройка yandex spamooborona в качестве smtp-proxy для работы с exim
|
Комментарии пользователей [17 шт.]