&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 , то мы должны единовременно
в