5. Дополнительные возможности

5 Дополнительные возможности

Эта глава познакомит вас с некоторыми из наиболее интересных возможностей Linux. Это предполагает, что вы имеете как минимум начальные знания UNIX и поняли информацию, содержащуюся в предыдущих разделах.

Наиболее важным аспектом Linux, который отличает его от других реализаций UNIX является его открытая концепция разработки.

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

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

Linux включает в себя огромное количество разнообразного как по типу так и по способам разработки программного обеспечения. Некоторым не нравится недостаток единообразия, некоторые считают его основным преимуществом Linux.

5.1 X Window

X-Window является большой, мощной (и отчасти сложной) графической средой для UNIX систем. Система X-Window была разработана в Массачусетстком технологическом институте (MIT), которая стала затем стандартом для всех UNIX систем. Практически каждая рабочая станция UNIX в мире работает на одном из вариантов X-Window.

Группа программистов, возглавляемая Дэвидом Вексельблатом (David Wexelblat ), (Вы можете связаться с Девидом по E-Mail: dwex@XFree86.org ) произвела перенос MIT X Window System версия 11, релиз 6 (X11R6) для 80386/80486/Pentium UNIX систем как свободно распространяемого программного продукта. Эта версия, известная как XFree86 TM, (XFree86 является торговой маркой XFree86 Project, Inc.) доступна для System V/386, 386BSD и других реализаций UNIX для процессоров x86, включая Linux. Она включает в себя все требуемые выполняемые коды, конфигурационные файлы, библиотеки и инструментарий.

Полная настройка и использование X Window выходит за пределы этой книги. Вам следует обратиться к книге : The X Window System: A User's Guide (см. Приложение A) В этой главе мы опишем шаг за шагом установку и настройку XFree86 для Linux. Для более детального ознакомления вы можете обратиться к документации, поставляемой вместе с XFree86 (она обсуждается ниже). Другим полезным источником информации является THE LINUX XFree86 HOWTO.

5.1.1 Требования к аппаратуре

XFree86 версии 3.1, вышедшая в сентябре 1994, года поддерживает следующие микросхемы видеоадаптеров. (Прежде чем устанавливать XFree86 вам надо выяснить тип микросхемы вашего видеоадаптера.)

Документация, поставляемая вместе с видеоадаптером, как правило указывает тип используемых микросхем. Если вы приобрели новую видеокарту или новый компьютер, попросите поставщика уточнить изготовителя, модель и тип микросхем видеокарты. Как правило поставщики охотно дадут вам эту информацию. Большинство из них сообщит, что видеокарта является стандартной SVGA картой и будет работать в вашей операционной системе. Объясните им, что ваше программное обеспечение (Linux и XFree86) не поддерживает всех видеокарт и вам требуется дополнительная информация.

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

XFree86 версии 3.1, вышедшая в сентябре 1994 года поддерживает следующие типы микросхем:

Поддерживаются также следующие адаптеры с графическими ускорителями:

Видеокарты с этими микросхемами поддерживаются для всех системных шин, включая VLB и PCI.

Все вышеперечисленные карты поддерживаются как в режиме 256 цветов, так и в монохромном режиме, за исключением Avance Logic, MX and Video 7 микросхем, которые поддерживаются только в режиме 256 цветов. Если на вашей видеокарте установлено достаточно видеопамяти, многие из микросхем поддерживаются в режиме 16 и 32 бита на точку (65 тысяч и 4 млн цветов) (некоторые из Msch32, P9000, S3 и Cirrus видеокарт). Обычно видеокарты используются в режиме 8 бит на точку (256 цветов).

Монохромный сервер поддерживает основные карты VGA, монохромные карты Hercules, Hyundai HGC1280, Sigma LaserView иу Apoll. На карте Compaq AVGA в монохромном режиме поддерживается только 64Кб видеопамяти и работа карты GVGA с памятью более 64Кб не проверена в настоящее время.

Этот список несомненно расширится со временем. Полный список поддерживаемых карт вы найдете в замечаниях к текущей версии XFree86.

Одной из проблем, с которой столкнулись разработчики, являлся нестандартный механизм определения частоты, используемый для управления картой. Некоторые производители либо не описывали способ программирования карты, либо требовали подписания дополнительного соглашения о нераспространении полученной информации. Это очевидно ограничило бы свободное распространение XFree86, чего естественно не могли допустить разработчики. Долгое время данная проблема была с видеокартами, производимыми фирмой Diamond, но начиная с версии 3.1 XFree86, Diamond начала сотрудничество с разработчиками с целью выпуска драйвера для этой карты.

Предполагаемая конфигурация компьютера для установки XFree86 под Linux включает в себя как минимум 8 мегабайт оперативной памяти и видеокарту с одной из вышеперечисленных микросхем. Для оптимальной работы мы советуем использовать видеокарту с графическим ускорителем, например S3.

Перед покупкой дорогостоящей видеокарты вам следует просмотреть документацию по XFree и убедиться, что выбранная вами карта поддерживается. Сравнительные тесты Benchmark для различных видеокарт под XFree86 периодически выставляются в конференции comp.windows.x.i386unix и comp.os.linux.misc.

Замечу, что мой персональный компьютер с Linux содержит 486DX2-66, 20 мегабайт RAM, и имеет VLB S3-864 видеоадаптер с 2 мегабайтами оперативной памяти. Я протестировал X benchmarks на этой машине и на рабочей станции Sun Sparc IPX. Linux где-то раз в 7 быстрее, чем Sparc IPX (для любопытных, XFree86-3.1 под Linux обеспечил скорость 171,000 xstones; Sparc IPX - около 24000). Обычно, XFree86 под Linux с графическим ускорителем показывает существенно большую производительность чем коммерческие рабочие станции (которые обычно используют неэффективные алгоритмы обработки графической информации).

Для вашей машины требуется как минимум 4 мегабайта оперативной памяти и 16 мегабайт виртуальной (например, 8 мегабайт оперативной памяти и 8 мегабайт своппинга). Имейте в виду, что чем больше физической оперативной памяти вы имеете, тем меньше операционная система использует своппинг. Так как операция своппинга исходно медленная (доступ к диску намного медленнее, чем к памяти), для комфортабельной работы вам следует иметь 8 или более мегабайт. Система с 4-мя мегабайтами работает намного (в десятки раз) медленнее чем с 8-ю мегабайтами.

5.1.1.1 Установка XFree86

Дистрибутив Xfree86 в выполняемых кодах можно найти на целом ряде FTP-серверов. На sunsite.unc.edu он находится в каталоге /pub/Linux/X11. (На момент написания текущая версия была 3.1; периодически появляются новые версии).

Вполне возможно, что вы имеете XFree86 как часть дистрибутива Linux, в этом случае в перекачке XFree86 нет необходимости.

Если же вы собираетесь скачать XFree с FTP-сервера, следующая таблица содержит список файлов в дистрибутиве XFree86-3.1.

Вам потребуется один из серверов:

     Файл                    Описание
     XF86-3.1-8514.tar.gz    Сервер для 8514 видеокарт.
     XF86-3.1-AGX.tar.gz     Сервер для AGX видеокарт.
     XF86-3.1-Mach32.tar.gz  Сервер для Mach32 видеокарт.
     XF86-3.1-Mach8.tar.gz   Сервер для Mach8 видеокарт.
     XF86-3.1-Mono.tar.gz    Сервер для монохромного режима.
     XF86-3.1-P9000.tar.gz   Сервер для P9000 видеокарт.
     XF86-3.1-S3.tar.gz      Сервер для S3 видеокарт.
     XF86-3.1-SVGA.tar.gz    Сервер для Super VGA видеокарт.
     XF86-3.1-VGA16.tar.gz   Сервер для VGA/EGA видеокарт.
     XF86-3.1-W32.tar.gz     Сервер для ET4000/W32 видеокарт.
  все нижеперечисленные файлы:
     Файл                    Описание
     XF86-3.1-bin.tar.gz     Остальные программы X11R6.
     XF86-3.1-cfg.tar.gz     Конфигурационные файлы для xdm, xinit и fs.
     XF86-3.1-doc.tar.gz     Документация и руководства.
     XF86-3.1-inc.tar.gz     Include файлы. (?)
     XF86-3.1-lib.tar.gz     Разделяемые библиотеки.
     XF86-3.1-fnt.tar.gz     Основные фонты.
  следующие файлы не являются обязательными:
     Файл                    Описание
    XF86-3.1-ctrb.tar.gz     Выбранные дополнительные программы (?).
    XF86-3.1-extra.tar.gz    Дополнительные сервера для XFree86.
    XF86-3.1-lkit.tar.gz     Инструментарий для компиляции серверов.
    XF86-3.1-fnt75.tar.gz    Фонты 75-dpi.
    XF86-3.1-fnt100.tar.gz   Фонты 100-dpi.
    XF86-3.1-fntbig.tar.gz   Large Kanji и другие фонты.
    XF86-3.1-fntscl.tar.gz   Масштабируемые фонты (Speedo, Type1).
    XF86-3.1-man.tar.gz      Руководства.
    XF86-3.1-pex.tar.gz      Выполняемые файлы, include-файлы, библиотеки для PEX.
    XF86-3.1-slib.tar.gz     Статические библиотеки.
    XF86-3.1-usrbin.tar.gz   Программы-демоны, размещающиеся в /usr/bin.
    XF86-3.1-xdmshdw.tar.gz  Версия программы xdm с поддержкой теневых паролей.

Каталог XFree должен содержать файлы README и замечания по инсталляции текущей версии.

Все что вам требуется для инсталляции XFree86, это получить указанные файлы, создать каталог /usr/X11R6 (пользователем root), перейти в этот каталог и распаковать файлы. Например:

    # gzip -dc XF86-3.1-bin.tar.gz | tar xfB -

Имейте в виду, что эти файлы упакованы относительно каталога /usr/X11R6, так что необходимо распаковывать их находясь в этом каталоге.

После распаковки файлов, вам необходимо связать файл /usr/X11R6/bin/X с тем сервером, который вы намереваетесь использовать. Например, если вы желаете работать с SVGA сервером, файл /usr/bin/X11/X необходимо связать с файлом /usr/X11R6/bin/XF86_SVGA. Если же вы собираетесь использовать монохромный сервер, переустановите связь командой:

    # ln -sf /usr/X11R6/bin/XF86_MONO  /usr/X11R6/bin/X

Это же справедливо и для серверов других видеокарт.

Если вы не уверены какой сервер использовать, или не знаете какую микросхему содержит ваша видеокарта, вы можете запустить команду SuperProbe (включенную в XF86-3.1-bin). Эта программа попытается определить тип микросхемы вашей видеокарты и другую полезную информацию.

Вам следует убедиться, что каталог /usr/bin/X11R6 находится в переменной среды PATH. Это может быть сделано редактированием файлов /etc/profile или /etc/csh.login (в зависимости от оболочек (shell) которые вы или другие пользователи используют). Вы также можете просто добавить этот каталог с вашей переменной PATH, корректируя в вашем домашнем каталоге файлы .bashrc или .cshrc, в зависимости от типа вашей оболочки.

Вам также необходимо обеспечить загрузку динамических библиотек. Для этого добавьте строку:

    /usr/X11R6/lib
в файл /etc/ld.so.conf и запустите команду /sbin/ldconfig как суперпользователь.

5.1.2 Настройка XFree86

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

В этой главе мы опишем как создать и отредактировать XF86Config файл, который настраивает XFree86 сервер.

В большинстве случаев лучше всего начать с ``основной'' XFree86 конфигурации, которая использует низкое разрешение , например 640x480, поддерживаемого всеми видеокартами и мониторами. Однажды настроив XFree на стандартное разрешение, вы можете затем подстроить файл конфигурации для для того, чтобы использовать все возможности, предоставляемые вашей аппаратурой.

В дополнение к информации приведенной здесь, вам следует ознакомиться со следующей документацией:

Основным файлом настройки XFree86 является файл /usr/X11R6/lib/X11/XF86Config. Этот файл содержит информацию о вашей мыши, параметрах видеокарты и т п. В качестве примера дистрибутив XFree86 содержит файл XF86Config.eg. Скопируйте его в файл XF86Config и отредактируйте.

XF86Config man page подробно объясняет формат этого файла. Прочитайте данный документ , если вы еще это не сделали. Далее мы собираемся просмотреть файл XF86Config участок за участком. Этот файл может выглядеть не совсем так, как файл в вашем дистрибутиве XFree86, но структура их совпадает.

!Заметьте, что формат файла XF86Config может изменяться с каждой версией XFree86; эта информация может быть верной только для XFree86 версии 3.1.

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

Каждая секция файла XF86Config определяется парой строк Section "<section-name>" ... EndSection. Первая секция файла называется Files, и выглядит следующим образом:

       Section "Files"
             RgbPath     "/usr/X11R6/lib/X11/rgb"
             FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
             FontPath    "/usr/X11R6/lib/X11/fonts/75dpi/"
       EndSection

Строка RgbPath указывает местоположение базы данных цветов, а каждая строка FontPath определяет каталог, содержащий фонты. Как правило, вам не следует изменять эти строки, вам следует только убедиться, что все каталоги фонтов присутствуют.

Следующая секция имеет имя ServerFlags и определяет несколько глобальных параметров для сервера. Как правило эта секция пуста.

  Section "ServerFlags"
  # Uncomment this to cause a core dump at the spot where a signal is
  # received. This may leave the console in an unusable state, but may
  # provide a better stack trace in the core dump to aid in debugging
  #    NoTrapSignals
  # ncomment this to disable the <Crtl><Alt><BS> server abort sequence
  #    DontZap
  EndSection

Все строки данной секции закомментированы.

Следуюшая секция Keyboard. Она определяет работу клавиатуры.

    Section "Keyboard"
          Protocol    "Standard"
          AutoRepeat  500 5
          ServerNumLock
    EndSection
Доступны также и другие режимы. Описанные выше опции работают на большинстве клавиатур.

Следующая секция - Pointer определяет параметры мыши.

    Section "Pointer"
          Protocol    "MouseSystems"
          Device      "/dev/mouse"
    # Baudrate and SampleRate are only for some Logitech mice
    #    BaudRate   9600
    #    SampleRate 150
    # Emulate3Buttons is an option for 2-button Microsoft mice
    #    Emulate3Buttons
    # ChordMiddle is an option for some 3-button Logitech mice
    #    ChordMiddle
    EndSection

Единственными опциями, на которые стоит обратить внимание являются Protocol и Device. Protocol определяет протокол, который использует ваша мышь. Возможными типами (для Linux - есть другие опции, доступными для других ОС) являются:

Для Logitech busmouse следует использовать протокол BusMouse. Заметьте, что для старых мышей Logitech необходимо использовать протокол Logitech, а для новых или Microsoft, или Mouseman протокол.

Строка Device определяет устройство к которому подключена мышь. На большинстве систем Linux это /dev/mouse. /dev/mouse обычно связано с соответствующим серийным портом (например /dev/cua0 - COM1 или /dev/cua1 - COM2) или с портом busmouse. В любом случае убедитесь, что указанное устройство есть в каталоге /dev и работоспособно.

Следующая секция - Monitor, определяет характеристики вашего монитора. Файл XF86Config может содержать не одну, а несколько секций Monitor (это справедливо и для других секций). Это полезно в том случае, когда вы подключили к системе несколько мониторов или используете один и тот же XF86Config файл для различных конфигураций.

 Section "Monitor"
   Identifier  "CTX 5468 NI"
   # These values are for a CTX 5468NI only! Don't attempt to use
   # them with your monitor (unless you have this model)
   Bandwidth    60
   HorizSync    30-38,47-50
   VertRefresh  50-90
   # Modes:  Name   dotclock    horiz                vert
   ModeLine "640x480"  25       640 664 760 800      480 491 493 525
   ModeLine "800x600"  36       800 824 896 1024     600 601 603 625
   ModeLine "1024x768" 65       1024 1088 1200 1328  768 783 789 818
 EndSection

Строка Identifier используется для именования текущего описания монитора. Это может быть любая строка, на которую вы в дальнейшем ссылаться в файле XF86Config.

HorizSync определяет возможные скорости горизонтальной развертки для вашего монитора в Килогерцах. Если у вас многочастотный (multisync) монитор, вы можете указать интервал значений (или несколько интервалов, разделенных запятой), как показано выше. Если у вас монитор с фиксированной частотой, то вам надо указать список фиксированных значений. Например:

          HorizSync    31.5, 35.2, 37.9, 35.5, 48.95

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

Строка VertRefresh описывает возможные значения частоты вертикальной развертки для вашего монитора в герцах. Как и для HorizSync вы можете указать интервал или список дискретных значений. Ваше руководство на монитор должно содержать эту информацию.

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

Строка ModeLine определяет один из режимов разрешения вашего монитора. Ее формат:

    ModeLine <name> <clock> <horiz-values> <vert-values>

<name> - строка, которую вы можете использовать в этом файле в дальнейшем для указания разрешения. <dot-clock> определяет частоту задающего генератора адаптера для этого разрешения. Обычно частота указывается в мегагерцах. Она определяет скорость с которой видеокарта должна посылать значения точек экрана на монитор при указанном разрешении. <horiz-values> и <vert-values> состоят из 4-х цифр каждая. Эти значения определяют, когда электронная пушка монитора во время развертки должна включиться и когда должны проходить импульсы горизонтальной и вертикальной синхронизации во время развертки луча.

Как описать строку ModeLine для вашего монитора? Файл VideoModes.doc, включенный в дистрибутив XFree86, детально описывает как определить эти значения для каждого разрешения, которое поддерживает ваш монитор. Значение clock должно соответствовать частотам, которые поддерживает ваша видеокарта. Далее в файле XF86Config вы определите эти значения.

Существует два файла modeDB.txt и Monitors в дистрибутиве XFree, которые могут содержать данные ModeLine для вашего монитора. Эти файлы располагаются в каталоге /usr/X11R6/lib/X11/doc.

Вы можете начать со значений ModeLine для мониторов стандарта VESA. Этот режим поддерживается большинством мониторов. Файл modeDB.txt включает описания синхронизации для стандартного разрешения VESA. В этом файле вы найдете такие строки:

    # 640x480@60Hz Non-Interlaced mode
    # Horizontal Sync = 31.5kHz
    # Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
    #
    # name      clock   horizontal timing     vertical timing    flags
    "640x480"   25.175  640  664  760  800    480  491  493  525

Это стандартная строка синхронизации для разрешения 640x480 точек. Она устанавливает частоту 25.175 Mhz, которая должна поддерживаться большинством мониторов (более подробно об этом позже). В вашем файле эта строка должна выглядеть так:

    ModeLine "640x480" 25.175  640 664 760 800  480 491 493 525

Заметим, что аргумент name в строке ModeLine (в нашем случае "640x480") может быть любой строкой, которая описывает для вас разрешение монитора.

Для каждой строки ModeLine сервер проверяет, попадают ли указанные значения в интервал указанных значений Bandwidth, HorizSync и VertRefresh. Если нет, то сервер выдаст предупреждение при начале работы.

Если стандартные значения синхронизации VESA не работают у вас, то просмотрите другие значения в файлах modeDB.txt и Monitors для других типов мониторов. Заметим, что многие 14 и 15 дюймовые мониторы не могут поддерживать разрешений 1024x768 точек из-за низкого значения Bandwidth. То есть, если вы не нашли описание режима высокого разрешения для вашего монитора, то не исключено, что ваш монитор не поддерживает такое разрешение.

Если вы потерпели неудачу с подбором строки ModeLine, изучите инструкцию описанную в файле VideoModes.doc вашего дистрибутива. По этой инструкции вы сможете описать строку ModeLine по спецификациям, описанным в вашем руководстве на монитор.

В конце концов, если вы не можете подобрать правильные значения строки ModeLine, то вы можете просто слегка изменить эти значения для достижения требуемого результата. Например, если изображение на экране слегка уходит влево или вверх, вы можете по инструкции из файла VideoModes.doc настроить значения синхронизации. Проверьте также наличие управляющих клавиш на вашем мониторе! Частенько бывает достаточным изменить горизонтальный и вертикальный размер изображения во время работы XFree чтобы добиться желаемой центровки и размера изображения. Наличие этих клавиш на монитора значительно упрощает жизнь.

Следующая секция Device описывает параметры вашей видеокарты. Например:

       Section "Device"
                 Identifier "#9 GXE 64"
                 # Nothing yet; we fill in these values later.
       EndSection

Эта секция описывает возможности вашей карты. Identifier определяет имя этого описания для ссылки на него в дальнейшем.

Первоначально вам не стоит заполнять эту секцию, за исключением поля Identifier. X-сервер можно использовать в режиме определения параметров установленной видеокарты. После определения этих параметров вы занесете их в эту секцию. X-сервер способен определить тип микросхемы видеокарты, поддерживаемый интервал частот, наличие RAMDAC и размер установленной памяти на видеоадаптере.

Прежде чем мы это сделаем, нам следует закончить описание файла XF86Config.

Следующая секция - Screen описывает возможные режимы работы X-сервера с видеокартой и монитором.

          Section "Screen"
              Driver     "Accel"
              Device     "#9 GXE 64"
              Monitor    "CTX 5468 NI"
              Subsection "Display"
                    Depth      16
                    Modes      "1024x768" "800x600" "640x480"
               ViewPort   0 0
               Virtual    1024 768
           EndSubsection
     EndSection

Строка Driver определяет тип сервера, который вы будете использовать. Вы можете использовать следующие сервера:

Accel:

Для XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514, XF86_P9000, XF86_AGX, and XF86_W32 серверов;

SVGA:

Для XF86_SVGA сервера;

VGA16

: Для XF86_VGA16 сервера;

VGA2

: Для XF86_Mono сервера;

Mono

: Для non-VGA монохромного драйвера в XF86_Mono и XF86_VGA16 серверах.

Убедитесь, что файл /usr/X11R6/bin/X является символьной ссылкой на используемый вами сервер.

Строка Device определяет идентификатор секции Device, описывающей установленную видеокарту. Выше мы описали секцию Device с идентификатором:

    Identifier "#9 GXE 64"

Следовательно, здесь мы используем "#9 GXE 64" в строке Device.

Точно так же строка Monitor определяет имя секции Monitor для данного сервера, в данном примере "CTX 5468 NI".

Подсекция Display определяет режим работы сервера при выводе информации на экран. Файл XF86Config детально описывает эти режимы. Режимы, которые вам необходимо знать:

Существуют и другие опции для данной секции (см. руководство для файла XF86Config). На практике же другие опции не обязательны для начальной установки сервера.

5.1.3 Заполнение информации о видеокарте

Теперь ваш файл XF86Config готов к использованию. Единственное, что мы не сделали - не заполнили информацию о видеокарте. Сейчас нам следует запустить X сервер в режиме определения видеокарты и дооформить XF86Config файл.

Эту информацию вы можете найти и в файлах modeDB.txt, AccelCards и Devices (все эти файлы находятся в каталоге /usr/X11R6/lib/X11/doc). Кроме этого существуют различные файлы README для конкретных микросхем. Вам следует просмотреть эти файлы и используя эту информацию (частоты, тип микросхем и другие режимы) доопределить файл XF86Config. Если какой то информации не хватает, вы можете определить ее путем описанным ниже.

В этом примере мы опишем настройку видеокарты #9 GXE 64, использующую микросхему S3. Эта карта одна из тех, с которыми работает автор, но все описанное ниже справедливо и для другой видеокарты.

Перво-наперво вам надо определить тип микросхемы, используемой видеокартой. Команда SuperProbe (располагающаяся в каталоге /usr/X11R6/bin) сообщит вам эту информацию, но вам необходимо знать под каким именем известна данная микросхема X серверу.

Чтобы определить это запустите команду:

    X -showconfig

Сервер сообщит вам имена микросхем, с которыми он работает (руководство на X сервер также содержит эту информацию). Например, сервер XF86_S3 сообщит:

    XFree86 Version 3.1 / X Window System
    (protocol Version 11, revision 0, vendor release 6000)
    Operating System: Linux
    Configured drivers:
      S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
            mmio_928, s3_generic

То есть сервер работает с микросхемами mmio_928 и s3_generic. Руководство на сервер XF86_S3 описывает эти микросхемы и видеокарты, использующие их. В нашем случае видеокарта #9 GXE 64 использует микросхему mmio_928.

Если вы не знаете какая микросхема стоит на видеокарте, X сервер может это определить. Запустите:

    X -probeonly > /tmp/x.out 2>&1

если вы работаете в оболочке shell. Если вы используете csh запустите:

    X -probeonly &> /tmp/x.out

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

Выходная информация в файле /tmp/x.out будет содержать следующие строки:

    XFree86 Version 3.1 / X Window System
    (protocol Version 11, revision 0, vendor release 6000)
    Operating System: Linux
    Configured drivers:
      S3: accelerated server for S3 graphics adaptors (Patch level 0)
            mmio_928, s3_generic
    Several lines deleted...
    (--) S3: card type: 386/486 localbus
    (--) S3: chipset:   864 rev. 0
    (--) S3: chipset driver: mmio_928

Мы видим, что сервер (XF86_S3) может работать с микросхемами mmio_928 и s3_generic. Сервер протестировал видеокарту и опознал микросхему mmio_928. Следовательно, в секцию Device вам следует добавить строку, содержащую имя микросхемы, найденное сервером.

    Section "Device"
              # We already had Identifier here...
              Identifier "#9 GXE 64"
              # Add this line:
              Chipset "mmio_928"
    EndSection

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

Сначала следует просмотреть справочные файлы (modeDB.txt, и т п) описанные выше и определить, нет ли там описания частот вашей карты. Частоты, как правило представлены списком из 8 или 16-ти значений частот в Мегагерцах. Например в файле modeDB.txt можно найти строку описания видеокарты Cardinal ET4000:

 chip     ram   virtual   clocks                           default-mode  flags
 ET4000   1024  1024 768   25  28  38  36  40  45  32   0  "1024x768"

Как вы видите, данная карта поддерживает частоты: 25, 28, 38, 36, 40, 45, 32, and 0 MHz.

В секции Device файла XF86Config, вам следует добавить строку Clocks со списком частот. В нашем случае мы добавляем строку:

              Clocks 25 28 38 36 40 45 32 0

к секции Device, после описания Chipset. Заметьте, что порядок частот важен! Вам не следует дублировать или изменять порядок частот.

Если вы не можете найти список частот для вашей карты, X сервер может также определить и эти значения. После вызова команды X -probeonly, описанного выше, вы увидите строку :

    (--
    ) S3: clocks:  25.18  28.32  38.02  36.15  40.33  45.32  32.00  00.00

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

Перед запуском X -probeonly, убедитесь что в секции Devices нет строк описания Clocks или они закомментированы. Если эти значения уже есть, X сервер не будет проверять поддерживаемые платой частоты, а возьмет указанные в строке Clocks.

Заметьте, что некоторые видеокарты с акселератором используют микросхему с программируемой частотой (Смотрите руководство XF86_Accel; это в основном относится к картам S3, AGX и XGA-2 boards.) Эти микросхемы позволяют X-серверу сообщать карте какую использовать частоту. В этом случае мы вполне вероятно не сможем найти в вышеперечисленных файлах список частот для карты. Или список частот, выдаваемых командой X -probeonly будет содержать одно два значения с остальными дублированными или нулевыми значениями.

Для видеоплат, использующих микросхему программирования частоты, вам вместо строки Clocks следует использовать строку ClockChip. Эта строка задает имя микросхемы программирования частоты, установленной на карте. Руководства для каждого сервера описывает их имена. Например, в файле README.S3 мы определили, что несколько S3-864 видеокарт используют микросхему ``ICD2061A''. Следовательно, нам следует использовать строку:

              ClockChip "icd2061a"

вместо строки Clocks. Так же как и строка Clocks, строка ClockChip должна быть в секции Devices после строки Chipset.

Некоторые карты с акселератором требуют определения в файле XF86Config строки Ramdac, описывающей тип используемой микросхемы RAMDAC. Руководство на сервер XF86_Accel описывает подробно опции этой строки. Как правило, X сервер верно определяет тип используемой микросхемы RAMDAC.

Некоторые видеокарты требуют определения нескольких дополнительных опций в секции Devices. Эти опции описаны как в руководствах на ваш X сервер, так и в справочных файлах (например README.cirrus или README.S3). Эти опции устанавливаются строкой Options. Например, видеокарта #9 GXE 64 требует установку двух опций:

              Option "number_nine"
              Option "dac_8_bit"

Обычно X сервер работает и без этих опций, но с ними X сервер обеспечивает большую производительность. Существует слишком много всевозможных опций, чтобы из все здесь перечислить. Эти опции зависят от типа установленной видеокарты. Если вы вынуждены использовать эти опции - не волнуйтесь, руководства на X сервера и справочные файлы в каталоге /usr/X11R6/lib/X11/doc/ об'яснят вам что они значат.

Итак, когда вы закончите, не забудьте завершить строкой EndSection секцию Device, которая будет выглядеть следующим образом:

    Section "Device"
              # Device section for the #9 GXE 64 only !
              Identifier "#9 GXE 64"
              Chipset "mmio_928"
              ClockChip "icd2061a"
              Option "number_nine"
              Option "dac_8_bit"
    EndSection

Как уже сказано выше, большинство видеокарт требуют строку Clocks вместо строки ClockChip. Вышеприведенный пример применим только к конкретной видеокарте #9 GXE 64.

5.1.4 Запуск X-Windows

Как только вы закончите описание файла XF86Config, вы готовы запустить X сервер и начать работу. Сначала убедитесь, что каталог /usr/X11R6/bin включен в ваш путь (переменную PATH).

Для запуска X Window наберите команду:

    startx

Это "оболочка" для команды xinit (если вы использовали xinit в других UNIX-системах).

Эта команда запускает X сервер и выполняет команды, найденные в файле .xinitrc в вашем домашнем каталоге. Если данного файла не существует, используется системный файл /usr/X11R6/lib/X11/xinit/xinitrc.

Стандартный xinitrc файл выглядит подобным образом:

    #!/bin/sh
    xterm -fn 7x13bold -geometry 80x32+10+50 &
    xterm -fn 9x15bold -geometry 80x34+30-10 &
    oclock -geometry 70x70-7+7 &
    xsetroot -solid midnightblue &
    exec twm

Этот расчет запускает два клиента xterm (эмулятор терминала), oclock (часы) и устанавливает темно-синий цвет экрана. Затем он запускает twm - оконный менеджер. Заметьте, что twm запускается через оператор exec. Оболочка /bin/sh, выполняющая этот расчет замещается командой twm и при окончании работы процесса twm, X-сервер также завершает свою работу. Вы можете выйти из twm, используя основное меню. Нажмите левую кнопку мыши, находясь на свободном месте экрана. На экране появится меню, которое позволит вам за выйти из twm, выбрав пункт Exit Twm.

Убедитесь, что последняя команда в файле .xinitrc запускается через exec и не запускается в фоне (нет символа & в конце строки). Иначе X сервер завершит свою работу, как только он запустит клиента из файла .xinitrc.

Кроме этого, вы можете выйти из X-а, нажав клавиши ctrl-alt-backspace одновременно.

Описанная выше конфигурация файла .xinitrc является очень простой. Если вы с ним немного поработаете вы можете получить множество отличных программ и конфигураций окон на экране. Например, оконный менеджер fvwm поддерживает виртуальные экраны, вы можете подобрать различные фонты, цвета, размеры окон, их позиции и так далее, все что вы пожелаете. Хотя система X Window может на первый взгляд показаться простой, она чрезвычайно мощна и богата различными возможностями.

Если вы новичок в среде X Window, мы настоятельно рекомендуем вам приобрести книгу типа The X Window System: A User's Guide. Использование и настройка X-а довольно большая задача для того, чтобы описать ее в этой книге. В качестве дальнейших шагов посмотрите руководства для команд xterm, oclock, twm и т п.

5.1.5 Проблемы

Частенько случается, что у вас что-то не получается. Как правило, это связано с ошибками описания вашего файла XF86Config. Обычно, неверно указывают временные интервалы синхронизации монитора или частоты видеоплаты. Если у вас изображение на экране сдвинуто или его границы размыты, это точный показатель, что эти значения установлены неверно. Проверьте также, верно ли определили тип микросхемы видеокарты и другие опции в секции Device файла XF86Config. Убедитесь также, что вы используете необходимый X сервер и что файл /usr/X11R6/bin/X является символьной ссылкой на этот сервер.

Если это не поможет, попробуйте запустить X напрямую, используя команду:

    X > /tmp/x.out 2>&1

Затем остановите X сервер (нажав одновременно клавиши ctrl-alt-backspace) и проверьте содержимое файла /tmp/x.out. X сервер сообщит все предупреждения и ошибки, например о том, что ваша видеокарта на поддерживает необходимую для вашего монитора частоту.

Файл VideoModes.doc, включенный в дистрибутив XFree, содержит много советов по настройке вашего файла XF86Config.

Не забудьте, что вы можете использовать комбинации клавиш ctrl-alt-numeric + и ctrl-alt-numeric - для переключения режимов разрешения монитора, перечисленных в секции Screen файла XF86Config. Если режим с высоким разрешением не работает, попытайтесь установить на меньшее разрешение. Это, по крайней мере, поможет определить вам ошибочные и правильные настройки вашего конфигурационного файла.

Попытайтесь также аппаратно подстроить ваш монитор, используя клавиши управления на мониторе.

Для обсуждения вопросов по XFree86 предназначены группа comp.windows.x.i386unix USENET. Неплохая идея - подписаться на эту конференцию и описать интересующие вас проблемы - может быть кто-то имеет такие же проблемы.

5.2 Доступ к файлам MS-DOS

Если, по какой-нибудь необъяснимой прихоти, вам необходимо обеспечить доступ к файлам MS-DOS, вы можете это легко сделать.

Обычно для получения доступа к файлам MSDOS, вам достаточно примонтировать MS-DOS раздел или дискету и обращаться к фалам через файловую систему Linux. Например, если вы вставите дискету MS-DOS в устройство /dev/fd0 (A: в нотации MS/DOS), команда

    # mount -t msdos /dev/fd0 /mnt

примонтирует эту дискету к каталогу /mnt. Просмотрите секцию 4.6.2 для получения дополнительной информации о монтировании флоппи-дисков.

Точно также, вы можете примонтировать MS-DOS раздел на вашем винчестере. Если вы, например, имеете MS-DOS раздел на /dev/hda1, команда

    # mount -t msdos /dev/hda1 /mnt

примонтирует ее. Не забудьте размонтировать DOS-раздел после окончания работы с ней. Вы можете монтировать раздел MS-DOS автоматически во время загрузки системы, если добавите строку в файл /etc/fstab (см. секцию 4.8). Например, следующая строка в файле /etc/fstab монтирует DOS раздел /dev/hda1 на каталог /dos.

    /dev/hda1     /dos     msdos      defaults

Вы можете также получить доступ к файлам MS-DOS, используя пакет Mtools. Команды mcd, mdir и mcopy этого пакеты работают точно также как команды MS-DOS cd, dir, copy. Если вы установили пакет Mtools, то он должен содержать и руководства на эти команды.

Доступ к файлам MS-DOS и выполнение программ MS-DOS - это две большие разницы. В настоящее время в процессе разработки находится эмулятор программ MS-DOS. Он широко распространен и даже входит в состав дистрибутива SLS. Доступен он также и по FTP с многих серверов (см. приложение C). Эмулятор MS-DOS достаточно полон для выполнения большинства DOS программ, включая Wordperfect. Однако Linux и MS-DOS совершенно разные операционные системы и полнота любого MS-DOS эмулятора в любой UNIX-системе всегда ограничена.

Кроме этого, в настоящее время разрабатывается в среде X Window эмулятор Microsoft Windows. Для получения дополнительной информации обратитесь к соответствующим группам новостей и FTP серверам.

5.3 Сетевая работа по протоколу TCP/IP

Linux поддерживает полный набор сетевых протоколов TCP/IP (Transport Control Protocol/Internet Protocol). TCP/IP стал наиболее успешно используемым механизмом работы в компьютерных сетях всего мира. С помощью Linux и карт Ethernet вы можете связать в локальную сеть ваши машины или (при соответствующем подключении) к Internet - всемирной сети TCP/IP.

Сцепить несколько UNIX-машин в небольшую локальную сеть (LAN) просто. Для этого требуется контроллер Ethernet в каждой машине, соответствующие кабели и еще некоторое сопутствующее оборудование. Или, если ваша фирма или университет имеют выход в Internet, вы можете просто к этой сети подцепиться со своей Linux-машиной.

Текущая реализация TCP/IP и соответствующие протоколы для Linux называются ``NET-2''. Это не имеет отношения к так называемому релизу NET-2 для BSD UNIX. В данном контексте ``NET-2'' означает вторую реализацию TCP/IP для Linux.

Linux NET-2 также поддерживает протокол SLIP (Serial Line Internet Protocol). SLIP позволяет вам получить вход в Internet с помощью модема. Если ваша фирма или университет имеет выход по SLIP, вы можете выйти на SLIP-сервер и войти со своей машины в Internet по телефонной линии. И наоборот, если ваша Linux-машина имеет подключение по Ethernet к Internet, ваш Linux может исполнять функции SLIP-сервера.

Для получения более полной информации по установке TCP/IP под Linux, мы настоятельно советуем прочитать Linux NET-2 HOWTO, которое можно получить через FTP с sunsite.unc.edu. NET-2 HOWTO - это полное руководство по конфигурированию TCP/IP, включая связи по Ethernet и SLIP под Linux. The Linux Ethernet HOWTO описывает конфигурирование (настройку) различных драйверов карт Ethernet для Linux. Можно также воспользоваться The Linux Network Administrator's Guide из проекта по документированию Linux - LDP (Linux Documentation Project). Более подробно про эти документы смотрите в Приложении A.

Интересна также книга: Craig Hunt TCPIP Network Administration/. Она содержит исчерпывающую информацию по использованию и настройке TCP/IP для систем UNIX.

5.3.1 Требования к аппаратуре

Вы можете использовать в Linux TCP/IP без какого-то дополнительного оборудования режим ``loopback'', позволяющий разговаривать с самим собой. Это необходимо для ряда приложений и игр, использующих механизм ``loopback''.

Но если вы хотите использовать Linux с сетевой работой через Ethernet по TCP/IP , вы должны иметь одну из следующих карт Ethernet: 3com 3c503, 3c503/16; Novell NE1000, NE2000; Western Digital WD8003, WD8013; Hewlett Packard HP27245, HP27247, HP27250.

Имеется информация, что и следующие клоны работают: WD-80x3 clones: LANNET LEC-45; NE2000 clones: Alta Combo, Artisoft LANtastic AE-2, Asante Etherpak 2001/2003, D-Link Ethernet II, LTC E-NET/16 P/N 8300-200-002, Network Solutions HE-203, SVEC 4 Dimension Ethernet, 4-Dimension FD0490 EtherBoard 16, and D-Link DE-600, SMC Elite 16.

Дополнительную информацию по совместимости аппаратуры Ethernet в Linux можно найти в "Linux Ethernet HOWTO".

Linux также поддерживает SLIP, который позволяет использовать модем для выхода в Internet по телефонной линии. В этом случае вам нужен модем, совместимый с вашим SLIP-сервером - большинство серверов требует модемы на 14.4bps, V.32bis. (прим. переводчика: прогресс в модемах быстрее, чем в компьютерах, поэтому данные стареют еще быстрее; сейчас чаще можно услышать про 28.8bps и V.34, что тоже быстро устаревает).

5.3.2 Настройка TCP/IP на вашей системе

В этом разделе мы обсудим, как настраивать связь Ethernet - TCP/IP на вашей системе. Имейте в виду, что описываемый метод (предполагается, что) работает на многих системах, но, разумеется, не на всех. Этого обсуждения должно быть достаточно, чтобы указать вам правильный путь в настройке параметров сети на вашей машине. Но существует множество знаковых и милых деталей, которые мы здесь даже не упоминаем. Мы, все-таки ориентируем вас на Linux Network Administrators' Guide и NET-2-HOWTO.

Прежде всего, мы предполагаем, что у вас есть Linux с инсталлированным TCP/IP. Это включает основных клиентов, таких как telnet и ftp, команды системного администратора, такие как ifconfig и route (обычно находящиеся в /etc), и сетевые настроечные файлы (такие как /etc/hosts). Другие, относящиеся к Linux сетевые документы, указанные выше, рассказывают, как инсталлировать сетевые программы Linux, если это еще не было сделано.

Мы также предполагаем, что ваше ядро было настроено и скомпилировано с поддержкой TCP/IP. Смотрите Раздел 4.7. по поводу компиляции ядра.

Когда это сделано, вы должны модифицировать ряд настроечных файлов, используемых NET-2. Для большинства это простая процедура. К сожалению, существует большое различие между дистрибутивами Linux относительно того, где должны размещаться различные конфигурационные файлы TCP/IP и поддерживающие программы. Чаще они могут быть обнаружены в /etc, но в других случаях их можно отыскать в /usr/etc, /usr/etc/inet, /sbin или в других неожиданных местах.

В худшем случае вы будете вынуждены использовать команду find для определения их местоположения в вашей системе. Имейте также в виду, что не все дистрибутивы хранят программы и файлы описания для NET-2 в одном месте - они могут быть разнесены по нескольким каталогам.

Следующая информация относится в первую очередь к связи по Ethernet. Если вы планируете использовать SLIP, прочитайте этот раздел, чтобы понять концепции, а затем обратитесь к специфическим для SLIP рекомендациям из последующего раздел.

5.3.2.1 Описание вашей сети

Прежде, чем вы сможете описать (настроить) TCP/IP, вам необходимо определиться со следующей информацией относительно установки сети.

Пользователи SLIP: Вышеприведенная информация может вам потребоваться, а может и не потребоваться. Разве что адрес сервера имен. При использовании SLIP, ваш IP адрес обычно определяется одним из двух способов: (a) У вас "статический" IP адрес, который не меняется в любое время выхода в сеть; (b) У вас "динамический" адрес, который берется из пула доступных адресов, когда вы связываетесь с сервером. В следующем разделе, посвященном настройке SLIP, это рассматривается более детально.

NET-2 поддерживает полную маршрутизацию, множественность маршрутов, обслуживание подсети (на этом этапе только в пределах байта). Выше описывались основные настройки TCP/IP. Ваши могут быть совсем другими: если есть сомнения, проконсультируйтесь у местных гуру из соседних сетей и посмотрите страницы Руководства про route и ifconfig. Настройка TCP/IP выходит далеко за рамки этой книги; вышенаписанного может быть достаточно большинству людей для начала.

5.3.2.2 rc-файлы в сети

rc-файлы широко используемые в системе сценарии, выполняемые во время загрузки программой by init, которая запускает всех основных системных демонов (таких как sendmail, cron, и т.п.) и настраивает такие вещи, как сетевые параметры, системное хост-имя и т.п. rc-файлы обычно находятся в каталоге /etc/rc.d, но в других системах они могут быть в /etc.

Здесь мы собираемся описать rc-файлы, используемые при настройке TCP/IP. Файлов два: rc.inet1 и rc.inet2. rc.inet1 используется для настройки базовых сетевых параметров (таких как IP адреса и маршрутизация) и rc.inet2 запускает TCP/IP демонов (telnetd, tftpd и т.д.).

Многие системы объединяют оба этих файла в один, обычно называемый rc.inet или rc.net. Имена, данные вашим rc-файлам роли не играют, лишь бы они выполняли нужные функции и выполнялись во время загрузки программой init. Чтобы это обеспечить, возможно вам потребуется подредактировать /etc/inittab , чтобы выполнить соответствующие rc-файлы. В худшем случае вам придется создать rc.inet1 и rc.inet2 файлы заново и добавить информацию из /etc/inittab.

Как мы говорили, rc.inet1 настраивает базовый сетевой интерфейс. Это включает ваше IP, сетевой адрес и таблицу маршрутизации (routing table) для вашей сети. Таблицы маршрутизации используются для маршрутизации входящих и исходящих сетевых дейтаграм (datagrams) на другие машины. Во многих простых настройках вы имеете три маршрута: один - для посылки пакетов своей собственной машине, другой - для посылки пакетов на другие машины вашей сети, третий - для посылки пакетов на машины, находящиеся за пределами вашей сети (через шлюзовую машину). Есть две программы для настройки этих параметров: ifconfig и route. Обе обычно находятся в /etc или /sbin.

ifconfig используется для настройки интерфейса устройств сети с необходимыми для функций параметрами, такими как IP адрес, маска сети, бродкаст адрес и т п. route используется для создания и модификации таблицы маршрутизации.

Для многих случаев файл rc.inet1 подойдет в том виде, в каком он здесь приведен. Вы, разумеется, должны будете отредактировать его под свою систему. Не используйте без изменения IP и сетевой адреса, приведенные здесь в качестве примера, они соответствуют действительной машине в Internet.

  #!/bin/sh
  # This is /etc/rc.d/rc.inet1 -- Configure the TCP/IP interfaces
  # First, configure the loopback device
  HOSTNAME=`hostname`
  /etc/ifconfig lo 127.0.0.1 # uses default netmask 255.0.0.0
  /etc/route add 127.0.0.1 # a route to point to the loopback device
  # Next, configure the ethernet device. If you're only  using
  # loopback or SLIP, comment out the rest of these lines.
  # Edit for your setup.
  IPADDR="128.253.154.32"     # REPLACE with YOUR IP address
  NETMASK="255.255.255.0"     # REPLACE with YOUR netmask
  NETWORK="128.253.154.0"     # REPLACE  with  YOUR  network address
  BROADCAST="128.253.154.255" # REPLACE with YOUR  broadcast address,
                                    # if you have one. If not, leave blank
                                    # and edit below.
  GATEWAY="128.253.154.1"     # REPLACE with  YOUR  gateway address!
  /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
  # If you don't have a broadcast address, change the above line to:
  # /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}
  /etc/route add ${NETWORK}
  # The following is only necessary if you have a gateway; that is,
  # your network is connected to the outside world.
  /etc/route add default gw ${GATEWAY} metric 1
  # End of Ethernet Configuration

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

rc.inet2 запускает различные сервера, используемые TCP/IP. Наиболее важный среди них - inetd. inetd сидит в фоне и присматривает за различными сетевыми портами. Когда машина пытается связаться с конкретным портом (например, со входным портом telnet), inetd создает новую копию соответствующего демона для этого порта (в случае порта telnet inetd запускает in.telnetd). Это проще, чем выполнять много независимых демонов (т.е. индивидуальных копий telnetd, ftpd и т.п.) - inetd запускает демонов только при возникновении необходимости.

syslogd - это системный демон входа - он аккумулирует сообщения о входе от различных источников и помещает их в log-файлы, зависящие от настройки /etc/syslogd.conf. routed - это сервер используемый для сопровождения динамической информации по маршрутизации. Когда ваша система пытается послать пакет в другую сеть, это может потребовать дополнительных записей в таблицу маршрутизации, чтобы это выполнить. routed заботится о сопровождении таблицы маршрутизации без необходимости вмешательства человека.

Приведенный ниже пример rc.inet2 запускает лишь самый минимум серверов. Есть и другие серверы - многие из которых обслуживают настройки NFS. Пытаясь установить TCP/IP на вашей системе, обычно лучше всего начать с минимальной конфигурации и добавлять более сложные куски, (такие, как NFS), когда у вас уже что-то работает.

Обратите внимание, что в нижеприведенном файле мы предполагаем, что все сетевые демоны находятся в /etc. Ну и как обычно отредактируйте этот файл под свою конфигурацию.

    #! /bin/sh
    # Sample /etc/rc.d/rc.inet2
    # Start syslogd
    if [ -f /etc/syslogd ]
    then
            /etc/syslogd
    fi
    # Start inetd
    if [ -f /etc/inetd ]
    then
            /etc/inetd
    fi
    # Start routed
    if [ -f /etc/routed ]
    then
            /etc/routed -q
    fi
    # Done!

Среди многих дополнительных серверов, которые вы можете запустить в rc.inet2 - named. named - это сервер имен. Он отвечает за перевод (локальных) IP адресов в имена и наоборот. Если у вас где-нибудь в сети нет сервера имен или вы сами хотите снабжать локальными именами машин другие машины вашего домена, использование named необходимо. (Но для большинства случаев в этом нет необходимости). Настройка named достаточно сложна и требует предварительного планирования. Мы отсылаем заинтересованных читателей к хорошим книгам по TCP/IP.

5.3.2.3 /etc/hosts

/etc/hosts содержит перечень IP адресов и имен хостов, которым они соответствуют. В общем, /etc/hosts содержат только записи для вашей локальной машины и, возможно, других "важных" машин (таких как сервер имен или шлюз). Перевод имя - адрес для других машин сети обеспечивает сервер имен.

Например, если ваша машина называется loomer.vpizza.com и имеет IP адрес 128.253.154.32, ваш /etc/hosts будет выглядеть как:

    127.0.0.1               localhost
    128.253.154.32          loomer.vpizza.com loomer

Если вы используете только loopback, единственная строка в /etc/hosts должна быть для 127.0.0.1 с именами localhost и хост-именем вашей машины.

5.3.2.4 /etc/networks

Файл /etc/networks содержит ваши имена и адреса, а также других сетей. Он используется командой route и позволяет описывать сеть именами, если вы это захотите.

Всякая сеть, которую вы хотите добавить в маршрутизацию с использованием команды route (обычно вызываемой из rc.inet1) должна иметь запись в /etc/networks.

     Пример.
    default 0.0.0.0 # default route    - mandatory
    loopnet 127.0.0.0 # loopback network - mandatory
    mynet 128.253.154.0 # Modify for your own network address

5.3.2.5 /etc/host.conf

Чтобы обратиться к машине по домену, система должна определить ее физический адрес (IP-адрес). Система делает это либо находя соответствующий домен в файле /etc/hosts (см. руководство), либо обращаясь к специальным серверам, называемым серверами имен (nameserver). Файл /etc/host.conf задает Этот файл используется для описания порядка просмотра этих возможностей.

    order hosts,bind
    multi on

Эти строки указывают библиотекам разрешения вначале искать в файле /etc/hosts требуемый домен, а потом обратиться к серверу имен (если таковой имеется). Строка multi допускает множество IP адресов для одного имени машины в /etc/hosts.

5.3.2.6 /etc/resolv.conf

Этот файл настраивает программы определения физического IP-адреса по домену машины, указывая IP-адрес вашего сервера имен и имя вашего домена. Имя вашего домена, это доменный адрес вашей машины в сети, с отброшенным именем машины. Так например, если ваше полное хост-имя loomer.vpizza.com, то имя вашего домена просто vpizza.com.

Например, если ваша машина goober.norelco.com и имеет сервер имен с адресом 128.253.154.5, ваш /etc/resolv.conf будет выглядеть:

    domain      norelco.com
    nameserver  127.253.154.5

Вы можете описать более одного сервера имен - каждый должен иметь свою строку в resolv.conf.

5.3.2.7 Установка хост-имени (hostname)

Хост-имя устанавливается с помощью команды hostname. Она обычно вызывается из /etc/rc или /etc/rc.local; просто просмотрите свои системные rc-файлы, откуда вызывается. Например, если ваше (полное) хост-имя loomer.vpizza.com, отредактируйте соответствующий rc-файл, выполнив команду:

/bin/hostname loomer.vpizza.com

Обратите внимание, что команды hostname может не оказаться в /bin.

5.3.2.8 Попытка не пытка

После того, как вы установили все эти файлы, вы должны быть готовы перезагрузить новое ядро и попытаться обрадоваться работающей сети. Правда, существует слишком много мест, где могут спрятаться ошибки, так что разумным будет проверить отдельные аспекты настройки сети (например, не самая хорошая идея для тестирования сети сразу шарахнуть по ней с помощью Mosaic с X-протоколом поверх IP). (прим. переводчика: сегодня бы автор вспомнил про Netscape)

Вы можете использовать команду netstat, чтобы посмотреть таблицы маршрутизации; это обычно источник большинства неприятностей. Руководство по netstat описывает точный синтаксис этой команды в деталях. Для того, чтобы проверить связи в сети, мы предлагаем использовать клиента, такого, как telnet, чтобы связать машины вашей локальной подсети и внешней сети. Это позволит локализовать ошибки. (Например, если вы не можете связаться с локальной машиной, но связываетесь с машинами других сетей, скорее всего есть проблема с сетевой маской и настройкой таблицы маршрутизации). Вы можете также прямо вызвать команду route (под root) поэкспериментировать с записями таблицы маршрутизации.

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

    $ telnet shoop.vpizza.com

Причина может быть в некорректной настройке сервера имен. Попытайтесь использовать физический IP адрес машины; если это поможет, тогда вы будете знать, что ваши основные сетевые установки (скорее всего) правильны и проблема лежит в описании адреса сервера имен.

Отладка сетевых настроек может быть трудной задачей и мы не можем здесь втягиваться в ее обсуждение. Если вы не можете получить помощь от местных гуру, мы очень вам советуем почитать Linux Network Administrators' Guide из LDP.

5.3.3 Настройка SLIP

SLIP (Serial Line Internet Protocol) позволяет использовать TCP/IP на последовательных линиях, будь то коммутируемая телефонная линия с модемом или выделенная асинхронная линия. Разумеется, для использования SLIP вам необходим доступ к SLIP-серверу. Многие университеты и фирмы за умеренную плату предоставляют SLIP-вход.

Есть две основные программы, использующие SLIP: dip и slattach. Обе эти программы используются для установления SLIP-соединения через последовательные устройства. Необходимо использовать одну из этих программ, чтобы активизировать SLIP, недостаточно просто дозвониться до SLIP-сервера (с помощью коммуникационной программы вроде kermit) и запустить команды ifconfig и route, так как dip и slattach формируют специальный системный вызов ioctl(), чтобы перехватить управление последовательным устройством для реализации SLIP-интерфейса.

Dip может произвести дозвонку до SLIP-сервера, обеспечить соединение (handshaking) и войти на сервер (указав например, имя и пароль), а затем инициировать SLIP-соединение по последовательной линии. slattach же не делает ничего, кроме захвата устройства для использования его SLIP. Это полезно, если вы имеете постоянную линию для SLIP-сервера и нет необходимости в дозвонке и соединении для обеспечения связи. Но большинство пользователей предпочитает использовать dip.

Dip можно также использовать для настройки вашей системы Linux в качестве SLIP-сервера, когда другие машины к вам дозваниваются и выходят в сеть через вторичное соединение по Ethernet на вашей машине. Дополнительную информацию по этой процедуре смотрите в Руководстве на dip.

SLIP весьма отличается от Ethernet, в нем только две машины в "сети" SLIP-хост (это вы) и SLIP-сервер. По этой причине SLIP часто воспринимается как связь ``point-to-point'' (от точки до точки). Обобщение этой идеи, известное как PPP (Point to Point Protocol) также реализовано в Linux.

Когда вы инициируете связь со SLIP-сервером, SLIP-сервер даст вам IP адрес. Некоторые SLIP-серверы выдают "статические" IP адреса - в этом случае ваш IP адрес будет тот же самый всегда, когда вы связываетесь с сервером. Но большинство SLIP-серверов выдают IP адреса динамически, когда при каждой связи вы получаете IP адрес заново. В общем случае SLIP-сервер сообщит вам при установлении связи ваш IP адрес и адрес шлюза. dip способен читать эти значения при входе на SLIP-сервер и использовать их для настройки самого SLIP.

Существенное замечание. Настройка связи по SLIP похожа на настройку loopback или ethernet. Основные отличия обсуждаются ниже. Прочитайте предыдущий раздел про настройку базовых файлов TCP/IP, и выполните изменения, описанные ниже.

5.3.3.1 Соединение по dip при статическом IP адресе

Если вы используете SLIP-сервер, выдающий статические IP адреса, вы можете включить записи о ваших IP адресе и хост-имени в /etc/hosts. А также настроить файлы, перечисленные в предыдущем разделе: rc.inet2, host.conf и resolv.conf. Также настроить rc.inet1, как описано выше. Если вы используете для связи со SLIP-сервером dip, то в файле rc.inet1 для последовательного порта команды ifconfig и route вызывать не надо, dip вызовет эти команды после установления соединения. (Если же вы, используете slattach, вам будет необходимо включить команды ifconfig и route в rc.inet1 для SLIP - смотрите ниже).

dip должен настраивать соответствующим образом таблицы маршрутизации для SLIP когда вы связываетесь. Однако, в некоторых случаях поведение dip может быть неправильным для ваших настроек и вам надо будет вручную выполнять команды ifconfig или route после того, как dip свяжется с сервером (это легче всего сделать из сценария shell, который содержит вызов dip, и немедленно выполнить соответствующие команды настройки). Ваш шлюз, это в большинстве случаев адрес SLIP-сервера. Вы можете знать этот адрес заранее или адрес шлюза будет выведен SLIP-сервером при установлении связи. Сценарий работы dip (описанный ниже) может также получать эту информацию от SLIP-сервера.

ifconfig может потребовать аргумента "pointopoint", если dip не настроил правильно интерфейс. Например, если адрес вашего SLIP-сервера 128.253.154.2, а ваш IP-адрес 128.253.154.32, вам может потребоваться выполнить команду под root

    ifconfig sl0 128.253.154.32 pointopoint 128.253.154.2

после связи по dip.

Обратите внимание, что имена SLIP-устройств, используемые командами ifconfig и route - sl0, sl1 и т.д.

В Разделе 5.3.4 мы объясним, как настраивать dip для связи со SLIP-сервером.

5.3.3.2 Соединение по slattach при статическом IP адресе

Если у вас выделенная линия или кабель, идущий прямо к SLIP-серверу, то нет необходимости использовать dip для инициализации связи. Вместо этого может быть использована команда slattach. В этом случае ваш файл /etc/rc.inet1 должен выглядеть примерно так:

    #!/bin/sh
    IPADDR="128.253.154.32"         # Replace with your IP address
    REMADDR="128.253.154.2" # Replace with your SLIP server address
    # Modify the following for the appropriate serial device for
    # the SLIP connection:
    slattach -p cslip -s 19200 /dev/ttyS0
    /etc/ifconfig sl0 $IPADDR pointopoint $REMADDR up
    /etc/route add default gw $REMADDR

slattach выделяет первое свободное SLIP-устройство (sl0, sl1, и т.д.) определенной последовательной линии.

Обратите внимание, что первый параметр команды slattach - это используемый SLIP-протокол. В настоящее время возможны только значения slip и cslip. slip - это обычный SLIP, как и следовало ожидать, а cslip - это SLIP с компрессией заголовков дейтаграмм. В большинстве случаев вам следует использовать cslip; однако, если у вас с ним возникают проблемы, попробуйте slip.

Если у вас более одного SLIP-интерфейса, то вы должны принять решения относительно маршрутизации. Вы должны решить, какие маршруты добавить, и эти решения могут быть сделаны только на базе действительного протокола связей вашей сети. Здесь вам могут помочь, как книга по TCP/IP, так и Руководство.

5.3.3.3 Соединение по dip при динамическом IP адресе

Если ваш SLIP-сервер выдает IP адреса динамически, то вы, разумеется, не знаете заранее свой адрес, поэтому вы не можете включить его в /etc/hosts. (Между тем вы должны включить запись для своего хоста с адресом обратной связи (loopback address) 127.0.0.1.)

Многие SLIP-сервера выдают ваш IP адрес (также как и адрес сервера) во время соединения. Например, один тип SLIP-сервера выдает такое сообщение:

    Your IP address is 128.253.154.44.
    Server address is 128.253.154.2.

dip может перехватить эти номера с выхода сервера и использовать их для настройки SLIP-устройств.

Смотрите выше Раздел 5.3.3.1 относительно информации по настройке различных файлов для TCP/IP при использовании SLIP. Ниже мы объясняем, как настраивать dip для связи со SLIP-сервером.

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

dip может упростить процесс соединения со SLIP-сервером, войти и настроить SLIP-устройства. Если только у вас не выделенная линия для SLIP-сервера, dip - это то, что вам надо.

Для использования dip вы должны написать "сценарий болтовни" (``chat script''), который содержит перечень команд, используемых для связи со SLIP-сервером при входе в систему. Эти команды могут автоматически посылать ваши имя/пароль серверу, а также получать информацию о вашем IP адресе с сервера.

Вот пример такого сценария для использования с сервером динамических IP адресов. Для статических серверов вам потребуется в начале сценария установить значения переменных $local и $remote. В соответствии с вашими локальным IP адресом и адресом сервера соответственно. Более детальную информацию можно получить в Руководстве на dip.

    main:
      # Set Maximum Transfer Unit. This is the maximum size of packets
      # transmitted on the SLIP device. Many SLIP servers use either
      # 1500 or 1006; check with your network admins when in doubt.
      get $mtu 1500
      # Make the SLIP route the default route on your system.
      default
      # Set the desired serial port and speed.
      port cua03
      speed 38400
      # Reset the modem and terminal line. If this causes trouble
      # for you, comment it out.
      reset
      # Prepare for dialing. Replace the following with your
      # modem initialization string.
      send AT&C1&D2\\N3&Q5%M3%C1N1W1L1S48=7\r
      wait OK 2
      if $errlvl != 0 goto error
      # Dial the SLIP server
      dial 2546000
      if $errlvl != 0 goto error
      wait CONNECT 60
      if $errlvl != 0 goto error
      # We are connected.  Login to the system.
    login:
      sleep 3
      send \r\n\r\n
      # Wait for the login prompt
      wait login: 10
      if $errlvl != 0 goto error
      # Send your username
      send USERNAME\n
      # Wait for password prompt
      wait ord: 5
      if $errlvl != 0 goto error
      # Send password.
      send PASSWORD\n
      # Wait for SLIP server ready prompt
      wait annex: 30
      if $errlvl != 0 goto error
      # Send commands to SLIP server to initate connection.
      send slip\n
      wait Annex 30
      # Get the remote IP address from the SLIP server. The
      # `get...remote' command reads text in the form xxx.xxx.xxx.xxx,
      # and assigns it to the variable given as the second argument
      # (here, $remote).
      get $remote remote
      if $errlvl != 0 goto error
      wait Your 30
       # Get local IP address from SLIP server, assign to variable
       # $local.
      get $local remote
      if $errlvl != 0 goto error
      # Fire up the SLIP connection
    done:
      print CONNECTED to $remote at $rmtip
      print GATEWAY address $rmtip
      print LOCAL address $local
      mode SLIP
      goto exit
    error:
      print SLIP to $remote failed.
    exit:

dip автоматически выполняет команды ifconfig и route, базирующиеся на значениях переменных $local и $remote. Здесь этим переменным присваиваются значения с использованием удаленных команд get..., которые получают текст со SLIP-сервера и присваивают его названной переменной.

Если команды ifconfig и route, которые выполняет для вас dip не работают, вы можете либо выполнить правильные команды в сценарии shell после выполнения dip, либо модифицировать исходник для самого dip. Выполнение dip с опцией -v будет выдавать отладочную информацию в процессе установления связи, что должно помочь в определении ошибок в работе. Теперь, для того, чтобы выполнить dip и открыть SLIP-соединение вы можете использовать команду, вроде:

    /etc/dip/dip -v /etc/dip/mychat 2>&1

Где различные dip-файлы и сценарий болтовни (mychat.dip) помещены в /etc/dip. Вышеприведенное обсуждение должно быть достаточным для вашего хорошего самочувствия на славном пути в сетевое сообщество через Ethernet или SLIP. И вновь мы настоятельно рекомендуем заглянуть в книгу по TCP/IP, особенно, если ваша сеть имеет специфику в маршрутизации, отличающую ее от рассмотренных здесь.

5.4 Сетевая работа с UUCP

UUCP (UNIX-to-UNIX Copy) - старейший механизм, используемый для передачи информации между системами UNIX. При использовании UUCP, системы UNIX созваниваются друг с другом (используя модем) и передают почтовые сообщения, новости, файлы и т.п. Если у вас нет TCP/IP или SLIP доступа, вы можете использовать для связи с миром UUCP. Большая часть программ, связанных с почтой и новостями (смотрите Разделы 5.5 и 5.6) может быть настроена на использование UUCP для передачи информации на другие машины. Действительно, если поблизости есть узел Internet, вы можете иметь доступ к почте Internet, получая ее с узла по UUCP.

Книга Linux Network Administrator's Guide содержит исчерпывающую информацию по настройке и использованию UUCP под Linux. Кроме того, по anonymous FTP sunsite.unc.edu, доступна Linux UUCP HOWTO, которая может быть весьма полезна. Другой источник информации по UUCP - книга Tim O'Reilly и Grace Todino Managing UUCP and USENET. Дополнительно смотрите Приложение A.

5.5 Электронная почта

Как и множество систем UNIX, Linux имеет несколько программных пакетов для использования электронной почты. E-mail (электронная почта) на вашей системе может быть либо локальная (то есть вы можете обмениваться почтой с другими пользователями вашей системы) или сетевая (то есть вы посылаете почту, используя либо TCP/IP, либо UUCP, другим пользователям). Программы e-mail обычно состоят из двух частей: мэйлер и транспорт. Мэйлер - это программы пользовательского уровня, которые используются для формирования и чтения почтовых сообщений. Популярные мэйлеры включают elm и mailx. Транспорт - это программы системного уровня, которые отвечают за доставку почты, как локальной, так и удаленной. Пользователь никогда не видит программы "транспорт"; они взаимодействуют только с мэйлером. Но, назвавшись системным администратором, человек должен понимать концепции программ "транспорта" и как их настраивать.

Наиболее популярная транспортная программа для Linux - это Smail. Эту программу просто настраивать. Она может посылать e-mail, локально и удаленно по TCP/IP и по UUCP. Yf В большинстве систем UNIX используется более мощная программа sendmail, однако, из-за сложного механизма установки, многие системы Linux ее не используют.

Linux Mail HOWTO дает больше информации относительно доступных почтовых программ для Linux и как их настраивать. Если вы планируете послать почту удаленному пользователю, вы должны понимать либо TCP/IP или UUCP, в зависимости от того, каким образом ваша машина подключена в сеть (смотри Разделы 5.3 и 5.4). Может быть полезной документация по UUCP и TCP/IP, перечисленная в Приложении А.

Большинство почтовых программ можно достать через anonymous FTP с sunsite.unc.edu в каталоге /pub/Linux/system/Mail.

5.6 Новости и USENET

Linux также обеспечивает ряд возможностей для работы с электронными новостями. При желании вы можете установить на вашей системе локальный сервер новостей, который позволит вам посылать "статьи" (``articles'') в различные "группы новостей" (``newsgroups'')... Удобная форма организации обсуждений. А если вы имеете выход по TCP/IP или UUCP в сеть, тогда вы будете в состоянии участвовать в USENET - всемирной сети новостей.

Программы новостей состоят из двух частей - сервера и клиента. Сервер новостей - это программа, которая управляет группами новостей и занимается доставкой писем другим машинам (если вы в сети). Клиент новостей ( newsreader) это программа, которая связывает с сервером, который позволяет пользователям получать и посылать новости.

Для Linux есть несколько серверов новостей. Они все имеют одни базовые протоколы и принципы. Две первые версии, это ``C News'' и ``INN''. Существует также много типов "читалок" новостей (newsreaders), например rn и tin. Выбор читалки в той или иной мере дело вкуса. Все читалки работают одинаково с различными версиями серверных программ. Так что читалка независима от сервера и наоборот.

Если вы хотите лишь вести локальные новости (а не как часть USENET), то вам потребуется завести сервер на своей системе, а также инсталлировать читалку для пользователей. Сервер новостей будет хранить статьи в каталоге, например /usr/spool/news, а читалка будет их просматривать в поисках поступивших новостей.

Если вы захотите вести сетевые новости, вам предоставляется несколько возможностей. Новости, базирующиеся на сетевом TCP/IP, используют протокол, известный как NNTP (Network News Transmission Protocol). NNTP позволяет читалке читать новости прямо удаленно по сети. NNTP также позволяет серверам новостей посылать по сети статьи друг другу, это программа, на которой базируется USENET. Большинство фирм и университетов имеют один или более NNTP-серверов, установленных для работы со всеми новостями USENET данного узла. Каждая вторая машина на узле имеет базирующуюся на NNTP читалку для чтения и посылки новостей по сети через NNTP- сервер. Это означает, что только NNTP-сервер действительно хранит новости на диске.

Далее следует несколько сценариев настройки новостей.

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

Большинство "стандартных" программ новостей (доступных через anonymous FTP с сервера ftp.uu.net каталог /news) - готовые для компиляции полуфабрикаты. Необходимые изменения (patches) можно найти на sunsite.unc.edu в /pub/Linux/system/Mail (который, совершенно случайно, находится там же, где Linux). Другие бинарные файлы программ новостей для Linux можно также найти в этом каталоге.

За дополнительной информацией обращайтесь к Linux News HOWTO на sunsite.unc.edu в /pub/Linux/docs/HOWTO. Кроме того, входящий в проект LDP Linux Network Administrator's Guide содержит исчерпывающую информацию по настройке программ новостей для Linux. Книга Tim O'Reilly и Grace Todino Managing UUCP and Usenet замечательное руководство по установке UUCP и программ новостей. Представляет интерес и документ USENET ``How to become a USENET site'', доступный на ftp.uu.net, в каталоге /usenet/news.announce.newusers.

Предыдущая глава | Содержание | Следующая глава


Copyright © CIT