HOW-TO по созданию бездисковых узлов на базе Linux

Этот документ описывает способ создания бездисковых узлов на базе Linux. Технология "тонких клиентов" позволяет сократить расходы на обслуживание вычислительной техники и повышает ее надежность, поэтому бездисковые рабочие станции можно смело назвать удачным выбором для широкого круга организаций.

[Robert Nemkin]

HOW-TO по созданию бездисковых узлов на базе Linux

Abstract

Этот документ описывает способ создания бездисковых узлов на базе Linux. Сетевые технологии быстро совершенствуются, а сетевые карты становятся дешевле и быстрее. Сейчас стандартны 100 Мбит ethernet карты, а через год-два промышленным стандартом станут 1000 Мбит, т.е. 1Гбит ethernet карты. Удаленный доступ через высокоскоростные сетевые карты по скорости сравним с доступом к локальному диску, что делает бездисковые узлы, объединенные локальной сетью жизнеспособной альтернативой рабочим станциям. Также бездисковые узлы помогают избежать расходов на обновление программного обеспечения и системное администрирование, так, например, резервное копирование и восстановление будет централизовано на сервере. Бездисковые узлы также позволяют применить "совместное использование/оптимизацию" процессора центрального сервера, памяти, жестких дисков, ленточных приводов и приводов компакт-дисков. Бездисковые компьютеры обеспечивают мобильность пользователей, так, например, пользователи могут войти в систему с любого бездискового узла, и не привязаны к своей рабочей станции. Бездисковые узлы полностью исключают необходимость наличия локального дисковода, привода cdrom, ленточного устройства и жесткого диска. Бездисковый узел содержит ВСЕГО ЛИШЬ сетевую плату, 8MB RAM, не скоростной процессор и очень простую материнскую плату, в которой нет никаких сокетов/слотов для жестких дисков, модемов, cdrom приводов, дисководов и т.п. С помощью бездисковых узлов на linux вы сможете запускать программы на удаленном 64-процессорном SMP Linux компьютере или даже на суперкомпьютере с Linux! Бездисковые узлы понижают "Совокупную стоимость владения" компьютерных систем. Авторские права на документ принадлежат Robert Nemkin и другим вышеперечисленным соавторам. Лицензия документа - GPL. Спасибо Bela Kis bkis@cartan.math.klte.hu за перевод на Английский начальной версии v0.0.3 этого документа (который был mini-howto).


О чем все это?

(Последняя версия этого документа доступна на http://www.milkywaygalaxy.freeservers.com).

У бездисковых компьютеров нет жесткого диска, флоппи-дисководов и ленточных приводов. Они обеспечивают значительное сокращение "Совокупной стоимости владения" путем устранения стоимости обслуживания. Вы можете создать бездисковый компьютер с Linux одним из следующих двух способов:

  1. Загружаясь прямо с загрузочного Linux CDROM. Linux CDROM это - Linux система, содержащая все необходимые приложения и программы, часть из которых загружается в RAM диск.

  2. Последние версии ядра делают возможным загружать linux непосредственно по сети, путем загрузки ядра и корневой файловой системы с сервера. В этом случае, клиент может использовать несколько способов получения начальных инструкций по загрузке: с самостоятельно созданного eprom; используя сетевые карты реализующие протоколы RARP, BOOTP или DHCP; используя cdrom, или загружаясь с дискеты или локального жесткого диска.

Самый простой путь создания бездискового компьютера состоит в использовании Linux на CDROM. Вы просто заносите Linux на CDROM, вставляете его в CDROM привод, включаете питание и все готово! Более детально смотрите главу "Linux на CDROM" в этом документе.

Второй вариант - использовать EPROM, но это потребует дополнительной работы, как со стороны сервера, так и со стороны клиента. Если вы выбрали метод с EPROM, я рекомендую вам просто купить бездисковый компьютер с Linux у приведенных в следующих главах производителей.

Преимущества бездискового компьютера

Бездисковый linux компьютер станет чрезвычайно популярен и будет продуктом этого и следующего столетий. Бездисковые linux компьютеры обретут успех из-за доступности очень высокоскоростных сетевых карт по очень низкой цене. Сегодня повсеместно распространены 100 Мегабит/секунду сетевые карты (скорость передачи 11.92 Мегабайт/секунду), а в следующие 1 или 2 года очень подешевеют и станут стандартными сетевые карты 1000 MBit (скорость передачи 119.2 Мегабайт/секунду).

В ближайшем будущем, для создания бездискового компьютера производители мониторов поместят процессор, сетевую плату память прямо в монитор!! Таким образом, отпадет необходимость в отдельном корпусе для бездискового компьютера и будет сохранено пространство. В мониторе будет разъем для мышки, клавиатуры, сетевого шнура RJ45 и шнура питания.

Ниже приводятся преимущества использования бездисковых компьютеров:

  • Никаких отнимающих время UPGRAD-ов!! С Linux на CDROM обновление бездисковой рабочей станции просто "выбрасывание-старого-CDROM-и-установка-нового-CDROM-в-устройство". Все это займет 5 секунд!!

  • Совместное использование памяти центрального сервера многими пользователями бездисковых компьютеров. Например, если многие пользователи используют web-броузер, то в памяти сервера будет только одна копия web-броузера. В случае ПК с Windows 95, многим пользователям требуется индивидуальная копия web-броузера в локальной памяти, и таким образом расходуется оперативная память. Так как память сервера "разделяется" сотнями дисковых клиентов, возможна большая экономия на стоимости памяти. Вы можете объединять память, перемещая её с клиентских компьютеров на сервер.

  • Бездисковые компьютеры могут запускать как MS Windows 95/NT, так и linux программы.

  • При бездисковых компьютерах совокупная стоимость владения очень низка. Совокупная стоимость владения состоит из индивидуальных закупок + стоимость обслуживания. Стоимость обслуживания обычно превышает в 3 - 5 раз стоимость начальных закупок компьютеров и эта сумма расходуется из года в год. В случае бездисковых компьютеров, стоимость обслуживания полностью устраняется!!

  • Все резервное копирование централизовано на одном главном сервере.

  • Размещением данных на сервере достигается повышенная их безопасность.

  • Для бездисковых клиентов не требуется UPS батарей, кондиционеров, пылеуловителей, они нужны только на сервере. Только удаленный сервер в "Серверной" требует наличия UPS, избыточности по питанию, портативного дизельного электрогенератора, кондиционера, противопожарных устройств, очень ограниченного доступа с закрытой и защищенной дверью.

  • Шум полностью исключается, так как бездисковые компьютеры не содержат охлаждающих вентиляторов, и локальных жестких дисков. Только сервер создает много шума, но он заперт в отдельной комнате ("Серверной").

  • Защита от вирусных атак - компьютерные вирусы не могут атаковать бездисковые станции, так как в них нет жесткого диска. Вирусы не могут повредить бездисковые компьютеры, Только сервер требует защиты от вирусных атак. Возможность избежать установок антивирусных и чистящих программ сохранит кампаниям миллионы долларов!!

  • В сервер могут устанавливаться большие мощные высокопроизводительные жесткие диски, он может оптимизировать использование дискового пространства совместно обслуживая многих пользователей бездисковых компьютеров. Отказоустойчивость жестких дисков можно поднять, используя на главном сервере RAID.

  • Сервер может содержать несколько 64 битных процессоров или даже быть Linux кластером. Мощность процессора может быть разделена между многими пользователями бездисковых компьютеров.

  • Бездисковые компьютеры чрезвычайно быстрые, так как полностью исключается время загрузки программы. Например, если сервер по требованию одного бездискового клиента загружает в память StarOffice, то другие бездисковые пользователи, которые захотят использовать StarOffice сохранят необходимое на его загрузку время, так как он уже находится в памяти.

  • Бездисковые linux компьютеры могут запускать программы на нескольких серверах, используя переменные "xhost" и DISPLAY.

  • Для обслуживания сервера требуется всего несколько системных администраторов, в отличие от Windows 95 клиентов, для которых требуется много администраторов.

  • Нулевое администрирование клиентских компьютеров. Бездисковые компьютеры абсолютно не требуют обслуживания и не создают проблем.

  • Продолжительный срок службы клиентов - больше чем 300 лет без каких-либо аппаратных или программных обновлений.

  • Для бездисковых клиентов исчезает необходимость устанавливать/обновлять аппаратуру и программы клиентских компьютеров.

  • Отсутствуют расходы на cdrom, дисковод, ленточные приводы, модем, UPS, принтер, параллельные порты, последовательные порты и т.п.

  • Предотвращаются мелкие кражи аппаратных компонентов, так как бездисковый узел требует небольшого количества памяти и недорогого процессора. Сервер содержит много памяти и много мощных процессоров.

  • Возможна работа в таких условиях как пол завода, для которых жесткий диск был бы слишком хрупким компонентом.

  • Бездисковые узлы работают даже в глобальных сетях.

Бездисковые компьютеры с "Linux CDROM"

"Linux CDROM" - CDROM на котором содержится файловая система с полной операционной системой Linux. Он создается копированием рабочей Linux системы на CDROM. "Linux CDROM" загружает Linux систему прямо с CDROM диска, но для этого вы должны настроить порядок загрузки в BIOS. Обычно последовательность загрузки такова: дисковод, жесткий диск, CDROM. Вы можете войти в BIOS, нажав клавишу Del после включения питания компьютера.

Возьмите "Linux CDROM" с

Рабочие станции с "Linux CDROM" становятся реальностью по следующим причинам:

  1. цена оперативной памяти все время снижается и 512MB памяти стоит всего лишь 70 долларов.

  2. CDROM диски становятся чрезвычайно быстрыми, их текущая скорость чтения достигает 72X.

  3. CDROM IDE диски очень дешевы, CDROM с 52X скоростью чтения стоит всего 33 доллара.

  4. DVD-ROM также дешевеют и могут хранить до 5 Гигабайт Linux программ, и они в три раза быстрее CDROM.

Главное преимущество Linux CDROM перед другими типами бездисковых узлов, такими как EEPROM, в простоте, вы можете запросто обновлять Linux CDROM новой версией ядра Linux каждые три месяца. Просто выбросите старый Linux CDROM и возьмите новую версию. Обновление всего за 20 секунд и стоит 30 центов (меньше доллара!). В ближайшем будущем, Linux на CDROM + DVD-ROM будет правилом для настольных компьютеров.

UPGRADE ЗА ПЯТЬ СЕКУНД: Linux на CDROM способствует БЫСТРОМУ обновлению операционной системы. Вы можете обносить OS менее, чем за 5 секунд!! Linux на CDROM представляет концепцию массового быстрого обновления. Просто выбросьте старый Linux на CDROM, вставьте новый CDROM и вы уже обносились!

Если у вас есть Linux CDROM, вам не нужен жесткий диск, дисководы и прочее. Все что вам нужно для создания бездисковой станции:

  1. Linux CDROM

  2. Процессор

  3. Материнская плата

  4. Сетевая карта

  5. Привод CDROM (IDE или SCSI)

  6. Оперативная память (минимум 32 MB для графики и минимум 16 MB для консольного режима)

Лучшие цены на память и приводы CDROM IDE смотрите на online-аукционах, таких как Egghead http://www.egghead.com или местных магазинах вашего города, например, UBM, Houston.

После загрузки "Linux CDROM", вы можете монтировать дисковые разделы удаленного Linux сервера. И для доступа к Windows2000 и Linux серверам можете использовать VNC. Либо вы можете использовать WinConnect для доступа к MS Windows приложениям, таким как MS Office, Outlook и т.п. Но WinConnect требует MS Windows XP/2000/NT сервера.

Для оценки характеристик приводов CDROM/DVD пользуйтесь программами от http://www.cdspeed2000.com. Этот сайт также приводит сравнение характеристик приводов различных производителей. Наиболее высокоскоростные CDROM приводы (до 72x скоростей) у Kenwood http://www.kenwoodtech.com .

Создание Linux CDROM

Вы можете создать собственный Linux CDROM с подстроенным под себя ядром, поддержкой аппаратуры, загружаемых модулей и т.п.

Изначально эта секция была написана Hans de Goede j.w.r.degoede@et.tudelft.nl для Diskless-root-NFS-HOWTO. Я ее немного модифицировал для отражения некоторых различий между этим документом и Diskless-root-NFS-HOWTO.

Многое из приведенного также касается загрузки с cdrom. Зачем кому-то загружать компьютер с cdrom? Загрузка с cdrom интересна всем тем, кто хочет получить очень специфичное применение, такое как киоск, библиотечная база данных или интернет-кафе, и не хочет создавать сетевой сервер для использования корневой системы через NFS.

Создание тестовых настроек

Теперь, когда мы знаем, что и как мы хотим сделать, самое время создать тестовые настройки:

  • Для начала возьмите одну из машин, которые предполагаете использовать, и вставьте большой диск и устройство записи компакт-дисков.

  • Выполните на этой машине все необходимые настройки и оставьте свободный раздел размером 650Мб для тестирования настроек. Эта машина будет пользоваться для создания iso образа и записи диска, так что установите необходимые утилиты. Она также будет использоваться для устранения всяких гадостей, которые не будут давать загружаться с тестового раздела.

  • На 650 Мб разделе установите linux с необходимыми настройками, которые вы хотите получить на cd, это будет тестовая установка.

  • Загрузитесь с тестовой установки.

  • Откомпилируйте ядро с встроенной поддержкой isofs и cdrom.

  • Сделайте все вышеописанные тестовые настройки для монтируемой в режиме только для чтения корневой файловой системы.

  • Проверьте, что все тестовые настройки автоматически загружаются и все работает.

  • Загрузите основную систему и смонтируйте 650 Мб раздел в /test основной системы.

  • Вставьте следующий файл с именем /test/etc/rc.d/rc.iso, этот файл будет запускаться перед rc.sysinit для создания /var:

    #/var
    echo Creating /var ...
    mke2fs -q -i 1024 /dev/ram1 16384
    mount /dev/ram1 /var -o defaults,rw
    cp -a /lib/var /
    

  • Отредактируйте /test/etc/rc.sysinit, за-комментируйте строки, где корневая файловая система перемонтируется в режиме rw, и добавте следующие 2 строки прямо после инициализации PATH:

    #для загрузки с cdrom
    . /etc/rc.d/rc.iso

  • Для создания шаблона /var создайте и выполните следующий скрипт, а также создайте ссылки /tmp и /etc/mtab.

    #!/bin/sh
    echo tmp
    rm -fR /test/tmp
    ln -s var/tmp /test/tmp
    
    ###
    echo mtab
    touch /test/proc/mounts
    rm /test/etc/mtab
    ln -s /proc/mounts /test/etc/mtab
    
    ###
    echo var
    mv /test/var/lib /test/lib/var-lib
    mv /test/var /test/lib
    mkdir /test/var
    ln -s /lib/var-lib /test/lib/var/lib
    rm -fR /test/lib/var/catman
    rm -fR /test/lib/var/log/httpd
    rm -f /test/lib/var/log/samba/*
    for i in `find /test/lib/var/log -type f`; do
     cat /dev/null > $i;
    done
    rm `find /test/lib/var/lock -type f`
    rm `find /test/lib/var/run -type f`
    

  • Удалите создание /etc/issue* из /test/etc/rc.local: это будет только мешать.

  • Теперь снова загрузите тестовую систему, она должна быть в режиме только для чтения прямо как cdrom. Если что-то не работает, перезагрузитесь в рабочую систему и внесите необходимые исправления, попробуйте снова и т.д. Либо перемонтируйте / в режиме rw, внесите исправления и снова перегрузитесь в тестовый раздел. Для перемонтирования / в режиме rw наберите:

    # mount -o remount,rw /
    

Создание CD

Если вам нужна более подробная информация, чем приводимая ниже, обратитесь к CD-Writing-HOWTO.

Создание загрузочного образа

Прежде всего, загрузитесь в рабочую систему. Для создания загрузочного cd я рекомендую образ загрузочной дискеты. Простое копирование zImage программой dd не работает, так как загрузчик в начале zimage не видит фиктивного дисковода создаваемого загрузочным компакт-диском. Поэтому вместо этого мы используем syslinux.

  • Возьмите boot.img из установочного компакт-диска redhat.

  • Смонтируйте в каком-либо месте boot.img посредством loopback набрав:

    # mount boot.img somewhere -o loop -t vfat
    

  • Удалите все из boot.img кроме ldlinux.sys и syslinux.cfg.

  • Скопируйте образ ядра из тестового раздела в boot.img.

  • Отредактируйте syslinux.cfg так, чтобы он содержал следующее, нужно заменить zImage соответствующим именем образа ядра:

    default linux 
    
    label linux
    kernel zImage
    append root=/dev/<вставьте здесь имя вашего устройства cdrom>

  • Размонтируйте boot.img:

    # umount somewhere

  • Если ваш /etc/mtab - ссылка на /proc/mounts, де монтирование автоматически не освободит /dev/loop0, поэтому наберите:

    # losetup -d /dev/loop0

Создание образа iso

Сейчас у нас есть загрузочный образ и инсталляция, которая может монтироваться в режиме только чтение, самое время создать iso образ компакт-диска:

  • Скопируйте boot.img в /test

  • Войдите в каталог, где вы хотите поместить образ и проверьте, что на этом разделе достаточно свободного места.

  • Теперь создайте образ набрав:

    # mkisofs -R -b boot.img -c boot.catalog -o boot.iso /test

Проверка iso образа

  • Смонтируйте образ с помощью loopback устройства, набрав:

    # mount boot.iso somewhere -o loop -t iso9660

  • Размонтируйте boot.iso:

    # umount somewhere

  • Если ваш /etc/mtab - ссылка на /proc/mounts, то размонтирование автоматически не освободит /dev/loop0, так что наберите:

    # losetup -d /dev/loop0

Запись на CD

Предположим у вас уже установлен и настроен cdrecord для вашего типа устройства записи компакт-дисков:

# cdrecord -v speed=<желаемая скорость записи>\
              dev=<путь к обобщенному scsi устройству вашего устройства записи>\
              boot.iso

Загрузитесь с компакт диска и проверьте его

Что ж, судя по заголовку параграфа - все сделано;)

Купить дешевле, чем сделать!

Иногда купить бездисковый компьютер с linux дешевле купить, чем сделать самому!! В настоящее время мы фокусируем нашу энергию на экономии и эффективном управлении временем. Прошли те дни, когда вы должны были все делать сами! Люди внедрили концепцию массового производства (на заводе есть производственные линии, выдающие продукцию на гора миллионами штук). В индустриальных нациях, таких как США, каждый продукт, который вы видите, сделан массовым, и бездисковые компьютеры не исключение. В США есть много кампаний производящих бездисковые компьютеры в больших количествах.

Посетите следующие коммерческие сайты, которые продают сетевые карты для бездисковой загрузки linux и бездисковые компьютеры. Эти кампании массово производят бездисковые компьютеры на Linux миллионами штук со значительно сниженной стоимостью за единицу. Все, из почти 1000 кампаний в США, будут заменять MS Windows PC бездисковыми компьютерами в ближайшем будущем, так как бездисковые компьютеры на основе linux могут запускать как Linux, так и MS Windows 95 программы (посредством программы VMWare BIOS). VMWare - НЕ эмулятор, но содержит BIOS, который позволяет устанавливать Windows 98/NT в качестве гостевой операционной системы в linux. Для запуска с бездискового узла программ Windows95/Linux Вы можете использовать команду 'xhost' и переменную окружения DISPLAY. Смотрите 'man xhost' на linux. Также для запуска программ Windows95/NT на бездисковых узлах linux вы можете пользоваться Virtual Network Computing (VNC). Возьмите VNC с http://www.uk.research.att.com/vnc Либо вы можете использовать WinConnect для доступа к MS Windows приложениям, таким как MS Office, Outlook и т.п. Но WinConnect требует MS Windows XP/2000/NT сервера.

  • Linux Systems Labs Inc., USA http://www.lsl.com Щелкните на "Shop On-line" и затем щелкните на "HardWare", где будут перечислены все бездисковые компьютеры. Звоните 1-888-LINUX-88.

  • Diskless Workstations Corporation, USA http://www.disklessworkstations.com

  • Unique Systems of Holland Inc., Ohio, USA http://www.uniqsys.com

Даже если вы купили бездисковый linux компьютер, возможно, вам все-же будет интересно дочитать этот документ до конца.

Интернет-кафе и банковские операции с помощью "Бездискового компьютера с Linux"

В интернет-кафе Вы можете установить бездисковые компьютеры. Интернет-кафе - чрезвычайно популярны в таких странах как Индия, Таиланд, Китай. В Индии интернет-кафе также служат в качестве банковских финансовых центров, куда люди ходят оплачивать счета, торговать акциями, переводить деньги и выполнять онлайновые банковские операции. В Индии люди не идут в банк, выполнять онлайновые банковские операции они идут в Интернет-кафе.

Установка IP Masquerading, IP Netfilter и Squid

Для подключения бездисковых узлов к Интернет, на главном, подключенном к Интернет, Linux сервере вы должны установить IP Masquerading. Главный сервер выступает в роли прокси-сервера для бездисковых узлов.

Настройка Firewall и IP Masquerading : Для Linux ядер серии 2.4 и выше, firewall и IP Masquerading реализованы посредством пакета NetFilter. Тем не менее, вы должны активизировать Netfilter в настройках ядра и запустить Firewall/IPMasq скрипт. Загрузите скрипты с Скрипты для Firewall-IPMasq , главная страница Netfilter - http://netfilter.samba.org. Относящиеся к данной теме материалы на firewalling-matures и Netfilter-FAQ.

Для ядер версий ниже 2.4 вы должны установить firewall rpm из rpmfind.net или firewall.src.rpm.

Также смотрите http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html.

Установка Squid : Вы должны установить Squid на главном сервере, выступающем в роли прокси-сервера для бездисковых узлов.

Squid - высокопроизводительный кэширующий прокси-сервер для Web клиентов, поддерживает FTP, gopher, и HTTP объекты. В отличие от традиционных кэширующих серверов, Squid обрабатывает все запросы в одном не блокируемом процессе ввода-вывода. Squid хранит в памяти кеш данных и специальных горячих объектов, кэширует DNS запросы, поддерживает не блокирующие DNS запросы, и реализует отрицательное кэширование отказавших запросов.

Squid состоит из главной северной программы squid, программы обзора Domain Name System (dnsserver), программы получения FTP данных (ftpget), и некоторых управляющих и клиентских утилит.

Установка Squid с Linux cdrom -

bash# rpm -i /mnt/cdrom/RPMS/squid*.rpm
Номер порта, на котором запускается Squid, можно узнать, просмотрев файл /etc/services и поискав слово "squid". Должна быть строка примерно такого вида 'squid 3128/tcp # squid web proxy'

На бездисковых узлах запустите броузер и щелкните на Настройки и проверьте "использование прокси". Вставьте имя хоста главного Linux сервера и номер порта 3128. Теперь бездисковый узел может ходить в Интернет по Web страницам!

Бездисковый компьютер для Microsoft Windows 95/NT!!

Так как Microsoft Windows 95/NT НЕ поддерживает бездисковых узлов, есть элегантный способ обойти это. Корпорация Microsoft будет удивлена!!

Пакет VMWare

Программа VMWare BIOS используется вместе с Linux, и служит основой для Windows 95/98/NT. Linux будет основной операционной системой, а Windows 95/NT будет гостевой операционной системой. VMWare - НЕ эмулятор, а содержит BIOS, который позволяет вам установить Windows 95/98/NT в качестве гостевой операционной системы на linux. Установите VMWare на Linux сервер, а затем установите Windows 95/NT на VMWare.

Вы можете использовать команду 'xhost' и переменную окружения DISPLAY с любого бездискового хоста. Смотрите 'man xhost' на linux. На бездисковом узле дайте -

export DISPLAY=server_hostname:0.0
где server_hostname - имя машины-сервера. И запустите X-терминал xterm
Используя VMWare, бездисковые компьютеры могут запускать программы как Linux, так и для MS Windows 95. VMWare доступна на http://www.vmware.com.

VNC пакет фирмы AT and T

Вы также можете использовать технологию VNC (Virtual Network Computing) фирмы AT & T. VNC - распространяется под лицензией GPL и является свободной программой. Используя VNC, вы сможете на бездисковом linux компьютере работать с программами для Windows 95/NT, фактически запуская их на удаленном Windows95/NT сервере.

Используя VNC, вы сможете отображать на вашем локальном мониторе программы, работающие на удаленных машинах.

  • VNC доступен по http://www.uk.research.att.com/vnc

  • VNC rpm можно взять с rpmfind.

  • Лучший Оконный менеджер для VNC - QVWM, который имеет сходный с MS Windows 98/NT/2000 интерфейс, возьмите его с http://www.qvwm.org. Для выключения xlock в qvwm отредактируйте файл qvwm/system.qvwmrc и закомментируйте XLock.

  • После запуска vncserver, вы можете запустить программу vncviewer на таких клиентах как MS Windows, Mac или Linux.

  • Также смотрите Список оконных менеджеров для X11.

  • Также смотрите WinConnect для доступа к MS Windows приложениям, таким как MS Office, Outlook и т.п. Но WinConnect требует MS Windows XP/2000/NT сервера.

Компиляция qvwm на Solaris : На Solaris вы должны установить следующие пакеты - xpm, imlib, jpeg, libungif, giflib, libpng, tiff, их можно получить с http://sun.freeware.com. Также можно загрузить бинарный пакет для solaris с http://www.qvwm.org.

Или же можно загрузить исходный код qvwm для solaris с http://www.qvwm.org и откомпилировать его с помощью gcc.

Проблемы при компиляции: Вам следует вставить unsigned long перед аргументом в usleep() --- usleep((unsigned long) 10000)

Быстрый способ реализации бездисковых узлов

Ниже следует обзор способов построения бездисковых узлов:

Создание программатора EEPROM

Что это такое?

Заметка: Эта глава написана Abhijit Dasgupta. Его email адрес: takdoom@yahoo.com

Проект называется EEP и может быть получен с:

Пожалуйста, не пользуйтесь старым URL для EEP.

EEP - имеющий открытый аппаратный дизайн (вы можете свободно его копировать, использовать, и модифицировать) программатор EEPROM для 24-контактных и 28-контактных 5-вольтовых EEPROM. Есть много разных разработок, но главной целью было получить нечто

  • простое в построении и содержащее широко распространенные компоненты,

  • дешевое и

  • управляемое Linux.

Последняя версия - EEP-0.2.

Микросхемы в EEP из распространенной 74HCT серии, используется интерфейс параллельного порта. Я написал код драйвера только для Linux, но этот код под лицензией GPL, и вы можете его модифицировать для других операционных систем.

Я использую EEP для создания загрузочных PROM для сетевых карт, эти карты я использовал для создания бездисковых компьютеров на linux. Более детально о том, как это делается, смотрите в пакете netboot/etherboot. Также вы можете использовать его для программирования систем на микроконтроллерах с внешним ПЗУ (например, 8031).

Конструкция

ВНИМАНИЕ: Параллельный порт вашего ПК можно запросто повредить, что-либо к нему подключая. Также возможно повредить весь ваш ПК, периферию, и окружающих людей в результате неправильного подключения и несчастных случаев с электричеством. БУДЬТЕ ПРЕДЕЛЬНО ОСТОРОЖНЫ.

Отречение: Используйте на свой риск. Не дается абсолютно никакой гарантии, смотрите ниже COPYING/LICENSE.

Программатор может быть создан на макете, но для более постоянной версии используйте печатную плату. Для шунтирования шины питания используйте 0.1uF конденсаторы. Питание 5V может быть взято из PC, но будьте с ним осторожны. 28-контактный ZIF сокет, вероятно, самый дорогостоящий компонент. Если вы используете макет, можете обойтись без него (не рекомендуется).

Резистор 180 Ом соединяет контакт 10 (Y6) верхней микросхемы 74HCT259 и контакт 1 ZIF сокета - ограничительный резистор для защиты микросхемы 74HCT259 в случае использования 28-контактной EEPROM с контактом RDY/BSY. При использовании 32 килобайтных (256 килобит) EEPROM таких как 28256, для более надежного функционирования рекомендуется, чтобы этот резистор был закорочен.

Использование

Для создания и считывания eeprom используется программа eep. Она читает данные из stdin и записывает их в eeprom. Данные должны быть в двоичном (чистом) формате. Обычные hex и/или ascii форматы (Intel, Motorola srecord, и т.п.) не поддерживаются, так что если ваш ассемблер выводит данные только в формате hex/ascii, вам следует преобразовать их в двоичный формат (смотрите, например, Hex2bin и srecord, доступные в архиве metalab.unc.edu/pub/Linux). При чтении, вывод также в виде необработанных двоичных данных на stdout (если не указана опция -t).

Использование:

      eep  -0|-1|-2  -r|-w  -b|-t  offset  size

где:

    -0|-1|-2  -0 выбирает порт lp0, -1 порт lp1, и -2 порт lp2,
    -r|-w     -r считывает eeprom в stdout, и -w записывает его данными из stdin,
    -b|-t     -b обычный (двоичный) режим, и -t режим отладки (ascii hex),
    offset    стартовый адрес в eeprom, 0..32767, и,
    size      количество считываемых/записываемых байт, 0..32768.

offset и size могут указываться в виде строк цифр в десятичной записи,
но будут рассматриваться в шестнадцатеричной записи, если предваряются префиксом ``0x'',
и в восьмеричной записи, если предваряются ``0''.

Примеры
--------

# Считывание содержимого 2864 в двоичном (чистом) виде и запись его в файл
eep -1 -r -b 0 8192 > contents.bin
# То же самое:
eep -1 -r -b 0 0x2000 > contents.bin


# Список 16 байт, начиная со смещения 128
eep -1 -r -t 128 16
# Same as:
eep -1 -r -t 0x80 0x10


# Запись 16384 байт из файла nepci.lzrom в первую половину 
# 28C256 eeprom, через lp0:
cat nepci.lzrom | eep -0 -w -b 0 16384

Электрическая схема в ASCII символах


                       +-------+                      J1
              +5-------|RST    |               +5---o o o----+   +-----------+
              +5--o----|/CLR1  |         10K          |      |   |           |
                  |    |       |-----o--/VVV\-- +5    +------|---|26 A13(+5V)|
      +------+    |    |1/2 123|     |              +--------|-->|27 /WE(NC) |
 16 o-|/CS2  |    |    |       |--||-+              | +------|-->|23 A11(/WE)|
      |   CS1|----o----|B1     | 100pF              | | J2   |   |           |
      |      |         |    /Q1|---------->---------o o o    |   |  ZIF28    |
      |    Y1|---------|/A1    |                        |    |   |  socket   |
      | 138  |         +-------+         _ 1/2 74HCT132 |    |   |   for     |
      |      |                     +5 --| \   __        |    |   |  EEPROM   |
      |    Y2|--------------------------|  O--| \       |    |   |           |
  8 o-|A2    |                +-------+ |_/   |  O-----------|-->|22 /OE     |
  7 o-|A1  Y4|--------------->|EN   Y7|-----o-|_/       |    |   |           |
  6 o-|A0  Y3|----+    +5-----|RST    |     |   180 ohm |    |   |           |
      |    Y0|-+  |           |     Y6|-----|---/VVV\---|----|---|1 A14(NC)  |
      |  /CS3| |  |           | 259 Y5|-----|-----------|----+   |           |
      +------+ |  |           |     Y4|-----|-----------|------->|2 A12(NC)  |
            |  |  |           |     Y3|-----|-----------+        |           |
  5 o--->---|--|--|--------o--|D    Y2|-----|------------------->|21 A10     |
  4 o--->---|--|--|------o-|--|A2   Y1|-----|------------------->|24 A9      |
  3 o--->---|--|--|----o-|-|--|A1   Y0|-----|------------------->|25 A8      |
  2 o--->---|--|--|--o-|-|-|--|A0     |     |                    |           |
            |  |  |  | | | |  +-------+     |      +5------------|28 +5V(NC) |
            |  |  |  | | | |                |                    |           |
            |  |  |  | | | |  +-------+     |                    |           |
            |  |  |  | | | |  |     Y7|-----|------------o------>|3  A7      |
            |  |  +---------->|EN     |-----|-----------o|------>|4  A6      |
            |  |     | | | |  |       |-----|----------o||------>|5  A5      |
            |  |     | | | |  | 259   |-----|---------o|||------>|6  A4      |
            |  |     | | | |  |       |-----|--------o||||------>|7  A3      |
            |  |     | | | |  |       |-----|-------o|||||------>|8  A2      |
            |  |     | | | +--|D      |-----|------o||||||------>|9  A1      |
            |  |     | | +----|A2   Y0|-----|-----o|||||||------>|10 A0      |
            |  |     | +------|A1     |     |     ||||||||       |           |
            |  |     +--------|A0  RST|     |     ||||||||       | ZIF28     |
            |  |              +-------+     |   +------------+   | socket    |
            |  |                    |       |   |   data in  |   |  for      |
            |  |                   +5       +-->|/OE         |   | EEPROM    |
            |  |                                |     574    |   |           |
            |  +------------------------------->|CLK         |   |           |
            +----+                              |   data out |   |           |
                 |                              +------------+   |           |
                 |              +------------+     ||||||||      |           |
  9 o-------------------------->| SEL        |     ||||||||      |           |
                 |              |          B3|<----|||||||o------|19 D7      |
 11 o---<-----------------------|Y3        B2|<----||||||o-------|18 D6      |
 12 o---<-----------------------|Y2        B1|<----|||||o--------|17 D5      |
 13 o---<-----------------------|Y1  157   B0|<----||||o---------|16 D4      |
 15 o---<-----------------------|Y0        A3|<----|||o----------|15 D3      |
                 |              |          A2|<----||o--- data---|13 D2      |
                 |              |          A1|<----|o---- bus ---|12 D1      |
                 |       GND----|/OE       A0|<----o-------------|11 D0      |
  +5--o--+       |              +------------+                   |           |
      |  |  __   o---------------------------------------------->|20 /CE   14|
    100K +-|  \  |  __                                           +---------+-+
  sw1 |    |   O-o-|  \ 1/2 74HCT132                                       |
  o-->o----|__/    |   O---390ohm--+                                       |
  |   |          +-|__/            |                                  GND -+
  |  --- 1uF     |                LED
  |  ---     +5--+                 |
  |   |                            |
  +---o----------------------------o- GND
Заметки:
  1. Номера контактов разъема параллельного порта DB25 с левого угла.
  2. 24-контактные микросхемы (например, 2816) должны быть выровнены по нижнему краю 28-контактного ZIF сокета.
  3. Номера ножек справа для ZIF-28 сокета, не для микросхем.
  4. Названия сигналов в ZIF-28 сокете для 28-контактных EEPROM ( для 24-контактных EEPROM они приведены в приложениях).
  5. J1 и J2 однорядные 3-контактные разъемы для джамперов (или используйте DPDT переключатель).
  6. Для 28-контактных EEPROM, замкните левую пару контактов как на J1, так и на J2.
  7. Для 24-контактных EEPROM, замкните левую пару контактов и на J1, и на J2.
  8. Переключатель SPST sw1 должен быть открыт для разрешения функционирования программатора.
  9. Полный список контактов микросхем смотрите в файле pinouts.txt
Abhijit Dasgupta
takdoom@yahoo.com

EPROM программатор и микросхемы памяти

ниже приведена информация о EPROM и различных типах микросхем памяти.

Постоянные микросхемы памяти

Приводится короткое описание типов микросхем памяти.

  • PROM: Произносится prom - сокращение для программируемых ПЗУ. PROM - микросхема памяти, на которую данные могут быть записаны только один раз. Как только программа была записана на PROM, она остается там навсегда. В отличие от RAM, PROM хранят свое содержимое даже при выключении питания компьютера. Разница между PROM и ROM (ПЗУ) в том, что PROM производится с чистой памятью, а ROM программируется в процессе производства. Для записи в микросхемы PROM, вам потребуется специальное устройство, называемое PROM программатором. Процесс программирования PROM иногда называется созданием PROM. EPROM (стираемые ПЗУ) - специальный тип PROM, который может быть стерт ультрафиолетовым светом. После стирания микросхема может быть перепрограммирована. EEPROM подобны PROM, но требуют электрического стирания.

  • EPROM: Сокращение для стираемой энергонезависимой памяти и произносится e-prom, EPROM - специальный тип памяти, который хранит содержимое до того, как будет стерт ультрафиолетовым светом. Ультрафиолетовый свет стирает содержимое, делая возможным перепрограммирование памяти. Для записи стертой EPROM вам нужно специальное устройство называемое PROM программатором. EPROM отличаются от PROM тем, что PROM может быть записан только единожды и не может быть стерт. EPROM широко используются в ПК, так как они позволяют производителям менять содержимое PROM перед отгрузкой компьютера. Это означает, что могут быть устранены ошибки или записаны более новые версии. Заметка о EPROM технологии: Биты в EPROM программируются инжекцией электронов повышенным напряжением в плавающие ворота field-effect транзистора, где желателен 0 бит. Тут электроны попадают в ловушку, так как транзистор не проводящий, читается как 0. Для стирания EPROM, пойманным электронам дается достаточно энергии для выхода через плавающие ворота путем бомбардирования микросхемы ультрафиолетовым излучением через кварцевое окно. При обычном использовании для предотвращения медленной очистки в течение нескольких лет от солнечного и флуоресцентного света, это кварцевое окно покрывается непрозрачной пленкой.

  • EEPROM: Сокращение для электрически стираемых ПЗУ. Произносится как double-e-prom или e-e-prom, EEPROM - специальный тип ППЗУ, может быть стерт посредством электрического заряда. Как и другие типы ППЗУ, EEPROM сохраняет свое содержимое даже при отключении питания. И, как и другие типы ПЗУ, EEPROM не быстрее RAM. EEPROM подобен flash памяти (иногда называется flash EEPROM). Принципиальная разница в том, что EEPROM способен считывать или записывать данные побайтно, а flash память позволяет записывать или стирать данные блоками. Таким образом, flash память более быстрая.

  • FRAM: Сокращение для Ferroelectric Random Access Memory, тип энергонезависимой памяти разработанной Ramtron International Corporation. FRAM сочетает скорость DRAM и SRAM с энергонезависимостью ПЗУ. Из-за ее высокой скорости, она заменила EEPROM во многих устройствах. Термин FRAM - торговая марка Ramtron.

  • NVRAM: Сокращение для Non-Volatile Random Access Memory, тип памяти, которая сохраняет свое содержимое при отключенном питании. Один из типов NVRAM - SRAM, которая делается энергонезависимой подключением к постоянному источнику питания, например батарейке. Другой тип NVRAM использует для сохранения содержимого при отключенном питании микросхемы EEPROM. В этом случае, NVRAM состоит из комбинации микросхем SRAM и EEPROM.

  • Пузырьковая память: Тип энергонезависимой памяти состоящей из тонких слоев материала, который может намагничиваться в одном направлении. Когда магнитное поле прилагается к окружности в веществе, которое не намагничивается в том же направлении, площадь ограничивается маленькой окружностью, или пузырьком. Было широко распространено мнение, что пузырьковая память станет одной из лидирующих технологий памяти, но эти обещания не были выполнены. Другие типы энергонезависимой памяти, такие как EEPROM, и быстрее и дешевле, чем пузырьковая память.

  • Flash память: Специальный тип EEPROM, который может быть стерт или перепрограммирован блоками, а не побайтно. BIOS многих современных ПК размещен в flash памяти, так что он может быть просто обновлен при необходимости. Такой BIOS называется flash BIOS. Flash память также очень популярна в модемах, что позволяет производителям поддерживать новые протоколы по мере их стандартизации.

Список производителей EEPROM

Список производителей EPROM смотрите на сайте Yahoo и сходите в economy->company->Hardware->Peripherals->Device programmers.

  • Advanced Research Technology B.V - разработка, производство и продажа оборудования программирования; разработка аппаратуры и программ.

  • Elnec, Presov - производители программаторов, эмуляторов и симуляторов.

  • Advin Systems Inc. - устройства программирования для ПК, которые поддерживают последние типы корпусов и технологии.

  • Andromeda Research Labs - производитель портативных программаторов и систем программирования.

  • B and C Microsystems, Inc - предлагает тесты и оборудования для дублирования/программирования PCMCIA (PC) Card, ISA/PCI карт, SIMM, устройств памяти (включая FLASH), PLD.

  • BP Microsystems - устройства программирования.

  • Bytek - разработка, дизайн, производство и продажа микропроцессорных, модульных электронных систем используемых для программирования полупроводниковых устройств. Список производимой продукции включает ChipBurner.

  • Concentrated Programming Ltd - предлагает полный диапазон решений для программирования устройств.

  • Dataman Programmmers Ltd. - производство наладонных EPROM программатора/эмулятора. Также продает программаторы для ПК, и Gang-Pro программаторы.

  • General Device Instruments - программаторы IC устройств. Универсальный и Gang программаторы для Pld, Flash, микроконтроллеров, Prom, EEprom, Памяти, Epld, Mach и многих других ic устройств.

  • HI-LO System Research Co., Ltd. - производство универсальных и gang программаторов.

  • ICE Technology - EPROM и универсальные программаторы с поддержкой памяти, микроконтроллеров, и программируемых логических устройств.

  • Iceprom - стираемая программируемая ROM.

  • Incept Ltd.

  • International Microsystems Inc - Высокоскоростной gang программатор. (PROM, FLASH, Микроконтроллер, карты памяти PCMCIA).

  • JED Microprocessors Pty. Ltd. - вставляется в порт принтера ПК, и способен программировать 28-контактные или 32-контактные микросхемы EPROM и FLASH.

  • Logical Devices, Inc - программирование устройств PLD, FPGA, PROM, микроконтроллеров. Производит CUPL компилятор для программируемой логики и программаторы ALLPRO и Chipmaster.

  • MCL Systems - новый метод не только программирования, но и разработки новой аппаратуры с помощью Integrated Controller Unit. И вам не нужно быть профессионалом.

  • MQP Electronics - производитель универсальных программаторов, gang программаторов, программ, и пакетов преобразования. Высокая пропускная способность и надежность.

  • Needham's Electronics - производитель программаторов.

  • NP Programming Services - реализует программирование памяти и компонентов логики.

  • Program Automation, Inc. - независимая кампания, специализирующаяся на программировании высокоемких PROM, включая flash I/C.

  • Stag Programmers Inc - производитель программаторов prom и логики, производство оборудования и ультрафиолетовых устройств стирания.

  • Sunrise Electronics - универсальные программаторы, gang и in-circuit программаторы с пожизненной поддержкой.

  • System General Co. - программаторы, устройства записи EPROM и IC тестеры

  • Tribal Microsystems - универсальный и gang программаторы, 8051 и EPROM эмуляторы, тестовые сокеты, сокеты для создания и сокеты для производства.

  • Universal Device Programmers

Введение в загрузку по сети и Etherboot

Эта глава написана Ken Yap ken.yap@acm.org и объясняет способ загрузки компьютера без доступа к вашему жесткому диску с размещенной в энергонезависимой памяти программы. Это идеальная техника для содержания и настройки группы linux компьютеров.

Как это работает?

Для загрузки по сети, компьютер должен получить

  1. идентификацию

  2. образ операционной системы и

  3. обычно, рабочую файловую систему.

Рассмотрим бездисковый компьютер (DC) у которого есть загрузочная сетевая ПЗУ. Возможно наличие нескольких идентичных бездисковых компьютеров. Как же их различать? У этих компьютеров (фактически у их сетевых карт) есть некоторая уникальная информация, это - сетевой Ethernet адрес. Каждая Ethernet карта в мире имеет уникальный 48 битный Ethernet адрес, так как каждый производитель Ethernet аппаратуры зарезервировал для себя блок адресов. По соглашению эти адреса записываются в виде шестнадцатеричных чисел разделенных двоеточием по группам, в каждой группе по две цифры, например - 00:60:08:C7:A3:D8 .

Используемые для получения IP адреса по данному Ethernet адресу протоколы называются Boot Protocol (BOOTP) и Dynamic Host Configuration Protocol (DHCP). DHCP - развитие BOOTP. В наших рассуждениях, если не указано иное, все что применимо к BOOTP также применимо к DHCP. (Фактически немного неправильно говорить, что BOOTP и DHCP всего лишь транслируют Ethernet адреса, в них предусмотрено обеспечение работы BOOTP и DHCP с любым типом аппаратных адресов, но большинство использует Ethernet.)

Пример обмена информацией BOOTP выглядит подобным образом:

DC: Привет, мой аппаратный адрес 00:60:08:C7:A3:D8, дай мне мой IP адрес.

BOOTP сервер: (Смотрит в базу данных адресов.) Твое имя aldebaran, твой IP адрес 192.168.1.100, твой сервер 192.168.1.1, твой предполагаемый загрузочный файл /tftpboot/vmlinux.nb (и еще несколько частей информации).

Вы удивитесь, как бездисковый компьютер изначально находит адрес BOOTP сервера. Ответ таков - он его не ищет. Запрос BOOTP широковещательный по локальной сети и любой BOOTP может ответить на запрос.

После получения IP адреса, DC должен загрузить образ операционной системы и выполнить его. Другой используемый тут Интернет протокол называется Trivial File Transfer Protocol (TFTP). TFTP подобен обрезанной версии FTP --- тут нет идентификации, и он работает поверх User Datagram Protocol (UDP), а не поверх Transmission Control Protocol (TCP). UDP был выбран вместо TCP для упрощения. Реализация UDP на DC может быть маленькой, посему код легко помещается в ПЗУ. Так как UDP блочно-ориентированный протокол, в отличие от потоково-ориентированных протоколов, передача следует блок за блоком, как например:

DC: Дай мне 1 блок файла /tftpboot/vmlinux.nb.
TFTP сервер: Лови.
DC: Дай мне блок 2.

и так далее, пока не будет передан весь файл. Переговариваясь, он подтверждает передачу каждого блока, и потеря пакета будет обнаружена и пакет будет передан через таймаут. Когда все блоки получены, сетевой boot ROM передает управление в точку входа образа операционной системы.

В конце, в случае запуска операционной системы, должна быть предоставлена корневая файловая система. Linux и другими Unix-ами обычно используется Network File System (NFS), однако возможны другие варианты. В этом случае код не должен находиться в ROM, а должен быть частью загружаемой операционной системы. Однако операционная система вместо реального диска должна запустить корневую файловую систему - NFS. Linux содержит требуемые для этого настройки.

Сетевая загрузка на практике

Сетевой загрузчик - небольшая программа, запускаемая как расширение BIOS, расположена обычно на EPROM сетевой платы. Она обрабатывает BOOTP запрос и загрузку по TFTP, а затем передает управление загруженному образу. Она использует TCP/IP протокол, но загруженный образ не обязательно должен быть Linux. Загруженный образ может быть любым, даже DOS. Он также может быть загружен с дискеты для проверки и временных настроек.

Наряду с коммерческими ROM, есть ДВА свободных пакета сетевой загрузки. Свободные реализации TCP/IP сетевых загрузчиков -

  1. ETHERBOOT http://www.slug.org.au/etherboot/ и его зеркало, а также google-сайт

  2. NETBOOT http://www.han.de/~gero/netboot.html

Etherboot использует встроенные драйвера, в то время как Netboot использует Packet драйвера. Сначала вы должны проверить, что ваша сетевая карта поддерживается Etherboot или Netboot. До того как вы, в конечном счете, найдете того, кто захочет вставить для вас код в EPROM (Erasable Programmable Read Only Memory), вы можете загружаться по сети с дискеты.

Для создания загрузочной дискеты требуется специальный загрузочный блок, присутствующий в дистрибутиве. Это - маленькая 512 байтная программа загружает следующие далее на дискете блоки в память и предает им выполнение. Таким образом, для создания загрузочной дискеты, требуется соединить загрузочный блок с содержащим драйвер сетевой карты исполняемым файлом Etherboot следующим образом:

# cat floppyload.bin 3c509.lzrom > /dev/fd0

Возьмите пакет nfsboot (пакет доступен на вашем любимом зеркале linux в каталоге /pub/Linux/system/Linux-boot directory). Он содержит booteprom образ вашей сетевой карты (например wd8013), который можно непосредственно записать. Также смотрите LTSP сайт http://www.ltsp.org

Перед тем, как ставить дискету для загрузки по сети, вам следует настроить три службы на Linux -

  1. BOOTP (или DHCP)

  2. TFTP и

  3. NFS.

Вам не следует настраивать их одновременно, вы можете делать поэтапно, проверяя работоспособность каждого этапа перед тем, как переходить к следующему.

Bootp

Установите Bootp. Ищите bootp*.rpm на компакт-диске Redhat linux. Также взгляните на RPM пакеты на сайте LTSP http://www.ltsp.org. Просмотрите следующие страницы руководств 'man 5 bootptab', 'man 8 bootpd', 'man 8 bootpef', 'man 8 bootptest'. Затем проверьте, что сервер ожидает bootp запросы. Демон может быть запущен либо непосредственно командой

bootpd -s

либо используя inetd, отредактируйте файл /etc/inetd.conf и вставьте похожую строку:

bootps dgram   udp     wait    root    /usr/sbin/in.bootpd    bootpd
Вставьте или раскомментируйте следующие две строки в /etc/services:
bootps          67/tcp          # BOOTP server
tftp            69/udp          # TFTP server

Если вы модифицировали /etc/inetd.conf, перезапустите inetd, послав процессу HUP сигнал.

kill -HUP <номер процесса inetd>.

Далее, вам следует указать bootp базу данных с соответствиями Ethernet адресов IP адресам. Эта база данных находится в /etc/bootptab. Вы должны модифицировать ее вставив IP адрес вашего шлюза (gateway), dns сервера, и ethernet адреса ваших бездисковых машин. Он содержит строки следующего вида:

aldebaran.foo.com:ha=006008C7A3D8:ip=192.168.1.100:bf=/tftpboot/vmlinuz.nb 

Можно указать и прочую информацию, но мы начнем с простого.

Другой пример /etc/bootptab:

  global.prof:\
          :sm=255.255.255.0:\
          :ds=192.168.1.5:\
          :gw=192.168.1.19:\
          :ht=ethernet:\
          :bf=linux:
  machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140:
  machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
  machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:

global.prof - общий шаблон элементов хостов, где

  • поле sm содержит маску подсети (subnet mask)

  • поле ds содержит адрес DNS сервера

  • поле gw содержит адрес шлюза (gateway)

  • поле ht содержит аппаратный тип сети

  • поле bf содержит имя загрузочного файла

После этого, каждая машина должна быть представлена строкой:

  • первое поле содержит имя хоста,

  • поле hd содержит каталог загрузочного файла,

  • общий шаблон может быть указан в поле tc

  • поле ha содержит аппаратный адрес ethernet карты

  • поле ip содержит назначаемый ip адрес.

Теперь загрузите бездисковый компьютер с дискеты, и он должен обнаружить вашу Ethernet карту и выдать широковещательный BOOTP запрос. Если все идет как надо, сервер должен вернуть ему требуемую информацию. Так как /tftpboot/vmlinux.nb еще не существует, у него не получится загрузить этот файл. Теперь вам следует скомпилировать специальное ядро, оно должно включать опцию монтирования корневой файловой системы с NFS. Также вам следует включить опцию получения IP адреса из BOOTP ответа. Также вы должны включить в ядро Linux драйвер вашей сетевой карты, а не загружать его как модуль. Можно загружать начальный ramdisk, и таким образом сделать возможной загрузку модулей, но этим лучше заняться позже.

Вы не можете установить zImage полученный непосредственно в результате компиляции ядра. Он должен быть преобразован в помеченный образ. Помеченный образ - обычное ядро со специальным заголовком, который указывает сетевому загрузчику, куда в памяти помещать байты и с какого адреса запускать программу. Для создания этого образа используете программу mknbi-linux. Эта утилиту можно найти в дистрибутиве Etherboot. После создания образа, поместите его в каталог /tftpboot под именем указанным в /etc/bootptab. Проверьте, чтобы этот файл был доступен всем для чтения, так как у tftp сервера нет специальных привилегий.

Tftp

TFTP ищите в tftp*.rpm на компакт-диске Redhat Linux. TFTP (Trivial File Transfer Protocol) - подобный ftp протокол передачи файлов, но намного более простой, что делает возможным закодировать его в EPROM. TFTP может использоваться двумя путями:

  • Простой tftp: обозначает, что клиент получает доступ ко всем файлам вашей системы. Это просто, но образуется большая дыра в безопасности (любой может получить по tftp ваш файл с паролями).

  • Безопасный tftp: tftp сервер использует систему chroot.2 для смены собственного корневого каталога. Все, что находится вне нового корневого каталога полностью недоступно. Так как chroot каталог становится новым корневым каталогом, поле hd в файле bootptab должно отражать эту ситуацию. Например: при использовании небезопасного tftp, поле hd содержит полный путь к загрузочному каталогу: /export/root/machine1. При использовании безопасного tftp с каталогом /export в качестве корневого каталога, каталог /export станет / , и поле hd должно быть /root/machine1.

Обычно tftpd запускается из inetd подобного вида строкой в /etc/inetd.conf.

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s /tftpboot
#tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd     tftpd /export

Еще раз перезапустите inetd, послав ему HUP сигнал, и снова попробуйте загрузиться по сети, на этот раз должно загрузиться и выполниться ядро. Вы заметите, что загрузка продолжается до точки, где ядро пытается смонтировать корневую файловую систему. Теперь вы должны настроить экспорт NFS разделов.

Корневая файловая система на NFS

По различным причинам, использовать корневую файловую систему сервера в качестве корневой файловой системы бездискового компьютера - плохая идея. Одна из них: есть множество различных конфигурационных файлов, и бездисковый компьютер таким путем будет получать неправильную информацию. Другая - безопасность. Опасно разрешать доступ на запись (а доступ на запись требуется корневой файловой системе по различным причинам) к вашему серверу. Однако хорошей новостью является то, что корневая файловая система бездискового компьютера невелика, всего лишь около 30 Мб и большая ее часть разделяется всеми бездисковыми компьютерами.

В идеале, для создания корневой файловой системы вам нужно знать какие из файлов вашего дистрибутива должны присутствовать. Критичными для загрузки являются файлы устройств, файлы в /sbin и /etc. Вы можете избежать тяжелой работы, создав копию корневой файловой системы и модифицировав несколько файлов для бездискового компьютера. В дистрибутиве Etherboot есть учебник и ссылки на группу скриптов, которые создают корневую файловую систему бездискового компьютера из существующей корневой файловой системы сервера. Также в документации Etherboot есть подсказки, так как это часто сложная часть установки.

Подстроенное для бездискового компьютера ядро Linux ожидает увидеть корневую файловую систему в /tftpboot/(IP адрес бездискового компьютера), например: /tftpboot/192.168.1.100 в вышеприведенном случае. По желанию его можно изменить при конфигурировании ядра.

Теперь создайте или отредактируйте на сервере /etc/exports (см. 'man 5 exports' и 'man 8 exportfs') и поместите строку следующего вида:

/tftpboot/192.168.1.100 aldebaran.foo.com(rw,no_root_squash)

Доступ rw требуется различным системным службам. Атрибут no_root_squash предохраняет NFS систему от отображения root идентификатора на другой. Если это не указано, различные демоны и программы регистрации будут несчастны.

Запустите или перезапустите службы NFS (rpc.portmap и rpc.mountd) и попробуйте загрузить бездисковый компьютер. Если вам повезет, ядро смонтирует корневую файловую систему и загрузится до приглашения к входу. Скорее всего, вы обнаружите, что что-то упустили из виду. Большинство дистрибутивов Linux не предусмотрены для бездисковой загрузки и требуют небольшой модификации. Наиболее частая неисправность - система, в процессе загрузки, полагается на файлы в каталоге /usr, который при загрузке обычно импортируется с сервера позже. Два возможных решения -

  1. Предоставить несколько требуемых файлов в небольшом каталоге /usr на корневой файловой системе, который далее будет перекрыт при импорте /usr, и

  2. Модифицировать пути для поиска файлов в корневой файловой системе. Файлы нужно редактировать в каталоге /tftpboot/192.168.1.100 (помните, что это корневой каталог бездискового компьютера).

Возможно, вы захотите монтировать сервера и другие каталоги, такие как /usr (который должен экспортироваться в режиме только для чтения).

Дополнительная информация

Для начала вам следует остановиться на домашней странице Etherboot: http://www.slug.org.au/etherboot/ или зеркале и google-сайт

Там вы найдете ссылки на другие ресурсы, включая списки рассылки на которые вы можете подписаться, и где обсуждаются проблемы и решения по данной теме.

Сопутствующие документы

  • NFS-root Mini Howto на /usr/doc/HOWTO/mini или на компакт-диске Linux.

  • Linux Networking-HOWTO by Terry Dawson, на /usr/doc/HOWTO или на компакт-диске linux 94004531@postoffice.csu.edu.au

  • NET-3-Howto на /usr/doc/HOWTO или компакт-диске Linux.

  • /usr/src/linux/README о настройке и компиляции ядра

Настройка Redhat Linux

Бездисковый компьютер запрашивает у NFS сервера монтирование /tftpboot/< IP адрес бездискового компьютера> (в ядре Linux 2.1 и выше это - /tftpboot/<имя бездискового компьютера в bootptab> ) в качестве корневого каталога '/'. Вы должны экспортировать его с сервера (rw, no_root_squash) так как бездисковый компьютер захочет в него писать (регистрационные файлы и т.д.).

Корневой каталог / должен содержать /sbin, /bin, /lib, /etc, /var, /tmp, /root, /dev и /proc.

/sbin, /bin, /lib могут быть копиями с существующей Redhat Linux системы. Они могут совместно использоваться всеми бездисковыми компьютерами. Они не должны быть ссылками на оригинальные файлы.

/etc, /var и /dev не должны быть совместно используемыми копиями. Постройте /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/fstab, /etc/conf.modules, и прочее. Выключите все не нужные вам сетевые службы. Удалите все лишнее из /var, например базу данных RPM, файлы lpd.

/root и /proc должны существовать. /tmp должен существовать и иметь режим доступа 1777.

Вероятно вы захотите создать токи монтирования /usr и /home. /usr может быть смонтирован в режиме ro (только чтение).

Должно быть достаточно около 10 Мб на бездисковый компьютер плюс около 15 Мб разделяемых файлов. Если ваши бездисковые компьютеры очень похожи, также можно совместно использовать один образ ядра.

Вот пример скрипта для создания первой корневой файловой системы.

#!/bin/sh
if [ $# != 1 ]
then
 echo Usage: $0 client-IP-addr
 exit 1
fi

cd /

umask 022

mkdir -p /tftpboot/$1

# создаем каталоги
for d in home mnt proc tmp usr
do
 mkdir /tftpboot/$1/$d
 done

 chmod 1777 /tftpboot/$1/tmp

 touch /tftpboot/$1/fastboot
 chattr +i /tftpboot/$1/fastboot

 # копируем каталоги
 cp -a bin lib sbin dev etc root var /tftpboot/$1

cat <<EOF
Теперь в /tftpboot/$1/etc, редактируем

  sysconfig/network
  sysconfig/network-scripts/ifcfg-eth0
  fstab
  conf.modules

и настраиваем

  rc.d/rc3.d
EOF

Вот примерный скрипт для дублирования корневой файловой системы

#!/bin/sh
if [ $# != 2 ]
then
 echo Usage: $0 olddir newdir
 exit 1
fi

cd /tftpboot

if [ ! -d $1 ]
then
 echo $1 is not a directory
 exit 1
fi

umask 022

mkdir -p $2

# создаем каталоги
for d in home mnt proc tmp usr
do
 mkdir $2/$d
done

chmod 1777 $2/tmp

touch $2/fastboot
chattr +i $2/fastboot

# link these ones
for d in bin lib sbin
do
 (cd $1; find $d -print | cpio -pl ../$2)
done

# копируем 
for d in dev etc root var
do
 cp -a $1/$d $2
done

cat <<EOF
Теперь в /tftpboot/$2/etc редактируем

 sysconfig/network
 sysconfig/network-scripts/ifcfg-eth0
 fstab (maybe)
 conf.modules (maybe)

и настраиваем

 rc.d/rc3.d
EOF

LanWorks BootWare PROMs

Эта информация поможет сохранить вам время. При создании LanWorks BootWare(tm) PROM для корректного запуска образа ядра Linux, нужно модифицировать "bootsector" часть образа ядра так, чтобы позволить загрузочному prom переходить непосредственно к стартовому адресу образа. Формат загрузочного образа созданного утилитой `mknbi-linux' из пакета netboot/etherboot не запустится при использовании BootWare PROM.

Модифицированный загрузочный сектор вместе с Makefile для создания BootWare-bootable образа после компиляции можно найти в -

Детали по его установке смотрите в файле README. На данный момент, поддерживаются только "zImage" типы ядер. К несчастью, параметры ядра игнорируются.

Эта секция любезно предоставлена Jochen Kmietsch, с вопросами обращаться по email jochen.kmietsch@tu-clausthal.de.

Netboot

Netboot написан ZurЭck zu Gero. Его главный сайт на http://www.han.de/~gero/netboot.html.

Почтовые рассылки

Касательно загрузки по сети есть почтовые рассылки. Для подписки просто пошлите письмо со следующей строкой в теле письма

subscribe netboot

по адресу majordomo@baghira.han.de

Тема письма не имеет значения. После подписки, вы можете посылать сообщения в список рассылки по адресу netboot@baghira.han.de.

Полезные ссылки по Netboot

Архив почтовых рассылок по Netboot на http://www.han.de/~gero/netboot/archive/maillist.html

  • Webopaedia page по сетевым картам

  • Jargon's страница с драйверами для многих старых сетевых плат.

  • Etherboot, на зеркале и на google-сайте. Это подобный Netbot проект, но основан на коде bootrom от BSD.

  • Способ создания X Window терминала из старого ПК.

  • Описание перемычек различных сетевых карт. Эта страница также содержит много других полезных ссылок.

  • Freefire - домашняя страница проекта Freefire, в котором перечислены ресурсы по сетевой безопасности.

Другие форматы этого документа

Данная глава не является переводом соответствующей главы оригинального документа, с разрешения Al Dev (Alavoor Vasudevan), она переписана для учета особенностей переведенного документа.

Оригинальный документ распространяется в 14 различных форматах - DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), обычный текст, Unix man page, отдельный HTML файл, SGML (Linuxdoc format), SGML (Docbook format), MS WinHelp. Переведенный документ доступен в форматах - DocBook XML, HTML и PDF.

Оригинал документа находится на -

  • http://www.linuxdoc.org, затем нажмите на HOWTO и найдите его по имени, используя CTRL+f или ALT+f функцию web-броузера.

Домашняя страница перевода http://mvd.h1.ru/tr/

Переведенный документ написан в формате DocBook XML.

Перевод документа в html формат выполнен с помощью утилиты xsltproc входящей в пакет libxslt. Пакет libxslt можно взять на http://xmlsoft.org. Также потребуются Docbook DTD с http://www.oasis-open.org/docbook/. и Docbook XSL с http://docbook.sourceforge.net/projects/xsl/.

Преобразование в HTML формат выполняется следующим образом:

  • Создается файл docbook_ru_html.xsl содержащий следующие строки

    <?xml version='1.0'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    version='1.0'
                    xmlns="http://www.w3.org/TR/xhtml1/transitional"
                    exclude-result-prefixes="#default">
    
      <xsl:import href="/usr/share/xml/docbook/xsl-stylesheets/html/docbook.xsl"/>
    
      <xsl:variable name="toc.section.depth">3</xsl:variable>
    
    <xsl:output method="html"
     encoding="KOI8-R"
                indent="no"/>
    
    </xsl:stylesheet>

  • Выполняется команда

     xsltproc -o Diskless-HOWTO.html docbook_ru_html.xsl Diskless-HOWTO.xml

Формат Acrobat PDF

Формат Acrobat PDF можно получить следующим образом:

  • Создается файл docbook_ru_fo.xsl содержащий следующие строки

    <?xml version='1.0'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    version='1.0'
                    xmlns="http://www.w3.org/TR/xhtml1/transitional"
                    exclude-result-prefixes="#default">
    
      <xsl:import href="/usr/share/xml/docbook/xsl-stylesheets/fo/docbook.xsl"/>
    
    <xsl:param name="paper.type" select="'A4'"/>
    <xsl:param name="body.font.family">TimesNewRoman</xsl:param>
    <xsl:param name="title.font.family">Arial</xsl:param>
    <xsl:param name="monospace.font.family">CourierNew</xsl:param>
    <xsl:param name="sans.font.family">Arial</xsl:param>
    <xsl:param name="dingbat.font.family">TimesNewRoman</xsl:param>
    <xsl:param name="body.font.master">8</xsl:param>
    </xsl:stylesheet>
    

  • выполняется команда

    xsltproc -o Diskless-HOWTO.fo docbook_ru_fo.xsl Diskless-HOWTO.xml
    в результате получается файл в формате fo, который далее можно обрабатывать программой преобразования форматированных объектов в pdf формат. Одна из таких программ fop доступна на
    http://xml.apache.org/fop/. Так как fop написана на java, вам понадобится среда запуска java программ, ее можно взять на сайте Sun http://java.sun.com/j2se/.

    Заметка: Если вы возьмете Docbook XSL версии выше 1.45, то в получившемся файле Diskless-HOWTO.fo вам следует заменить выражение master-references= на master-name=, так как fop (по крайней мере, версии 0.20.2RC) не понимает данной нотации из XSL 1.0

  • C fop не поставляются шрифты, содержащие кириллические символы, поэтому для создания документов с внедренными кириллическими шрифтами вам потребуется выполнить дополнительную настройку fop. Последующие действия предполагают размещение пакета fop в каталоге /usr/local/fop

    • Возьмите ttf шрифты содержащие кириллические символы, например, подойдут шрифты Arial, CourierNew, TimesNewRoman.

    • Создайте к выбранным шрифтам метрики в XML формате. Метрики будем сохранять в каталоге /usr/local/fop/metrics. Перед выполнением последующего шага нужно установить значение переменной окружения CLASSPATH, например для bash:

      export CLASSPATH=/usr/local/fop/build/fop.jar:/usr/local/fop/lib/xerces.jar:\
       /usr/local/fop/lib/xalan.jar:/uar/local/fop/lib/batik.jar
      Для каждого из файлов шрифтов arial.ttf, arialbd.ttf, ariali.ttf, arialbi.ttf, cour.ttf, courbd.ttf, couri.ttf, courbi.ttf, times.ttf, timesbd.ttf, timesi.ttf, timesbd.ttf, выполните команду
      java org.apache.fop.fonts.apps.TTFReader <путь к файлу шрифта>\
      /usr/local/fop/metrics/<имя шрифта>.xml
      

    • Теперь необходимо откорректировать файл /usr/local/fop/conf/userconfig.xml. Его секция fonts должна выглядеть так:

      <fonts>
      <!-- TTF fonts -->
      <!-- Arial -->
      <font metrics-file="/usr/local/Fop/metrics/arial.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/arial.ttf">
       <font-triplet name="Arial" style="normal" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/arialbd.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/arialbd.ttf">
       <font-triplet name="Arial" style="normal" weight="bold"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/ariali.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/ariali.ttf">
       <font-triplet name="Arial" style="italic" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/arialbi.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/arialbi.ttf">
       <font-triplet name="Arial" style="italic" weight="bold"/>
      </font>
      <!-- TimesNewRoman -->
      <font metrics-file="/usr/local/Fop/metrics/times.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/times.ttf">
       <font-triplet name="TimesNewRoman" style="normal" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/timesbd.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/timesbd.ttf">
       <font-triplet name="TimesNewRoman" style="normal" weight="bold"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/timesi.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/timesi.ttf">
       <font-triplet name="TimesNewRoman" style="italic" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/timesbi.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/timesbi.ttf">
       <font-triplet name="TimesNewRoman" style="italic" weight="bold"/>
      </font>
      <!-- CourierNew -->
      <font metrics-file="/usr/local/Fop/metrics/cour.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/cour.ttf">
       <font-triplet name="CourierNew" style="normal" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/courbd.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/courbd.ttf">
       <font-triplet name="CourierNew" style="normal" weight="bold"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/couri.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/couri.ttf">
       <font-triplet name="CourierNew" style="italic" weight="normal"/>
      </font>
      <font metrics-file="/usr/local/Fop/metrics/courbi.xml"
            kerning="yes"
            embed-file="<путь к каталогу со шрифтами>/courbi.ttf">
       <font-triplet name="CourierNew" style="italic" weight="bold"/>
      </font>
      </fonts>
      

  • И последний шаг, нужно дать команду:

    /usr/local/fop/fop.sh -c /usr/local/fop/conf/userconfig.xml -fo Diskless-HOWTO.fo -pdf Diskless-HOWTO.pdf

Заметка: Созданный таким способом pdf успешно просматривается программами Acrobat Reader и gv, но его нельзя просмотреть программой xpdf. Если вы знаете, каким образом сделать возможным просмотр в программе xpdf сообщите мне, пожалуйста, по адресу mvd@altlinux.ru. У меня не получилось успешно внедрять pfb шрифты, все кириллические символы в pdf документе заменялись символом '#'. Если вы знаете способ решения этой проблемы, сообщите мне по тому же адресу.

[Источник: linux-ve.net]

[ опубликовано 11/06/2003 ]

Robert Nemkin - HOW-TO по созданию бездисковых узлов на базе Linux   Версия для печати