The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Вариант создания собственного терминального клиента. (xterm linux dhcp initrd boot diskless pxe)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: xterm, linux, dhcp, initrd, boot, diskless, pxe,  (найти похожие документы)
From: Андрей <sandysandy at rambler.ru> Newsgroups: opennews Date: Mon, 27 Apr 2004 14:31:37 +0000 (UTC) Subject: Вариант создания собственного терминального клиента. Оригинал: http://andrek.ipsp.ru/ Вариант создания собственного терминального клиента. 1. Ядро, минимум опций которые я использовал: - тип процессора 386 - Networking support - шина PCI - тип бинарников ELF - RAM диск - initrd Сетевые опции - packet socket - socket filtering - unix domain sockets - tcp networking - ip kernel level autoconfiguration - ip dhcp support Драйвера сетевых адаптеров - Virtual terminal - Support for console on virtual terminal - Standart generic serial port - Mouse support - PS/2 mouse - /proc file system support - second extended fs support - vga text console 2. В сети настроены и работают сервисы dhcp и dns. Так же необходимы работающие сервер шрифтов xfs и tftp для загрузки образа ядра по сети. Дополнительная настройка dhcpd.conf, добавляем параметры: allow booting; allow bootp; filename "pxelinux.0"; Файл pxelinux.0 берется из пакета syslinux. Настройка xfs сводится к закоментированию параметра no-listen = tcp в файле /etc/X11/fs/config и перезапуска сервиса. Этапы процесса загрузки: - инициализация PXE - подключение к DHCP - загрузка загрузка pxelinux.0 чтение конфига и загрузка ядра и образа initrd - инициализация сетевого интерфейса - монтирование root фс - запуск /sbin/init - запуск скрипта инициализации rc.sysinit (http://andrek.ipsp.ru/rc.sysinit) * монтирование /proc * установка hostname (term-ip address) * определение системных параметров через /proc/cmdline * генерация /etc/resolv.conf * определение видеокарты через /proc/pci * генерация /etc/X11/XF86Config * запуск X + rdesktop 3. Образ корневой фс собран на базе RedHat72, glibc-2.2.4. Стандартный набор XFree86 был слишком раздут. Пришлось собирать, в исходниках был только XFree86-4.4.0. Использовался host.def #define LinuxDistribution LinuxRedHat #define XF86CardDrivers nv sis s3 s3virge trident via vesa #define DefaultCCOptions -O2 -mcpu=i386 -march=i386 #define BuildFontServer no #define BuildFonts no #define BuildXKB no #define BuildDPMS no #define BuildServersOnly yes При компиляции, пару раз вылетало с ошибками, но достаточно заккоментировать строки с номерами ошибок, там в основном определения которые мы запретили. Cобрано со следующими драйверами (nv, riva128, s3, s3virge, sis, trident, via, vesa) Так же присутствует поддержка мыши и PS/2 и COM1. Поддержка сетевых адаптеров, выбирается при сборке ядра исходя из потребностей. Загрузить образ можно здесь http://andrek.ipsp.ru/initrd.gz (4 Mb). Посмотреть список всех файлов (http://andrek.ipsp.ru/list.txt). Следующие опции определены: NSERVER - ip адрес DNS сервера в сети, по умолчанию 192.168.1.100 DOMAIN - домен, по умолчанию domain XFSERVER - сервер шрифтов, по умолчанию xfs.$DOMAIN TSERVER - сервер терминалов, по умолчанию tserver.$DOMAIN VIDEODRIVER - принудительное выставление драйвера HSYN - параметр HorizSync, по умолчанию "31-55" VREF - параметр VertRefresh, по умолчанию "50-160" MODES - разрешение экрана, по умолчанию "800x600" Настройка PXE загрузчика сводится к определению файла для каждого сетевого адреса либо default. Пример 1. файл tftpboot/pxelinux.cfg/default label linux kernel bzImage append ramdisk_size=11000 initrd=initrd.gz root=/dev/ram0 NSERVER=192.168.1.1 DOMAIN=runet.ru ipappend 1 Пример 2. файл tftpboot/pxelinux.cfg/С0A801B4 для клиента с адресом 192.168.1.180 label linux kernel bzImage append ramdisk_size=11000 initrd=initrd.gz root=/dev/ram0 NSERVER=192.168.1.1 DOMAIN=runet.ru MODES=1024x768 HSYN=31-57 VREF=55-190 ipappend 1 С успехом загружался и работал на клиенте с 24Мб оперативной памяти. В собственном варианте добавил загрузку smbd и доступ по сети к дисководу. Вопросы и рекомендации можно отправлять на icq 62270603. Иркутск. 2004г.
rc.sysinit: #!/bin/sh # # Terminal Linux # sandysandy@rambler.ru # echo -n "Mounting /proc filesystem..." mount -t proc /proc /proc mount -o remount,rw / echo "Ok" CONFIG='/etc/X11/XF86Config' if [ "`cat /proc/cmdline | grep NSERVER`" ]; then NSERVER="`cat /proc/cmdline | sed 's/.* NSERVER=\(\S*\) .*/\1/'`" else NSERVER='192.168.1.100' fi if [ "`cat /proc/cmdline | grep DOMAIN`" ]; then DOMAIN="`cat /proc/cmdline | sed 's/.* DOMAIN=\(\S*\) .*/\1/'`" else DOMAIN='domain' fi if [ "`cat /proc/cmdline | grep TSERVER`" ]; then TSERVER="`cat /proc/cmdline | sed 's/.* TSERVER=\(\S*\) .*/\1/'`" else TSERVER="tserver.$DOMAIN" fi echo $TSERVER > /etc/TSERVER if [ "`cat /proc/cmdline | grep TSERVER`" ]; then XFSERVER="`cat /proc/cmdline | sed 's/.* XFSERVER=\(\S*\) .*/\1/'`" else XFSERVER="xfs.$DOMAIN" fi # resolv.conf cat > /etc/resolv.conf << EOF search $DOMAIN nameserver $NSERVER EOF # up localhost /sbin/ifconfig lo 127.0.0.1 up /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # up hostname A="`ifconfig eth0 | grep inet | cut -d: -f2 | cut -d' ' -f1 | cut -d. -f4`" HOSTNAME="term-$A" echo "Setting up hostname - $HOSTNAME" hostname $HOSTNAME VGA="`cat /proc/pci | grep VGA`" echo 'Configure XFree86 Server' echo -n ' Detecting video card - ' if [ "`echo $VGA | grep -i virge`" ]; then echo 'found S3 Virge driver.' VIDEODRIVER=s3virge elif [ "`echo $VGA | grep -i savage`" ]; then echo 'found S3 Savage driver.' VIDEODRIVER=savage elif [ "`echo $VGA | grep -i trio`" ]; then echo 'found S3 Trio driver.' VIDEODRIVER=s3 elif [ "`echo $VGA | grep -i trident`" ]; then echo 'found Trident driver.' VIDEODRIVER=trident elif [ "`echo $VGA | grep -i sis`" ]; then echo 'found SIS driver.' VIDEODRIVER=sis elif [ "`echo $VGA | grep -i via`" ]; then echo 'found VIA driver.' VIDEODRIVER=via elif [ "`echo $VGA | grep -i nvidia`" ]; then echo 'found Nvidia driver.' VIDEODRIVER=nv else echo 'not found. Use default - Vesa driver.' VIDEODRIVER=vesa fi if [ "`cat /proc/cmdline | grep VIDEODRIVER`" ]; then VIDEODRIVER="`cat /proc/cmdline | sed 's/.* VIDEODRIVER=\(\S*\) .*/\1/'`" fi if [ "`cat /proc/cmdline | grep MODES`" ]; then MODES="`cat /proc/cmdline | sed 's/.* MODES=\(\S*\) .*/\1/'`" else MODES="800x600" fi if [ "`cat /proc/cmdline | grep HSYN`" ]; then HSYN="`cat /proc/cmdline | sed 's/.* HSYN=\(\S*\) .*/\1/'`" else HSYN="31-55" fi if [ "`cat /proc/cmdline | grep VREF`" ]; then VREF="`cat /proc/cmdline | sed 's/.* VREF=\(\S*\) .*/\1/'`" else VREF="50-160" fi # XF86Cofig cat > $CONFIG << EOF Section "Files" FontPath "tcp/$XFSERVER:7100" RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Mouse1" "AlwaysCore" InputDevice "Keyboard0" "CoreKeyboard" EndSection Section "InputDevice" Option "XkbDisable" Identifier "Keyboard0" Driver "keyboard" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IntelliMouse" Option "Device" "/dev/ttyS0" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/psaux" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "no" EndSection Section "Monitor" Identifier "Monitor0" HorizSync $HSYN VertRefresh $VREF EndSection Section "Device" Identifier "Videocard0" Driver "$VIDEODRIVER" EndSection Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Depth 16 Modes "$MODES" EndSubSection EndSection EOF

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
 
  • 1, andrek, 05:36, 17/11/2004 [ответить] [смотреть все]
  • +/
    ссылка http://andrek.ipsp.ru/term/

    rdesktop из CVS умеет делать редирект дисков.
    для нормальной кодировки необходим патч из sourceforge.net
    редирект портов через rdesktop работает только для одной сессии.
    для нормального редиректа LPT, можно использовать демон lp_server, создает стандартный сетевой принтер.
    для редиректа COM используйте mdmpoold и клиент под  windows - npccomm (включает в себя и сервер под windows).

     
  • 2, tak, 17:24, 19/01/2013 [ответить] [смотреть все]
  • +/
    Пример терминального клиента на базе мини дистрибутива Slitaz + freeRDP
    http://alexprays.blogspot.ru/2013/01/blog-post_19.html
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor