Linux General HOW-TO, Part 1
ОК. Начнем. Данная текстуха предназначена для тех, кто решил забыть
про кошмары, связанные с именем БГ ( _НЕ_ Гребенщикова, а Билла Гейтса...).
В этой текстухе я попытался расказать о тех проблемах, которые возникают у
людей, впервые увидешвих UNIX и о методах их решения, коли такие мне
известны... Должен сразу предупредить, что все писалось под музоном
Exploited, Nirvana и Metallica. Коли где есть грамматические ошибки - Сорри,
клаве уже 7! лет.
Все разделено на несколько разделов:
1. Для вас ли Linux... Я надеюсь, что да.
2. Минимальные требования и установка.
3. Первые, и не только первые, шаги по настройке.
4. X-Windows и все, что связано с эти словом.
5. Поддержка сетей под Linux.
6. Работа с FIDO под Linux.
Скоро ожидаются дополнения:
1. DOSEMU, WABI, etc... То есть эмуляция других сред под Линуксом.
2. IPX и Линукс, Работа Линукса как файл-сервера в окружении Novell.
3. Работа Линукса в Сети в окружении Windows'95,NT,3.11, NETBIOS.
4. Компиляция программ под Линуксом: FAQ для начинающих.
5. Администрирование Линукса(основы), приоритеты, уровни доступа,
мультипользовательская работа в сети. Введение в UNIX-security.
6. Организация входного модемного траффика, Входной EMSI,
организация BBS.
Если у кого есть предложения по расширению сего документа, то они
принимаються на 2:5020/630.60@fidonet, 909:5020/8@mswnet, ivanp@dsbw.ru
Это только мини-HOWTO. Ко мне приходит огромное количество вопросов,
связанных с Линуксом. Многие из них будут попадать в мой личный FAQ, который
будет опубликован сразу, как наберет весу чуть поболее. _ЛЮБЫЕ_ вопросы по
Линуксу приветствуются. Без битвы не отдам ни единого человека в царство
Билли. Эти разделы, как мне кажеться, покрывают большинство областей, если
не все, в которых по началу могут возникнуть проблемы.
Глава 1.
Для вас ли UNIX-based системы ?
UNIX-системы - наиболее распростаненный класс операционок,
использующихся для работы с сетями, _ПРОФЕССИОНАЛЬНОЙ_ графикой, базами
данных. Примером тому могут служить такие платформы как SGI, Digital Alpha,
Sun SPARC Station и т.д. В последнее время появились _НОРМАЛЬНЫЕ_
представители этого класса операционок и для PC. Среди них наибольшую
популярность приобрели два конкурирующих зверя - FreeBSD и Linux. Лично я
остановился на Linux. Основные преимущества UNIX-style ОС - полная
мультипоточность, т.е. _РЕАЛЬНОЕ_ паралельное выполнение процессов,
об'единение всех типов устройств в некую единую структуру, возможность
четкого ограничения ресурсов (вплоть до макс. уровня загрузки процессора) и
уровней доступа пользователей. Изначально UNIX - мультипользовательсякая ОС,
больше ориентированная на работу с сетью. Ее отсутствие не означает отказ от
UNIX. Основные недостатки (Для человека, севшего за Юникс в первый раз) -
слишком большое идеологическое различие с общеизвестными ДОС, Вынь и т.д.,
небходимость разбираться хотябы на примитивном уровне с железом, необходимо
знание C, хотябы краеугольных камней оного. Как мне в свое время сказал один
мой друг - переход с ДОСа или OS/2 или Вынь на Юникс, как впрочем и переход
с Васика на Ц - тоже самое, что человеку вытащить мозги, поменять местами
полушария и воткнуть обратно, но уже вверх ногами. Хотя мне кажеться, что
такая ситуация не должна быть шокирующей для людей, увлекающихся
программированием... :)
Итак: Дабы ставить себе Линукс, убедитесь, что:
1. Вы не пугаетесь от вопросов "Покажи-ка мне дружок свой Primary
Slave и перекинь его на Secondary Master" и "А какой у твоего КОМ-порта
IO-base и IRQ".
2. Опять же не испугаетесь увидев такую вещь:
---
struct termio {
unsigned short c_iflag;
unsigned short c_oflag;
unsigned short c_cflag;
unsigned short c_lflag;
unsigned char c_line;
unsigned char c_cc[NCC];
};
---
И поймете, как ее использовать при необходимости, посмотрев
контекст, в котором ента весчь используеться. В принципе, этот пункт можно
опустить, но в таком раскладе работа с Линуксом превратиться для вас в
полный кошмар минимум месяцев на 9, что в моем случае и произошло. Когда я
себе поставил Линукс, я знал, правда в совершенстве, ВАСИК и asm 8080.
Нормально работать я смог только тогда, когда раскопал небольшую коллекцию
маленьких прог на Ц под Линукс. По ним я и изучил сей прекрасный language.
Если вы все-таки решитесь на установку Линукса без знания Ц, то для вас у
меня есть оная коллекция прог, желание помочь в Ц(НО НЕ НАУЧИТЬ, ибо время -
вещь такая - его всегда не хватает). Для перезжающих с Васика есть
более-менее порядочный интерепретатор оного+Шареная Либа, содержащая
Васичные функции. То есть пишите в Васике, но в нотации языка Ц - и все ОК.
Либа пока на стадии появления. В ней пока не более 3-х десятков функций.
Работа идет. Если есть желающие помочь с ее написанием - милости просим,
исходники дам. Не забудьте только синхронизировать со мной изменения.
3. В принципе, она _УЖЕ_ для вас, если вы вспомнили о ее
существовании... :)
4. Ну, коли не испугались, тады:
Глава 2.
Минимальные требования и установка.
Прежде чем приступать к установке, прочитайте внимательно все, что
здесь написано. Я когда ставил Линукс в первый раз, очень много напортачил
на этом этапе. Достаточно важно заранее продумать как, где и каким методом
расположить Линукс, обеспечить его нормальную загрузку и его нормальное
функционирование.
2.1 Требования к железу.
В принципе для того, чтобы увидеть приглашение в виде фразы "Login:"
вам необходимо 386/SX-16, 4Mb RAM, 25Mb Hdd. Для того, чтобы не ждать по 6-7
часов завершения компиляции ядра, вам необходимо по меньшей мере 486DX-40, 8
Mb Ram. Размер места на винте напрямую зависит от вашего фанатизма в
Линуксе, то есть, сколько софта вы поставите + место необходимое вам для
работы под Линуксом. В принципе для нормальной работы лично мне хватает
DX2-66/16Mb RAM. Про место на винте не говорю, ибо все под Линуксом. На
меньшее ни он ни я не согласны... :)
2.2 Жесткий Диск + Линукс + Другие операционки.
Само по себе Ядро Линукса на данный момент может содержать в себе поддержку следующих
файловых систем: Minix, Extended FS, EXT2 FS, XIAFS FS, DOS FAT, MSDOS FS,
VFAT (Windows'95) FS, FAT-32, NFS (Network FS), ISO9660, OS/2 HPFS, SysV
FS, UFS (BSD*). Устанавливаться Линукс модет на все вышеперечисленное, кроме
Extended FS, ISO9660 и OS/2 HPFS. Родные для Линукса файловые системы - EXT2
и XIAFS. Соответственно, при установке на раздел с такой FS, можно
расчитывать на наибольшую отдачу Линукса в плане скорости обращений к диску.
Linux имеет свой собственный BOOT-менеджер, который совершенно спокойно
может располагаться или в MasterBoot Sector, или в boot-секторе той
партиции, на которой он стоит. При расположении в MasterBoot не возникает ника
ких проблем с DOS, OS/2, но известны проблемы с Windows'95. В таком случае у
вас два варианта: или поставить LILO(LInux LOader) в boot-сектор его
партиции, сделать так, чтобы он (LILO) знал только про Линукс, а своему
boot-manager'у сказать, что у него на такой-то партиции есть интеллект, либо
вообще отказаться от использования ЛИЛО, а грузить из ДОСа утилиточкой
LOADLIN и держать загрузочный образ ядра (около 550 Кил) на своем ДОСовом
разделе. На данный момент у меня нет информации по скрещиванию ЛИЛО и NT,
интересует также любая другая информация и личный опыт, если таковой
имеется, ибо данный файлик я предполагаю периодически обновлять. Известны
проблемы с ЛИЛО, когда он ставиться в Master-Boot на SCSI диске, с которого
производиться загрузка системы по умолчанию. В таком случае лучше поставить
ЛИЛО в boot-сектор Линуксового раздела и не забыть сделать его активным.
2.3 Подготовка к установке.
После того, как вы определились с местом расположения Линукса, не
спешите. Есть еще пара вещей, которые надо обсудить. Всем известно такое
понятие как SWAP. Линуксу оно тоже не чуждо. Проявляеться в двух видах. Один
традиционен для Вынь и т.д. - SWAP-файл на разделе, но данный метод _НЕ_
традиционен для Линукса, хотя и возможен. Как правило под СВОП отводиться
отдельный раздел на винте, причем желательно на физическом устройстве,
отличным от того, на котором стоит Линукс. Сразу первое правило: Все
Линуксовые разделы создавайте Линуксовым fdisk'ом. Дабы потом не иметь
геммороя с ними. СВОП-раздел вам понадобиться в обязательном порядке, если у
вас 4 или менее метров мозгов. Современное ядро в момент загрузки жрет 5-7
мегов, а после того как загрузилось, убегает обратно на отметку 2-3 мега, в
зависимости от конфигурации. СВОП-раздел я рекомендую создать размером
(Кол-во мозгов в метрах)*3, если у вас 16 и менее оных, либо *2, если более.
В таком раскладе у вас вряд-ли появиться в логах надпись 'Could not allocate
a free page'.
Я забыл сказать, что в данном докУменте я рассмотриваю установку
Linux Slackware, но большинство вещей можно с тем-же успехом отнести к любой
другой поставке Линукса. Итак. Мы определились с местом расположения
Линускса, местом под СВОП. Теперь подготовка дистрибутива. Дистрибутив
Слаквари состоит из N-го количества diskset'ов, каждый из них со своим
специфичным софтом. Попытайтесь определиться, что вам _ОБЯЗАТЕЛЬНО_
понадобиться, что вам _МОЖЕТ_ понадобиться и что вам не понадобиться в любом
случае, дабы знать свои аппетиты на место на HDD в пропорции MIN/AVG/MAX.
Именно для ентого я привожу здесь список стандартных наборов диском и
количество дисков в каждом из них. Надо учитывать, что все диски - 1.44М,
зажаты приблизительно в пропорции 1:2.2. То есть на каждый диск дистрибутива
у вас улетит около 2.5 мег места на винте.
Disk Series | No. of
disks | Description |
A | 9 | Basic Linux Set. Нужен при любом
раскладе |
AP | 6 | Проги без поддержки X. Из них реально нужно
процентов 60. Понгачалу рекомендую все. |
D | 13 | GNU C, GNU ASM, Fortran компайлеры с Либами.
Также libc,хедеры к ней,Pascal2C,Perl,LISP Доки по программированию на Ц.
По хорошему надо бы все, но при в принципе 70% хватит |
E | 8 | EMACS. На любителя. У меня вообще не
стоит |
F | 3 | Для всех полезно. FAQ и HOW-TO из
/usr/doc |
K | 6 | Linux Kernel Source. Понадобиться, если вы свяжетесь
с программированием,SCSI, network. Подразумевает установку набора
D. |
N | 6 | Netowrk. Как низкоуровневые утилиты, так и WWW/FTP/NEWS
сервера. PPP,SLIP-без вопросов. Понадобяться,если в Инет с Линукса надо или
нужна поддержка локалки(Не Эхи). |
T | 9 | TEX/LaTEX. |
TCL | 3 | TCL/Tk Widgets. Неплохой script-язык под
X |
X | 26 | XFree86 3.3.1 X11R6 система. Такой об'ем только
за счет кучи карточек, которые держит. Если оставить только нужную карту -
дисков 15. Настоятельно рекомендую. |
XAP | 4 | Куча мелких прог под X. Не помешают. + 2-3 примитивных
игрухи, включая вечный тетрис. |
XD | 3 | X Development Kit. Сам только недавно поставил.
Смысл для вас на этом этапе ясен ? |
XV | 3 | Библиотечки XView. |
Y | 2 | Вечное. Игрухи. с десяток text-mode игрух, пара-тройка
графических. DOOM'а там нет. |
Ну вот. Вроде с местом определились. Резко потерли всякие приблуды
от МастДая, но место нашли... Теперь. Надо определиться, откуда будем
ставить Линукс. Вариантов в Слаквари несколько - Ставить с флопешников (у
вас есть столько ?), Ставить по сетке (прибегайте ко мне с машиной,
сделаем.), ставить с ленточки(А она у вас есть?), ставить с фирменного
Сидюка, или ставить с заранее присоединенного жесткого диска с
поддерживаемой файловой системой. Для нас Наиболее предпочтительный
последный вариант. То есть на ДОС'овой или другой поддерживаемой (см п. 2.2)
создаем коталок с именем, ну, хотябы, slack, в него кидаем все файлики и
директории Слаквари. Для начала можно только диски A. Остальное можно
доставить позднее. Запоминаем место. Берем ручку+бумажку. Делаем расчеты,
каким устройством у нас окажеться этот раздел под Линуксом. Если ДОС-раздел,
то основной ли он. Если да, то Единственный ли он, или перед ним на винте
болтаеться primary раздел какой-нить лабуды типа boot-манагера или OS/2.
Расчет делаеться так: Предполагаю, что мы работаем с IDE'шными винтами.
Primary Master - hda
Primary Slave - hdb
Secondary Master - hdc
Secondary Slave - hdd
Пишем оные три буквы, далее добабляем цифирю, от 1 до 15, где 1-4 -
основные разделы, 5-15 логические. Из всего вышеописанного выбираем цифирю, на
которой у нас лежит дистрибутив. Полученная комбинация и будет именем
искомого устройства. Если у вас SCSI, то соответственно, hd? заменяеться на
sda,sdb,sdc,....,sdh, где sda - SCSI ID#0, sdb - SCSI ID#1 и т.д.
Ладно, замучался я с вами. Время - 4:10 ночи (или уже утра). Пошел
поем. Продолжение через минуток 20.
А вот и я. Спасибо, что подождали... :) Ладно. Кончили лирические
отступления. Продолжаем. Под Линуксом все обращения к устройствам происходят
через спец-файлы - ссылки на устройства. Как правило, файлики лежат в
директории /dev. То есть, чтобы обратиться к нашему диску, на котором
дистрибутив, мы обращаемся к файлу /dev/?d?x, где ? и x - мы подставляем из
наших условий. Если вам по барабану все то что я здесь написал и вы решили
просетупить A диски с флопповода - ваше право. Форматируете 1.44М дисекту
под ДОС, а потом вслепую перекидываете содержимое каталогов A1, A2,...,A9
на соответствующие флопы, и, возгордясь собой от проделанной работы,
переходите к следующему пункту, но все таки заложите где-нить енти данные,
ибо при работе с Линуксом они вам все равно рано или поздно понадобяться.
2.4 Подготовка загрузочных образов ядра.
Для этого вам понадобяться 2(две) дискеты заведомо без бЭдов на
1.44М. 1-ая будет образом ядра, вторая - образом корневой файловой системы,
с которой вы начнете работу по установке. Образы дискет вы будете
прописывать под ДОСом (забудьте про 'Cеанс MS-DOS' где бы вы не были) с
помощью утилитки RAWRITE.EXE, идущей со Слакварью, да и не только с ней.
Образ корневой файловой системы для инсталяции в любом случае в файлике
color.gz. Для искушенных в вопросах UNIX архиваторов: Вы заметили, что он
жатый. Разархивировать _НЕ_ надо, рискуете не влезть на 1.44М, но по желанию
- пожалста. С образом ядра чуть посложней. Ввиду ограничения пришлось из
ядра по максимуму выкинуть поддержку всего не нужного железа в момент
инсталляции. Так что не удивляйтесь, если ядро при загрузке ничего вам нескажет про ваши КОМ и/или ЛПТ или не найдет вашей любимой сетки. По умолчанию,
если у вас нет SCSI и т.д., то для вас образ - bare.i. Для остальных такая
табличка из доки по Слаквари:
Slackware source on: | Target is IDE | Target is
SCSI | Target is MFM |
Hard Drive | bare.i | Use a SCSI controller bootdisk from
the list below. | xt.i |
SCSI CD-ROM | Use a SCSI controller bootdisk from the list
below. | Use a SCSI controller bootdisk from the list
below | - |
IDE/ATAPI CD-ROM | bare.i | Use a SCSI controller
bootdisk from the list below. | - |
Aztech, Orchid, Okano, Wearnes, Conrad, CyCDROM non-IDE CD-ROM |
aztech.i | aztech.s | - |
Sony CDU31a, Sony CDU33a
CD-ROM | cdu31a.i | cdu31a.s | - |
Sony CDU531, Sony CDU535
CD-ROM | cdu535.i | cdu535.s | - |
Philips/LMS cm206
CD-ROM | cm206.i | cm296.s | - |
Goldstar R420
CD-ROM | goldstar.i | goldstar.s | - |
Mitsumi non-IDE CD-ROM | mcdx.i, mcd.i | mcdx.s,
mcd.s | - |
Optics Storage 8000 AT CD-ROM
("Dolphin") | optics.i | optics.s | - |
Sanyo CDR-H94A
CD-ROM | sanyo.i | sanyo.s | - |
Matsushita, Kotobuki, Panasonic, CreativeLabs (Sound Blaster),
Longshine and Teac non-IDE
CD-ROM | sppcd.i | sppcd.s | - |
NFS | net | scsinet | - |
Tape | bare (for floppy tape), For SCSI tape,use one of the
SCSI bootdisks listed below. | Use a SCSI controller bootdisk from the
list below. | xt.i (for floppy tape) |
SCSI controller bootdisks:
7000fast.s
advansys.s
aha152x.s
aha1542.s
aha1740.s
aha2x4x.s
am53c974.s
buslogic.s
dtc3280.s
eata_dma.s
eata_isa.s
eata_pio.s
fdomain.s
in2000.s
iomega.s
n53c406a.s
n_5380.s
n_53c7xx.s
pas16.s
qlog_fas.s
qlog_isp.s
seagate.s
trantor.s
ultrastr.s,
ustor14f.s
If you have no idea which SCSI controller your machine has, you can also
try the generic SCSI bootdisk "scsi.s". You can determine what controller
type you have by watching the boot messages. Then, you should make the
bootdisk that matches your controller and use that to install. (Since the
scsi.s kernel is loaded with SCSI drivers, it consumes quite a bit of memory
that the disks designed for a single SCSI controller do not)
Я думаю, что с Англицким все в достаточной мере знакомы, дабы понять
о чем идет речь, но тем не менее привожу некоторую расшифрацию
SCSI-контроллеров.
Все, что на чипе AIC-7xxx - aha2x4x.s
AMD 53C974 - am13c974.s
BusLogic - buslogic.s
UltraStorage SCSI - ultrastr.s, ustor14f.s
Все остальные контроллеры вроде понятно из названия.
Готовите Образы, проверяете все остальное о чем идет речь.
Настоятельно рекомендую перед началом установки сделать или backup винта,
или, по меньшей мере, backup'ы boot-секторов и загрузочные дискеты ваших ОС,
ибо в первый раз можно и оплошать с ЛИЛО/fdisk'ом. Моя задача по возможности
предотвратить это с помощью данного текста.
2.5 Поехали.
Итак, мы вставили диск с образом ядра и нажали магическое сочетание
трех кнопок. Таперича ждем, пока на экране появиться надпись LILO и
небольшой хелп. Коли хотите, проичтайте, но в этой текстовухе он на русском,
да и более содержательный. Смело жмем Ентер. Грузиться ядро, потом вежливо
просить вставить другой дискеть и прессануть Ентер опять. Если у вас на этом
этапе возникают глюки/баги/траблы - скорее всего у вас проблемы с
Дискетой/Флопповодом/Железом в целом. Разбирайтесь. После загрузки образа
корневой файловой системы, да и Линукса в целом, у вас появляеться заветный
запрос login: и опять же небольшой хелп. Пробежав глазами сквоз оный, смело
вваливаемся внуть под именем root, ибо ОН (root) - в любом случае СисАдмин,
даже если вы - нет :). Вы в коммандной строчке Линукса. Таперича по
алгоритму, определенному в п. 2.3 определяем девайс, на котором бы
расположим свой Линукс-раздел. Токма в данном случае мы должны получить
токма буковки, без цифирь, ибо с цифирями - это накая конкретная партиция, а
без цифирь - Диск целиком, e.g. hda1 - Первая Primary партиция на IDE
Primary Master, а hda - весь Primary Master целиком. Потом смело говорим
'fdisk /dev/???', где ??? - только что вычесленное имя устройства. В первую
очередь говорим ? для хелпа, и вперед. У вас должно получиться минимум еще
два раздела помимо существующих - Они должны быт помечены как Linux
Native(83) и Linux Swap(82) соответственно. В скобках я дал их числовой
индентификатор для облегчения работы. Но все есть в хелпе. После етого я
рекомендую перезагрузиться, хотя это и не обязательно. Теперь у нас есть
некие разделы под Линукс, правда, еще не форматированные. Отформатируем их
потом. Сейчас другое. Нам надо присоединить к корневой файловой системе наш
раздел с Дистрибутивом Линукса. Если вы решили ставиться с флопешников,
просто перелетите через абзац. Для этого мы выходим в корень - 'cd /' и делаем там некий каталок с
любым именем, кроме уже существующих (командочку dir я надеюсь еще никто не
забыл ?) - 'mkdir xxx'. После этого мы собственно, присоединяем наш раздел к
корневой файловой системе - 'mount /dev/?d?x /xxx', где ?d?x - вычисленное в
п. 2.3 имя устройства, на котором находиться дистрибутив Слаквари, а xxx -
созданная нами директория. После этого вы просто набираете 'setup' и говорите 'ADD SWAP'. Далее
как предложит, но в результате, когда спросит Source location - скажите
Premounted Directory и скажите /xxx/slack, где xxx - созданный нами каталог
на корневом разделе, а slack - созданный вами каталог, содержащий
дистрибутив Слаквари. ОК. Выберите те наборы дисков, что вы собрались
устанавливать на данный момент. Далее, когда спросит Prompt Mode - скажите
MENU. Это намного облегчит ваши действия по выбору программных пакетов.
Ладно. Время - 6. Теперь уже точно утро. Я пошел спать. Продолжать
буду следующей ночью. Вы пока устанавливайтесь... :)
А вот и опять я. Я вам еще не надоел ? Тогда Продолжаем. Ето
собственно, все, что относиться к установке. По окончании установки вас
перекинет на "CONFIGURE Section". Работа с ней необходима в том случае, если
вы поставили наборы A или N. Реально при установке других наборов
конфигурилка не нужна, а если и нужна, то легче поправить ручками. Итак. я
предполагаю, что вы поставили Диски и A и N. Если вы поставили только A, то
вы сами увидите, когда кончиться хелп для вас. По поводу настройки ЛИЛО:
Если вы решили не устанавливать ЛИЛО, а грузить с помощью утилитки LOADLIN,
то на следующей загрузке Воткните дискету, с который вы грузили Линукс и
вместо нажатия Ентер скажите 'mount root=/dev/xxxx' - где xxxx - раздел
помеченый как Linux Native. То есть тот раздел, на который вы установили
Линукс. Потом присоедините свою ДОС'овою партицию к корневой файловой
системе - 'mount /dev/xxxx /mnt', значение xxxx я думаю понятно. Теперь все
что ниже /mnt - содержание /dev/xxxx. И копируете туда саму утилитку и образ
ядра - 'cp /root/lodlin16.zip /mnt/; cp /vmlinuz /mnt/'. Если вы грузитесь
из ДОСа, не забывайте скидывать образ ядра на ДОСовый раздел после
перекомпиляции ядра. Лежать оное будет в
/usr/src/linux/arch/i386/boot/zImage. Настройка:
Пишу только ответы на те вопросы, которые критичны. Вс остальное -
дело ваше.
INSTALL LINUX KERNEL - Skip, use default /vmlinuz.
MAKE BOOT DISK - Нет. На кой черт он нам сдался. Хотя по желанию.
LILO INSTALLATION - Почитайте внимательно пункты меню. Работаете в
соответствии с вашими требованиями.
CONFIGURE NETWORK - Yes.
ENTER HOSTNAME - Если вы будете сидеть В инете или в локалке(сеть, а
не эха), либо у вас будет фидо работать с Линукса, то вам понадобиться
как-то индентифицировать свою машину. Что нибудь типа vasya_pupkin.ru. В
моем примере HOSTNAME'ом будет vasya_pupkin
SENDMAIL CONFIGURATION - Итак: самый безопасный вариант для работы -
SMTP, но без BIND. То есть пункт 2.
TIMEZONE CONFIGURATION - Хоть там и есть GMT+300, однако там есть
более точное определение - Europe/Moscow.
Вот вроде и все. Постучали по чему-нибудь и нажали три заветные
кнопочки. Если вы Поставили ЛИЛО в boot-сектор партиции, а не в Мастер-Бут,
убедитесь, что в Мастер-Бут нет мастдая или в том, что Раздел с Линуксом
Активен. Если у вас в Мастер-Буте свой Бут-менеджер, не забудьте ему
прописать Линукс.
Если вы установили только Диски A, то после загрузки вы можете
продолжить установку. Если с флопешников, то введите просто 'setup', если же
нет, то прочитайте начало этого подраздела на предмет присоединения к
корневой файловой системе других разделов (конкретно раздела с
Дистрибутивом).
Глава 3.
Первые, и не только первые, шаги по настройке.
Когда я пишу этот текст, я подразумеваю, что вам известно в основе
своей, что такое корневая файловая система, как присоединять к ней другие
разделы и т.д. Здесь я рассматриваю настройку только _ТЕКСТОВЫХ_ консолей, и
режимов работы с ней, здесь же мы учим наш любимый shell не резать 8-ой бит
и переключать раскладку клавы. Настройка сети будет в п.5. Настойка X - п.4.
Если чего нибудь не знаете, почитайте практически любую книгу по
*NIX, там эта информация есть. Исторически сложилось, что большинство
конфигов и админовских вещей лежат в /etc, но в Линуксе там остались только
конфиги, админовские утиилты ушли в /sbin. Файлики - аналог
config.sys/autoexec.bat - лежат в /etc/rc.d/*. Для начала мы займемся
Локализацией. Я на данном этапе не лезу в Локализацию на уровне русификации
error-мессаDJей... Это вы сами сможете сделать через месяц-полтора.
Определитесь, в какой кодировке вы будете работать в Линуксе - Или koi8-r,
что в принципе стандарт для UNIX, или в ALT. Я рекомендую koi8-r, ибо это
стандарт, большинство прог с кирилицей знают о ней, как о кои8. В таком
случае бежим в /etc/rc.d/, берем файлик rc.local, и редактируем его с
помощью редактора joe - 'joe rc.local'. В самый конец надо добавить две
строчки - 'setfont koi8-8x16' и 'loadkeys ru.map'. Все, при следующей
загрузке у вас будет Линукс с загруженым шрифтом кои8, и переключение
РУС/ЛАТ по правому CTRL. Таперича надо настроить шелл, дабы он не резал 8-ой
бит символа. Для этого в вашем домашнем каталоге создаем файлик .inputrc -
'cd ; joe .inputrc'. Смело вписываем туда:
--- Start Cut: .inputrc ---
set meta-flag on
set convert-meta off
set output-meta on
--- End Cut: .inputrc ---
Теперь мы можем спокойно делать все что угодно с кирилицей в
коммандной строчке.
Небольшое лирическое отступление на тему поддержки железа: подердка
всякого разнообразного железа ядром Линукса может осуществляться в 2-х
вариантах. Или эта поддержка находиться внутри самого ядра, и включаеться в
момент загрузки образа ядра, либо в виде модуля, когда вы можете заставить
вспомнить или забыть про то или иное железо на лету, не выключая машины.
Теперь, если у вас немного кривое/нестандартное/еще какоето железо, надо
сделать так, чтобы Линукс знал о нем. Делаеться это таким макаром: Если вам
лениво пересобирать ядро, то: Поддержка различного железа в ядре с
дистрибутива по максимому вынесена в модули. Для работы с модулями в момент
загрузки есть файлик /etc/rc.d/rc.modules. Уберите REM (символ #) с тех
строчек, в которых загружаеться необходимое вам железо. Может быть вам
придеться добавить несколько параметров в той же строчке, если вы работаете
с сетевухой. Например, если у вас PCI'ая сетевуха, но NE2000-компатибле, вам
придеться ее настроить так, чтобы она всегда сидела на одном прерывании и
конкретном IO. Соответственно, вам придеться указать не только IO, но и IRQ,
ибо как показывает практика, IRQ-AutoProbe толком не работает на PCI, как
правило машина виснет наглухо. Подводя итог: '/sbin/modprobe ne io-0xe000,
irq=9'. Например так. Если у вас Microsoft InPort BusMouse, как у меня, то
вам придеться где-то там сказать '/sbin/modprobe inportbm irq=?'. По
умолчанию есть поддержка только Serial мышей. Для поддержки остальных мышей
вампридеться грузить модули.
2-ой путь, для тех, кто с Линуксом более недели: ПЕРЕСОБЕРИТЕ ЯДРО !
Для этого у вас должны быть установлены наборы D и K, также желательно AP.
Все исходники ядра лежат в /usr/src/linux/, входите туда и с наглой рожей
набираете 'make menuconfig'. Она на вас материться, но в результате в
более-менее удобной форме вы можете выбрать конфигурацию ядра. После выхода
из проги вам необходимо сказать 'make dep; make clean', дабы подготовить
сырцы к компиляции, потом 'make zImage', дабы создать образ ядра в
/usr/src/linux/arch/i386/boot/zImage. Далее нам необходимо создать те
модули, которые нам необходимы в соответствии с нашей конфигурацией. Для
этого мы ругаемся в виде 'make modules; make modules_install'. Один совет -
на моей четверке ядро собираеться полтора-два часа, в зависимости от
конфигурации. Поэтому, постарайтесь создать такое универсальное ядро,
которое вам не придеться пересобирать каждый день, но учитывайте, что все
лишнее, хоть и в виде модулей все равно будет жрать память, и не хило.
Установка нового ядра:
Если вы грузитесь с ДОСа - просто скиньте образ на ДОС-раздел. Иначе
- почитайте мануалы на тему ЛИЛО и lilo.conf. 'man lilo' и 'man lilo.conf'.
Также можно просто сказать 'make install' из каталога /usr/src/linux/.
Глава 4.
X-Windows и все, что к нему относиться.
В этом разделе я постараюсь обяснить как толком поставить Х,
настроить на работу с вашим монитором/карточкой. Постараюсь рассказать про
русификацию Иксов (Шрифты с кирилицей, переключалка раскладки и т.д.). Вся
работа Х может быть подразделена на три уровня - Х-сервер, который
обеспечивает низкоуровневую работу с видеокарточкой, знает про шрифты и т.д.
Второй уровень - это Window Manager. Занимаеться работой с сетью, если
клиент работает по сети, рисует окошечки, закрывает их и т.д. Третий уровень
- уже пользовательские проги, которые могут работать как с Х-сервером
напрямую, или с Window Manager'ом, как это например делают проги на основе
известных библиотек Motif. Есть некий системный X-сервер, а WM - основан на
основе библиотек Motif. Проги, использующие его, пользуют WM, ибо только он
знает про те функции, которые они используют. Настройка Х состоит из двух
основных этапов - настройка Х-сервера и настройка Window Manager'а. Здесь я
описываю настройку практически _ЛЮБОГО_ Х-сервера, но что касаеться WM, то
здесь я описываю настройку банагера, известного под именем FVWM. Именно он
стоит у меня, несмотря на то, что в дистрибутиве слаквари есть еще 3-4 WM.
Лучже по максимому из дисков X установить все, кроме не нужных X-сер
веров. Тем не менее рекомендую установить следующие X-сервера: VGA16, SVGA,
Х-сервер под вашу карточку. VGA16 понадобиться для работы проги под именем
XF86Setup, Сервер под вашу карточку вам понадобиться для работы с вашей
картой в родном для нее режиме с цветностью больше 8-ми бит. SVGA сервер вам
понадобиться в том случае, если вы не сможете запустить вашу карточку с
родным сервером, и вам неохота сидеть в16-ти цветах с VGA16. С SVGA вы
получите 8 бит цветности. По поводу установки шрифтов - ставьте что хотите,
только не забудьте поставить русские шрифты. Как их добавить в Конфиги Иксов
- чуть позже. Все русские шрифты - в кодировке КОИ8. Это еще один аргумент в
пльзу выбора КОИ8 основной кодировкой для Линукса, хотя шрифты сделать не
проблема даже при малом опыте работы с Линуксом.
ОК. Прежде чем начинать, я рекомендую открыть машину и записать на
бумажку точную маркировку вашего чипа на видеокарте, слазить в доку по
монитору и посмотреть максимально разрешенные Refresh Rate'ы и частоты
вертикальной/горизонтальной развертки.
Итак, мы в Линуксе. Установлены минимум A и X диски, также
желательно AP, XAP, XV. Смело логинимся рутом и набираем 'XF86Setup'. Вы
оказываетесь в достаточно примитивной системе настройки. Пролезаете сквозь
все разделы конфигурации. Мышь, я думаю, вы в состоянии выбрать нужного
типа. Видеокарта - Сначала выберите наиболее близкий тип видеокарты, потом
жмете 'Detailed Setup'. Там четко выставляете об'ем видеопамяти, ибо
Автодетект не всегда срабатывает. Посмотрите также в разделе 'ChipSet',
может вы можете более точно определить тип вашей видеокарты. Монитор -
Выбирайте то, что вам по вкусу/возможностям. Единственное НО - Х-сервер
сразу запуститься в максимально доступном разрешении при цветности 8 бит. То
есть, если вы вбрали 1024х768 Монитор, а у вас 1 мег видеомозгов, то тогда
при запуске Иксов у вас появиться 800х600х256. Клавиатура - не извращайтесь,
ибо тот русский, что там есть, русским никак назвать нельзя.. :)
Переключалку мы сделаем, как отдельныю пользовательскую прогу. Последний
раздел - лично я нажимаю все кроме 'Prevent server...'. После того, как вы
скажете 'Done.' вам запуститься тестовый вариант X-сервера с вашими
настройками. Если режим консоли вас удовлетворяет - 'Save Config to
/etc/XF86Setup'. Если же нет - запускайте XF86Setup заново.
Ладно. Теперь у нас в /etc/XF86Config есть более менее приличная
версия конфигов. Это еще не все. Понятное дела, людям, писавшим XF86Setup
пофигу на присутствие или отсутствие русских фонтов. Нам нет. Они у нас
стоят, а в конфигах отсутствуют. Поэтому идем в /etc и редактируем
XF86Config - в области Files перечислены каталоги со шрифтами. Добавляем
туды каталог с кирилицей.
--- Begin Partial Cut: /etc/XF86Config ---
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/misc"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic"
EndSection
--- End Partial Cut: /etc/XF86Config ---
Обратите внимание на пред-последнюю строчку. Она была добавлена
мной. ОК. Теперь небольшие манипуляции со шрифтами, как подготовка к
частичной русификации Иксов. Идем в каталог /usr/X11R6/lib/X11/fonts, где
лежат подкаталоги со шрифтами. Надеюсь командочку cd еще не все забыли ? %)
Организация шрифтов такова - в католе со шрифтами есть куча самих шрифтов в
зажатом виде, дабы экономить место, и два текстовых файлика - один под
именем fonts.dir, в котором перечислены _РЕАЛЬНЫЕ_ шрифты этого каталога, и
файлик fonts.alias, в котором перечислены алисы, под которыми известны
некоторые шрифты этого каталога в виде aliasreal_name. Для работы
Х-сервера нужен минимум один шрифт под именем fixed. Этот шрифт как правило
alias. Нам нужно, чтобы наши fixed шрифтом был один из шрифтов с кирилицей.
Для этого мы должны убрать другие alias'ы fiexd'а из каталогов, где нет
кирилицы. По умолчанию алиас на fixed стоит среди misc шрифтов. Мы просто
убираем строчку с определением этого алиаса. Потом идем в cyrillic и
выставляем там алиас на fixed в файлике fonts.alias. В моем случае -
--- Begin Partial Cut: /usr/X11R6/lib/X11/fonts/cyrillic/fonts.alias ---
fixed -cronyx-fixed-medium-r-semicondensed--13-120-75-75-c-60-koi8-r
--- End Partial Cut: /usr/X11R6/lib/X11/fonts/cyrillic/fonts.alias ---
но вы вправе выбрать любой другой шрифт из fonts.dir. С реестром шрифтов и с настройкой Х-сервера вроде закончили. Теперь
нас интересует настройка FVWM, причем так, чтобы он тоже использовал только
кирилические шрифты. Настройки FVWM лежат в
/usr/X11R6/lib/X11/fvwm/system.fvwmrc. наша задача сделать так, чтобы он не
только работал с кириллицей, но и нормально ставил-убирал окошки/иконки. Сам
конфиг сравнительно емкий, об'яснать долго и нудно. Просто даю свой.
Вот основа. Еще такая вещь. Локаль. Если
прога сама по себе мультииязычная, то она может узнать у системы, в какой
локализации она работает и выбрать соответствующие режим своей работы. Для
этого нашим Иксам надо сказать, что у них локаль ru_RU.KOI8-R. Для этого
редактируем файлик .Xdefaults в своем домашнем каталоге, ибо каждый юзер
может иметь свою систему настроек.
--- Start Cut: .Xdefaults ---
OpenWindows.Beep: never
OpenWindows.DragRightDistance: 100
OpenWindows.PopupJumpCursor: True
OpenWindows.SetInput: select
OpenWindows.WorkspaceColor: #40a0c0
OpenWindows.ScrollbarPlacement: right
OpenWindows.WindowColor: #cccccc
OpenWindows.MultiClickTimeout: 4
OpenWindows.IconLocation: bottom
OpenWindows.SelectDisplaysMenu: False
Scrollbar.JumpCursor: True
*numeric: C
*displayLang: ru_RU.KOI8-R
*basicLocale: ru_RU.KOI8-R
*timeFormat: ru_RU.KOI8-R
*inputLang: ru_RU.KOI8-R
--- End Cut: .Xdefaults ---
Формат чисел я умышленно не сменил на КОИ, ибо по каким-то причинам
в свое время это привело к глюкам. Теперь переключалка клавы: Я сразу
говорил, что сделана она будет в виде отдельной юзеровской проги, которая
будет запускаться при запуске Иксов. Лично я пользуюсь прогой под названием
xrus. Весь софт, который я упоминаю в данной текстухе, у меня есть, и я его
могу дать. Берем ее, компилируем. сначала архивчик разархивируем куда нибудь
в отдельный каталог, входим в него и запускаем там прилагаемый скриптик
configure, который выяснит cвои аппетиты с системным ресурсам и т.д. Для
компиляции вам естественно нужны диски D. Потом делаем make; make; make
install. Потом копируем раскладки клавы из keymaps/ куда нибудь в район
/usr/local/lib. Наша задача после этого - сделать так, чтобы xrus запускаля
в момент запуска Иксов. Идем в /usr/X11R6/lib/X11/xinit и редактируем файлик
xinitrc. Практически в самом конце фала запускаеться fvwm. Перед ним им
вставляем строчку:
--- Begin Partial Cut: /usr/X11R6/lib/X11/xinit/xinitrc.fvwm ---
/usr/local/bin/xrus /usr/local/lib/jcuken-koi8-xrus.xmm &
--- End Partial Cut: /usr/X11R6/lib/X11/xinit/xinitrc.fvwm ---
Все. С настройкой Иксов при первом рассмотрении покончили. До всего
остального - или вопросиками, или 'man X'. Запуск Иксов - если вы хотите
запустить Иксы в сетевом варианте, дабы люди могли цепляться к вам по
сетке из под MD'95 или подобной с помощью eXceed ил чего нибудь
подобного - наберите 'xdm'. Если же вы запускаетесь локально - 'startx'.
Глава 5.
Поддержка сетей под Линуксом.
На данном этапе я рассказываю вам об использовании Линукса как
о машине, работающей с TCP/IP. Здесь на данном этапе отсутствует как
описание работы/настройки Линукса как IPX сервера и/или клиента, так и
описание работы/настройки Линукса для работы клиентом/сервером в среде
Windows'3.11,96, NT посредством SAMBA. Здесь я рассказываю о подключении
Линукса к Интернету через модем, основе настройки локальной сети. Позже сюда
будут включены FAQ по установке/настройке DNS, Sendmail, SAMBA, ppp сервера,
подключение локалки к Инет посредством простого dial-up и наличия 1-го IP
адреса. По идее этот раздел должен быть наиболее емким и информативным, но у
меня нет сейчас возможности, да впрочем, и желания писать текстуху размером
кил на 250-350.
Итак: Для работы с сетью вам понадобяться диски N. Сначала я
об'ясню, как настроить подключение машины к Инет по PPP, потом - локалка.
5.1 Настройка ppp.
Нам понадобиться создать 3 файла: файл, пускающий pppd с нужными
параметрами, файл, обеспечивающий чат с той стороной для получения
ppp-сеанса, то есть введение username, password и т.д., и файл с самим
скриптом Логина.Итак: Назовем файлик 1 - ppp-up, файлик 2 - ppp-up-dialer,
файлик 3 - script. Pасположим 1-ый в /usr/sbin, 2 и 3-ий в /etc/ppp
Названия девайсов для ком-портов:
COM1: /dev/ttyS0
COM2: /dev/ttyS1
COM3: /dev/ttyS2
COM4: /dev/ttyS3
--- Begin Cut: ppp-up.sample ---
#!/bin/sh
#
DIALER_SCRIPT=/etc/ppp/ppp-up-dialer
#
# Initiate the connection
#
# I put most of the common options on this command. Please, don't
# forget the 'lock' option or some programs such as mgetty will not
# work. The asyncmap and escape will permit the PPP link to work with
# a telnet or rlogin connection. You are welcome to make any changes
# as desired. Don't use the 'defaultroute' option if you currently
# have a default route to an ethernet gateway.
#
exec /usr/sbin/pppd lock modem crtscts /dev/ttyS0 38400
asyncmap FF defaultroute connect $DIALER_SCRIPT
--- End Cut: ppp-up.sample ---
--- Begin Cut: ppp-up-dialer ---
#!/bin/sh
#
# This is part 2 of the ppp-up script. It will perform the connection
# protocol for the desired connection.
#
/usr/sbin/chat -vf /etc/ppp/script
--- End Cut: ppp-up-dialer ---
Третий файлик - скрипт, основа построения фразы типа ПОСЫЛАЮ-ЖДУ,
разделенные табами. Привожу примерный вариант. Проверить работоспобобность
скрипта можно фразой: chat -vf /etc/ppp/script Все будет выводиться/читаться
на текущую консоль, поэтому на фразу ATZ вы должны набрать OK. И т.д.
--- Start Cut: script ---
TIMEOUT 3
ABORT 'nBUSYr'
ABORT 'NO '
'' rATZ0
'OK-+++c-OK' ATX4
TIMEOUT 60
OK ATDPxxx-xxxx
CONNECT ''
ogin:--ogin: userid
assword: user_password
--- End Cut: script ---
Каждый файл/директория в Линуксе принадлежит владелецу/группа
владельца. Атрибуты файла раздельны для владельца файла, для пользователей
той же группы, что и владелец, для всех остальных. В каждой из категорий
могут присутствовать/отсутсвовать права на чтение/запись/запуск файла. После
редактирования нам нужно присвоить файлам 1 и 2 атрибут на запуск для всех
категорий пользователей - 'chmod a+x /usr/sbin/ppp-up /etc/ppp-up-dialer', а
третьему файлу - права на чтение для владельца и группы владельца - 'chmod
ug+r /etc/ppp/script'. Ето еще не все. После этого у нас уже будет
устанавливаться ppp-соединение. Нам нужно, чтобы к моменту установки
соединения в таблице маршрутизации пакетов не было маршрута по умолчанию,
ибо при его наличии мы не сможем маршрутизировать исходящие пакеты наружу.
Для этого надо посмотреть файлик /etc/rc.d/rc.inet1, в котором происходит
первоначальная настройка сетевых интерфейсов при загрузке. Надо
закоментировать символом '#' строчку содержащую фразу типа '/sbin/route add
default ......'. Проверяем, правильно ли настроен у нас DNS - файл
/etc/resolv.conf должен содержать минимум одну строчку nameserver. Строчка с
DNS провайдера должна стоять _ПЕРВОЙ_. В моем случае - у меня DNS провайдера
- 193.124.5.34, а еще есть локальный DNS, обслуживающий мою локальную сеть.
Вот мой файл:
--- Begin Cut: /etc/resolv.conf ---
nameserver 193.124.5.34
domain leopard.ru
nameserver localhost
--- End Cut: /etc/resolv.conf ---
То есть. По умолчанию запрос уходит наверх к провайдеру, но если
запрос касаеться зоны leopard.ru, в которой собственно, и находиться моя
локалка - запрос отправляеться на DNS с именем localhost. Если у вас есть
лоскальный DNS, то его можно настроить таким образом, чтобы все вопросы, на
которые он сам не смог ответить, он отсылал наверх. В таком случае первая
строчка приведенного выше файла становиться бессмысленной.
Поддержка PROXY - только на уровне клиента. Текстовые утилитки для
работы с Инет - telnet, ftp, lynx (http/ftp text-only browser). Могу дать
также Нетскапу под Иксы. Если вы в локалке, и ваша локалка работает с Инет
через вас, имеет смысл поставить локальный PROXY-сервер. Таковой у меня
есть. Также выдаю по запросам в виде исходников. Как видите, опять нужны
диски D.
5.2 Настройка локалки.
Вся сеть работает через Линуксовые сетевые интерфейсы, которые
настраиваються на 3-х уровнях: Должна быть поддержка соответствующего железа
самим ядром. Имеено на этом уровне и создаеться интерфейс. Второй уровень -
настройка Интерфейса: Установка IP-адреса, маски подсети и т.д. Делаеться с
помощью утилитки ifconfig. Третий уровень - настройка маршрутизации. Может
быть как статическим (как правило для сетей с 2-50 машин), так и
динамическим. Я буду рассматривать только статический рутинг. Делаеться с
помощью утилитки route. Напоминаю, что доку на англицком о 70% прог можно
посмотреть по 'man prog_name'. Итак. Я предполагаю, что у вас 1 сетевая
карта, известная под интерфейсом eth0, для работы в локалке вы выбрали
подсеть класса C 192.168.210.*, Линукс также используеться для выхода в
Инет.
Итак: поддержка ядром. Допустим карточка 16-ти битная NE2000
совместимая, настроена на IO=0x300, IRQ=10. Если карточка настроена на
IO=0x300, то ядро ее сечет сразу. Иначе вам необходимо при загрузке сказать,
что ether=irq,io,eth0 при условии, что поддержка сетевухи в ядре. Если
поддержка в виде модуля(как у меня), то вам достаточно отредактировать свой
/etc/rc.d/rc.modules, где добавить к строке, грузящей модуль карты, фразу
io=0x??? irq=?.
Настройка Интерфейса. Предлагаю как адрес вашей машины
зарезервировать адрес 192.168.210.1. Как я уже упоминал, для начальной
настройки интрейфейсов и рутинга в момент загрузки есть скрипт
/etc/rc.d/rc.inet1. Даю свой вариант, вы можете поправить по желанию, дабы
он отражал ваши условия.
--- Begin Cut: /etc/rc.d/rc.inet1
#! /bin/sh
#
# rc.inet1 This shell script boots up the base INET system.
#
# Version: @(#)/etc/rc.d/rc.inet1 1.01 05/27/93
#
HOSTNAME=`cat /etc/HOSTNAME`
# Attach the loopback device.
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0
# IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to
configure the
# eth0 interface. If you're only using loopback or SLIP, don't include
the
# rest of the lines in this file.
# Edit for your setup.
IPADDR="192.168.210.1" # REPLACE with YOUR IP address!
NETMASK="255.255.255.0" # REPLACE with YOUR netmask!
NETWORK="192.168.210.0" # REPLACE with YOUR network address!
BROADCAST="192.168.210.255" # REPLACE with YOUR broadcast address, if
you
# have one. If not, leave blank and edit below.
GATEWAY="192.168.210.1" # REPLACE with YOUR gateway address!
# Uncomment the line below to configure your ethernet card.
/sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask
${NETMASK}
# If the line above is uncommented, the code below can also be
uncommented.
# It sees if the ethernet was properly initialized, and gives the
admin some
# hints about what to do if it wasn't.
if [ ! $? = 0 ]; then
cat
|