Вы находитесь на странице: 1из 347

Зубков С. В.

Linux
Русские версии

Москва
ББК 32.973.26-018.2
3-91

Зубков С. В.
3-91 Linux. Русские версии. - М.: ДМ К Пресс. - 347 с.: ил.
ISBN 5-94074-013-8

Книга предназначена для широкого круга пользователей, решивших на­


чать работать с операционной системой Linux или русифицировать уже
установленную систему. Описано большинство русскоязычных дистрибути­
вов, настройка системы и популярных программ для правильной работы
с текстами, написанными кириллицей, в том числе ведущие офисные паке­
ты - StarOffice, ApplixWare, WordPerfect. Кроме того, полностью описано под­
ключение поддержки шрифтов TrueType и работа с редактором Vim, тонкая
настройка видеорежимов и другие важные детали конфигурации и админи­
стрирования системы.

ББ К 32.973.26-018.2

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

© Зубков С. В.
ISBN 5-94074-013-8 © ДМ К Пресс
С о д ер ж ан и е

Введение...................................................................................................... 9
Глава I
Что такое Linux.............................................. іо
1.1. Дистрибутивы............................................................................... 11
1.2. Варианты установки Linux........................................................... 13
1.3. Разбиение жесткого диска на разд елы ...................................... 14
1.4. Что подразумевается под русификацией Linux......................... 15

Глава II
Начальная установка д и стрибутива......................17
2.1. Red Hat 6.2 Z o o t........................................................................... 17
2.1.1. Начальная загрузка.......................................................................... 17
2.1.2. Выбор язы ка..................................................................................... 19
2.1.3. Конфигурация клавиатуры..................................................................20
2.1.4. Конфигурация мыш и.......................................................................... 20
2.1.5. Тип установки..................................................................................... 21
2.1.6. Разбиение жесткого диска на разделы.............................................. 22
2.1.7. Конфигурация системного загрузчика LILO ..................................... 23
2.1.8. Конфигурация сети............................................................................. 24
2.1.9. Выбор часового пояса....................................................................... 25
2.1.10. Настройка системы для отдельных пользователей.......................... 26
2.1.11. Настройка XWindow ....................................................................... 26
2.1.12. Выбор и установка пакетов программ........................................... 27
2.1.13. Инсталляция в текстовом режиме....................................................28
2.2. Black Cat Linux 6.02 Foxhound.......................................................30
2.2.1. Начальная загрузка.......................................................................... 30
2.2.2. Выбор язы ка....................................................................................... 30
2.2.3. Конфигурация клавиатуры................................................................. 30
2.2.4. Выбор типа носителя......................................................................... 32
4 Linux. Русские версии

2.2.5. Класс инсталляции............................................................................. 32


2.2.6. Настройка SCSI ................................................................................. 33
2.2.7. Разбиение жестких дисков..................................................................33
2.2.8. Форматирование разделов...............................................................35
2.2.9. Выбор пакетов для установки.............................................................35
2.2.10. Конфигурация мыш и........................................................................ 37
2.2.11. Конфигурация сети .......................................................................... 38
2.2.12. Выбор часового пояса..................................................................... 39
2.2.13. Настройка системных сервисов.......................................................39
2.2.14. Настройка принтера....................................................................... 40
2.2.15. Выбор пароля.................................................................................. 40
2.2.16. Конфигурация системного загрузчика LILO ..................................... 41
2.2.17. Конфигурациях W indow .................................................................. 41
2.3. K SI Linux2 .0 N o stro m o ........................................................................ 43
2.3.1. Начальная загрузка........................................................................... 43
2.3.2. Выбор раскладки клавиатуры............................................................43
2.3.3. Выбор носителя.................................................................................. 44
2.3.4. Разбиение жесткого д и ска................................................................ 44
2.3.5. Выбор и установка пакетов............................................................... 47
2.3.6. Начальная конфигурация.................................................................. 50
2.3.7. Пароль администратора................................................................... 55
2.3.8. Системный загрузчик......................................................................... 55
2.4. M an d ra k e Linux 7.1 H y d ro g e n ............................................................56
2.4.1. Графический загрузчик...................................................................... 57
2.4.2. Класс установки................................................................................. 57
2.4.3. Настройка S C S I................................................................................. 58
2.4.4. Установка или обновление................................................................ 58
2.4.5. Настройка мыши................................................................................ 59
2.4.6. Выбор раскладки клавиатуры............................................................59
2.4.7. П рочее............................................................................................... 60
2.4.8. Настройка файловых систем............................................................ 60
2.4.9. Форматирование разделов............................................................. 62
2.4.10. Выбор пакетов................................................................................ 62
2.4.11. Установка системы.......................................................................... 64
2.4.12. Настройка сети............................................................................... 64
2.4.13. Криптография.................................................................................. 65
2.4.14. Настройка часового п о яса............................................................ 65
2.4.15. Настройка сервисов....................................................................... 65
2.4.16. Настройка принтера...................................................................... 66
2.4.17. Пароли и пользователи.................................................................. 66
Содержание 5

2.4.18. Конфигурация загрузчика............................................................... 67


2.4.19. Конфигурациях W indow ................................................................. 69
2.5. Su SE Linux 6 . 4 ........................................................................................ 70
2.5.1. Загрузка инсталлятора...................................................................... 70
2.5.2. Стадия 1: выбор локализации............................................................71
2.5.3. Стадия 2: подготовка жесткого д иска.............................................. 71
2.5.4. Стадия 3: выбор пакетов для установки........................................... 74
2.5.5. Стадия 4: установка загрузчика....................................................... 75
2.5.6. Стадия 5: настройка параметров пользователей............................ 76
2.5.7. Стадия 6: установка S u S E ...................................................................77
2.5.8. Стадия 7: конфигурация X W indow .....................................................77
2.5.9. Стадия 8: конфигурация устройств.....................................................78
2.6. Slack w are Linux 7 .0 .0 ........................................................................... 80
2.6.1. Загрузка инсталлятора..................................................................... 80
2.6.2. Разбиение диска............................................................................... 82
2.6.3. Основное м еню ................................................................................ 85
2.6.4. Стадия K E Y M A P ................................................................................ 86
2.6.5. Стадия A D D S W A P ............................................................................ 87
2.6.6. Стадия TA RG ET................................................................................. 87
2.6.7. Стадия S O U R C E ................................................................................ 89
2.6.8. Стадия SELECT.................................................................................... 92
2.6.9. Стадия IN STALL.................................................................................. 93
2.6.10. Стадия C O N FIG U R E........................................................................ 95
2 .7. D ebian G N U / L in u x 2 .2 P o ta to .......................................................... 105
2.7.1. Загрузка инсталлятора................................................................... 106
2.7.2. Конфигурация клавиатуры.............................................................. 107
2.7.3. Разбиение жесткого д и ска............................................................. 107
2.7.4. Инициализация раздела подкачки................................................. 108
2.7.5. Инициализация Linux-раздела........................................................ 108
2.7.6. Монтирование Linux-раздела......................................................... 108
2.7.7. Установка ядра и модулей.............................................................. 109
2.7.8. Конфигурация модулей................................................................... 109
2.7.9. Конфигурация сети.......................................................................... 110
2.7.10. Установка базовой системы......................................................... 110
2.7.11. Конфигурация базовой системы.................................................. 111
2.7.12. Установка системного загрузчика............................................... 111
2.7.13. Создание пользователей............................................................. 111
2.7.14. Установка системы........................................................................ 112
2 .8. Н екоторы е трудности И общ ие в о п р о с ы .................................... 115
6 Linux. Русские версии

Глава III
Б а з о в ы е п он ятия о ІІПІІХ-системах .............................. 117
3.1. Вход в си сте м у..................................................................................... 117
3.2. О сн овны е к о м а н д ы ............................................................................118
3.2.1. Командные интерпретаторы.......................................................... 118
3.2.2. Выход из системы............................................................................ 119
3.2.3. Переменные среды......................................................................... 119
3.2.4. Постраничный просмотр................................................................ 120
3.2.5. Описания команд............................................................................ 121
3.3. Ф а й л о в а я с и с те м а ............................................................................ 121
3.3.1. Команда pwd .................................................................................. 122
3.3.2. Команда Is ...................................................................................... 122
3.3.3. Команда cd..................................................................................... 124
3.3.4. Системные каталоги....................................................................... 125
3.3.5. Создание и удаление ф айлов........................................................ 127
3.3.6. Ссылки............................................................................................ 129
3.4. У п р авлен и е п р о ц е сса м и ................................................................. 130
3.4.1. Команда ps..................................................................................... 130
3.4.2. Команда to p ................................................................................... 130
3.4.3. Управление задачами в shell.......................................................... 131
3.4.4. Управление процессами................................................................. 133
3.4.5. Изменение приоритетов................................................................. 134
3.5. Текстовый редактор V i ..................................................................... 135
3.5.1 .Установка V im ................................................................................. 136
3.5.2. Основы работы с V i ........................................................................ 137
3.5.3. Нормальный реж им ........................................................................ 139
3.5.6. Режим двоеточия............................................................................. 167
3.5.7. Регулярные выражения в V im .......................................................... 169
3.5.8. Файлы сценариев Vim ..................................................................... 173
3.5.9. Опции командной строки............................................................... 181
3.5.10. Синтаксическая подсветка........................................................... 184

Глава IV
Базовы е понятия об адм инистрировании..........191
4 .1. Разгр ан и чен и е прав п о л ьзо в а те л е й ............................................ 191
4.2. Н астр о й ка среды для п о л ь зо в а те л е й ............................................ 195
4.2.1. Файлы / etc/ passwd и / etc/ group................................................... 195
4.2.2. Программы для управления пользователями................................ 197
Содержание 7

4.2.3. Система доступа Linux-PAM.............................................................202


4.2.4. Программы для получения информации
о пользователях......................................................................................... 206
4 .3. У пр авление ф айловы м и с и с те м а м и ...............................................209
4.3.1. Файловые системы U N IX ................................................................. 209
4.3.2. Монтирование и демонтирование...................................................210
4.3.3. Автоматическое монтирование.......................................................217
4.3.4. Создание и настройка файловых систем......................................... 219
4.3.4. Получение информации о файловых системах............................... 223
4.3.5. Дисковые квоты................................................................................ 224
4 .4. У стан о вка п а к е то в ............................................................................. 226
4.4.1. Пакеты RedHat................................................................................. 226
4.4.2. Пакеты Slackware............................................................................. 235
4.4.3. Пакеты D ebian................................................................................. 239
4 .5. У стан о вка программ из исходных те к с то в .................................... 242
4.5.1. Подготовка к компилированию........................................................243
4.5.2. Программы с автоматической конфигурацией................................ 243
4.5.3. Программы, использующие xmkmf...................................................246
4.5.4. Программы без автоматической конфигурации ............................. 248
4.5.5. Программы, которые не компилируются......................................... 251
4.5.6. Учет установленных программ.........................................................254
4.5.7. Коллекции программе Internet.........................................................256

Глава V
Н а стр о й к а с и с т е м ы ....................................................................... 257
5 .1. Перекомпиляция я д р а ....................................................................... 257
5.1.1. Конфигурация драйверов и модулей ядра....................................... 257
5.1.2. Компиляция и инсталяция яд р а.........................................................276
5 .2. У с т а н о в к а х W in d o w ......................................................................... 277
5.2.1. Компиляция XFree86........................................................................ 278
5.2.2. Конфигурация XFree86.................................................................... 278
5 .3. Н астр о й ка граф ической с р е д ы .......................................................291

5 .4. П одклю чение ш риф тов T ru e T yp e ....................................................291

5 .5. У стан о вка э м у л ят о р о в ...................................................................... 294


5.5.1. Эмулятор DOS: Dosemu.................................................................. 295
5.5.2. Эмулятор Windows: W IN E ............................................................... 300
8 Linux. Русские версии

Глава VI
Русиф икация L inux..................................................... зої
6.1. Русский язы к в текстовой к о н с о л и ..................................................301
6.1.1. Выбор шрифта в kbd........................................................................ 302
6.1.2. Выбор раскладки клавиатуры в kbd.................................................303
6.1.3. Настройка пакета console-tools.......................................................304
6.2. Русиф икация консольных п р о гр ам м ...............................................307
6.2.1. Командные интерпретаторы............................................................307
6.2.2. Программа less................................................................................ 309
6.2.3. Файловый менеджер т с .................................................................. 310
6.2.4. Редакторы........................................................................................ 310
6.2.5. Проверка правописания ispell.........................................................312
6.2.6. Браузеры W W W .............................................................................. 312
6.2.7. Почтовые программы...................................................................... 314
6.2.8. Программы для чтения USENET-новостей........................................ 316
6.2.9. Русификация Т е Х .............................................................................. 316
6.2.10. Эмулятор D O S ............................................................................... 317
6 .3 .Л о к а л ь ................................................................................................... 319
6.4. N LS и gettext......................................................................................... 320
6.5. Русиф икация системы X W in d o w .....................................................321
6.5.1. Русские шрифты............................................................................... 321
6.5.2. Локаль в X W indow ........................................................................... 326
6.5.3. Русификация клавиатуры под X W in d o w .......................................... 327
6.6. Русиф икация системы п е ч а т и ...........................................................334
6.7. Русиф икация оф исных п а к е то в ........................................................335
6.7.1. Русификация StarOffice.................................................................... 335
6.7.2. Русификация W ordPerfect................................................................ 337
6.7.3. Русификация Applix W ords............................................................... 338
6.7.4. Русификация KO ffice........................................................................ 340
6.7.5. Русификация A b iW o rd ..................................................................... 340
6.7.6. Русификация S IA G ........................................................................... 341
З а к л ю ч е н и е .......................................................................................... 342
А л ф а в и тн ы й у к а з а т е л ь .............................................................343
Введение
Операционная система Linux, безусловно, является одним из наиболее интерес­
ных явлений в мире современного программного обеспечения. Задуманная сту­
дентом и компьютерными энтузиастами, общающимися через Internet, эта опера­
ционная система сплотила сейчас вокруг себя лучших разработчиков программного
обеспечения и потеснила продукцию огромных компаний. Корпорация Microsoft
вынуждена регулярно устраивать тестирование своих программ против конкури­
рующих аналогов, написанных под систему Linux, фирма Borland переносит свои
популярнейшие средства разработки в Linux, Corel вообще выпускает собствен­
ную версию этой системы.
Так получилось, что большая часть составляющих Linux, особенно ее ранних
версий, создавалась без учета того, что их будут использовать в России или дру­
гих неанглоязычных странах. Русификация каждого значительного компонента
этой системы требует особого подхода, и не все это реализовано в дистрибутивах
Linux. Эта книга посвящена именно русификации системы Linux и программ для
нее, а также существующим (не обязательно полностью русифицированным) ди­
стрибутивам, их установке, настройке и администрированию.
Глава I
Что такое Linux
□ Дистрибутивы
□ Варианты установки Linux
□ Разбиение жесткого диска на разделы
□ Что подразумевается под русификацией Linux

Linux - это многопользовательская многозадачная операционная система, распро­


страняемая бесплатно. Linux максимально эффективно использует возможности
компьютера - будь это старенький 80386 или многопроцессорная станция
Pentium III; пожалуй, очень трудно найти задачу, с которой другая система могла
бы справиться эффективнее. Возможно, это объясняется тем, что Linux создавал­
ся не какой-то одной корпорацией с конкретными целями, а программистами (или
хакерами, в хорошем смысле этого слова) всего мира, каждый из которых хотел,
чтобы задачи, с которыми он сталкивается, решались наилучшим образом. Такой
способ создания операционной системы Linux одновременно обусловил и основ­
ную трудность при работе с ней - то, что естественно для программиста, не всегда
понятно пользователю.
Linux (в большей или меньшей степени) совместим с операционными система­
ми семейства UNIX, поэтому пользователь, работавший ранее с DOS и Windows
и увидевший UNIX-совместимую систему впервые, будет чувствовать себя так,
как если бы он осваивал компьютер «с нуля». Конечно, это не значит, что о D O S /
Windows придется забыть, - под Linux можно выполнять программы, написанные
для DOS, Windows 3.1, Windows 95 и даже для Windows NT и некоторых других
операционных систем.
Каковы основные преимущества Linux, которые заставляют людей тратить
время на изучение абсолютно незнакомой системы? Это, во-первых, работа
с компьютерными сетями, особенно с Internet (все авторы Linux использовали для
Дистрибутивы

общения всемирную сеть, и каждый, естественно, делал все возможное, чтобы по­
высить эффективность сетевого обмена), во-вторых, возможность получить неза­
висимость от коммерческих программ и монополии Microsoft, и только в-третьих -
решение на PC тех задач, для которых традиционно используются дорогие UNIX-
подобные системы: управление гигантскими базами данных, распределение ресур­
сов между пользователями и т.п.

1.1. Дистрибутивы
Первая проблема, с которой сталкивается каждый, кто захотел поставить Linux
впервые, - выбор дистрибутива. Дело в том, что операционной системы Linux на
самом деле не существует. Существует, поддерживается и распространяется авто­
ром ядро системы, обозначаемое цифровыми индексами, например: linux-2.0.36
или linux-2.2.15 (первый индекс - номер версии, второй - номер подверсии, тре­
тий - номер модификации). Все остальные составляющие любой UNIX-подобной
операционной системы созданы и поддерживаются другими людьми. Для того
чтобы не обходить сотни FTP- и W W W -серверов с компонентами системы вся­
кий раз, когда требуется установить Linux, и существуют дистрибутивы. Некото­
рые компании и даже частные лица собирают последние версии всех компонен­
тов системы и составляют из них дистрибутивы Linux.
Дистрибутивы отличаются между собой наборами поставляющихся с ними
программ - кто-то может считать, что графическим редакторам и текстовым про­
цессорам не место в операционной системе, другие хотят, чтобы после полной
установки системы в распоряжении пользователя сразу оказались тысячи го­
товых к использованию приложений. Кроме того, каждый дистрибутив имеет
собственную процедуру установки (автор, как правило, считает ее наилучшей)
и собственную систему управления пакетами, позволяющую добавлять только
те программы, которые подготовлены поставщиком этого дистрибутива. Суще­
ствуют также различия в файловой системе, в настройках различных программ
по умолчанию и т.д.
Можно было бы говорить о том, что каждый дистрибутив Linux - это отдель­
ная самостоятельная операционная система, если бы не то обстоятельство, что
эти отличия играют заметную роль только для начинающих пользователей. П ри­
обретая некоторый опыт, пользователи начинают брать нужные им программы
прямо у авторов и устанавливать их, игнорируя систему управления пакетами
программ; файловая система при этом перекраивается в зависимости от потреб­
ностей, графический интерфейс заменяется более удобным. Через два-три года
активного использования Linux, установленный с любого дистрибутива, превра­
щается в персональную операционную систему, построенную в соответствии со
вкусами и запросами конкретного пользователя (а точнее, администратора).
Гибкость и свободный доступ к исходным текстам почти всех программ, представ­
ляющие собой одни из главных достоинств Linux, позволяют вносить в нее и более
серьезные изменения.
12 Что такое Linux

Рассмотрим наиболее распространенные дистрибутивы.


Red H at Linux, http://www.redhat.com
Это самый популярный дистрибутив, возможно, один из лучших для первого
знакомства с Linux. Он удобен для установки и начального администрирования.
Red H at использует систему управления пакетами программ RPM (Red H at
Packet Manager), которая стала настолько популярной, что часто авторы про­
грамм для Linux делают доступными сразу и архив исходных текстов, и пакет
в формате RPM, готовый к установке в Red H at (или в любой другой Linux, на ко­
торый была установлена система R PM ). Установленные программы в боль­
шинстве случаев сразу готовы к использованию.
KSI Linux, http://www.ksi-linux.com
Этот дистрибутив сделан на основе идеологии Red H at и включает в себя всю
возможную локализацию для России и Украины, в том числе перевод более чем
20 ООО страниц документации.
Black Cat Linux, http://www.blackcatlinux.com
Еще один динамично развивающийся дистрибутив, компонуемый на Украине
и построенный на основе Red Hat, не менее популярен, чем KSI, но здесь иначе
выполнена локализация.
Русский Linux «Красная Шапочка», http://w w w m agister.m sk.ru/tech/linux/rh-
rus.htm
Русифицированный Red Hat, практически без изменений. В настоящее время
недоступен в Internet.
Mandrake Linux, http://www.linux-mandrake.com
Дистрибутив компании MandrakeSoft построен на основе Red H at и с самого
начала использует графическую среду KDE и другие новшества в области пользо­
вательского интерфейса. Ориентирован в большей степени на конкретного поль­
зователя, а не на системного администратора.
SuSE Linux http://www.suse.de
Высококачественный дистрибутив, основанный на Red Hat, но ушедший от
оригинала еще дальше, чем Mandrake. В то время как Red H at захватил бо^льш ую
часть американского рынка, SuSE, разработанный в Германии, стал фактически
единственной распространенной версией Linux в Европе. Содержит в себе боль­
шое количество средств для упрощенной конфигурации и оптимизации работы
отдельных приложений. Хорош для тех, кто хочет быстро инсталлировать и на­
чать работу в Linux, не желая вникать во все тонкости его функционирования.
Slackware Linux, http://www.slackware.com
Самый долгоживущий из дистрибутивов. Его обычно выбирают те, кто давно
пользуется системой Linux и уверен, что хорошо представляет себе, как она долж­
на выглядеть. В Slackware нет почти ничего лишнего, процедура установки до­
статочно упрощена, но вместе с тем очень гибка и предоставляет богатый выбор
возможностей. В состав этого дистрибутива входит большой набор заранее под­
готовленных сценариев для различных конфигураций оборудования. В качестве
Варианты установки Linux 13

пакетов программ выступают стандартные tar.gz-архивы. Slackware можно реко­


мендовать тем, кто хочет познать систему во всех ее деталях и иметь возможность
все изменить или настроить собственными руками.
Debian GNU/Linux, h ttp :/ / www.debian.org
В состав этого дистрибутива, в полном его варианте, включены, напротив, все
бесплатные программы для Linux, которые авторы смогли найти и скомпилиро­
вать, - в настоящее время свыше 2250 готовых к установке пакетов. Однако вы­
бор и инсталляцию отдельных пакетов зачастую приходится выполнять вручную.
Это один из немногих дистрибутивов, который по-прежнему компонуется добро­
вольной группой программистов, он содержит в себе ряд мощных функций
и пользуется определенным спросом среди хакеров.
Corel Linux, http://linux.corel.com
Коммерческий дистрибутив, основанный на минимальном наборе пакетов
Debian, продвигаемый крупной компанией Corel. Отличается самой простой
и легкой инсталляцией, интерфейсом, максимально приближенным к интерфей­
су Windows-приложений, и наличием офисного пакета Corel Word Perfect. Суще­
ствует и бесплатно распространяемая версия Corel Linux Open Circulation, не
включающая в себя вышеуказанный офисный пакет.
Caldera OpenLinux, http://www.calderasystems.com
Коммерческий дистрибутив Linux, распространяемый компанией Caldera
Systems. Компания Caldera предприняла попытку собрать в своем дистрибутиве
весь необходимый набор прикладных программ для бизнеса и повышения произ­
водительности труда в офисе. Существует и бесплатная, облегченная версия это­
го дистрибутива.
Все эти дистрибутивы можно найти в продаже на CD или бесплатно загрузить с сер­
веров распространителей (в настоящее время кроме «Красной Шапочки»), После­
днее возможно, правда, только при условии свободного доступа в Internet, иначе
пересылка 300-2000 Мб (в зависимости от дистрибутива) может обойтись доро­
же, чем поиск и покупка CD.

1.2. Варианты установки Linux


Чтобы начать процедуру инсталляции Linux, сначала надо запустить ядро Linux. Для
этого используют или загрузочный CD с дистрибутивом (практически любой совре­
менный BIOS позволяет загружаться с CD), или обычную загрузочную дискету
(иногда требуется две дискеты - с ядром и с минимальной операционной системой).
Образы дискет и программа для их переноса (RAWRITE. EXE) всегда поставляются с ди­
стрибутивом. После запуска системы программе инсталляции потребуется сам ди­
стрибутив, который может находиться где угодно - на CD, на жестком диске, на уда­
ленной системе, доступной по FTP, NFS или SMB и т.д. Удобнее всего, конечно,
устанавливать Linux с CD или с другого компьютера, подключенного к локальной
сети, потому что дистрибутив будет занимать много места на жестком диске, а уста­
новка по FTP с далеко расположенного сайта потребует много времени.
14 Что такое Linux

Перед установкой важно также решить, куда будет поставлен Linux. Ему мож­
но отдать целый жесткий диск, один или несколько разделов диска, основных или
логических, а иногда Linux можно даже поставить в обычный каталог в разделе
Windows.

1.3. Разбиение жесткого диска на разделы


Для того чтобы на одном компьютере работать с несколькими операционными си­
стемами (а именно эта ситуация обычна для компьютеров пользователей Linux),
удобнее всего воспользоваться механизмом разбиения на разделы. В начале жест­
кого диска имеется таблица (partition table), в которой записано, где начинается
и заканчивается каждый раздел. В этой таблице четыре строки, в каждую из кото­
рых можно поместить информацию о разделе (такой раздел будет называться пер­
вичным - primary) или ссылку на еще одну такую же таблицу. Такая ссылка назы­
вается расширенным разделом (extended), а элементы дополнительной таблицы -
логическими разделами (logical). Кроме того, первичный раздел может иметь спе­
циальный флаг, означающий, что раздел является загрузочным.
Если нет специальных указаний со стороны пользователя, D OS/W indows обо­
значают распознавание разделов символами С:, D:, Е: и т.д. в следующем порядке:
сначала первые первичные разделы со всех жестких дисков, потом все логичес­
кие разделы всех жестких дисков, затем оставшиеся неохваченными первичные.
CD-ROM и другие дисковые устройства, для доступа к которым используются
дополнительные драйверы, получают имена в последнюю очередь.
Linux распознает все разделы и нумерует их так: четыре первичных раздела на
каждом жестком диске получают номера 1-4, а все логические - 5 и выше, в по­
рядке обнаружения. Диски стандарта IDE (а также IDE CD-ROM ) получают име­
на устройств /dev/hda для первого диска (master) на первом канале контроллера
IDE, /dev/hdb для второго диска (slave) на первом канале IDE, /dev/hdc для
первого диска на втором канале контроллера ID E и /dev/hdd для второго дис­
ка на втором канале IDE. SCSI-диски получают имена /dev/sda, /dev/sdb, /dev/
sdc и т.д., в порядке их обнаружения системой. Так что, если на первом диске есть
один первичный раздел и один расширенный, содержащий два логических, а на
втором только один первичный, D OS/W indows назовут их С:, Е:, F: и D:, a Linux -
/dev/hdal, /dev/hda5, /dev/hda6 и /dev/hdb1 соответственно.
DO S/W indow s обычно достаточно одного раздела, за исключением того, что
разделы больше 2 Гб стали возможны только в файловой системе FAT32, появив­
шейся в Windows 95 OSR2. Linux также потребует отдельный раздел, а лучше все­
го два, и если вы устанавливаете его не на пустой диск, придется уменьшить
размер уже существующего раздела (разделов). Если для этого воспользоваться
программой FDISK. EXE, входящей в комплект DOS и Windows, вся информация,
содержащаяся в модифицируемом разделе, будет безвозвратно утеряна.
Существуют программы, позволяющие уменьшить размер D O S/W indow s-
раздела, не уничтожая его содержимого. Чаще всего, по-видимому, используется
Что подразумевается под русификацией Linux 15

бесплатно распространяемый с большинством дистрибутивов FIPS. Если FIPS не


входит в ваш дистрибутив Linux, его последнюю версию всегда можно найти по
адресу http://w w w .igd.fhg.de/~aschaefe/fips/·
Перед запуском FIPS надо проверить уменьшаемый раздел на ошибки (програм­
мами CHKDSK, SCANDISK или N D D) и дефрагментировать его при помощи
DEFRAG или SPEEDISK, чтобы в конце раздела было достаточно пустого места.
Если этому будут мешать неперемещаемые файлы - файл подкачки Windows или
файлы с информацией о диске, сохраненные M IRROR или IMAGE, - их придется
временно отключить. Затем надо загрузиться с системной дискеты, на которой
есть файлы FIPS. EXE, RESTORRB. EXE и ERRORS.TXT, и запустить FIPS. FIPS покажет
текущую таблицу разделов и, если все в порядке, спросит, какой раздел надо раз­
делить, и попросит указать номер цилиндра. Если менять номер при помощи стре­
лок, автоматически будет показываться размер изменяемого раздела в мегабайтах,
так что вычислять требуемое значение даже не потребуется. Для дальнейшей рабо­
ты можно задать последовательность из трех команд: Enter, чтобы завершить вы­
бор, С, чтобы вернуться к редактированию таблицы разделов, и Y, чтобы внести
реальные изменения в таблицу на диске. После завершения работы FIPS надо обя­
зательно перезагрузить компьютер. Более того, до перезапуска ни в коем случае
нельзя ничего записывать на диск, так как DOS все еще будет пользоваться ста­
рой таблицей. После перезагрузки имеет смысл проверить уменьшенный раздел
при помощи CHKDSK, SCANDISK или NDD, и если что-то будет не в порядке,
не исправлять ошибки, а снова загрузиться с дискеты и запустить RESTORRB, чтобы
вернуть дисковую систему в исходное состояние.
В любом случае, если есть такая возможность, перед модификацией таблицы
разделов лучше всего сделать полный backup - сохранить все содержимое на дру­
гом диске, ленте или CD и убедиться в том, что все данные можно будет восстано­
вить, если они будут потеряны. Backup, вообще говоря, полезно проводить регу­
лярно на любой системе.
Для установки Linux обычно надо освободить от 200 Мб до 2 Гб дискового про­
странства в зависимости от размера дистрибутива. Разумеется, не все, что постав­
ляется с дистрибутивом, действительно нужно, и если хорошо разбираться в сис­
теме, можно поставить Linux и на раздел в 30 Мб, но это уже будет система,
выполняющая какую-то определенную функцию и совершенно не пригодная для
первоначального ознакомления.

1.4. Что подразумевается


под русификацией Linux
Изначально Linux, как и многие компьютерные программы, создавался с исполь­
зованием только английского языка, так как авторы всех его многочисленных ком­
понентов общались именно на нем. Поэтому не существует «полностью русского»
варианта Linux, такого, который был бы похож, например, на русскую версию
Windows. Многие программы все равно будут общаться с пользователем по-анг-
лийски просто потому, что некому перевести на другие языки все сообщения, которые
16 Что такое Linux

они могут выводить. Но даже эти программы могут работать с информацией на рус­
ском или любом другом языке при помощи набора средств, именуемого «локаль»
(locale). Локаль позволяет идентифицировать буквы русского алфавита именно
как буквы, а не управляющие символы, правильно соотносить прописные и строч­
ные, сортировать их и т.д. Кроме того, в настоящее время многие системные ути­
литы, а также библиотека libe могут выводить сообщения на русском и на неко­
торых других языках. Д ля этого создана система поддержки национальны х
языков NLS. И наконец, в самой системе можно сделать некоторые настройки,
позволяющие вводить русскоязычные тексты и видеть сообщения, набранные
кириллицей. Таким образом, если Linux правильно настроен на работу с рус­
ским языком, должны корректно выполняться следующие функции:
□ ввод/вывод в текстовой консоли;
□ locale и NLS;
□ ввод/вывод в графической системе X Window;
□ печать.
Помимо этого, отдельные программы, которые не поддерживают общепринятые
средства locale и NLS, могут требовать специальных мер для русификации. Бо­
лее того, как известно, существует несколько кодировок кириллицы: KOI8-R, IBM-
СР866, ISO 8859-5, W indows-CPI251, x-mac-cyrillic, причем в Linux принято устанав­
ливать KOI8-R, а в DOS/Windows, которые обычно соседствуют с Linux, - 866 и 1251,
так что появляется необходимость в дополнительных перекодировщиках.
Для того чтобы реализовать все это при установке системы с первого раза и без
ошибок, были созданы дистрибутивы, автоматизирующие по возможности боль­
шее число стадий процесса русификации. Это, в первую очередь, популярные дист­
рибутивы на основе Red H at - Black Cat, KSI Linux и «Красная Шапочка».
Мы рассмотрим подробно процесс установки русифицированных дистрибути­
вов, а затем покажем, как русифицировать и довести до аналогичного или даже
лучшего качества любой англоязычный дистрибутив.
Глава II
Начальная установка
дистрибутива
□ Red Hat 6.2 Zoot
□ Black Cat Linux 6.02 Foxhound
□ KSI Linux 2.0 Nostromo
□ Mandrake Linux 7.1 Hydrogen
□ SuSE Linux 6.4
□ Slackware Linux 7.0.0
□ Debian GNU/Linux 2.2 Potato
□ Некоторые трудности и общие вопросы

В настоящей главе будет подробно описана процедура инсталляции и начальная


конфигурация Linux из дистрибутивов Red Hat, Black Cat Linux, KSI Linux,
Mandrake Linux, SuSE Linux, Slackware Linux и Debian GNU/Linux.

2.1. Red Hat 6.2 Zoot


Описаны различные варианты начальной загрузки и общая конфигурация дист­
рибутива Red H at 6.2 Zoot.
2.1.1. Начальная загрузка
Начальную загрузку инсталлятора Red H at можно выполнить либо с дистрибу­
тивного CD, либо с дискеты. Во втором случае для создания загрузочной дискеты
можно использовать один из трех образов: images/boot, img для установки с CD
или жесткого диска, images/bootnet.img для установки по NFS, FTP или HTTP,
images/pcmcia. img для установки с PCM CIA -устройства (будь это CD-ROM или
сетевая карта). Программа для записи образа на предварительно отформатирован­
ную дискету, RAWRITE. EXE (а также другие полезные утилиты, например, FIPS),
18 Начальная установка дистрибутива

Uel co Me to Bed Hat Li n u x Б.2Т

о To install or up g r a d e a s y s t e M run ni ng Red Hat L in u x 2.0


or later in g ra phical Mode, press the <ENTEB> k e y .

о To install or upg ra de a s y s t e M run ni ng Hed Hat L in u x 2.0


or later in text Mode, type: text < E N T E H > .

о To e na ble expert Mode, type: expert <ENTEH>. Press <F3> f o r


More inforMat ion about expert Mode.

о To e n a b l e r e s c u e Mode, type: linux rescue <ENTER>. Press <F5>


for мого i n f orMation about rescue Mode.

о If you lidye a d ri ver disk, type: linux dd <ENTER>.

о Use tlie f u n c t i o n keys listed b e l o u f o r моге inforMat ion.

[FI-Main] 1 F 2 - G e n e r a l ] 1F3-Expert] [F4-Kernel] [F5-fiescuel


boot:

Рис. 2.1. Начальное приглашение загрузчика Red H at Linux

находится в каталоге dosutils/. Команда для переноса образа boot.img на дискету


в дисководе А: выглядит следующим образом:
D:\IMAGES> RAWRITE -f boot.img -d A:

После загрузки с такой дискеты или собственно с CD на экране должно по­


явиться приглашение загрузчика (рис. 2.1).
Нажатие функциональных клавиш приведет к появлению дополнительных
подсказок, но в большинстве случаев для продолжения установки достаточно на­
жать Enter. Если позже система не обнаружит CD-ROM, который правильно ра­
ботает и расположен, например, на /dev/hdc (первый диск на втором канале кон­
троллера IDE), то нужно вернуться к этому шагу (перезагрузившись) и ввести
дополнительные параметры:
linux hdc=cdrom hdc=noprobe
Если вы планируете инсталляцию по FTP и в системе больше одной сетевой
карты, ядро при загрузке может автоматически определить не ту из них, через ко­
торую будет выполняться установка, или по каким-либо причинам могут быть
неверно определены ее параметры. В этом случае надо будет ввести строку вида:
linux ether=10,0x280,0хс8000,Oxcbfff,eth1
Здесь первое число - номер IRQ, второе - порт, третье и четвертое (которые
можно опустить) - начало и конец области памяти, занимаемой картой, и e th l -
имя устройства, которое будет этой карте присвоено.
Если параметры карты правильно определяются ядром, можно их опустить
и просто ввести:
linux ether=eth1
Red Hat 6.2 Zoot 19

Если с вашей видеокартой возникли проблемы и графическая инсталляция не


работает (что крайне маловероятно), надо будет ввести строку вида:
text
Но при первой попытке в любом случае лучше просто нажать Enter, потому что
все необходимые для установки устройства почти всегда определяются автомати­
чески. При инсталляции с дискеты вам будет предложено указать язык, расклад­
ку клавиатуры и затем произвести выбор носителя, на котором находится дист­
рибутив (кроме случая, когда инсталлятор автоматически определяет CD-ROM
и обнаруживает на нем дистрибутивный CD).
2.1.2. Выбор языка
Первое, что предлагает сделать инсталлятор, - выбрать язык, на котором будет
проходить процесс установки (рис. 2.2). Именно на этот язык настроена ваша сис­
тема, так что выберите опцию Russian (Русский) и щелкните мышью по кнопке
N ext (Далее).
В дальнейшем на каждом этапе инсталляции надо будет выбрать из представ­
ленных на экране опций необходимые и нажать кнопку Далее для перехода
к следующей стадии. В большинстве случаев для внесения исправлений можно
будет вернуться, нажав кнопку Назад. Если тип вашей мыши не был определен авто­
матически, до стадии конфигурации мыши вам придется пользоваться только кла­
виатурой (клавиши стрелок для перехода в пределах одного меню, табуляция для
переключения меню, Enter для активизации поля меню или кнопки).

-Online Help Language Selection------------------------------

What language should be used during


the installation process?

Language
Czech
Selection English
W hich language, would French
German
Fo u liketo use. during the
Hungarian
installation and as the
Icelandic
system default once Red
Italian
Hat Linux is install&d?
Norwegian
Romanian
Choose from the list at
Russian
right.
Serbian
Slovak
Slovenian
Spanish
Swedish
Turkish
Ukrainian

ψ Hide Help Back [> Next

Рис. 2.2. Выбор языка установки в Red Hat Linux


20 Начальная установка дистрибутива

2.1.3. Конфигурация клавиатуры


При конфигурировании клавиатуры следует указать ее тип (101-key для старых
клавиатур, 104-key для клавиатур с Windows-клавишами и т.п.), выбрать использу­
емую раскладку (Russian для русского языка) и разрешить или запретить dead
keys - комбинации клавиш, позволяющие вводить символы европейских алфави­
тов (рис. 2.3). Эти символы будут выглядеть как буквы кириллицы, да и сами пос­
ледовательности могут мешать, так что лучше запретить dead keys. В любом случае
в работающей системе можно будет исправить эти настройки, запустив программу
/usr/sbin/kbdconfig или setup от имени пользователя root. Несмотря на то что сей­
час ввести русский текст в окошко для проверки выбора клавиатуры не удается,
позже все будет работать.

-Помощь
управляющих Λ
п оследователь^
(dead k e y s ).
Если выбрана
русская
клавиатура,
с пециальные
п оследовательь
д о л ж н ы быть
разрешены.

Используйте
чистое поле
в низу экрана
для п р оверки
к о н ф и г у р а ц ии
клавиатуры.

/
U _________ 1 И
^ С кры ть п о м о щ ь

Рис. 2.3. Конфигурация клавиатуры в Red Hat Linux

2.1.4. Конфигурация мыши


Следующий пункт установки - выбор типа мыши (рис. 2.4). Если мышь нормаль­
но функционировала при работе с меню, скорее всего программа инсталляции
правильно определила ее тип, но в любом случае это следует проверить и, может
быть, уточнить. Если ваша мышь, подключенная к последовательному порту, не
работала, нужно указать номер порта (в нижней части экрана). Если на мыши есть
только две кнопки, обязательно отметьте пункт Эмулировать 3 кнопки.
Red Hat 6.2 Zoot 21

-П с м о щ ь - Выбор мыши-

У к э ж и т е тип
вашей м ы ш и .
A L P S G l id e P o i n l (R S J 2 )
A S C II
Определите ATI Bus Mouse
интерфейс Generic
своей м ы ш и .
(Подсказка :
если разъем
I I- 2 Button Mouse (PS^2)
\- 2 Button Mouse (serial)
- 3 Button Mouse IPSJ21
L 3 Button Mouse (serial)
вашей мыши Genius
к р у г л ы й , это Kensington Thinking Mouse [PS/2]
м ышь PS/2 Logitech
или Bus; MM
Microsoft
если
Mouse Systems Mouse [serial)
п р я м о у г о л ь ны й
- это P ort D e v ic e
последователе tt^SO MevJtt.y3Q [C0M1 under DOS)
м ы ш ь .) ttjjSI WevJttjjSI [COM2 under DOS)
ttjjS2 WevJttjjS2 [COM3 under DOS)
ttyS3 JdevJttyS3 [COM4 under DOS)
Попробуйте
найти свою □ J Эмулировать 3 кнопки?
ЕС
ψ Скрыть помощь Назад 1> Далее

Рис. 2.4. Конфигурация мыши в Red H at Linux

2.1.5. Тип установки


Собственно установка Red H at начинается только теперь: вслед за предупрежде­
нием о том, что после экрана Подготовка к установке возврата к предыдущим
экранам не будет, вам предлагается выбрать тип установки (рис. 2.5). Основных
типов два - Обновление и Установка. Обновление позволяет усовершенствовать
уже установленную систему Red H at Linux более старых версий, а при выборе
типа Установка программа переформатирует разделы жесткого диска и выполнит
установку заново. Можно выбрать один из четырех режимов установки: GNOME
Workstation (Рабочая станция GNOM E), KDE Workstation (Рабочая станция
KDE), Server (Сервер), Custom (По выбору). В окне подсказки появится грозное
предупреждение о том, что установки типа Workstation уничтожают все Linux-раз-
делы на всех жестких дисках и захватывают все нераспределенное пространство,
установка Server уничтожает вообще все разделы на всех дисках, включая разделы
DOS/W indows и других систем. На самом деле при выборе этих пунктов инстал­
лятор предложит вам сделать выбор между автоматическим и ручным разбиени­
ем, и только автоматическое приводит ко всем вышеописанным эффектам. Режим
Custom позволит вам разбить диски по своему усмотрению и самостоятельно выб­
рать пакеты для установки. Пункт Использовать fdisk стоит отметить, если вы
собираетесь устанавливать Red H at в режиме Custom и хотите использовать клас­
сическую текстовую программу fdisk с командной строкой, а не полноэкранную
22 Начальная установка дистрибутива

Помощь Т нпустановки
опыта р а о о т ы
_l Использовать fdisk
с Linux,
Установка
Для
получения
более
подробной GNOME Workstation

информации о
различиях
KDE Workstation
между
к л а ссами
установки
обратитесь к - |g§I Server
Red Hat
Linux
Installat ion
Ф mm Custom

Guide,

«ГЧ ,
ІГ Н М 1 Обновление

ІЛ
ΙΞ
J Скрыть помощь Нагад S> Далее

Рис. 2.5. Выбор типа установки Red Hat Linux

DiskDruid. Это больше подходит тем, кто привык пользоваться программой fdisk
из старых дистрибутивов Linux.

2.1.6. Разбиение жесткого диска на разделы


Процедура разбиения на разделы вызывается, если после выбора типа установки
Workstation вы выбрали ручное разбиение либо режим Custom или Server. В верх­
нем окне представлен список разделов на данном диске, в нижнем окне - список дис­
ков (рис. 2.6). Операции, которые можно выполнять: Add (Добавить), Edit (Редак­
тировать), Delete (Удалить), Reset (Сбросить), Make RAID Device (Создать RAID-
устройство). Команда Reset возвращает к первоначальной таблице разделов, отменяя
все внесенные изменения. Команда Delete удаляет из таблицы текущий выбранный
раздел. Команда Add позволяет добавить новый раздел в диалоговом режиме. Здесь
требуется указать каталог, в котором будет размещен новый раздел - так называе­
мую точку монтирования (Mount Point). Нажав на треугольник справа, можно вы­
вести на экран список типичных точек монтирования. В системе обязательно должен
быть один корневой раздел (точка монтирования - /). Следующий пункт - Size
(M egs) - определяет его размер в мегабайтах. Если вы хотите создать раздел, за­
нимающий все оставшееся место, отметьте пункт Grow to fill disk (Продолжить
до заполнения диска) - в этом случае число, введенное как размер, не играет роли.
Следующий пункт - выбор типа раздела (Partition Туре). Корневой раздел дол­
жен иметь тип Linux Native. Кроме того, обязательно должен присутствовать раз­
дел подкачки типа Linux Swap; для него текст, введенный в поле Mount Point, не
Red Hat 6.2 Zoot 23

гПомощь- Disk Druid-

как к о рневой г Partitions-

раздел. I Mount Poirit D evice Requested Actual Type

Выделите ІИ hdal 1M 421Μ Linux native


fonntMose hda5 512M 512M DOS 1G-bit>=32M
выбранный
<Swap> hdaG 64M 64M Linux swap
для
установки
раздел FAT
и нажмите
к н о п к у Εώί для
н а з н ач е н и я
точки
монтирования A d d .J Edit... Delete I Reset Make RAID Device
и в — ------------------- 1 --------------------- 1 ------------------- 1

к а ч е стве pDrive Summary ,

точки I Drive Geom [CJHE] Total [M] Free (M] Used [M) Used (%]
монтирования I hda f 1015/ 32/631 ЭЭЭМ QM ЭЭЭМ m%
ук а ж и т е /
(r o o t ) .
Ко г д а вы
подтвердите
выбор, вам
■■-■■■ .-
IEl
Скрыть помощь Назад l> Далее

Рис. 2.6. Разбиение на разделы в графической версии DiskDruid

играет роли. Команда Edit позволяет изменять настройки и присваивать точки


монтирования уже существующим разделам. Если вы присвоите точку монтиро­
вания / разделу типа DOS, будет задействован специальный режим демонстрацион­
ной установки Red Hat Linux, использующий каталог на разделе DOS/W indow s.
Этот режим предназначен для предварительного знакомства с Linux, однако он
не позволяет в полной мере воспользоваться всеми возможностями системы,
и мы не будем рассматривать его в деталях.
Изменения, внесенные в таблицу разделов на этой стадии, не будут задейство­
ваны вплоть до начала установки, так что на любом этапе можно вернуться назад
и что-то подкорректировать. Но это невозможно, если на предыдущей стадии вы
отметили использование программы fdisk и если в системе недостаточно памяти;
во втором случае инсталлятор предложит вам отформатировать и подключить
раздел подкачки (swap) немедленно. При выборе типов установки Workstation
все Linux-разделы будут отформатированы (непосредственно перед установкой
пакетов), при выборе Server и Custom на следующем экране можно указать, ка­
кие разделы следует отформатировать, а какие оставить.

2.1.7. Конфигурация системного загрузчика LILO


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

хотите его устанавливать. Можно выбрать, куда именно поставить LILO - в MBR
(вариант по умолчанию), что сделает его первой программой, запускающейся при
включении компьютера, или в первый сектор раздела Linux. Во втором случае
в MBR должен находиться другой системный загрузчик, способный передать
управление LILO. Можно также добавить в LILO возможность запуска других опе­
рационных систем, находящихся в других разделах. Для этого необходимо выде­
лить раздел, содержащий нужную систему, например D O S/W indow s, и вписать
одно короткое слово (например, win) в поле Метка загрузки. В дальнейшем
при включении компьютера можно будет ввести это слово в ответ на приглаше­
ние LILO и запустить Windows.

2.1.8. Конфигурация сети


После разбиения диска программа инсталляции предлагает выполнить еще не­
сколько настроек, имеющих отношение к работе системы уже после окончания
процесса установки. Во-первых, это настройка сети (рис. 2.7), которую необхо­
димо выполнить, если компьютер к сети подключен. В верхней части экрана на­
ходится список обнаруженных сетевых устройств, а затем две нажатые по умол­
чанию кнопки: Использовать DHCP и Активизировать при загрузке. Первую
из них можно оставить нажатой, только если в вашей локальной сети действует
DHCP, вторую, наоборот, нужно оставить, если вы хотите, чтобы система ини­
циализировала сетевую карту при запуске. Когда вы не используете DHCP,
нужно задать сетевую конфигурацию: введите IP -адрес, сетевую маску (часто

гПомощь- Конфигурация сети --------------

ethO I

J Использовать DHCP

Конфигурс Г Активизировать при загрузке

сети Адрес IR: 1172 16.113 5j

Маска подсети: 255.255.255.0


Е сли у вас Сеть: 17216.1190
есть сетевая Ер од каст: 172.16.119.255
карта, вы
м ожете
настроить Имя коста: gumma doe η
с е т ь . Либо
Шлюз: 172.16.119.0
же нажмите
Д алее Д Л Я Первичный DNS: 127.0.0.1
продолжения. Вторичный DNS:
Третичный DN9 :
Выберите
сетевую
к а р ту и
укажите,______
Е
Скрыть помощь ^ Назад |> Д а ле е

Рис. 2.7. Конфигурация сети в Red Hat Linux


Red Hat 6.2 Zoot 25

это 255.255.255.0), нажмите клавишу табуляции два раза, и инсталлятор запи­


шет наиболее подходящие значения в следующие два поля, после чего их можно
изменить, если ваша локальная сеть сконфигурирована нестандартно. Укажите
также остальные настройки: имя вашего компьютера, адрес шлюза (gateway),
адреса серверов DNS (в принципе достаточно одного). Если поля ввода этих
настроек деактивированы (это наблюдается в графическом инсталляторе Red
H at 6.2, в отличие от текстового), отключите кнопку DHCP, заполните их и ак­
тивизируйте ее снова. При необходимости всю эту информацию можно получить
у администратора локальной сети.

2.1.9. Выбор часового пояса


На следующем экране можно задать часовой пояс, в котором вы расположены
(рис. 2.8). Удобно переключить меню Просмотр с показа всего мира (World) на
конкретную часть света (Europe или Asia для России) и затем указать мышью
точку, в которой вы находитесь. Можно также пролистать весьма длинный спи­
сок городов в нижней части экрана или ввести смещение от Гринвичского ме­
ридиана вверху в поле Расположение (но в последнем случае система может
неправильно производить переход на летнее время). Кнопку Системные часы
используют UTC следует нажать, если на вашем компьютере в основном при­
меняется Linux или другие U N IX -системы, и оставить не нажатой, если в ос­
новном используется Windows.

-Помощь Выбор часового пояса-

Располо^іение | Сдвиг относительно UTC

Просмотр: Europe Г Системные часы используют UTC


Выбор -I
часового
пояса
Вы м ожете
выбрать
часовой
пояс, либо
указав
р а с п о л о ж е н ие
вашего EuropeJM alta
ко м п ью т е р а EuropeMinsk
на карте, EuropeJM on aco
либо ук а з а в EuropeJMoscow M oscqw+00 ■west Russia
сдвиг вашего EuropeJOslo

ча с о вого 3 EuropeJParis
ЕигорЫРгааие
Κι__________I
'i: Скрыть помощь ^ Назад Д а ле е

Рис. 2.8. Выбор часового пояса в Red Hat Linux


26 Начальная установка дистрибутива

2.1.10. Настройка системы для отдельных пользователей


И наконец, имена и пароли пользователей (рис. 2.9). В первую очередь необходи­
мо выбрать и ввести пароль пользователя root - системного администратора. Этот
пароль дает абсолютную власть над системой, поэтому его нельзя разглашать; в то же
время без него невозможно никакое администрирование, так что его нельзя терять.
Обдумайте его как следует, прежде чем вводить, несмотря на то, что потом его
всегда можно будет сменить. Кроме пользователя root, на этой стадии можно соз­
дать одного или нескольких обычных пользователей, воспользовавшись кнопкой
Новый: укажите имя (login) пользователя, его пароль и полное имя в соответству­
ющих полях и нажмите кнопку Добавить.
В режиме установки Custom после задания параметров для индивидуаль­
ных пользователей можно выбрать способ ш ифрования паролей. По умолча­
нию выбраны наиболее безопасные установки - алгоритм ш ифрования MD5
и режим shadow (скрытые пароли), который не дает возможности увидеть даже
зашифрованный пароль другого пользователя. Кроме того, на этом экране можно
разрешить использование NIS и задать N IS -домен и, если нужно, N IS -сервер.
Эта служба позволяет группе компьютеров в локальной сети использовать не­
которые общие файлы конфигурации, в частности общий список пользовате­
лей. Необходимую информацию можно получить у сетевого администратора.

2.1.11. Настройка X Window


Следующие два экрана посвящены настройке графической системы X W indow
и вызываются в случае, если выбран тип установки Workstation. При режиме

гПомощь- ■Учетная запись пользователя-

Account Пароль пользователя root:

Подтвердите:
Configurati Пароль пользователя root принят

Имя пользователя:
В в е дите
пароль Пароль: | Подтвердите пароль:

п о л ь зователя Полноб имя: I


r o o t . Пароль
долж ен иметь
Д обав ить Редак ти ров ать Удалить Новый
не менее
ше сти Имя пользователя Полное имя
символов в cubbi Sergei Zubkov
длину.
Подтвердите
пароль,
введя его
еще раз в
следующем

Ф Скрыть помощь ^ Назад 1> Далее

Рис. 2.9. Начальная настройка пользователей в Red Hat Linux


Red Hat 6.2 Zoot 27

Server графическая система не устанавливается, а в случае Custom ее конфигу­


рирование будет выполнено после выбора пакетов. Сначала инсталлятор пред­
лагает выбрать тип монитора из большого списка (если, конечно, он не сможет
определить его самостоятельно). Если вашего монитора в списке нет, можно вы­
брать какой-нибудь общий тип, например Generic Multisync, и задать допусти­
мые диапазоны строчной и кадровой разверток, соответствующие параметрам вашей
модели. На следующем экране инсталлятор предложит вам выбрать видеокарту (если
он не сможет определить ее автоматически) и объем установленной на ней памяти.
Вы можете проверить работоспособность выбранной конфигурации, нажав на кноп­
ку Проверить эту конфигурацию. Экран должен переключиться в максимально до­
пустимый для данной конфигурации режим, окраситься в синий цвет и вывести
окошко с соответствующим текстом и кнопками Да и Нет. В случае, если изображе­
ние было сдвинуто или вы хотите использовать несколько графических режимов, на­
жмите на кнопку Уточнить конфигурацию X и затем на Далее. Здесь вы сможете по
отдельности протестировать, запретить или разрешить каждый из теоретически до­
пустимых при данной конфигурации видеорежимов. Другие две кнопки на экране
выбора видеокарты - Использовать графический вход в систему и Пропустить
конфигурацию X - приведут соответственно к запуску X Window сразу после за­
грузки системы до входа каких-либо пользователей или вообще к отказу от кон­
фигурации X Window.

2.1.12. Выбор и установка пакетов программ


Для типов инсталяции Workstation и Server здесь начинается процесс формати­
рования файловой системы и копирования устанавливаемых пакетов программ.
В режиме Custom можно выбрать, какие именно группы или даже индивидуаль­
ные пакеты инсталлировать. Они собраны в следующие группы:
□ Printer Support (поддержка печати);
□ X Window System (базовая графическая среда X Window);
□ GNOME (интегрированная графическая среда GNOME);
□ KDE (интегрированная графическая среда KDE);
□ M ail/W W W /N ew s Tools (средства для работы с почтой, Internet, новостями);
□ DOS/W indows Connectivity (средства для работы с DOS и Windows);
□ Graphics M anipulation (средства для работы с графикой);
□ Games (игры и развлечения);
□ Multimedia Support (поддержка мультимедиа);
□ Networked W orkstation (рабочая станция в локальной сети);
□ Dialup W orkstation (рабочая станция, выходящая в сеть по модему);
□ News Server (сервер новостей USENET);
□ NFS Server (файловый сервер, действующий по протоколу NFS);
□ SMB (Samba) Server (файловый сервер, действующий по протоколу SMB) -
позволяет монтировать каталоги с Linux-сервера в системах Windows;
□ IPX /N etW are Connectivity (поддержка протокола IPX);
□ Anonymous FTP Server (анонимный F T P -сервер);
□ Web Server (сервер W W W );
28 Начальная установка дистрибутива

□ DNS Name Server (сервер имен) - позволяет не обращаться постоянно к сер­


веру провайдера;
□ Postgres (SQL) Server (система управления базой данных Postgres);
□ Network M anagement W orkstation (станция обслуживания локальной сети);
□ A uthoring/Publishing (средства подготовки текстов);
□ Emacs (текстовый редактор/среда разработки Emacs);
□ Development (средства разработки);
□ Kernel Development (средства разработки ядра);
□ Clustering (средства кластеризации);
□ Utilities (утилиты);
□ Everything (все).
Каждую группу пакетов можно подключить или отменить, нажав на кнопку
рядом с ее названием. Нажатие на кнопку рядом с Everything позволяет выбрать
все пакеты, независимо от состояния остальных групп. Дополнительно можно
нажать на кнопки Индивидуальный выбор пакетов и Далее, чтобы получить
возможность рассмотреть каждый из них и выбрать только те, которые вам нуж ­
ны (рис. 2.10). Они рассортированы по более общим группам, чем на предыду­
щем экране, и показаны в виде дерева в левом верхнем углу. Раскрыв нужную
ветку, можно получить список пакетов, входящих в нее, а щелкнув мышью по на­
званию пакета, можно увидеть его описание (на английском языке) и отменить
или выбрать его установку, нажав на кнопку Выбрать пакет для установки.
Общий размер устанавливаемых пакетов в Red H at 6.2 для разных типов уста­
новки составляет:
□ GNOME W orkstation (рис. 2.11): 606 Мб;
□ KDE Workstation: 588 Мб;
□ Server: 357 Мб;
□ Custom/Everything: 1177 Мб.
Когда размер установки превышает размер вашей файловой системы, инстал­
лятор сообщает об этом до начала копирования пакетов и возвращает вас на пре­
дыдущую стадию, так что вы сможете вернуться к разбиению диска или к выбору
пакетов для установки, если использовался тип установки Custom.

2.1.13. Инсталляция в текстовом режиме


При установке с CD, если объем оперативной памяти больше или равен 32 Мб,
процесс инсталляции запускается в графическом режиме, в противном слу­
чае - в текстовом. Текстовый инсталлятор запускается и тогда, когда вы ввели
команду text в ответ на приглашение загрузчика. В дистрибутиве Red H at 6.2
текстовый инсталлятор, загружаемый с CD (в отличие от записанного на дис­
кету), в настоящее время неправильно русифицирован, и установка возможна
только на английском языке. В текстовом режиме Red H at задает те же вопро­
сы, что и в графическом, но с некоторыми отличиями: возможно 7 вариантов
раскладки клавиатуры для русского языка: ru-cpl251, ru-ms, ru-yawerty, ru i,
Red Hat 6.2 Zoot 29

Индивидуальный выбор пакетов-

■CjAmusements
■C j Appli cat ions grtt 3j c g LI І 1Є
Ι" β ) Development
|~ P~lDebuggers

(^Libraries libr&p librep-dev/el


Γ 3 System
Tools
(^Documentation
Ш- CD System Environment p 2 c~ d eve1 pygnom e pygnom e-
Ш- C jU ser Interface -app 1 e t

pyg n oro e- pygnonie- Pygtl·: pygtu-


ca p p 1e t 11bin1ade 1 і b g: 1 -ad e·
3
Имя: perl-5.00503-10 Описание пакета
Размер: 1 3469Л KBytes [j^ Выбрать пакет для установки

Perl is a high-level programming language with roots in С, sed, awk and shell scripting. Perl is good at handling processes
and tiles, and is especially good at handling text. Perl's hallmarks are practicality and efficiency. While it is used to do a lot
of different things, Perl's most common applicationi are system administration utilities and web programming. A large
proportion of the CGI scripts on the web are written in Perl. You need the peri package installed on your system so that
your system can handle Perl scripts.

У Показать помощь *3 Назад |> Далее

Рис. 2.10. Выбор пакетов в Red H at Linux

H31/root
Файл Правка Настройки Макет Команды Справка

D D Οι.· Oijok.
ПорБипвпьпнЙ
рш
твпвг Дибне Δ > ф ^ DD Dl IJlL.і'·.·. a
Назад Вверн Вперед Переем. Дом П икт Κ,ρат. Полный С пец.

Место: Jroot

09/
wHH.rcdhnt.соп г О bin
%
г СЗ boot
В CJ dev
І CD etc
В CD home
Й Ο lib & noot@ locaLhost+Localdori(iain; /mnt/tmp/ ■
■ ;
H a d H o t Ξ uppurt
I™ C ] lost+found
Файл Правка Settings Справка

XU emulators lang solixI video


[ ro o t@ lo ca lh o st o p t]# cd Н11/
[ ro o tS lo c a lh o s t K i l l # Is
fu w rx vt xpdf XV
R pd H ut E ггвЧв
fu u r 2 t^f3 r w t - 2 +ІБ xpdf-О^ЭО xw-3#10a
[ro o tE lo c a lh o s t J i l l ] # cd xw
Lroot-Ёlocalhost xvl# xv
LDP bash: xv: command not found
СrootSlocalhost xul# Із
b in doc l i b Ran
Lnun[PgEumpntn [ro o tS lo c a lh o s t xv/1# bin/xv;

19
: I 4 О
_L_
V
ΐ roott^local

Рис. 2.11. Установленный Red H at Linux G N O M E Workstation


зо Начальная установка дистрибутива

ru2, ru_w in (отличия см. в разделе 6.1.2); некоторые вопросы задаются в дру­
гом порядке (например, настройка мыши после конфигурации сети). О брати­
те также внимание на следующее: если вы выберете русскую раскладку клави­
атуры, она будет инициализирована в режим ввода кириллических букв.
А первое, что вам надо будет ввести - пароль пользователя root, не отобража­
емый на экране. Таким образом, вы рискуете ввести его на русском языке.

2.2. Black Cat Linux 6.02 Foxhound


Этот дистрибутив фактически является дистрибутивом Red H at 6.0, в котором
обновлены наиболее важные пакеты и выполнена русификация. Программа его
установки - это русифицированный текстовый инсталлятор Red Hat.

2.2.1. Начальная загрузка


Начальную загрузку инсталлятора можно осуществить как с дистрибутивного
CD, так и с дискеты. Чтобы поместить инсталлятор на дискету, нужно восполь­
зоваться одним из трех прилагающихся образов: images/boot, img при установ­
ке с CD или с жесткого диска, images/bootnet.img при установке по сети - через
NFS, FTP или HTTP, images/pcmcia. img при установке с PCM CIA -устройства
(C D -R O M или сетевой карты). Образ можно скопировать на дискету коман­
дой dd в Linux или программой RAWRITE. EXE в D O S/W indow s. Эта программа
имеется на дистрибутивном CD в каталоге dosutils, так что для создания ин­
сталляционной дискеты из образа bo ot.img следует вставить предварительно от­
форматированную дискету в дисковод А: и подать следующую команду:
D:\IMAGES> RAWRITE -f boot.img -d A:
После загрузки компьютера с такой дискеты (или с дистрибутивного CD) на
экране появится сообщение, показанное на рис. 2.12. В большинстве случаев для
продолжения инсталляции здесь достаточно нажать Enter. В случае, если при
установке обнаружатся какие-либо проблемы (не распознается CD-ROM, не рас­
познается сетевая карта и т.п.), можно будет перезагрузиться и ввести на этой ста­
дии дополнительные параметры для ядра Linux (см. раздел 2.1.1).

2.2.2. Выбор языка


После приглашения Welcome to Red Hat Linux инсталлятор предлагает выбрать
язык установки (рис. 2.13). По окончании инсталляции система будет настроена
на работу именно на этом языке. На этом экране, как и всюду далее, переключать­
ся между элементами диалогового окна можно при помощи клавиш Tab Alt+Tab
и активизировать их клавишами Enter или Space.
Если в этом меню выбрана опция Russian, дальнейшая работа будет происхо­
дить с использованием русского языка.

2.2.3. Конфигурация клавиатуры


Следующая стадия - выбор раскладки клавиатуры (рис. 2.14). Дистрибутив Black
Cat включает в себя следующие раскладки для русского языка: ru-cpl251, ru-ms,
Black Cat Linux 6.02 Foxhound 31

We lcone to Black Cat Linux?

о To install or u pgrade a sy st eM r un n i n g Red Hat Lin ux 2.0


or later, press tlie <ENTER> key.

о To en ab le expert Mode, type: expert <ENTER>. Press <F3> for


More in fo rM a tio n about expert M o d e .

о This disk can no longer be used as a rescue disk. Press <F4> for
i n f o r M a t i o n o n t h e n e w r e s c u e disks.

о Use the function keys listed b e l o w for н о г е i n f o r M a t i o n.

[FI-Main] [F2-Genera 1 ] [F3-Expert] [F4-Rescuel [ F S - K i c k s t a r t ] [F6-Kernel]


boot : __

Рис. 2.12. Начальная загрузка инсталлятора Black Cat Linux

UelcoMe to Hed Hat Lin ux


—I C ho os e a L a n g u a g e |-

Llhat language should be used dur in g


the insta 11at ion pr ocess?

Russ іan for Ukra ine tt


Ukra inian
Eng 1 isli
Czech
Fren ch
GerM an
Hu ng a r i a n

<T a b > / < F H t - T a b > bet wee n el e M e n t s ! <Space> s el ec ts ! <F12> next screen

Рис. 2.13. Выбор языка инсталляции Black Cat Linux

ru-yawerty, ru, ru l, ru2, ru_win (отличия см. в разделе 6.1.2). Раскладки ru и ru i


используют кодировку КОІ8-Г, которая является принятым стандартом для
UNIX-систем, но ничто не мешает вам использовать другие варианты.
32 Начальная установка дистрибутива

ДоЁро п о м и ло ват ь в Red Hat Linux

-| Тип к л а в и а т у р ы \-

У казни те тип к п а в и а т у р ы

го
ги-срі251
ru-ns
rU-lJELUertij

rui
ruZ
ru uin

< T a b > / < A l t - T a b > между эл е м е н т а м и ■ <Space> вы бо р ■ <F12> с л е д у ю щ и й экран

Рис. 2.14. Выбор раскладки клавиатуры Black Cat Linux

Обратите внимание, что если вы выбираете русскую раскладку, автоматичес­


ки включается ввод букв кириллицы. Если затем вы пропустите настройку сети,
может получиться так, что первым вы наберете с клавиатуры пароль системного
администратора. Он не показывается на экране, и вы не заметите, что напечатали
его по-русски. Поэтому необходимо будет один раз нажать на клавишу-переклю­
чатель (правый Ctrl для ru). Для проверки можно перейти в другое окно с помо­
щью комбинации клавиш Alt+F2, что-нибудь напечатать и вернуться назад, на­
жав A lt+Fl для продолжения инсталляции.

2.2.4. Выбор типа носителя


На данном этапе необходимо задать тип носителя, с которого вам предстоит уста­
навливать систему. При загрузке инсталлятора с CD или с дискеты, сделанной из
образа boot.img, в этом меню будут всего два пункта - Local CD-ROM (локальный
CD-ROM ) и Hard Drive (жесткий диск). При загрузке с дискеты, сделанной из
bootnet. img, возможны три варианта - NFS Image, FTP, HTTP. Первый соответ­
ствует случаю, когда дистрибутив находится на файловом сервере, доступном по
протоколу NFS, второй - по FTP, и третий - по HTTP. В этом случае придется
сразу же пройти стадию настройки сети (см. раздел 2.2.10), указать имя сервера
и каталог на нем, в котором находится дистрибутив. Указываемый каталог дол­
жен содержать подкаталог RedHat.

2.2.5. Класс инсталляции


Если CD определился без проблем, инсталлятор предложит выбрать между уста­
новкой или обновлением старой системы и в случае инсталляции - выбрать один
из трех классов: Рабочая станция, Сервер, По выбору.
Black Cat Linux 6.02 Foxhound 33

Класс Рабочая станция соответствует варианту с минимумом серверных прило­


жений и максимумом пользовательских. При выборе установки этого класса будут
уничтожены все уже существующие разделы типа Linux (но сохранены разделы
D OS/W indows и других систем) и захвачено свободное (не распределенное меж­
ду разделами) место на всех дисках. Размер установки для Black Cat 6.02 - 489 Мб.
Класс Сервер включает в себя все возможные серверы - HTTP, NFS, xfs и т.д.
Выбрав такую установку, вы уничтожите вообще все разделы на всех дисках. Раз­
мер установки для Black Cat 6.02 - 371 Мб, но инсталлятор потребует довольно
много свободного места на диске (более 1 Гб).
Установка По выбору дает вам возможность выбрать разбиение диска и паке­
ты для установки самостоятельно (если выбрать все пакеты, размер установки со­
ставит 1080 Мб).

2.2.6. Настройка SCSI


Этот пункт пропускается при установке класса Рабочая станция. Инсталлятор
задает вопрос, есть ли у вас контроллеры SCSI, и при ответе Да предлагает вы­
брать из списка поддерживаемых адаптеров наиболее подходящий (рис. 2.15). Об­
ратите внимание на то, что IOM EGA Zip-drive, подключающийся к параллельно­
му порту, тоже находится в этом списке.
После выбора адаптера вы можете либо воспользоваться автоматическим опре­
делением его конфигурации, либо ввести ее параметры вручную.

Red Hat Linux СО 1999 Red Hat S o f t u a r e На с т р о й к а SCSI

----------- 1 Загру зк а модуля |-------------

Какой д р а й в е р н е о б х о д и м о п р о б о в а т ь ?

Ada pt ec 152х Т
daptec 1542 it
Ada pt ec 1740
Ada pt ec 2 7 4 0 , 2 8 4 0 , 2940
Ad u a n S y s Ad ap t e r s
A lu ay s IN2000 4

< T a b > / < A l t - r a b > b et u e e n e l e m e n t s I <Space> se lec ts ! <F12> next screen

Рис. 2.15. Конфигурация SC SI в Black Cat Linux

2.2.7. Разбиение жестких дисков


При установке классов Рабочая станция и Сервер инсталлятор дважды спрашивает,
уверены ли вы в том, что хотите выполнить автоматическое переразбиение дисков,
34 Начальная установка дистрибутива

и только после этого выполняет его. В режиме По выбору вы получаете возмож­


ность провести разбиение вручную. Можно выбрать одну из двух программ раз­
биения диска - fdisk или DiskDruid. Первый вариант - классическая программа,
управляемая из командной строки и предоставляю щ ая наибольшие возмож ­
ности в плане модификации таблиц разделов; к сожалению, она немного сложна
для начинающих пользователей. DiskDruid (рис. 2.16) проще, хотя и более огра­
ничен в возможностях. Именно его можно рекомендовать к применению при
первом знакомстве с системой.
Чтобы добавить новый или изменить старый раздел, выберите его и нажмите Д о­
бавить или Редактировать. Появится меню, в котором вам предлагается указать
точку монтирования (Mount Point), размер в мегабайтах (Size), тип раздела (Туре)
и диски, на которых этот раздел можно разместить (Allowable Drives). Для разде­
ла, который должен занять все оставшееся место на данном диске, нужно включить
опцию Grow to fill disk. При этом значение, заданное в поле Size, не учитывается.
При разделе типа Linux Swap (раздел подкачки) значение, введенное в поле Mount
Point, также не учитывается. Нажатие клавиши F2 вызывает диалог добавления
удаленного раздела, монтируемого по протоколу NFS. При этом производится на­
стройка сети, если она не была выполнена до этого (определение сетевого адаптера,
задание IP -адреса, сетевой маски, имени домена и имени машины), и предлагается
ввести адрес NFS-сервера (NFS Server), путь к монтируемому ресурсу на сервере
(NFS Path) и точку монтирования в локальной файловой системе (M ount Point).
К первоначальному состоянию таблицы разделов всегда можно вернуться
при помощи клавиш и F5. Все изменения будут произведены только после на­
жатия клавиш и Ок.

Red Hat Linux (С) 19S9 Red Hat S o f tu ar e На с т ро йк а ф айповых систем


\ Текущие разделы диска |-
П о Llllt Point Deu ice Requested Actual Type
/boot hdal 10И 10И Linux liatiue
hda5 64И 64M Linux suap
/ hda6 in 923П Linux liatiue

Статистика диска
Dr іue Geon [ C / H / S ] Total Used Free
hda [ 1015/ 32/63] 9Э9П on

Ре д а к т и р о в а т ь У дапить

Fi-Add F2-Add NFS F3-Edit F4-Delete F5-Reset F12-0k и і .00

Рис. 2.16. Разбиение диска в Black Cat Linux


Black Cat Linux 6.02 Foxhound 35

2.2.8. Форматирование разделов


Этот пункт, так же как и предыдущий, выполняется только при включении ре­
жима установки По выбору. После внесения изменений в таблицу разделов
инсталлятор предлагает активизировать раздел подкачки (свопинга). При этом вы ­
водится список обнаруженных разделов типа Linux Swap; те разделы, которые
в действительности будут использоваться, следует отметить. Опцию Поиск д е­
фектных блоков обычно не имеет смысла включать при форматировании раз­
делов на современных жестких дисках. Затем инсталлятор предлагает отфор­
матировать обнаруженные разделы типа Linux N ative (рис. 2.17).

tied Hat Linux (С) 1939 Red Hat So f t u a r e Выбор р аз д е л о в для ф о р м а т и р о в а н и я

---------------- 1 Ра зд ел ы для ф о р м а т и р о в а н и я |------------------

Какие разд ел ы вы хотите о т ф о р м а т и р о в а т ь ? Р е к о м е н д у е т с я


ф о р м а т и р о в а т ь все с и с т е м н ы е р а з д е л ы , вк лю ча я /, /usr и
/ и а г . Такие ра зд ел ы как /horne или / us r / l o c a 1 можно не
форма тировать * особе нно если они с к о н ф и г у р и р о в а н ы при
предыдущей у с т а н о в к е .

[*■] / d e u /h da6 /
[*] / d e u/ hd al /boot

[] Поск де фек т н ы х блоков при форматировании!

< T a b > / < A l t - T a b > be tu een е 1e n e n t s I <Space> se le ct s I <F12> next screen

Рис. 2 . 77. Форматирование разделов в Black Cat Linux

2.2.9. Выбор пакетов для установки


В режиме установки По выбору можно указать, какие именно пакеты или группы
пакетов следует установить. На первом экране предлагается список из основных
групп пакетов, а также дополнительный пункт Индивидуальный выбор пакетов.
Группы позволяют быстро построить систему необходимого типа, индивидуаль­
ный выбор дает возможность рассмотреть каждый пакет в отдельности. В дистри­
бутиве Black Cat 6.02 предлагаются следующие группы пакетов:
□ Printer Support (поддержка печати);
□ X Window System (базовая графическая система X Window);
□ GNOME (интегрированная графическая среда GNOME);
□ KDE (интегрированная графическая среда KDE);
□ M ail/W W W /News Tools (средства для работы с почтой, Internet и новостями);
□ DOS/W indows Connectivity (совместимость с DOS/W indows);
36 Начальная установка дистрибутива

□ File Managers (файловые менеджеры);


□ Graphics M anipulation (средства для работы с графикой);
□ Console Games (текстовые игры и развлечения);
□ X Games (графические игры и развлечения);
□ Console Multimedia (текстовые мультимедийные программы);
□ X multimedia support (графические мультимедийные программы);
□ Networked W orkstation (сетевая рабочая станция, используется при наличии
локальной сети);
□ Dialup W orkstation (рабочая станция, подключающаяся к сети через модем);
□ News Server (сервер новостей USENET);
□ NFS Server (файловый сервер NFS);
□ SMB (Samba) Connectivity (поддержка протокола SMB для совместного ис­
пользования дисков и принтеров Linux и Windows);
□ IPX /N etW are(tm ) Connectivity (поддержка протокола IPX);
□ Anonymous FTP Server (F T P -сервер с поддержкой анонимного входа);
□ Web Server (сервер W W W );
□ DNS Name Server (сервер службы имен DNS);
□ Postgres (SQL) Server (система управления базами данных Postgres);
□ Network Management W orkstation (рабочая станция управления сетью);
□ ТеХ Document Formatting (система подготовки текстов к печати ТеХ);
□ Emacs (текстовый редактор и среда разработки Emacs);
□ Emacs with X Windows (Emacs с графической оболочкой);
□ С Development (средства разработки на языке С);
□ Development Libraries (библиотеки для разработки);
□ C++ Development (средства разработки на языке C++);
□ X Development (средства разработки под X Window);
□ GNOME Development (средства разработки для GNOME);
□ Kernel Development (средства разработки ядра);
□ Extra Documentation (дополнительная документация);
□ Все (все пакеты).
Обязательно следует выбрать группы С Development и Kernel Development,
иначе вы потом не сможете изменять конфигурацию ядра системы.
Указание пункта Индивидуальный выбор пакетов вызывает следующий экран,
на котором показаны группы пакетов (отсортированные по другому принципу)
и текущий размер каждой группы (рис. 2.18). Знак [ ] слева от названия группы
означает, что ни один пакет в ней не выбран для установки, знак [*] - что указана
вся группа, знак [ О ] - что выбрана только часть. Нажатие клавиш Enter и Space
(пробел) позволяет развернуть выбранную стрелками группу. Щелчок по назва­
нию индивидуального пакета изменяет его статус, нажатием клавиши F1 выво­
дится краткое описание пакета. Вверху справа всегда указан общий размер вы­
бранных в настоящий момент пакетов.
Щелчок по кнопке Готово инициализирует проверку на зависимости (пропу­
щенные пакеты, которые необходимы для работы выбранным пакетам) и запускает
установку Black Cat Linux.
Black Cat Linux 6.02 Foxhound 37

fled Hat Lin ux C O 1333 Red Hat S o ft ua re Выбор па кетов для у с т а нов ки
----------------------------------- 1 Выбе ри те группу I----------------------------------

Вы бе р и т е группу дпя п р ос мот ра Размер и н с т а л л и р о в а н н о й системы: 33811


Н аж ми те F1 для и н ф орм ац ии о пакете

[о] Appi icat ions/Connun icati otis 1.6П t


[ ] Appi icat ions/Da ta bas es ¥
[□] A p p l i c a t i o n s / E d i t o r s 5.8H tt
[*] Appi icat ions/Enu la to rs 3 .8П
l>] dosemu 1.7H
l>] d o s e m u - f r e e d o s a . он
[*] xdose nu
[ ] Appi icat ions/Eiigineer ing
[ol Appi icat ions/Fi le 0.6H 4

Го то во

<T a b > / < A l t - T a b > bet uee m e 1ements I <Space> s el ec ts I <F12> next screem

Рис. 2.18. Индивидуальный выбор пакетов в Black Cat Linux

2.2.10. Конфигурация мыши


После установки системы производится конфигурирование различных устройств
(рис. 2.19). Обратите внимание на слово вверху слева (mouseconfig в данном случае).
Это название запущенной в настоящий момент программы, и под этим именем ее
можно будет перезапустить уже в рабочей системе. На этапе конфигурации мыши
mo u s e c o n f i g 3.9 - (С) 1333 Red Hat S o f tu ar e
--------------------1 К о н ф и г у р а ц и я мыши |-

Какой у Бас тип мыши?

Нет мыши
ALPS G 1 idePo ітіt (PS/2)
A S C 11 Π ieflouse ( п о с л е д о в а т е л ь н а я )
ί
tt
ASCII nieMo us e (PS/2}
ATI Bus Mouse
С т а н д а р т н а я мышь ( п о с л е д о в а т е л ь н а я )
С т а н д а р н а я 3 - к н о п о ч н а я мышь ( п о с л е д о в а т е л ь н а я 3
т а н д ар тн ая мышь (PS/2)

і ] Э м у л и р о в а т ь 3 кноп ки?

Продолжить

<T ab > / < A l t - T a b > между элементами i <Space> вых од i <F12> с л е ду ющ ий экран

Рис. 2.19. Конфигурация мыши в Black Cat Linux


38 Начальная установка дистрибутива

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


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

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

2.2.11. Конфигурация сети


Следующий вопрос инсталлятора - хотите ли вы настроить локальную сеть (не
dialup). На этом этапе производится автоматическое определение сетевых адап­
теров (даже в режиме По выбору) или предлагается выбрать один из списка
поддерживаемых системой адаптеров, если автоматическое определение не сра­
ботало. Следующий выбор - способ установки IP -адреса вашего компьютера.
Предлагаются три варианта: статический IP -адрес, ВООТР и DHCP. Последние
два случая реализуются для сети, в которой действуют соответствующие протоко­
лы (ВО О ТР или D H CP). В этом случае достаточно выбрать протокол и нажать
Ok - ІР-адрес будет выделен автоматически. Если такие протоколы в вашей ло­
кальной сети не используются, обратитесь к пункту меню Статический 1Р-адрес.
Появится диалоговое окно, предлагающее ввести ІР-адрес, маску подсети, 1Р-ад-
реса шлюза и сервера DNS. Обратите внимание, что после ввода каждого из зна­
чений и нажатия клавиши Tab инсталлятор вписывает собственный вариант зна­
чения для следующего поля, которое в большинстве случаев следует исправить. На
следующем экране (как в случае D H CP/BO O TP, так и в случае статического IP-
адреса) предлагается ввести символическое имя домена, имя компьютера, и, при
желании, еще два вспомогательных сервера DNS.

Red Hat L inux СС J 1399 Red Hat So f t u a r e Н а с т р о й к а сети

\ На ст р о й к а T C P / IP \

Вв ед ит е к о н ф и г у р а ц и ю п р о т о к о л а IP для этой машины.


Каждый э л е м е н т д о л ж е н б ы т ь в в е д е н как IP а д р е с в
д е с я т и ч н о - т о ч е ч н о й записи (например 1.2.3.4).

IP а д р е с :
Паска подсети:
Шлюз по у м о л ч а н и ю (IP):
П е р ви чн ый сервер имен (DNS):

а
<T a b > / < A l t - T a b > be twe en el e m e n t s ! <Spaee> sel ec ts ! <F12> next screen

Рис. 2.20. Конфигурация сети в Black Cat Linux


Black Cat Linux 6.02 Foxhound 39

2.2.12. Выбор часового пояса


На этой стадии нужно указать параметры часового пояса, в котором вы находитесь
(рис. 2.21). Можно выбрать любой город из списка (например, Europe/Moscow)
или указать временное смещение от Гринвича (например, Etc/GMT+3). Пункт
меню Системные часы установлены по GMT выбирают для того, чтобы время в сис­
темных часах CMOS хранилось в формате GMT, при этом текущее локальное вре­
мя система будет выставлять при запуске с учетом выбранного часового пояса
и переходов на летнее время. Системы DOS/W indows не умеют работать с време­
нем в таком формате, так что если на данном компьютере установлена одна из этих
систем и именно она будет использоваться большую часть времени, не следует
отмечать этот пункт.
t i m eco nf ig 2.7 - (С) 1999 Bed Hat Softwa re

1 Н ас тр о й к а ч а с о в о г о пояса |-

Ф орм ат с ист е м н ы х ч а с о в :

[*] С и с т ем ны е часы ус та но в п е н ы по GMT

E u r o p e / H inslc
Europe/Monaco
игоре/Иозсои
E u r o p e / O s Ιο tt
E u r o p e / T a r is 1
Europe/Pragfue *

<T ab > / < A l t - T a b > между эл ементами I <Space> выбор ! <F12> спед. экран

Рис. 2.21. Конфигурация часового пояса в Black Cat Linux

2.2.13. Настройка системных сервисов


Еще одна важная стадия инсталляции, предлагаемая только в режиме По выбору, -
определение системных сервисов, которые будут запускаться при загрузке системы:
□ apmd, поддержка управления питанием АРМ;
□ atd, поддержка выполнения заданий, отложенных командой at;
□ cbq, распределение загрузки сети;
□ crond, выполнение программ в заданное время;
□ gpm, поддержка мыши в текстовом режиме;
□ inet, сервис, управляющий большинством входящих Internet-соединений;
□ keytable, поддержка различных раскладок клавиатуры;
□ linuxconf, графическое средство конфигурации системы, уничтожает и пере­
писывает заново многие файлы конфигурации;
□ lpd, спулер печати;
40 Начальная установка дистрибутива

□ netfs, сетевая файловая система;


□ network, базовая поддержка сети;
□ nfs, возможность раздавать локальные каталоги по NFS;
□ pcmcia, необходим для работы с адаптерами PCMCIA;
□ portmap, сервер для передачи номеров портов между различными протоколами;
□ random, более качественный генератор случайных чисел;
□ routed, маршрутизация сетевых пакетов;
□ rstatd, удаленное обслуживание статуса системы;
□ rusersd, удаленное обслуживание пользователей;
□ rwhod, удаленное обслуживание статуса системы;
□ sendmail, почтовый сервер, нужен и для многих локальных программ;
□ sound, поддержка звука;
□ syslog, практически обязательный сервис, ведущий системные журнальные
файлы;
□ tunnels-ірб, утилиты для работы с новой версией ІР-протокола;
□ ypbind, работа с NIS доменами.
Сервисы, выбранные по умолчанию, чаще всего достаточно хорошо подходят для
обычных установок, но linuxconf лучше всего отменить, так как его использование
означает, что вы отказываетесь от самостоятельного редактирования файлов кон­
фигурации.

2.2.14. Настройка принтера


Программа инсталляции Linux Black Cat поддерживает четыре типа подключе­
ния принтера - локальный, удаленный принтер, для доступа к которому исполь­
зуется lpd (обычно на UNIX-системах), удаленный принтер, доступный по SMB
(обычно на W indows-системах), удаленный принтер, доступный по IPX (обычно
HaNetWare-cncTeMax). При любом выборе вам будет предложено указать имя оче­
реди и каталог для спулинга (очереди заданий). Обычно (в случае всего одного
принтера) можно согласиться с предложенными значениями. Затем потребуется
специфицировать доступ к принтеру более конкретно:
□ локальный принтер: порт, к которому подключен принтер, тип принтера, раз­
мер бумаги, разрешение печати;
□ удаленный принтер (по lpd): имя удаленного сервера и имя очереди на нем;
□ удаленный принтер (по SMB): имя SMB-сервера (в SMB не обязательно долж­
но совпадать с именем машины), 1Р-адрес SMB-сервера, имя ресурса, под ко­
торым распределен принтер, имя пользователя, пароль, рабочая группа;
□ удаленный принтер (NetWare): имя сервера печати, имя очереди на нем, имя
пользователя и пароль.

2.2.15. Выбор пароля


Следующий важный шаг - выбор пароля пользователя root, администратора сис­
темы. Обратите внимание, что если вы выбрали русскую раскладку клавиатуры
Black Cat Linux 6.02 Foxhound 41

и до сих пор не вводили никакого текста, вполне возможно, что клавиатура у вас
переключена на ввод русского текста. Нажмите Alt+F2, чтобы переключиться на
другой виртуальный терминал, и попробуйте что-нибудь напечатать. Если соответ­
ствующий английский текст не появляется, переключите клавиатуру (правая Ctrl
для раскладки ru) и, нажав комбинацию клавиш A lt+Fl, вернитесь к исходному
виртуальному экрану для ввода пароля.
После определения пароля можно выбрать схемы шифрования/сокрытия па­
ролей: скрытые пароли (механизм shadow), шифрования методами MD5 или
BSDIcrypt. Кроме того, можно включить NIS - систему совместного использова­
ния компьютерами различных ресурсов локальной сети, в частности списка поль­
зователей.

2.2.16. Конфигурация системного загрузчика LILO


На данном этапе производится конфигурация и установка системного загрузчика
LILO. Первый вопрос - хотите ли вы создать загрузочную дискету (это желатель­
но сделать, особенно если вы устанавливаете Linux впервые). Для установки типа
Рабочая станция или Сервер дальнейшая установка LILO выполняется автома­
тически. Если установлен режим По выбору, можно задать расположение LILO:
либо это будет главная загрузочная запись (Master Boot Record), либо Первый
сектор загрузочного раздела. Второе имеет смысл, если у вас уже есть мульти-
системный загрузчик в MBR; в этом случае первое приведет к тому, что LILO ста­
нет главным системным загрузчиком.

2.2.17. Конфигурация X Window


Если были выбраны пакеты, содержащ ие X Window, вам придется пройти
последнюю стадию настройки Black Cat Linux - Xconfigurator. Первый вопрос -
название используемой видеокарты. Если вашей видеокарты в списке нет, мож­
но попробовать пункт Неуказанная карта. В этом случае потребуется выбрать
Х-сервер, который вы будете использовать. Затем можно выбрать тип монитора.
Если вашего монитора нет в списке, следует указать тип Специфичный и затем вве­
сти границы поддерживаемых частот горизонтальной и вертикальной разверт­
ки (эти величины можно найти в описании монитора). Затем инсталлятор по­
пытается определить параметры видеокарты автоматически. Если это не удастся,
возмож но, придется указать объем видеопам яти, тип генератора частоты
и список желаемых видеорежимов (рис. 2.22) самостоятельно. При полной руч­
ной установке всех параметров и отсутствии соответствующей технической до­
кументации к монитору или видеокарте имеет смысл добавить режим с низким
разрешением, например 800x600, который поддерживается подавляющим боль­
шинством современных мониторов. Это увеличивает шанс на получение рабо­
тоспособной системы, а переключиться в наиболее удобный для работы режим
можно и в дальнейшем.
При установке класса Рабочая станция по умолчанию в качестве графической
среды устанавливается GNOME (рис. 2.23).
42 Начальная установка дистрибутива

Xc o n f i g u r a t o r 4.2.3 - ( С ) 1999 Red Hat So f t u a r e and ot he rs


-----------------------------1 Выбе ри те в и д е о р е ш и м ы I---------------------------

Выбе ри те видеореним, кот ор ый вы х о тит е исп ол ьз ов ать . Режим 8 бит


по зв о л я е т иметь 256 цветов, 16 бит - 64О0О, 24 бита - 'true color'.
Чем больше цветов, тем м е нь ше может быть п р о и з в о д и т е п ь н о с т ь г р а ф и к и .
Бы д олж ны выб ра ть хотя бы один в и д е о ре жим из с п и с к а .

8 бит 16 бит 24 бита

<T a b > / < A l t - T a b > be tue en e l e n en ts I O p a c e > se le cts I <F12> next scre en

Рис. 2.22. Настройка X Window в Black Cat Linux

ш Справочный навигатор Gnome ШЩ


Шайл Окно Свойства Справка

< [> Ф о
Назад Вперед Обновить Индекс История Закладки Справка

Место: i:users-guide -J
ww.redhat,ttin _\
Рукпкпдгткп пппьяпнятяпя GNOMF
/usr □us
David С. Mason
Файл Правка Макет Команды Справка

David A. W heeler □ D CJi-


Red Hat Support < Δ > ф й оа D l- m
С о р и г· i g h t © : Назад Вверх Вперед Перегр. Дом Пикт. Крат. Полн. Спец.

Место: J j usr

ψ Cii mnt
Red H« Errata
Со держание І Cj ргос
1* Введение \-ё ) root %
ШР
Ч т о T flK O e
Об этом рч
Ш- CJ sbin в K11R6 bin

К р а т к и й о б
ф- CD tmp
І_іпш Documents Краткий об
Д испетчеры Ш C J И11Re
cg i іπ Я і1С, 4—L- doc
D д исп етче Cj bin
ф СиеНА л и сп CD cgi-bin
V П а н е л ь GNO CD diet %
Введение
GNOME Web Sits Щ Cj doc etc g-ames І 48 &-L і ми
Основы 1 і ЬсБ
φ Cj arc
Г ЛЙВНОЄ

0 К Q КГ C J games
[+1 П i/IQR_ limiu _ likr-E /Т
Показы вать все файлы
CD-ROM0

4 Справочный навигатор Gnome Б тр Май 02

/usr 05:40

Рис. 2.23. Внешний вид Black Cat Linux


KSI Linux 2.0 Nostromo 43

2.3. KSI Linux 2.0 Nostromo


Этот дистрибутив во многом похож на Black Cat, и он устанавливается по сход­
ной схеме. Фактически в обоих случаях используются одинаковые программы для
установки, отличающиеся только качеством перевода на русский язык и некото­
рыми дополнительными возможностями выбора.

2.3.1. Начальная загрузка


Образ загрузочной дискеты в KSI Linux называется boot_rus. img и лежит в ката­
логе /images, программа RAWRITE. EXE (а также FIPS. EXE) - в /dosutils. После за­
грузки с CD или с дискеты, созданной командой
С:> RAWRITE -f boot_rus.img -d A:
на экране появится приглашение загрузчика (рис. 2.24).
После того как загрузится ядро, начинается собственно процесс инсталля­
ции. В первую очередь выводится приветствие и предлагается указать язы к
установки. На самом деле ваш выбор определяет не только язык, на котором
проходит установка, но и, в большинстве случаев, язык, на котором после ин­
сталляции системы будут общаться с вами все программы. Так что если вам
нужен русифицированны й Linux, выбирайте опцию Русский, даже если вы
привыкли к англоязычной процедуре установки.

Добро по жал ов ат ь в KSI Linux 2 . О!

о Для ус та н о в к и или о б н о в л е н н я си ст ем ы с КЗ I Linux 1.2,


Bed Hat Linux 4.1 или п о з ж е , наж ми те < Е Н Т Е В > .

о Для р а з ре ше ни я ра сш и р е н н о г о режима в в е д и т е : expert <EMTEFE>.


Для более д ета л ь н о й и н ф о р м а ц и и о р а с ш и р е н н о м р еж им е на жм ите < F 3 > .

о Этот диск больше не монет быть и с п о л ь з о в а н как ремонтный. Для более


д е т а л ь н о й и н ф о р м а ц и и о новых р емо н т н ы х дисках наж мит е < F 4 > .

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


ф у н к ц и о н а л ь н ы е клавиши.

[Fi-Главн . ] [F 2 — □ бщ. _ ] [F3-Pacui.] [Г4-Ремонт] [FS-Ки кстарт] [Fb-Ядро]


boot: _

Рис. 2.24. Приглашение загрузчика KSI Linux

2.3.2. Выбор раскладки клавиатуры


Следующий этап конфигурации - выбор раскладки клавиатуры (рис. 2.25).
Вместе с данным дистрибутивом Linux поставляются сразу несколько вариан­
тов раскладок клавиатур для русского языка. Не бойтесь выбрать здесь что-то не
44 Начальная установка дистрибутива

то, раскладку можно будет изменить позже - отредактировав файл конфигурации


/etc/sysconfig/keytable или при помощи программы linuxconf, которая отвечает
за изменение конфигурации в работающей системе Red Hat. Может оказаться
удобным даже выбрать сначала раскладку US (СШ А), чтобы, например, не ввес­
ти случайно пароль администратора по-русски.

Добра пож ало ва ть в КЗ I Linux Welc om e to KSI Linux

-----------1 Тип к л а в и а т у р ы |-

Какая у вас кл а в и а т у р а ?

r u - c p 1251

rui
ru2
russi an
ua
uk
us

<T a b > / < A l t - T a b > между эл ем ентами i <Пробел> выбор І <F12> сл ед у ю щ и й экран

Рис. 2.25. Выбор росклодки клавиатуры в KSI Linux

2.3.3. Выбор носителя


Следующий ш аг- выбор носителя, на котором находится дистрибутив (рис. 2.26).
Если вы выполняете установку с CD или из сети при помощи протокола
NFS, достаточно отметить пункт Local CDROM или NFS Image. Выбор двух
других вариантов приведет к тому, что система потребует вторую дискету, соз­
данную из образа supp. img. Соответственно при выборе установки с жесткого
диска (Hard drive) будьте готовы указать диск (в мнемонике Linux, например,
/dev/hda 1 или /dev/hdc3) и каталог, в котором находится дистрибутив (каталог
KSI). Опция FTP позволяет установить дистрибутив с удаленного F T P -серве-
ра. При установке из сети инсталлятор запросит тип и конфигурацию сетевой
карты, IP -адрес вашего компьютера, маску сети, адрес шлюза, адрес DNS-сер­
вера - все то, что требуется для настройки доступа в Internet. После этого по­
требуется ввести необходимую информацию (адрес и каталог) о F T P - или
N FS -сервере.

2.3.4. Разбиение жесткого диска


После выбора носителя, содержащего дистрибутив, процедура инсталляции пере­
ходит во вторую стадию. Следующий вопрос, который задает программа, - желаете
KSI Linux 2.0 Nostromo 45

Добро п ож ал ова ть в КЗ I Linux We lcome to KSI Linux

-------- 1 Ме т о д ус та н о в к и I---------

На каком носи те пе ра с п о л о ж е н ы
п а к е т ы , подлежащие установке?

HFS image
Hard driue
FTP

<T a b > / < A l t - T a b > между эл ем ентами I <Пробел> выбор I <F12> сл ед у ю щ и й экран

Рис. 2.26. Выбор типа носителя дистрибутива KSI Linux

вы обновить уже существующую систему типа Red H at или установить ее


с нуля. Если вы укажете режим обновления, программа пропустит этап разбиения
диска и сразу перейдет к определению программных пакетов для инсталляции.
При выборе полной установки в предыдущем меню вам будет предложено оп­
ределить класс установки - Сервер, Рабочая станция или Собственный. В пер­
вых двух случаях инсталлятор полностью переформатирует вам жесткий диск,
либо выделив все его пространство под Linux (если отмечен класс установки
Сервер), либо оставив нетронутыми найденные разделы W indows (для класса
установки Рабочая станция). Обычно выбирают собственный класс установ­
ки, который предоставляет наибольшую гибкость. Затем инсталлятор спраш и­
вает, используются ли у вас устройства SCSI; это нужно для того, чтобы на сле­
дующем шаге были доступны диски, подключенные по SC SI-интерфейсу. При
утвердительном ответе вам будет предложено указать тип адаптера из списка
поддерживаемых.
В случае выбора класса Рабочая станция и Сервер инсталлятор сразу перехо­
дит к установке пакетов. При установке класса Собственный вам придется опре­
делить программы для редактирования таблиц разделов жестких дисков. Red H at
предлагает помимо классического fdisk более простую и понятную для начина­
ющих программу DiskDruid. Выбирать fdisk следует, только если вы хорошо зна­
ете, как устроена таблица разделов, какую роль играет каждое ее поле и т.д. На
рис. 2.27 показан интерфейс программы Disk Druid в дистрибутиве KSI Linux.
Программа DiskDruid показывает список разделов (в терминологии Linux -
hdal, hda2 и т.д.) в верхней части экрана и список дисков - в средней. В описа­
нии раздела первое поле, которое будет сначала пустым, - точка монтирования.
46 Начальная установка дистрибутива

K S I Linux ( С ) 13 33 Sergue i Kouboucli i ne Н а с тро йк а ф айловых систем


\ Текущие р а з д е л ы диска |-
Точка м о н т и ро ва ния Чстр-во Запрошено Ре апьно Тип
/ hdal in 466Н Linux natiue
/dosc hda5 500И 500М DOS 16-bit >=32
hda6 32М 32М Linux suap

П а р аме тр ы дисков
Д иск Г е о м . [C/H/S] Всего Неп . Св об о д н о
lida [ 1015/ 32/63] зззп зззп ои [ttitttitttflttfltttt]

Добавить Правка Удали ть

F l -Доб. F Z -Доб. MFS Р З- Пр а в к а Г 4 - У д а л и т ь F5-Ctipoc F12-0k и 1.00

Рис. 2.27. Разбиение диска в KSI Linux

В UNIX все файловые системы объединяются в единое дерево каталогов и для каж­
дого из разделов, к которым будет возможен доступ из Linux, нужно указать ката­
лог, под которым раздел будет включен в систему. Одному разделу типа Linux
Native обязательно надо указать в качестве точки монтирования корневой каталог.
Тип и размер раздела можно указать при его создании и редактировании, но не за­
бывайте, что любое редактирование раздела (кроме определения точки монтирова­
ния) уничтожит все данные. Выбор пункта Расширяемый в диалоговом окне созда­
ния/редактирования раздела приведет к тому, что данный раздел заполнит собой все
свободное пространство диска.
Если у вас был один раздел с W indows (hdal) и вы уменьшили его при помо­
щи FIPS или P artition Magic, то надо создать два новых раздела и определить
точку монтирования третьего. Перечень разделов, которые появятся в этом
случае:
□ небольшой раздел типа Linux Swap, который будет использоваться системой
для подкачки. Размер его обычно вдвое превышает объем оперативной памя­
ти компьютера. При необходимости потом, уже в работающей системе, мож­
но увеличить объем виртуальной памяти, подключив дополнительные фай­
лы подкачки, так что не делайте его слишком большим только потому, что
в скором времени планируется увеличить объем оперативной памяти. Указа­
ние точки монтирования для этого раздела не требуется;
□ раздел типа Linux Native. Здесь будет располагаться основная файловая сис­
тема Linux. Точка монтирования для этого раздела - /. На этом этапе можно
создать несколько разделов типа Linux Native, например на нескольких жест­
ких дисках, и подключить их как /us г, /var, /tmp и т.п. (см. раздел 3.3.4), но
KSI Linux 2.0 Nostromo 47

при установке Linux в первый раз лучше не усложнять и без того непростую
процедуру инсталляции системы;
□ существовавший ранее раздел DOS/W indows можно подключить к системе,
выбрав для него точку монтирования (в нашем примере /dosc), хотя идеоло­
гически более правильно выбрать /mnt/dosc или другой подкаталог в /mnt.
После того как разделы созданы и точки монтирования назначены, можно вый­
ти из программы DiskDruid и продолжить процесс установки Linux. Следующий
этап - выбор раздела подкачки (рис. 2.28).
KSI Linux (С) 1333 Sercjuei K o u b o u c h ine Н а с тро йк а свопа

--------------------------- 1 Ак т и в н ы й своп I-----------------------------

Какой раздел бы хо ти те и с п о л ь з о в а т ь п о д с в о п ? Это у н и ч то жи т


всю и н ф о р м а ц и ю j находящуюся: в этом разделе.

Ыст р- во Р а з ме р С1с)
[ ] /deu^hdab 33232

[ ] П ро в е р к а н аличия сбойных блоков

< Т а Ъ > / < А 1t-Tab > между элементами I <Пробел> выбор I <F12> с л е ду ющ ий экран

Рис. 2.28. Выбор и форматирование раздела подкачки

Если вы создали только один раздел типа Linux Swap, именно он и будет пред­
ложен для использования в качестве раздела подкачки. Нажатие кнопки Ok не­
медленно приведет к его форматированию, так что на нем не должно оставаться
никаких данных. Проверять на плохие секторы разделы на современных SCSI
и E-IDE дисках практически не имеет смысла: ошибочные блоки обрабатываются
и автоматически заменяются на аппаратном уровне. После форматирования разде­
ла подкачки программа предложит отформатировать все разделы типа Linux Native,
для которых были определены точки монтирования. Это имеет смысл делать для тех
разделов, которые были созданы или изменены в процессе разбиения диска.

2.3.5. Выбор и установка пакетов


После разбиения диска процедура установки в классе Собственный переходит
к основной стадии - выбору пакетов для установки. KSI Linux, как и другие
UNIX-системы, традиционно поставляется в виде большого набора пакетов
программ. Часть их можно выбрать и установить в процессе инсталляции сис­
темы, но не нужно бояться поставить лишнее или пропустить что-то нужное:
48 Начальная установка дистрибутива

после того как система установлена, можно свободно удалять пакеты или до­
бавлять новые. Система управления пакетами в Red H at Linux называется RPM
и подробно рассматривается в разделе 4.4, а на этом этапе надо только решить,
какие из них установить с самого начала. Первым делом инсталлятор предло­
жит список компонентов системы, каждый из которых включает в себя большое
количество пакетов (рис. 2.29):
□ Printer Support (поддержка печати);
□ X Window System (система X Window);
□ KDE desktop (интегрированная графическая среда KDE);
□ M ail/W W W /N ew s Tools (средства работы с почтой, Internet, новостями);
□ DOS/W indows Connectivity (средства работы с DOS и Windows);
□ File Managers (файловые менеджеры);
□ Graphics Manipulation (средства работы с графикой);
□ X Games (графические игры и развлечения);
□ Console Games (текстовые игры и развлечения);
□ X multimedia support (графические мультимедийные приложения);
□ Console Multimedia (текстовые мультимедийные приложения);
□ Networked W orkstation (сетевая рабочая станция);
□ Dialup W orkstation (рабочая станция, подключаемая по протоколу dialup);
□ News Server (сервер новостей);
□ SMB (Samba) Connectivity (поддержка SMB, сетевых ресурсов Windows);
□ IPX /N etW are(tm ) Connectivity (поддержка IPX, сетевых ресурсов NetWare);
□ Anonymous FTP Server (F T P -сервер с анонимным входом);
□ Web Server (сервер W W W );
□ DNS Name Server (сервер имен DNS);
□ MySQL (SQL) Server (система управления базами данных MySQL);
□ Network M anagement W orkstation (рабочая станция по управлению сетью);
□ ТеХ Document Formatting (система подготовки текстов к печати ТеХ);
□ Emacs (редактор и среда разработки Emacs);
□ Emacs with X windows (графическая версия Emacs);
□ С Development (средства разработки на языке С);
□ Development Libraries (библиотеки для разработки);
□ C++ Development (средства разработки на языке C++);
□ X Development (средства разработки для X Window);
□ Extra Documentation (дополнительная документация);
□ Все (все пакеты).
Этот список, возможно, удобен для быстрой установки системы, но если отме­
тить опцию Выбор отдельных пакетов, доступно будет воспользоваться более ин­
тересным режимом (рис. 2.30). При работе с компонентами обязательно следует
выбрать пункты С Development и Kernel Development, так как они потребуются
для изменения конфигурации ядра системы.
Пакеты собраны в группы и в режиме выбора отдельных пакетов; каждую груп­
пу можно редактировать, добавляя или исключая те или иные пакеты. С помощью
KSI Linux 2.0 Nostromo 49

KSI Linux (C) 1333 Serguei Kouboucliine Выбор па кетов для у с т ан ов ки


------ 1 У с т а н а в л и в а т ь к о м п он ент ы |--------

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

[ 1_ Prin te r Su pp or t Я
l>] X Uindou System і
[ ] KDE des kt op і
[■* І Ma і 1/UUU/Heus Too Is jj
[ ID O S / U i n d o u s C o n n e c t i u i t y 1
[«1 File Hanaijfers 1
[ 1 Grap hi cs M a n i p u l a t i o n _____________I

[*] Выбор от дел ьн ых пакетов

<T a b > / < A l t - T a b > между эл ем ентами I <Пробел> выбор I <F12> сл ед у ю щ и й экран

Рис. 2.29. Выбор компонентов системы

KSI L іnux С О 1333 Sergue i Kouboucliine Выбор паке то в для у с т ан ов ки


------------- 1 Выбор группы j------------

Г руп па для прос мо т -| Выбор п ак ет ов |-----------

11/KDE Какие па ---------------------- 1 k deb as e |-


X I l/XFree86
Х 1 1/ Ба за Пакет : k d e b a s e - l .1.K S 12-2
Х11/Бибпиотек Размер : 10580152
X I1 /Ц ац ки
X I 1/Игры Базов ый к о мпл ек т К Desktop Е л и i r o n n e n t .

Б комп ле кт в к л ю ч е н ы :

Е Ра зм ер в kaud io
kcontro1
: аудио-сервер
: пане ль у пра вл ен ия

<F1> пока же т вам размер и о п и са ни е пак ет а

Рис. 2.30. Выбор отдельных пакетов в KSI Linux

клавиши F1 вызывается краткое описание каждого из них внутри группы. И, что


самое важное, на экран постоянно выводится суммарный размер всех выбранных
в настоящий момент пакетов. Если вы знакомитесь с Linux впервые и у вас есть
время, очень полезно будет изучить описания всех пакетов во всех группах. Это
позволит увидеть, что в действительности представляет собой ваша система и ка­
кие компоненты в нее входят. Если вы не знаете точно, нужен ли вам тот или иной
50 Начальная установка дистрибутива

пакет, лучше его установить (разумеется, если хватает места на диске). Не забудь­
те установить все, что относится к программированию и разработке на языке С, -
без этого нельзя будет изменить конфигурацию ядра системы или откомпилиро­
вать новую программу.
Если какие-то из отмеченных пакетов требуют для своей установки другие на­
боры программ, инсталлятор укажет на это и предложит автоматически устано­
вить все, что требуется, или вернуться к выбору отдельных пакетов. Обычно воз­
вращаться не нужно, кроме ситуаций, когда на жестком диске было оставлено
совсем мало места, но последнее в любом случае плохо, так как для оптимальной
работы на файловой системе должно быть около десяти процентов свободного
места. Установка класса Рабочая станция занимает 330 Мб, Сервер - 256 Мб (но
потребуется более 1 Гб свободного места), все пакеты - 858 Мб.

2.3.6. Начальная конфигурация


После установки системы процесс инсталляции автоматически вызывает про­
граммы mouseconf, xconfigurator, netconfig, tim econfig и ntsysv для настройки
мыши, графической системы X Window, сети, локального времени и процес­
сов, запускаемых при старте. Все эти программы доступны из настроенной сис­
темы как под своими именами, так и из общей программы конфигурации linuxconf,
так что все, что вы сделаете сейчас, можно будет при необходимости откорректиро­
вать позже.
Mouseconf (рис. 2.31) предлагает указать тип мыши. Слова serial и PS/2 обо­
значают мыши, подключенные к последовательным (СОМ1 - COM 4) и PS/2 пор­
там соответственно. Пункт Эмулировать 3 кнопки следует выбирать, если
у вас двухкнопочная мышь. Многие трехкнопочные мыши используют протоколы

mouseconf ig 3 . 2 . 0 .K S 12 - С О 1990 Red Hat S oft u a r e


------------ 1 К о н ф и г у р а ц и я мыши |-

Какая у вас мышь?

Нет мыши
ALPS G l i d e P o i n t (PS/2)
ASCII HieM ou se Cser іa 1)
ASCII ПіеПоідзе CPS/2i
ATI Bus House
С т а н д а р т н а я мышь Cser іa 1)
С т а н д а р т н а я 3-х к н о п о ч н а я мышь (serial)
та нд артная мышь СPS/2)

I ] Э м у л и р о в а т ь 3 кноп ки?

<Ta b> /< A l t - T a b > между эл ем ентами Ї <Spaee> выбор Ї <F1Z> с ле д у ю щ и й экран

Рис. 2.31. Конфигурация мыши в KSI Linux


KSI Linux 2.0 Nostromo 51

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


и трехкнопочных в UNIX. Не бойтесь ошибиться здесь, тип мыши всегда можно
будет изменить позже. После выбора типа (если мышь относится к типу serial и авто­
матическое определение не пройдет) mouseconf может запросить номер порта.
В этом случае их список будет показан одновременно в формате UNIX (/dev/ttySO -
/dev/ttyS3) и DOS (СО М І - COM4).
Следующая программа, xconfigurator, автоматически определяет тип видеокар­
ты и устанавливает соответствующий Х-сервер. Если автоопределение не срабо­
тало, будет предложен список видеокарт, из которых можно подобрать замену (на­
пример, иногда приходится выбирать предыдущую версию видеокарты, если
данный дистрибутив был создан до выхода той, что у вас установлена).
Затем xconfigurator предлагает указать тип монитора (рис. 2.32). Если вашей
модели в списке нет, выбирайте пункт Неизвестный и просмотрите документа­
цию на свой монитор.
X c o n f i g u r a t o r 3. 83 . K S I 2 - ( С Ї 1Э98 Bed Hat Sof tw ar e and others...

------------------------- 1 Н аст р о й к а м о н и т о р а |--------------------------

Какой мони то р вы и с п о п ь з у е т е ? Еспи х о ти те задать со б с т в е н н ы е


час то ты р аз ве р т о к вашего мон ит ор а j в ы б е р и т е ''Неизвестный".

АОС-15
Acer A c e r и ieu 11D
Acer Acer ui eu 33D/33D L
Acer A c e r и ieu 34T/34 TL
Ap ol lo 12 8 Q x l 0 2 4 - 6 8 H z
Ap ol lo 12 8 0 x l 0 2 4 - 7 0 H z

<T a b > / < A l t - T a b } между эл ем ентами ! <Space> выбор ! <F12> с лед у ю щ и й экран

Рис. 2.32. Выбор типа монитора

Самый важный параметр в настройке монитора - горизонтальная развертка


(рис. 2.33). Именно этим параметром ограничиваются его возможности. Попыт­
ка включить режим, выходящ ий за возможности горизонтальной развертки,
приводит к сбою синхронизации и может даже повредить аппаратную часть не­
которых мониторов. Следующий параметр, вертикальная развертка (рис. 2.34),
не столь важен, но тоже должен быть установлен в соответствии с документа­
цией на монитор.
После этой процедуры xconfigurator запустит Х-сервер в режиме тестирова­
ния (X -probeonly), чтобы определить объем установленной на видеокарте памя­
ти и тип используемого тактового генератора, а затем по умолчанию предложит
52 Начальная установка дистрибутива

X c o n f i g u r a t o r 3 .8 9. KSI Z - (С) 1338 fled Hat Software and others...


--------------1 Н аст р о й к а н е и з в е с т н о г о м о н и т о р а (продолжение) |—

Вы до лж ны у казать д и а па зо н ча стот г ор и з о н т а л ь н о й ра зв ерт ки вашего


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

В ы с о к о ч а с т о т н ы й S U G A ., 1024x768 Р 70 Hz
Mom itorj уме ющи й 1280x 10 24 0 60 Hz
з
Поп itorj уме ющи й 1280x 10 24 Q 76 Hz

<T a b > / < A l t - T a b > между зл ем ентами І <Space> выбор І <F12> с ле ду ю щ и й экран

Рис. 2.33. Горизонтальная развертка монитора

Xconf igurator 3 . 8 9 . КЗ 12 - (С) 1Э98 Bed Hat Soft wa re and o t h e r s ,

--------- 1 Н аст р о й к а н е и з в е с т н о г о м о н и т о р а (продолжение) |---------

Бы дол жн ы ук азать д и а паз он ч астот в е р т и к а л ь н о й р а з в ерт ки вашего


монитора. Вы монете как выбрать один из п р е д п аг аем ых ниже
диапазонов, ко торый с о о т в е т с т в у е т ст ан да р т н ы м типам мониторов,
так и задать свой собственный. Для i n t e r І ас еЛ- ремимов имеет
значение бОлыиая цифра (например 87 Hzj а не 43 H z ).

50-70
50-90
-ТіДЦІі]
40-1 50

<T ab > / < A l t - T a b > между элементами I <Space> выбор I <F12> с л е д ую щи й экран

Рис. 2.34. Вертикальная развертка монитора

максимально возможный видеорежим. От этого предложения можно отказаться,


тогда появится список всех допустимых режимов, отсортированный по глубине
цвета (8, 16 и 32 бит на пиксел). Имеет смысл отметить несколько режимов с раз­
ным разрешением и одной глубиной цвета. В таком случае вы сможете переклю­
чаться между этими режимами в системе X Window одновременным нажатием
клавиш Ctrl+A lt++ или C trl+A lt+—.
KSI Linux 2.0 Nostromo 53

После завершения конфигурации Х-сервера задается вопрос о том, собираетесь


ли вы конфигурировать доступ к локальной сети (не dialup); при утвердительном
ответе запускается netconfig. Это стандартный вариант конфигурации сети, в ко­
тором нужно задать модель и конфигурацию сетевой карты, ваш ІР-адрес, маску
подсети, адрес шлюза и адрес основного DNS-сервера. В случае установки систе­
мы через FTP (см. раздел 2.3.3) сначала также вызывается netconfig.
Затем запускается timeconfig - программа, определяющая временную зону
и правила перехода на летнее время (рис. 2.35).
t inecouf itf 2 . 5 . K S I 2 - (С) 1998 Red Hat So ftuare

1 Конфигурация: в ре м е н н ы х зон |-

Фо рм ат м а ши нно го времени:

[*] А п п а р а т н ы е часы идут по Гри нвичу

E u r o p e / М а Ita
E u r o p e /И insfc
Europe/Monaco
urope/Moscou
Europe/Oslo
E u r o p e / P a r is


<T ab > / < A l t - T a b > между элементами I <Space> выбор I <F12> с л е д ую щи й экран

Рис. 2.35. Конфигурация часового пояса

Московское время задается опцией Europe/Moscow. Кроме того, здесь можно ука­
зать, будут ли аппаратные часы компьютера показывать местное время или гринвич­
ское (GMT). В первом случае Windows или DOS выводит на экран гринвичское вре­
мя вместо местного, что может быть неудобным, если вы собираетесь работать в этих
системах достаточно долго. Во втором случае Linux не будет выполнять переходы на
летнее время автоматически. В общем, устанавливать аппаратные часы в режим GMT
имеет смысл для системы, в которой большую часть времени работает Linux, а пере­
водить на местное время - если ожидается постоянная работа в Windows.
Следующий шаг конфигурации - ntsysv; здесь предлагается выбрать програм­
мы-демоны, запускающиеся при старте системы и работающие постоянно.
Этот шаг выполняется только при установке класса Собственный. Наиболее по­
лезными демонами являются:
atd Демон, запускающий программы в назначенное время (в UNIX мож­
но запустить любую программу, указав дату и время командой at).
Можно не загружать этот демон, если вы не собираетесь пользовать­
ся командой at.
54 Начальная установка дистрибутива

crond Демон, запускающий программы периодически, например раз в сут­


ки или раз в неделю. Его обычно используют для периодической ар­
хивации системных журнальных файлов, обновления базы данных
команды locate и других важных целей. Лучше оставить его в работе,
gpm Поддержка мыши в текстовой консоли, включающая в первую оче­
редь cut-and-paste, но также и дополнительные возможности вроде
освобождения зависшей клавиатуры или перезагрузки при помощи
специальной комбинации щелчков. Можно не загружать gpm, если вы
никогда не собираетесь выходить из X Window,
inetd Основной In tern et-демон, вызывающий программы, обслуживаю­
щие подавляющее большинство запросов - telnet, rlogin, ftp и т.д.
Его можно опустить, если вы не подключены к сети,
kerneld Многие элементы ядра и драйверы Linux в дистрибутиве Red H at
выполнены в виде отдельных модулей, и kerneld загружает их в па­
мять как только появляется необходимость. Загружать его нужно
обязательно, без него можно работать лишь в том случае, если вы
перекомпилируете ядро, включив в него все элементы кроме редко
используемых, которые придется загружать вручную,
keytable Это не демон, а команды, которые вызываются при загрузке систе­
мы, чтобы переключить клавиатуру на тот вариант русской расклад­
ки, который вы выбрали в самом начале. Сменить раскладку можно
будет в работающей системе командой kbdconfig.
linuxconf Этот пункт надо оставить отмеченным, если вы собираетесь пользо­
ваться программой linuxconf, которая позволяет настраивать практи­
чески все параметры Linux из системы удобных графических меню,
lpd Демон печати, управляющий посылкой заданий на принтер,
named DNS-сервер. Если вы хотите иметь собственный кэширующий DNS-
сервер, не зависящий от провайдера, можно установить named, но для
этого придется еще и поработать над его файлами конфигурации,
network Это не демон, а набор команд, выполняемый при запуске, для конфи­
гурации сетевых интерфейсов. Загружается, если вы подключены
к локальной сети.
sendmail Демон, отвечающий за доставку почты. Нужен, даже если вы не под­
ключены к какой-либо сети, так как некоторые программы посыла­
ют письма с результатами работы или сообщения об ошибках адми­
нистратору.
syslogd Это демон, поддерживающий ведение системных журнальных фай­
лов, в которые всевозможные программы, начиная с самого ядра
Linux, записывают различные сообщения. Должен быть обязательно.
И наконец, последняя операция по начальной конфигурации системы - настрой­
ка принтера. Как и все действия по конфигурации, ее можно выполнить позже. Пер­
вый вопрос здесь - тип принтера: Локальный, Удаленный lpd или удаленный
LAN manager. Во втором случае надо будет позже указать IP -адрес удаленного
KSI Linux 2.0 Nostromo 55

компьютера, на котором есть lpd и имя очереди на печать, в третьем - 1Р-адрес,


имя принтера, имя пользователя и пароль. Так или иначе первым вопросом бу­
дет имя очереди и каталог на локальном компьютере - 1р и /var/spool/lpd/lp/
Если у вас всего один принтер, можно оставить предложенный вариант. При кон­
фигурации локального притера указывается его тип (рис. 2.36), формат бумаги
и разрешение печати.

KS I L іmix (С ) 1333 Sergue i K o u bo uc h ine Н а с тр ой ка принтера


------------------ 1 Нас тройка п р и н т е р а |-

Какой у вас принтер?

HF D e s k J e t / D e s k J e t Plus
HP L ase r J e t
HP L a s e r J e t 4 - d it he r e d
P La s e r J e t 4/5/6 seri es
HP Las e r J e t III* uith Delta Ftou Co m p r e s s i o n
HP Las e r J e t III* uith d upl ex c a p a b i l i t y
HP Las e r J e t II d / IIр / III* uith TIFF c om press 1 on
HP Las e r J e t Plus
HP Pa intJet
HP Pa intJet XL

<Fi> даст вам и н ф о р м а ц и ю о к о н к р е т н о м типе при нтера

Рис. 2.36. Конфигурация принтера

2.3.7. Пароль администратора


После начальной конфигурации системы инсталлятор предлагает задать пароль
пользователя root - администратора системы. Обратите внимание на то, что кла­
виатура должна находиться в режиме ввода латиницы. Для проверки текущего
режима набора текста можно переключиться в соседний виртуальный терминал
комбинацией клавиш Alt+F2. Возвращение к вводу пароля осуществляется нажа­
тием клавиш A lt+Fl.
2.3.8. Системный загрузчик
Заклю чительная стадия установки системы - конф игурация системного за ­
грузчика LILO. Сначала инсталлятор предлагает создать загрузочный диск; это
имеет смысл сделать, даже если он вам больше не понадобится. Затем при уста­
новке класса Собственный дается возможность выбрать расположение загруз­
чика: это может быть главная загрузочная запись или первый сектор загру­
зочного раздела. В первом случае LILO используется для загрузки любой из
существующих на диске операционных систем, во втором - уже присутству­
ющий в главной загрузочной записи загрузчик другой операционной системы вы­
зывает LILO. Если Linux устанавливается впервые в систему, где до этого работала
56 Начальная установка дистрибутива

Рис. 2.37. Установленный KSI Linux 2.0

только DOS или Windows, наиболее подходящим вариантом является располо­


жение загрузчика в главной загрузочной записи.
Внешний вид KSI Linux 2.0, установленного с использованием KDE, показан
на рис. 2.37.

2.4. Mandrake Linux 7.1 Hydrogen


Начиная с версии 7.0 дистрибутив M andrake использует собственный (а не за­
имствованный из Red H at) инсталлятор. На настоящий момент это один из са­
мых совершенных инсталляторов. Для его запуска можно воспользоваться одним
из следующих способов:
□ загрузиться с дистрибутивного CD;
□ загрузить MS DOS, перейти в каталог \dosutils\autoboot на дистрибутивном
CD и запустить на выполнение файл autoboot.bat. Этот метод не будет рабо­
тать из D O S-окна Windows;
□ создать загрузочную дискету из образа \im ages\cdrom.inig на дистрибутив­
ном CD. Под Windows это можно осуществить при помощи программы
raw ritein в каталоге \dosutils на CD. В поле Image File (файл-образ) надо
будет выбрать D:\images\cdrom.img, если D: - название устройства, с кото­
рого запускается CD, в поле Floppy Drive (дисковод) - выбрать А; после
Mandrake Linux 7.1 Hydrogen 57

этого поместить в дисковод пустую отформатированную дискету и нажать на


кнопку Write. После этого надо загрузить компьютер с этой дискеты.
Если планируется загрузка не с CD, а с другого носителя, придется создать за­
грузочную дискету: при установке с жесткого диска - из образа h d .img, при уста­
новке по FTP, NFS или H TTP - из образа network, img, при установке с PCMCIA -
устройства - из pcmcia. img. В любом случае на экран будет выведено текстовое
сообщение, показанное на рис. 2.38.

U g Ic o m g to L im ux-Mandrake Cooker !

о Press <F1> for help.


о Press <Enter> to install or u pgrade a s y s t e M r u n ni ng Li n u x - H a n d r a k e .

boot :

Рис. 2.38. Первичное приглашение загрузчика M andrake Linux

2.4.1. Графический загрузчик


При установке с CD сразу после нажатия Enter загружается ядро, инициализиру­
ется CD-ROM и запускается графическая процедура инсталляции. В других слу­
чаях потребуется указать путь к дистрибутиву на жестком диске или сетевые на­
стройки и адрес FTP, NFS или H T T P -сервера, аналогично установке Red Hat.
Первое действие после обнаружения дистрибутива и запуска графического ин­
терфейса - выбор языка, на котором пройдет инсталляция и на который затем
будет настроена сама система (рис. 2.39).

2.4.2. Класс установки


Выберем русский язык. Следующая стадия - выбор класса установки. Вам будет
предложено три варианта: Рекомендуется, Настроено, Эксперт. Первый пункт
предназначен для тех, кто никогда ранее не устанавливал Linux. Все, что можно
сделать автоматически, будет выполнено незаметно для пользователя, включая та­
кие вещи, как изменение размера раздела с Windows (без потери данных). Пункт
58 Начальная установка дистрибутива

choose your language

i Limtx M andrake In s ta lla tio n


^ р selectinslallaticinclass Please, choose a language to use

^ р hlaird d riv e d etection

choose your keyboard

^ P seiup і I es vstiems

^ ' Format partitions

^ P install system

j p con-figuretimezone

Рис. 2.39. Выбор языка инсталляции M andrake Linux

Эксперт, наоборот, даст возможность управлять процессом инсталляции в пол­


ной мере. После выбора пунктов Настроено и Эксперт вам будет предложено ука­
зать применение системы: Нормально, Разработчик, Сервер. Это подразумевает
систему общего назначения, систему для разработчика и сетевой сервер соответ­
ственно. Рекомендуется выбирать класс Эксперт и назначение Разработчик, даже
если вы устанавливаете систему впервые. При этом вы по-прежнему сможете вы­
полнять многие операции в автоматическом режиме и увидите все альтернатив­
ные возможности, из которых что-то окажется полезным.

2.4.3. Настройка SCSI


После выбора режима производится поиск SCSI-адаптеров (вопросы Выполнять
ли поиск PCI SCSI адаптеров и Есть ли у вас SCSI интерфейс). Если адаптеры
или интерфейс будут найдены и инсталлятор однозначно определит необходимые
драйверы, они будут активизированы. В противном случае инсталлятор спросит,
есть ли у вас обнаруженный адаптер и какой драйвер из списка выбрать. Если
выбран класс установки, отличный от класса Эксперт, и адаптер не будет обнару­
жен автоматически, этот пункт инсталляции будет опущен, но к нему всегда мож­
но вернуться, нажав на кнопку Настройка SCSI.

2.4.4. Установка или обновление


Теперь нужно определиться, желаете вы произвести полную установку или об­
новление системы. Режим обновления можно выбирать, только если у вас уже
Mandrake Linux 7.1 Hydrogen 59

инсталлирована система Mandrake Linux предыдущих версий. Режим установки


соответствует инсталляции системы в отдельный раздел (или разделы), и его име­
ет смысл использовать, если вы инсталлируете Linux впервые или если вам нуж­
но несколько разных вариантов Linux (в разных разделах). Обновить Linux, уста­
новленный с другого дистрибутива, разумеется, невозможно.

2.4.5. Настройка мыши


Следующий этап настройки касается типа мыши (рис. 2.40). Скорее всего, инстал­
лятор уже определил его при запуске и вы уже перемещаетесь по меню и нажимаете
на кнопки при помощи мыши. Однако в режиме Эксперт инсталлятор все равно
остановится здесь, чтобы предложить вам произвести уточнение, поскольку при
автоматическом определении обычно используется самый общий протокол обме­
на данными с мышью, который не позволяет реализовать возможности конкрет­
ной модели.

Выберите язык

КЛЭССрСТЗНОБКИ Linux M a n d r a f c e l n staJJat jo л


MSLrd dri ve detection Please, ch oo se the type o f your mouse.

A L P S G lidePoint ( P 5 Й )
Настройка мыши
A S C II Mie Mouse (P S / 2 )
BUbijp ИПЭБНЭТЧ'ри A S C II МІЄMouse (п осл ед овател ь-и аа)
ATI Bus Mouse
Generic 3 Button Mouse (F5 / 2 )
Настр, файловых систем Generic 3 Button Mouse (п о сл е д о в а те л ь н а я )

форм ЭТНрОБЭНН* рЭЗД*Л0


Generic Mouse (п о с л е д о ь а т е л ь н а ї)
выбор пакетов
Genius NetM ouse (P S J2 )
1 Їсгансвка системы Genius NetM ouse (п о сл е д о в а те л ь н а я )
Genius NetM ouse Pro (РЗУ2)
настройся сети
Genius N etS croli (P S / 2 )
криптография Kensington T h irk irg Mouse (P S J2 )
Logitech Bus Mouse
Настройка часового пояса
Logitech C C Series (п о сл е д о в а т е л ь н а я )
configure s ir U m s Logitech Mouse (п о сл е д оь а тел ь и а ^ стары й тиг
Logitech Mouse Мап+У Fir stMouse+ (Р5У2)
настройка принтера

Парап ь- дп я re d

добавить пол ь±о&атиі я

■ооодать загруз.диск:
Е с л и D raliK не см о г найти вашу мышь, или если бы коти те проверить, что он сд елал , ьам
Їсгансека LILO предлож ат сп и со к мышеи выше.

Настройка X Window Если ЁЫ С О Г Л А С Н Ы С уст.3 Н О Е К а МП ОґЗіЬК, про сто п ерей д ите б нужный Еам раздел налати eu на

него £ меню слева. В п ротивном случае вы берите в меню мышь-, тип которой н аиб ол ее
Вы код Ий инстэпл щнн со о тв е тств у е т типу вашей мыши.

Рис. 2.40. Настройка мыши

2.4.6. Выбор раскладки клавиатуры


Еще один пункт, предлагаемый только в классе Эксперт, - выбор раскладки
клавиатуры (рис. 2.41). И нсталлятор автоматически подбирает раскладку, со­
ответствующую выбранному на первой стадии языку. В отличие от дистрибути­
вов, русифицированных в России или на Украине, здесь предлагаются всего две
раскладки клавиатуры для русского языка - обычная и «яверты» (по названиям
60 Начальная установка дистрибутива

выберите язык

г Класс установки U ? ; lim a : M a n d r a k e InstaJJation


^ γ l-terddriy*diction Please, choose ус иг keyboard layout
І Иврит (ф о н е ти ч е ск и й ) δ
настройка мыши
1 К а н а д с к и й (К в е б е к )
Выбор клавиатуры Л а т и н о -А м е р и к а н с к и й

Л ПпрйЦде 1 Л и товски й "ф о н ети ч ески й " Q W ER TY


Л и товски й "н онер ряда" Q W ER TY
^ Р настр. файловых систем Л и товски й A Z E R T Y
Н ем е ЦК и и
форм атирование расд^ло
Норвежский
~А выбор пэк&тов П ор туга л ьски й
1 Р у сс к и й
У г V с гэнобк а споте ми
Р у сс к и й ( Я В Е Р Т И )
π
Настройка сети Словацкий
С л ов ен ски й
криптография
Т а й ск а я клавиатура
^ ?“ настройся часового пояса Т у р е ц к и й (с о в р е м е н н а я "Q" м о д е л ь )
_*/ Турецкий тр ад и ц ион ная "F" м од ел ь)

г
^ Р Configure£iroi«£
У краинский
нэстройсэпрннт^ра Венгер ским

^ > п ароп ь ал я ґооі


IV
-Ιί·
^ Р ДсЄавитьпользоеатвдя

Λ создать, загруз.диск:

Вы бери те р а с к л а д су своей клавиатуры в п ри ве д енн ой сп и ск е
^ ?“ ІОТаНйБКа LILO

^ Р Настройка X Window

Λ в
\ > выкодисинстэлляции

Рис. 2.4 / . Выбор раскладки клавиатуры

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

2.4.7. Прочее
Данный пункт предварительной настройки системы включает в себя несколько до­
полнительных вопросов: нужна ли дополнительная оптимизация жесткого диска
(по умолчанию - нет), каков должен быть размер определяемой памяти (расхож­
дения числа с реальным объемом на несколько процентов допустимы) и уровень
защищенности системы (по умолчанию - средний), устанавливать ли программу
supermount для автоматического монтирования CD, дискет и других съемных но­
сителей (по умолчанию - да), очищать ли каталог временных файлов /tmp при каж­
дой перезагрузке (по умолчанию - нет) и включать ли на клавиатуре режим
NumLock при загрузке (по умолчанию - да).

2.4.8. Настройка файловых систем


Все, что делалось до сих пор, не приводило ни к каким реальным изменениям.
Теперь же наступает самая ответственная стадия - настройка файловых систем.
Инсталлятор DrakeX использует собственную интегрированную программу раз­
биения, которая показывает отдельные разделы в виде цветных участков на пря­
моугольнике, изображающем жесткий диск (рис. 2.42). Кстати, если на жестком
Mandrake Linux 7.1 Hydrogen 61

БЫберитеЯЗЫ
К
Клаооустановки С^Г Linux MandraJce'JnstalJatJan
H&M dnue de faction
Типы ф ай ло во й си стем ы : ЕНІ2 FAT ДрУГИЄ
настройка мыши
hda
Бы Єор клавиатуры

ГрмЧнн
fjs r ^ fhome
настр. срнйловых систем

^у Т^ форматированно расделої
раздел'
В ы берите д ей ств и е Псдрсзбнооти

А
- jftw
вы бор пакетов Точка монтирования Точка м онтироьанияіЛ ізг
_> V cT p o iitT to ih d a ^
у установка системы Тип
ТипЫ пик native (0 я 8 3 )
Настройка сети И зм енение размера
Начало: се ктор 580Є71 .231 3 1 S 1 82
-У_ криптография Удал ить Size: 4 3 Э MB (44%), 901 0 3 Э .5 4 1 41 414 2 секторов
-А Цилиндры с 2 30 по 734
^ w Настройкачасовогопояса Ф орм атирование
Не отф о р м а ти р о в ан о
у > Configure services Use fo r loopback
_> настройка принтера
О чи сти ть вое Р а зм е сти т ь автом атически З а п а сн а я таблиц ы разделов О ткат Пере* а грузить
^ w парольдлягооі
J'
у > ДоЄавитьпольсователя В о сс та н о в л е н и е о дискеты С охр а н ен и е на д и скете Готе

τ-Κ- с0оздать загруз, диск A t this point, you may choo se w hat p a r t it io n s ) to use to install your Lin u k - M andrake system if they
-J'
^ w установка lilo
І
have
1 been already defined (from a previous install o f Linutf or from another p a r titio n in g tool). In other
cases, hard drive partition s must be defined. This operation co nsists o f logically dividing the com puter's
-/
'-0 ^ Настройка КWindow І
I
hard drive capacity into separate areas fo r use.

J"ta выход из инсталляции If you have to create new pa rtition s, use "Лиto allocate" to automatically create partitions fo r І_іпия. You
can select the disk fo r partitionning by clicking on "h d a "fo r the first IDE drive, 'V id b "fo r the second or

Рис. 2.42. Разбиение на разделы в Mandrake

диске до сих пор не было создано таблицы разделов, инсталлятор выдаст сообще­
ние Таблица разделов не читается, она слишком испорчена, на которое можно
не обращать внимания.
Для быстрой и упрощенной разбивки диска достаточно нажать на кнопку Размес­
тить автоматически. При этом на свободном месте будут созданы разделы /boot для
размещения ядра и загрузчика, оптимальный раздел подкачки swap и корневой раз­
дел (/), которому передается все оставшееся место на диске. Если же необходимо,
например, разместить /va г в отдельном разделе или разметить другой диск, можно
воспользоваться кнопкой Создать (она появляется только после нажатия на пус­
той участок диска, показанный белым цветом). Вам будет предложено указать на­
чальный сектор (обычно достаточно согласиться с предлагаемым минимальным
значением), размер в мегабайтах, тип файловой системы, точку монтирования
и способ размещения в таблице разделов между первичным (Prim ary) и расши­
ренным (Extended). Тип, точку монтирования и способ размещения можно выби­
рать из списка предлагаемых, так же как и вводить самостоятельно. В разбиении
вы никак не ограничены, но по окончании процесса нужно убедиться в наличии
как минимум корневого раздела (тип файловой системы Linux native, точка монти­
рования /) и раздела подкачки (тип файловой системы Linux swap, точка монтиро­
вания swap). Кроме того, для достаточно больших дисков (больше 1024 цилиндров)
необходим небольшой раздел /boot (размер 10 Мб, тип файловой системы Linux
native, точка монтирования /boot), расположенный в начальной части диска. Дело
62 Начальная установка дистрибутива

в том, что загрузчик системы не сможет прочитать ядро, если оно окажется за грани­
цей 1024-го цилиндра, а размещение его на небольшом разделе в начале диска гаран­
тирует загрузку. Все остальные разделы необязательны и могут создаваться (или не
создаваться) в зависимости от конкретной ситуации. Обращайте внимание на имена
создаваемых разделов (типа hdal,hda5, hdb2), которые им присваивает программа раз­
бивки. Именно под этими именами они будут известны системе в дальнейшем.
До тех пор пока вы не нажмете на кнопку Готово, никакие изменения не будут
реально произведены, так что можно рассмотреть и сравнить несколько вариан­
тов разбивки диска. После записи новой таблицы разделов содержимое вновь соз­
данных или удаленных разделов будет безвозвратно утеряно.

2.4.9. Форматирование разделов


На следующей стадии инсталлятор предлагает выполнить форматирование раз­
делов. Эта процедура полностью уничтожает данные на них, так что выбирайте
для форматирования только те разделы, которые вы создали на предыдущем эта­
пе (и те из ранее существовавших, которые вам надо отформатировать). Утверди­
тельный ответ на вопрос Check bad blocks? (Проверять ли диск на сбойные сек­
торы?) обычно не имеет смысла, если у вас современный жесткий диск, так что
его можно не выполнять (что, собственно, и предлагает инсталлятор).

2.4.10. Выбор пакетов


Теперь, наконец, можно заняться собственно установкой системы Linux Mandrake.
Ответив на вопрос, имеется ли у вас второй дистрибутивный CD (Extension CD),
можно выбирать, какие из групп пакетов будут установлены. Здесь предлагаются
следующие группы:
□ Graphics M anipulation - средства работы с графикой;
□ KDE - интегрированная графическая среда для Linux;
□ Gnome - другая интегрированная графическая среда для Linux;
□ O ther window managers - другие диспетчеры окон, если вы считаете, что
Gnome и KDE слишком требовательны к ресурсам;
□ M ail/W W W /N ew s Tools - программы для работы с почтой, новостями
и Internet;
□ Communication facilities - средства коммуникации;
□ Office - офисные пакеты (на самом деле это ТеХ и два простых текстовых про­
цессора);
□ Multimedia Support - мультимедийная поддержка;
□ Games - игры и развлечения;
□ Documentation - документация;
□ Databases - системы управления базами данных;
□ прочее.
На рис. 2.43 показана ситуация, в которой отмечены все группы пакетов кроме
Games.
После выбора групп пакетов (если вы, конечно, указали режим Эксперт; впро­
чем, никогда не поздно нажать на кнопку Класс установки вверху слева и изменить
Mandrake Linux 7.1 Hydrogen 63

U? Г Linux M an drake I л staJJ a t j o n


Выбор группы пакетов

Lir aphics Manipulat ion

Рис. 2.43. Выбор групп пакетов

выбор) инсталлятор предложит отметить отдельные пакеты в рамках каждого


класса. Перед этим, правда, будет задан один важный вопрос - Percentage of
packages to install. Число, проставленное здесь, указывает, сколько процентов
пакетов из выбранного класса установки будет использовано. По умолчанию оно
соответствует объему свободного места в системе. Если вы указываете число,
меньшее 100%, часть пакетов в каждой группе будет отмечена как не предназ­
наченная для установки.
Процедура выбора отдельных пакетов (рис. 2.44) позволяет указать именно то,
что будет установлено на ваш компьютер. Пакеты представляются в виде иерар­
хического дерева, отдельные ветви которого можно раскрывать и сворачивать, на­
жимая на символы + и —; например, на рис. 2.44 раскрыта ветка Applications =>
Publishing (Приложения => Издательские). Имя пакета, выделенное инверсией
(синий текст на белом фоне), означает, что данная программа выбрана к инстал­
ляции (на рис. 2.44 - sgml-tools). Если для работы какого-то пакета требуются
другие, они будут выделены автоматически путем активизации расположенной
внизу кнопки Automatic dependencies (автоматическое определение зависимос­
тей). При выделении целой ветки все пакеты из нее будут считаться выбранными
для установки. Если нажать на эту ветку еще раз, все необязательные пакеты поте­
ряют выделение, даже те, которые вы сами выбирали. Поэтому будьте очень внима­
тельны и при работе с деревом пользуйтесь только символами + и —. Написанное
курсивом имя пакета означает, что он обязательно будет установлен и отказать­
ся от него нельзя. При нажатии на необязательный пакет в правой части окна
64 Начальная установка дистрибутива

выводится его краткое описание и размер, поэтому вы можете выбирать в точно­


сти то, что вам необходимо и подходит по размеру. Количество пакетов, выбран­
ных для инсталляции по умолчанию, определяется классом установки: оно мак­
симально в классе Разработчик и минимально в классе Сервер. Если вы что-то
напутали и хотите начать заново - просто отметьте пункт Выбор пакетов в ме­
ню слева.

Еы берите ягык

Класс установки

HiLrd drive detection Выбор пакетов ддтя установки

Настройка мыши ^H^plications Ί Fl Информаций


выбор клавиатуры Θ- MultimediSL
В Publishing
L здпгіі- to o ls

Настр, фэйп оеы систем З A rchivin g


3 B ooks
форматирование разделов
3 · Comm uni cations
выбор пакетов 3· Databases
3 Developm ent
' Установка систем 1-І
3 Docum entation
настройся сети 3 E d itors
Em ulators
криптография
& File tools
Настройка часового пояса 3 Games

corvfigure serui MS

настройка принтера
Automatic dependencies TotaJ size: Є 2 5 У 9 0 4 M B
Парсп ь дл я ґоо1

Добавить ПйЛЬ-ІОВЯТЄЛ я

■создать oarpvo. диск


You may n ow select the group o f packages you w ish to install or upgrade.
■Установка LILO D rakK will then check whether you have enough room to install them all. If not, it will w arn you about it. If
you w ant to g o on anyway, it will proceed o n to the installation o f aJI selected groups but will drop some
настройся У vAndcu packages o f lesser interest. A t the bottom o f the list you can select the o p tio n "Individual package
s e le c t io n in this esse you will have to brow se th rou g h more than 1000 packages...
вы ход из инсталляции

Рис. 2.44. Выбор отдельных пакетов

2.4.11. Установка системы


После нажатия большой кнопки Установка начинается установка всех ранее
выбранных пакетов на диск и построение работоспособной системы Linux
M andrake 7.1. Размер установки в режиме Нормально - 1317 Мб, в режиме Р аз­
работчик - 1810 Мб, а в режиме Сервер - 777 Мб.

2.4.12. Настройка сети


Теперь нужно произвести настройку уже установленной системы. Первая опе­
рация - настройка сети. Можно выбрать вариант Локальная сеть или Dialup че­
рез модем в зависимости от того, что вы используете для выхода в сеть - сете­
вую карту или модем.
При настройке локальной сети инсталлятор попытается сам найти сетевой
адаптер и, если это не удалось, попросит вас выбрать нужный вариант из списка.
Затем можно будет либо провести автоматический поиск (который теоретически
может заблокировать компьютер, хотя обычно этого не происходит), либо задать
Mandrake Linux 7.1 Hydrogen 65

параметры карты вручную. После успешного подключения нового сетевого интер­


фейса инсталлятор спросит вас, нет ли других интерфейсов, и затем перейдет
к настройке адресов. На данном этапе можно ввести конкретный ІР-адрес компь­
ютера, указать маску сети (обычно подходит маска по умолчанию, 255.255.255.0);
если в вашей локальной сети используются протоколы автоматического опреде­
ления ІР-адресов ВО О ТР или DHCP, следует нажать на соответствующую кноп­
ку. Обратите внимание на имя сетевого устройства, которое показано на экране
в этот момент (например, ethO), - именно ему присваивается данный адрес и мас­
ка сети. Если у вас установлены две сетевые платы, им будут присвоены имена
ethO и eth1, в порядке подключения драйверов на предыдущей стадии, и в соот­
ветствии в этим вы должны будете задать их 1Р-адреса.
При настройке подключения через модем надо выбрать порт, на котором находит­
ся модем, и все необходимые параметры соединения - имя хоста, номер телефона,
имя пользователя, пароль, метод аутентификации, доменное имя, один или два
сервера DNS. Можно также указать адреса HTTP- и F T P -прокси-серверов.

2.4.13. Криптография
Если на предыдущем шаге вы настроили соединение с Internet, то сейчас можно
выполнить установку криптографических средств с одного из предлагаемых F T P -
серверов. Средства криптографии повышенной сложности запрещены к экспорту
из США, так что вместо них будут загружены менее сложные или разработанные
в других странах программы.

2.4.14. Настройка часового пояса


На следующей стадии нужно указать локальное время (рис. 2.45). Дистрибутив
Linux Mandrake хранит в CM OS-памяти компьютера время по Гринвичу (GM T),
а текущее время определяется по GMT с учетом сдвига, выбираемого на этой ста­
дии. Одновременно будут учитываться правила перехода на летнее время.

2.4.15. Настройка сервисов


В Mandrake вы получаете возможность отменить часть сервисов, которые в про­
тивном случае будут запускаться автоматически при каждой загрузке системы:
□ crond - демон, осуществляющий запуск программ в заданное время;
□ gpm - поддержка мыши в текстовом режиме;
□ keytable - загрузка местной раскладки клавиатуры при старте системы;
□ kheader - создание заново файла /boot/kernel. h при загрузке системы;
□ netfs - автоматическое монтирование и демонтирование сетевых файловых
систем (подключаемый по NFS, SMB (Windows) и NCP (NetWare));
□ network - включение всех сетевых интерфейсов при старте системы;
□ random - более качественный генератор псевдослучайных чисел;
□ sound - загрузка драйверов звуковой карты при старте системы;
□ syslog - обязательный сервис, ведущий журнальные файлы для большинства
программ в системе;
□ usb - загрузка драйверов USB при старте системы.
66 Начальная установка дистрибутива

L? f Limtx M andrake In s ta lla tio n

Рис. 2.45. Настройка часового пояса в Mandrake Linux

2.4.16. Настройка принтера


Ha этой стадии инсталлятор предлагает указать имя очереди и каталог спулинга
для заданий, помещаемых в данную очередь. Затем предлагается указать тип
принтера, обслуживающего данную очередь: SM B/W indows 95/98/N T , Удален­
ный lpd, NetWare или Локальный принтер. Для каждого из четырех типов прин­
тера предусмотрены специфические настройки. Для SM B-принтера это имя сер­
вера, его I P -адрес, имя ресурса, под которым принтер известен в сети, имя
пользователя, пароль и имя рабочей группы. Для удаленного lpd-принтера ука­
зывается только имя сервера и имя очереди на удаленном сервере. Для NetW are-
принтера определяется имя сервера, имя очереди, имя пользователя и пароль.
В случае локального принтера потребуется имя порта, к которому он подклю­
чен (если автоматическое определение не сработает), тип принтера (рис. 2.46),
размер бумаги и разрешение печати по умолчанию. Можно также распечатать
тестовую страницу.

2.4.17. Пароли и пользователи


Следующая операция - выбор пароля для пользователя root, системного адми­
нистратора. Позаботьтесь, чтобы клавиатура при этом находилась в режиме вво­
да латинских букв (это можно проверить, например, на предыдущей стадии,
набрав другое имя очереди для принтера). Кроме того, здесь разрешается указать,
применяются ли более сильный алгоритм шифрования MD5, теневые пароли
Mandrake Linux 7.1 Hydrogen 67

Рис. 2.46. Настройка принтера в Mandrake Linux

(shadow - способ сокрытия зашифрованных паролей от пользователей) и будут


ли доступны «желтые страницы» - система NIS, в которой несколько компьюте­
ров, установленных в сети, работают с общим списком пользователей.
Затем можно создать одного или несколько обычных пользователей (рис. 2.47). Ука­
зывается полное имя пользователя, имя для входа в систему, пароль (дважды)
и используемый командный интерпретатор (в Linux традиционен /bin/bash). Кроме
того, определяется одна из нескольких стандартных иконок, которая будет находиться
рядом с именем пользователя в случае входа в систему через графический интерфейс.
После того как все необходимые пользователи созданы, нажмите кнопку Готово.

2.4.18. Конфигурация загрузчика


Следующий шаг - создание загрузочной дискеты. Это следует сделать на всякий
случай, даже если вы не намерены ею пользоваться. Затем инсталлятор предлага­
ет сконфигурировать и установить загрузчики Linux - либо LILO, либо GRUB,
либо оба сразу. При их конфигурации предлагаются следующие опции (рис. 2.48):
□ загрузочное устройство. Здесь можно выбрать устройство, отвечающее це­
лому диску (/dev/hda), - это означает, что LILO размещается в главной загру­
зочной записи (M BR) диска. При загрузке компьютера с данного диска LILO
сразу получит управление и сможет запустить Linux или другую операци­
онную систему. Если задано устройство, отвечающее разделу (/dev/hdal),
LILO будет помещен в загрузочный сектор этого раздела. Чтобы передать
68 Начальная установка дистрибутива

f ^ выберите язык
V.
^ Класс т а н с в к и U?; Linux M an drake I л s ta JJa t io n
Lj .
^ ^ HEirddrioedetection

^ Y настройка мыши
V-
£ p 3 Выбор клавиатуры
£ Прочее
f настр.срнйловыксистем
V.
^ ^ форматированиеразделов

^^ выбор пакетов

^ установка системы

^ ^ Настройка сети

^ криптография
lJ .
^ настройка часового пояса
і/.у5 Configure services
Lj.
^ настройка принтера
lJ .
^ пароль для rooi

д р Р Добавить пользователя

V > создать загруз, диск:


Теперь, tti м о ї є т й с о ід я т ь о дин или н е ск о л ь ко обычный п ол ь зо ва те л ь ски й ВХОД, t отличне
^ w установка LILO с т "при вил егир ованн ого" пользователя ҐООІ. Можно создать по од н ом у или по н еск о л ь ко
вводов для каждого пользователя., которы й буд ет ра б ота ть на ком пью тере. Для каждого
1
^ Настройка X Wndow ιп о л ь з о в а т е л ю а о г о входа со зд аю тся свои н а строй ки (гр а ф и ч е с ко е окружение, н астрой ки
п рограм м ,...) и свой "домашний к а та ло г" в котором хранятся эти н астрой ки.
\ выкодизинстэлляции '
Прежде to его со здай те вход для себя! Даже если вы будете еди нственн ы м п ользо вате лем на

Рис. 2.47. Ввод нового пользователя в Mandrake Linux

j, выбурит* язык
α^_γіиіассустаноБки L p -Γ L in u x M a n d ra fc s In s ta lla tio n
і/.
^ у Hard drive defection
Lj.
уys настройка мыши
α^_γвыборклавиатуры
^5 р Прочее
J,
^ ^ Настр. ф а й л о е ы к с истем Bootloader main option s
а^ Yформатирование разделов Загрузочное у стр о й ств о Idevlhdaj

V. L B A (d o e sn 't w ork on old B IO S es) ШIba


^ ^ Выбор пакетов
V . Ком пактно ком пактно
^ Установка системы

Задерж ка пере д за грузе ой образа по умолчанию


^ ^ настройка сети 5
V- В и д е о -р е ж и м Normal
^ ^ Криптография
J,
^ Настройка часового пояса □к Отм єн а
ij. Configjre5*Г0ІСЄ5 К

jj,.^ настройка принтера


J,
^ Пароль для ro d

ДобавитьпольооБателя

^ p 5 создать загруз, дисс


hard disk after enabling the keyboard. The boo t loader d o e s n l wait if "delay" is om itted or is set to
zero
Ш
Щі
Ч Р Г Установка LILO

^ h настройка
настройка к v^ndour
к window _ v id e o mode: This specifies the V G A te^t m ode th a t should be selected w hen boo tin g. The fol
vaiues are available:H normai: select normai S0m25 te^t m o d e .H <num ber>: use the co rrespon d
вы код из инсталляции mode.

Рис. 2.48. Конфигурация загрузчика в M andrake Linux


Mandrake Linux 7.1 Hydrogen 69

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


Если задано устройство /dev/fdO, то загрузчик будет установлен на дискету;
□ опция 1Ьа означает, что загрузчик будет использовать вместо адресов вида
сектор/головка/цилиндр линейные;
□ опция компактно. Включает оптимизацию работы с диском, заменяя множе­
ство операций чтения соседних секторов одной, что особенно полезно, если
загрузка осуществляется с дискеты;
□ зад ерж к а перед загрузкой. В течение некоторого времени после появле­
ния на экране надписи LILO вы, если включена эта опция, сможете пре­
рвать процесс загрузки (клавиш ей S hift) и выбрать другую операционную
систему;
□ видеорежим. Позволяет указать, в каком текстовом видеорежиме будет стар­
товать Linux. Значение Normal соответствует обычному 80x25, значение Ask
a t boot приведет к тому, что LILO при каждой загрузке будет запрашивать
желаемый для вас режим.
Затем можно сконфигурировать операционные системы, которые будет за­
гружать LILO. Если на жестких дисках есть загрузочный раздел с Windows (кото­
рый при этом не был автоматически добавлен инсталлятором) или любой другой
операционной системой, на следующем экране можно нажать на кнопку Добавить
и описать параметры этой системы.

2.4.19. Конфигурация X Window


Последняя стадия конфигурации Mandrake Linux - настройка графической под­
системы X Window. В процессе инсталляции эта система уже использовалась, но
при этом был задействован лишь минимум возможностей компьютера. Теперь
можно точно указать имеющиеся у вас видеокарту и монитор (если они не будут
определены автоматически). Если инсталлятор не сумеет что-то определить, вы
попадаете в меню, содержащее следующие пункты:
□ Измените монитор - возврат к перечню моделей и типов мониторов;
□ Измените видеокарту - возврат к перечню моделей видеокарт;
□ Измените опции Сервера - модификация командной строки, передаваемой
Х-серверу;
□ Измените разреш ение - изменение пробуемого разрешения;
□ Автоматический поиск разреш ения - автоматическое определение наивыс­
шего поддерживаемого разрешения;
□ И нформация - информация о текущем состоянии настройки;
□ Снова проверить - проверка текущих настроек (в случае успеха вы не верне­
тесь в это меню);
□ Выход.
В Mandrake Linux входят также и удобные графические средства настройки
системы. Внешний вид системы KDE после установки с открытыми окнами про­
грамм конфигурации показан на рис. 2.49.
70 Начальная установка дистрибутива

[ З 1 file: hoot/ DrakConf * lothar 0.5.3

[51-И file:ГгооІ:/
я ш *S.
Щайл Редактирование
jn
Вид Перейти
,-&r, л
Заклад ки Настройки Помощь

Корзина Netscape Cd-Flom


И DrakConF
w.F
®Г ш iaux
Doc News GIMP a
T n d r a k e

з & % JiS£L·
Д ет о с т а рт FlpmDrake Принтер -И I lothar 0.5.3

НастройкаХ Изменена File


Ш 7*

й
Hardware List
D ra k C o rif U p d a te s
0 С> CPU
В ф Мemery
ш 4 * Floppy drives
55 Степень секретности Старте В $
Disk
Ноппе ХКІІІ В CD-ROM
SCSI
Network Device Card
А <5! В Video
Ξ 4 Soundcard__________
K A p p F in d e r D o s_ h d a 1 Диспетчер пакетов [КРасkaде) Creative Labs SB Live!
0 b H ouse

Ч^ V □ □ Ξ
ώ
8 Modem
Printer
Кррр F lo p p y
f Ш Ψ Other Device?
Настройка сети Настро

^ ^ | | О дин Три ІЗ

А| Два Ч еты ре
13 ί

Рис. 2.49. Внешний вид Mandrake Linux

2.5. SuSE Linux 6.4


Описаны различные варианты начальной загрузки и общая конфигурация дис­
трибутива SuSE Linux 6.4.

2.5.1. Загрузка инсталлятора


Для запуска инсталлятора SuSE можно загрузить компьютер с дистрибутивного
CD, воспользоваться программой SETUP. EXE в DOS или создать загрузочную дис­
кету. Для создания дискеты опять-таки воспользуйтесь программой SETUP. EXE или
же скопируйте нужный образ вручную, как для других дистрибутивов. Образы
загрузочных дисков находятся в каталоге disks/ дистрибутивного CD, а про­
грамма RAWRITE. EXE для записи их на дискеты - в dosutils/rawrite/. Обычно
достаточно всего одного диска, который можно выбрать из bootdisk (обычный
текстовый инсталлятор), eide (диск с поддержкой некоторых EID E устройств),
laptop и yast2 (графический инсталлятор, требует 48 Мб памяти). В том случае,
если какое-то необходимое оборудование не будет распознано ядром загрузчи­
ка, потребуется специальный диск с драйверами, сделанный из образа modules.
После загрузки вы должны увидеть приглашение, показанное на рис. 2.50. В от­
вет на него обычно достаточно нажать клавишу Enter или подождать несколько
секунд.
SuSE Linux 6.4 71

Рис. 2.50. Приглашение загрузчика SuSE Linux

2.5.2. Стадия 1: выбор локализации


Первое, что предлагает выбрать инсталлятор SuSE, - язык, на котором выполняется
установка. В графической версии дистрибутива 6.4 все еще нет русского языка, так
что мы будем рассматривать работу инсталлятора при выборе языка English (US),
несмотря на встречающиеся ошибки в переводе с немецкого. Затем можно ука­
зать используемую раскладку клавиатуры и часовой пояс (рис. 2.51). На этом эк­
ране уже присутствуют настройки для России.
Перемещение между экранами инсталлятора выполняется кнопками N ext
(дальше) и Back (назад).

2.5.3. Стадия 2: подготовка жесткого диска


Сначала инсталлятор задает вопрос, производится ли установка системы с нуля
(New Installation) или обновление уже установленной системы SuSE более ран­
них версий (Update an existing system). В первом случае, который мы и рассмат­
риваем, инсталлятор предложит выбрать жесткий диск, который будет разбит на
разделы автоматически, либо конкретные разделы на дисках, либо опцию Custom
partitioning; при обновлении вам будет предоставлена возможность выполнить
разбиение самостоятельно. Не бойтесь это попробовать: изменения будут записаны
на диск не после окончания процедуры разбиения, а только на стадии 6, когда вы
подтвердите план установки и запустите его выполнение.
При разбиении на разделы (рис. 2.52) вам доступен список дисков и уже суще­
ствующих разделов. Над ними можно выполнять операции Create (Создать),
D elete (Удалить), Edit (Отредактировать), Reset and Re-Read (Сбросить и счи­
тать заново). При нажатии на кнопку Create задается вопрос, какого типа раздел
72 Начальная установка дистрибутива

<з)
B a sic configuration
Choose the keyboard
layout you want to use Keyboard layout Timezone
during installation and 1 1 ■ ■1 1 1 ■1 1 LUIUpCJ LIUlUQI IIGL -
later in the installed French (Switzerland) Europe/Luxembourg
system. German Europe/Macedonia
Then select the German (Swiss) Europe/Malta
appropriate timezons. Greek ------- Europe/Moldova
Choose the country or Hungarian Europe/Monaco
region where you are Italian Europe/Netherlands
located. Japanese Europe/Northern-lreland
If you are unsure, please Norwegian Europe/Norway
use the default values Polish Europe/Poland —
already selected. Portugese Europe/Portugal
Portugese (Brazil) Europe/Romania
Russian Europe/Russia —
Spanish T Europe/Slovakia ▼

Swedish ж
1 n<M
Test your keyboard

Back Next

Рис. 2.5]. Выбор раскладки клавиатуры и часового пояса в SuSE Linux

а й

л пйг m m ® і
Partition your
Expert Partitioner
hard disk(s)..
This is intended Device Start End Size F Type Moun
for experts. If /dev/hda 0 1014 999.1 MB VMware Inc. Virtual Hard Drive
you are not /dev/hda 1 0 32 32.4 MB F Linux Swap swap
familiar with the /dev/hda2 33 1014 966.6 MB F Linux (EXt2) /
concepts of
hard disk
partitions and
how to use
them, you might
want to go back
and select
automatic
partitioning.
Please note that
nothing will
be written to
your hard ТШ ]
disk until you
confirm the Create Delete Edit Reset and Re-Read
entire ж.
installation in T" Back Nextk

Рис. 2.52. Разбиение на разделы в Su SE Linux


SuSE Linux 6.4 73

должен быть создан - первичный (Primary) или расширенный (Extended). П о­


мните, что если на диске есть четыре первичных раздела, больше ничего доба­
вить уже нельзя. Если до нажатия кнопки Create был создан хотя бы один рас­
ширенный раздел и на диске есть свободное место, задается вопрос, создавать
ли первичный (Prim ary) или логический (Logical) раздел. Обычный сценарий
разбиения - создание первичного раздела, расширенного раздела, занимающе­
го все оставшееся место на диске, и затем логических разделов внутри расш и­
ренного.
При создании или редактировании первичного или логического раздела необ­
ходимо указать следующее.
Тип раздела (Type) SuSE Linux 6.4:
□ раздел данных с файловой системой ReiserFS (Data with ReiserFS);
□ раздел данных с файловой системой Ext2FS (Data with Ext2);
□ раздел подкачки (Swap).
В системе должен присутствовать один раздел подкачки (обычно его размер
выбирают равным удвоенному объему оперативной памяти). Ф айловая систе­
ма ReiserFS является нововведением, поэтому к ней следует относиться с осто­
рожностью. В частности, в настоящее время системный загрузчик LILO не под­
держивает ReiserFS, так что если вы хотите использовать эту файловую систему
в корневом разделе, создайте маленький (например, 10 Мб) раздел типа Ext2FS
и смонтируйте его в каталог /boot.
Форматирование (Format):
□ не форматировать (Do not format);
□ форматировать (Format).
Обязательно следует форматировать разделы, которые вы создали или размер
которых вы изменили. Если вы только указали точку монтирования ранее суще­
ствовавшему разделу, содержащему какие-то файлы, разумеется, следует выбрать
опцию Do not format.
Точка монтирования (Mount Point).
Здесь указывается каталог, в который будет смонтирован данный раздел. В сис­
теме обязательно должен присутствовать один раздел, смонтированный в корне­
вой каталог (точка монтирования - /).
Размер (Size):
□ начало (Start cylinder);
□ конец (End).
В качестве начала инсталлятором автоматически выставляется наименьшее
возможное в данной ситуации число. В поле End вы можете вписать номер дис­
кового цилиндра, на котором должен закончиться раздел, или же, что более
удобно, указать размер в мегабайтах (например, +512М) или гигабайтах (напри­
мер, +2G).
74 Начальная установка дистрибутива

2.5.4. Стадия 3: выбор пакетов для установки


Следующая стадия начинается с выбора класса исталляции - Minimal (М ини­
мальный), Default (По умолчанию), Almost everything (Почти все). В первом слу­
чае будет установлено минимально возможное число пакетов, в которые не входит
какая-либо графическая система. В режиме Almost everything инсталлируется весь
дистрибутив, за исключением исходных текстов программ. В режиме Default дости­
гается некоторый разумный компромисс. В любом случае, если вы захотите про­
смотреть то, что будет установлено на ваш компьютер, нажмите кнопку Detailed
selection (Детальный выбор).
Это действие переводит вас в режим выбора групп пакетов, причем все груп­
пы, перечисленные на экране, изображенном на рис. 2.53 (M ultimedia, Games,
Development, Network/Server, All of KDE, GNOME), отмечены как выбранные. На
самом деле задана только часть каждой из них, соответствующая текущему клас­
су установки. Фактически назначение этого экрана - предоставить возможность
отказаться от инсталляции всех пакетов из какой-либо категории (например, если
вам нужна только одна из альтернативных графических сред - KDE или GNOME).
При помощи кнопки Commercial software вы можете выбрать или отказаться
от установки того немногого коммерческого или полукоммерческого программ­
ного обеспечения, которое поставляется с этим дистрибутивом. Нажатие кнопки
Select single packages (Выбрать одиночные пакеты) дает вам возможность задать
пакеты индивидуально (рис. 2.53).

А. $ # » t #
software single selection
Please select a set Please select or deselect a package with double click
Set Description I Package Description
a Linux Base Syster X gpp GNU C++ compiler
ap Programs without; X indent formats С source code
Development (C, C- java Java Developers Kit
doc Documentation joystick joystick support (kernel module and binaries)
e Emacs ІИ И Я Libraries for the С compiler
emu Emulators X libgpp C-h+—library
fun Games and more X libhd Hardware detection
gnm GNOME X libxml Library to manipulate XML files
gra All about graphics X linclude Include files for the kernel
r ш: Itrace
lx_suse
Trace library S system calls of a program
The sources of the SuSE kernel
Partition Free space X make GNU make command —

39.48 MB X orbit A high-performance cqrba orb T


II 1 l< M
Required: 716.05 MB Description Help

Cancel OK

Рис. 2.53. Индивидуальный выбор пакетов в Su SE Linux


SuSE Linux 6.4 75

Здесь вы имеете возможность рассмотреть все пакеты, подлежащие или не


подлежащие установке, и изменить их статус. В окне слева перечислены их груп­
пы, в окне справа - индивидуальные пакеты из указанной в настоящий момент
группы. Знак х слева от имени пакета означает, что он выбран для инсталляции,
пустое поле означает, что он не будет устанавливаться, буква а отмечает пакет,
который требуется для работы какого-либо другого заданного пакета. Статус па­
кета изменяется двойным щелчком мыши. Причем пакет типа а тоже можно от­
менить, хотя инсталлятор и выдаст предупреждение. Внизу слева отображено
число, соответствующее объему свободного места на дисках в будущей системе,
нажав на кнопку Description (Описание), можно вывести на экран краткое опи­
сание выделенного в настоящий момент пакета.

2.5.5. Стадия 4: установка загрузчика


Следующая стадия установки SuSE - инсталляция загрузчика LILO. Инсталля­
тор выдает предложение, где лучше всего установить LILO в вашем случае; если
вы с ним не согласны, он предлагает выбрать позицию вручную (рис. 2.54). М ож­
но выбрать один из вариантов его инсталляции:

□ Install LILO in the boot disk: установить LILO в MBR, главную загрузочную
запись (так что он будет главным загрузчиком в системе);

н М И Н і
Custom LILO installation
LILQ (the Linux
Loader) can be
installed in different
places:
- In the MBR (the
Master Boot Record).
This is recommended О Install LILO in the boot disk ('MBR')
whenever SuSE Linux © Create a boot floppy
is the only operating
system on the hard О Install LILO on Qartition /boot (use another boot manager)
drive, or if you О Install LILO on another partition: I
definitely know that
you can boot all the
other operating
systems with LILO.
The old MBR should Kernel boot parameters:
be saved to disk, as a
precaution.
- On a floppy disk (if □ Use the linear' option
your system has a
floppy disk drive), if
you want to avoid the
risk of interfering with Back

Рис. 2.54. Установка LILO в Su SE Linux


76 Начальная установка дистрибутива

□ Create a boot floppy: создать загрузочную дискету;


□ Install LILO on partition /boot: установить LILO в загрузочный сектор разде­
ла Linux, смонтированного в каталог /boot (или /, если такого раздела нет).
При этом потребуется другой мультисистемный загрузчик в MBR;
□ Install LILO on another partition: установить LILO на другой раздел. Это бы­
вает нужно в очень редких случаях.
Дополнительно можно задать ядру какие-нибудь параметры в поле ввода вни­
зу, например, если оно не может самостоятельно распознать то или иное устрой­
ство (см. раздел 2.1.1).

2.5.6. Стадия 5: настройка параметров пользователей


На этой стадии вы можете создать одного пользователя для работы с вашей сис­
темой (рис. 2.55). Введите его имя (в поле first name), фамилию (family name),
имя для входа в систему (login), пароль (password); в следующем поле пароль
нужно напечатать еще раз для проверки. Этот пользователь будет иметь обыч­
ные права для работы с системой. Для администрирования системы существует
пользователь root с неограниченными правами. На следующем экране вы може­
те ввести пароль системного администратора (опять-таки два раза), убедившись,
что этот пароль нельзя угадать и что вы сами его не забудете.

· - * ■ -(?>
1/1
3
Li
Personalize
Linux is a multiuser
system; several
different users can log
in on the system and
work there, in order to
avoid confusion of Your first name please:
data, each user must Sergei
identify himself Your family name please:
uniquely if he wants to
use Linux. Zubkov
if you fill out the fields User login:
(First Name and cubbi Suggestion
Last Name), an
account is created for Enter a password:
an user with this name
and a Password is
stored. When entering Re-enter the password for verification:
a password, you must
distinguish between
upper and lower case;
a password should
have at least 5
characters, and as a
rule, not contain anu Back I^Next

Рис. 2.55. Ввод новых пользователей в Su SE Linux


SuSE Linux 6.4 77

2.5.7. Стадия 6: установка SuSE


Все, что вы делали до настоящего момента, не приводило к каким-либо необрати­
мым изменениям в компьютере. Теперь инсталлятор выводит на экран краткую
сводку того, что он собирается делать (разбивать и форматировать диски, уста­
навливать пакеты программ, заводить пользователей), и вам дается последний
шанс нажать кнопку Back (Назад) и что-то изменить (рис. 2.56). Нажатие кнопки
N ext на этом экране запускает (после последнего предупреждения) процесс уста­
новки Linux SuSE.

# # - ir A
Confirm installation
YaST2 now has all the
required information.
Please read a ll the
data carefully before
you cootioue. Your user name will be 'cubbi'.

You will need your Linuxwiil be installed on harddisk


u se r name, your 1. IDE, 999.14 MB, /dev/hda, VMware Inc. Virtual Hard Drive
u se r passw ord and
Creating partition 1 (/dev/hda1), as swap (swap)
- most importantly - Creating partitan 2 C/dev/hda2), as / (ext2fs)
the root passw ord to
work with the installed
system. Do not forget 716 MB software will be installed
those values! (But do
not write them to a The Linux boot manager will be written on your hard disk.
sticky note on your Pressing "Next" will start the installation.
screen, either - this is
a common security
hole).
If you are satisfied Abort installation Save settings to floppy disk
with the settings,
select next in this
dialog to start the
installation. This is Back I I

Рис. 2.56. Подтверждение параметров установки SuSE Linux

2.5.8. Стадия 7: конфигурация X Window


После форматирования, установки пакетов и LILO производится настройка
X Window. Если тип монитора или модель видеокарты не определяется автома­
тически, программа предлагает выбрать их из списка или ввести значения соот­
ветствующих параметров (например, частоту горизонтальной и вертикальной
развертки монитора). На следующем экране (рис. 2.57) укажите параметры видео­
режима - разреш ение и глубину цвета. До успешного тестирования выбранного
режима (кнопка Test) инсталлятор не позволит вам двигаться дальше, но можно от­
менить конфигурацию X Window совсем, нажав на кнопку No X II configuration.
В этом случае вы все сумеете настроить позднее с помощью стандартных средств
X Window (XF86Setup) или программы SuSE sox.
78 Начальная установка дистрибутива

Ф -Ф - Ч'зУ Λ
Desktop settings
Please select the
Desktop Settings to
use for the X Window
system (X11). X server: XF86_SVGA
The video card shown
has automatically
been detected. The □ No X11 configuration
appropriate X server
for this video card has I Resolution Colors
been chosen
О 640 x480 О 256 colors (8 bpp)
accordingly.
© 800 x600 65К colors (16 bpp)
Select No X11
configuration to skip О 1024 x768 О 16.7M colors (24 bpp)
X Window О 1152 x864 О 16.7M colors (32 bpp)
configuration. You can
configure X11 О 1280 x960
manually later (using О 1280 x 1024
sax) if you wish. □ Use 8D acceleration
О 1600 x 1 2 0 0

Select one of the


possible screen Test
Resolutions from the
box on the left side
and one of the Back Next

Рис. 2.57. Настройка X Window в SuSE Linux

2.5.9. Стадия 8: конфигурация устройств


Последняя стадия установки SuSE Linux - конфигурация устройств. Сейчас мож­
но настроить систему печати (Configure Printer), звуковую плату (Configure
Sound), доступ к сети через dialup (Configure Internet) и через сетевую плату
(Configure Network).
При настройке принтера можно сконфигурировать один или несколько прин­
теров на параллельных (LPT) портах и на USB. В левом окне перечислены скон­
фигурированные принтеры, которые будут добавлены в систему после нажатия
на кнопку Finish. С помощью кнопки Add (добавить) запускается диалоговая про­
цедура конфигурации нового принтера: программа запрашивает номер его порта,
имя производителя и модель. Если имени производителя нет в списке, можно вы­
брать тип Generic и указать протокол, используемый принтером (ESC/P, различ­
ные версии PCL, PostScript). Затем указывается имя очереди заданий для этого
принтера (для первого принтера это всегда будет 1р), разрешение печати и размер
бумаги.
Настройка звуковой карты в большинстве случаев производится автомати­
чески. Если процедура распознавания не сработала, можно нажать на кнопку
Manual и выбрать драйвер вручную, - как обычно в SuSE, выбирается имя раз­
работчика и конкретная модель. Если вашей звуковой карты в этом списке нет,
не выбирайте ничего, позже можно будет установить драйвер, поставляемый
производителем.
SuSE Linux 6.4 79

При настройке доступа по dialup определяется модем (или ISD N -плата), а за­
тем предлагается указать провайдера. В SuSE есть списки основных провайде­
ров Германии, США и Англии, но в нашем случае нужно будет нажать New (но­
вый), ввести номер телефона, имя пользователя и пароль. На следующем этапе
введите префикс для дозвона; если нужно, можно задать скорость, на которой
фиксируется порт, поправить строчки инициализации модема и выбрать между
тоновым (Tone dialing) и импульсным (Pulse dialing) набором номера. Можно
также выключить внутренний динамик модема, отменив опцию Turn on modem
speaker. Окончательную настройку можно выполнить после того, как система
будет окончательно установлена, вызвав программу wvdial от имени пользова­
теля root.
Четвертая доступная на этой стадии настройка - настройка локальной сети.
После определения сетевой платы (или ввода ее типа и параметров вручную
в случае, если она не определилась) можно указать ваш IP -адрес, маску сети и IP-
адрес шлюза. Если в локальной сети действует протокол DHCP, допустимо также
воспользоваться им (отметив пункт Automatic address setup).
После того как вы нажмете кнопку Finish, инсталляция завершается и система
выводит приглашение для входа. Примерный внешний вид рабочего стола SuSE
показан на рис. 2.58.

(^console) Konsole Sokoba Kosview^linuK


Konsole П X
File Sessions Options Help

W m dow sC l i n u x I 14 # c d / rm tV 7
l i n u x i / m n t # m oucd tm p
b a s h ; m o u c d ; com m and n o t fo u n d
l i n u x i / m n t # c d tm p
R@ Applications *- l i n u x i / m n t / t m p # XV
b a s h ; X V ; command n o t f o u n d
® Games lin u x :/ m n t/ tm p # cd c p t / І Ї І І /
£ s ^ a p t/ K ll # Is
£§§ Graphics m -2 +3 *9 rxvt r x v t - 2 „1 6 xpdF x p c Jf- 0 *9 0 XV x v ~ 3 + 1 0a
► [
jp t / H l l # cd b in
^ Internet ^ 1 \o s u c h f i l e o r d i r e c t o r y
3 M u ltim ed ia г·" .·♦ Fractals Generator j p t / K l l # c d xu
jp t / H ll/ x u # cd b in
3 Settings j p t / t t l l / x v / b i n # */xv &
' E
Ш System \ jp t / H ll/ x u / b in # t /xv &
Utilities ^\ Pa in t
i f * SuSE - ( jp t / K ll/ x w / b in # I

ІЩ
. Find Files 1
Home Directory
Sokoban
(2 ) KDE Control C enter
ф KDE Help |An ap p let for taking snapshots of the desktop|;j ^ Graphics Anim ation Bookmark
PRQCS/
Refresh Desktop LOAE
USFV /SY S/
CPU OX
(3 Trash can USED/ /СЙСН
HEH 56M
Disk Navigator USED/ RE
SHAF ■ί­
IH/GUT/ DL
Д Panel RAGE ο
IN/0UT/ DLE
І fl Lock Screen НЕТ 0
I NTs CG-£3)
IHTS
1 Д Logout
Δ Δ j
й|о, Three Mon
cSfX t idS&· iv4:ii 19:31 *
В two Four May OS

Рис. 2.58. Установленный Su SE Linux


80 Начальная установка дистрибутива

2.6. Slackware Linux 7.0.0


Дистрибутив Slackware наиболее популярен среди тех, кто уже хорошо владе­
ет системой Linux. Его инсталлятор более гибок, предоставляет большую сво­
боду действий и конфигурирует автоматически меньшую часть системы, чем
инсталлятор Red H at. С другой стороны, он предоставляет целый набор раз­
личных режимов установки пакетов, включая настраиваемую заранее автома­
тическую установку, удобную для того, чтобы поставить Linux на несколько
систем в одинаковой нестандартной комплектации.
Вся процедура инсталляции происходит на английском языке.

2.6.1. Загрузка инсталлятора


Для установки Slackware потребуются две дискеты - загрузочная и корневая (дис­
кета с корневой файловой системой). Вообще говоря, можно установить базовую
и сетевую части Slackware только с дискет (другой дистрибутив, позволяющий
такое - Debian), но это может потребоваться лишь в особых случаях.
Образы загрузочных дискет находятся в каталоге bootdsks. 144 для трехдюй­
мовых и bootdsks. 12 для пятидюймовых (хотя в этом каталоге имеется только
минимальный комплект). Если в момент установки вам не потребуется SCSI-
диск, подойдет образ bare, і с поддержкой всех ID E/A TA PI-устройств или net. і,
когда для установки необходима поддержка сети. Существует также несколько ва­
риантов загрузочных образов на случай, если использование вышеназванных стал­
кивается с проблемами: ba reapm.і с дополнительной поддержкой АРМ, lowmem.і для
установки Linux на систему с шестью мегабайтами оперативной памяти (обыч­
ный bare, і требует восемь), no_pci. і, если система зависает при идентификации
P C I-устройств, no_kbd.і, если система перегружается при инициализации клавиа­
туры. Есть ряд образов для работы с устройствами, не поддерживающими стан­
дарты IDE или IDE/ATAPI CD-ROM. В частности, поставляются pportide. і для
установки с ID E -диска, подключаемого к параллельному порту, и большой набор
различных версий загрузочного диска для различных SCSI-контроллеров (имеют
вид имя_контроллера. s, например aha152x.s для Adaptec 152х или iomega.s для
IOMEGA РРАЗ Zip drive) и множество образов для устаревших CD-ROM , не
поддерживавших спецификацию IDE/ATAPI.
Во все диски включена поддержка файловых систем FAT (MS DOS), VFAT
(Windows 95) и FAT32 (Windows 98).
Чаще всего достаточным оказывается образ bare. і. Поместите чистую отфор­
матированную дискету в дисковод и наберите следующую команду:
RAWRITE -f bare.i -d A:
Образы корневых дисков находятся в каталоге rootdsks. Здесь разнообразия го­
раздо меньше. Обычно используется colo г.gz (названный так из-за цветных диало­
говых меню, появляющихся при инсталляции). Образ pcmcia. gz нужен только для
установки с PCM CIA-диска или сетевой карты. Есть еще довольно старый образ
text.gz, использующий простой текстовый режим инсталляции без каких-либо
меню. Последний диск, umsdos.gz, можно использовать при установке Linux в обыч­
ный каталог в файловой системе DOS/W indows, но для этого лучше подходит
Slackware Linux 7.0.0 81
rxvt

W e l c o m e to the S l a c k w a r e Linux (v. 4-0.0) bo ot disk!

If you ne e d to pa s s e x t r a p a r a m e t e r s to the kern el , e n t e r th e m at the p r o m p t


belou after one of the v a l i d c o n f i g u r a t i o n names: r a m d i s k (to lo a d a r o o t d i s k
in t o m e m o r y and boot i t ) „ and m o u n t (to bo o t an e x i s t i n g L i n u x p a r t i t i o n ) -
NOTE: Mo s t h a r d w a r e is a u t o - d e t e c t e d w i t h o u t p a r a m e t e r s . So, b e f o r e a s s u m i n g
yo u r s y s t e m r e q u i r e s p a r a m e t e r s , try a feu d i f f e r e n t b o o t d i s k s · :л )

Here are some examples (and more can be found in the BOOTING file):
ramdisk hdx=cyls,heads,sects,upcom^irq (nee de d on l y if p r o b i n g fails)
r a m d i s k h d x = c d r o m (force d e t e c t i o n of an I D E / A T A P I C D - R O M drive)
w h e r e hdx can be any of hda t h r o u g h hdh. E x a m p l e s : h d c = 1 0 5 0 , 3 2 , 6 4 hdd=cdrom

If you m o u l d r a t h e r load the r o o t / i n s t a l l disk fr o m yo u r s e c o n d f l o p p y drive:


ramdisk root=/dev/fdl

In a pinch, you can boot yo u r L i n u x s y s t e m wi t h a c o m m a n d like:


mount root=/dev/hdal

D O N ' T S W I T C H ANY D I S K S YET! Th i s p r o m p t is just for e n t e r i n g e x t r a p a r a m e t e r s .


If you d o n ' t ne e d to e n t e r any p a r a m e t e r s , hit E N T E R to c o n t i n u e .

boot:

Рис. 2.59. Приглашение загрузчика Slackware

специально подготовленная мини-инсталляция ZipSlack в каталоге zipslack. Мы бу­


дем рассматривать подробно именно образ colo г.gz, как наиболее распространенный.
Диск rescue, gz не содержит инсталлятора, а представляет собой небольшую
Linux-систему, полезную в том случае, если из-за какой-то ошибки основная систе­
ма больше не загружается. Вставьте в дисковод вторую дискету и наберите команду
RAWRITE -f color.gz -d A:
После этого можно вставить загрузочную дискету и перезагрузить компьютер.
На экране появится текст, показанный на рис. 2.59. Он оканчивается приглаше­
нием ко вводу boot:.
Здесь можно ввести дополнительные параметры для передачи ядру аналогич­
но тому, как это делается при установке Red Hat. Например, hdc=cd rom hdc=noprobe
для подключения CD-ROM на устройстве /dev/hdc, если не срабатывает автома­
тическое определение. В любом случае сначала надо просто нажать клавишу
Enter, так как обычно все параметры оборудования определяются корректно
(если, конечно, был правильно выбран образ загрузочного диска).
Затем загружается ядро Linux, и после появления строки
VFS: Insert root floppy disk to be loaded into RAM disk and press ENTER
следует сменить загрузочную дискету на корневую и нажать Enter.
Вот еще одно преимущество Slackware: существует способ запустить инсталля­
цию и без дискет вообще. Даже если вы устанавливаете систему с жесткого диска
или из сети. Для этого надо воспользоваться программой Loadlin, находящейся
в архиве kernels/loadlin.zip. Разархивируйте его, например в С: \L0ADLIN. В ката­
логе kernels дистрибутива Slackware есть множество подкаталогов с именами,
совпадающими с именами образов загрузочных дискет. Выберите тот, который
82 Начальная установка дистрибутива

—'I rxvt

W e l c o m e to the S l a c k w a r e Linux in stallation disk! ( v e r si on 7.0.0)

###### IMPORTANT! RE A D THE I N F O R M A T I O N BELQH CAREFULLY. ######

- You will ne e d one or mo r e p a r t i t i o n s of ty p e 'Linux n a t i v e ' p r e p a r e d - It is


also r e c o m m e n d e d th a t you c r e a t e a s w a p p a r t i t i o n (type 'Linux swap') pr i o r
to i n s t a l l a t i o n . For mo r e i n f o r m a t i o n , run 'setup' and read the he l p file.

- If y o u ' r e h a v i n g p r o b l e m s t h a t y o u t h i n k m i g h t b e r e l a t e d t o l o u m e m o r y ( t h i s
is p o s s i b l e on m a c h i n e s w i t h 8 or l e s s m e g a b y t e s of s y s t e m m e m o r y ) , you can
try a c t i v a t i n g a sw a p p a r t i t i o n b e f o r e you run setup. A f t e r m a k i n g a suiap
p a r t i t i o n (type 82) wi t h c f d i s k or fdisk, a c t i v a t e it li k e this:
mkswap /dev / K partition> ; swapon /d ev / K partition>

- Once you ha v e p r e p a r e d the di s k p a r t i t i o n s for Linux, ty p e 'setup' to be g i n


the i n s t a l l a t i o n p r o c e s s ·

- I f you do not ha v e a c o l o r m o n i to r, type: TERM=vtlOO


before you start 'setup'-

You may noui l o g i n as 'root'.

slackware login:

£ ____________________________ I
Рис. 2.60. Вход в инсталляционную систему Slackware

вам подходит, и скопируйте из него файл zimage в С: \L0ADLIN. Затем копируйте


туда же color, gz или другой корневой диск из каталога rootdsks. Перейдите
в DOS (D O S-окно в Windows не подойдет, надо выйти в MS DOS через пункт
меню Start => Shut Down => Restart Computer in MS DOS mode), после чего по­
дайте в каталоге C:\L0ADLIN команду
loadlin zimage rw root=/dev/ram initrd=color.gz load_ramdisk=1
Дополнительные параметры, которые вы могли ввести после подсказки boot:,
появляющейся при загрузке с дискеты, надо дописать к этой командной строке.
По окончании процесса загрузки как в случае использования дискет, так
и Loadlin, появится приглашение к входу в систему с пояснительной надписью
(рис. 2.60).
Введя слово root в ответ на приглашение login:, вы немедленно попадаете
в действующую Linux-систему в качестве системного администратора, на что ука­
зывает приглашение ко вводу в виде символа #.

2.6.2. Разбиение диска


Прежде чем приступить непосредственно к процедуре инсталляции, надо создать
раздел для установки Linux. Если такой раздел уже присутствует на диске, мож­
но, конечно, сразу запускать программу setup, но если ни одного раздела типа
Linux Native нет, будет выдано соответствующее предупреждение, после чего setup
вернет вас в командную строку.
В дистрибутив Slackware входят две программы для разбиения на разделы -
fdisk и cfdisk. Fdisk - классическая текстовая программа, которую используют
либо в нетривиальных случаях, либо просто потому, что к ней уже привыкли
(так как в течение многих лет это была единственная программа для разбивки диска
Slackware Linux 7.0.0 83

rxvt
c f d i s k 0 . 8i

Di s k D r i v e = / d e v / h d a
Heads: 255 S e c t o r s per Tr ack: 63 Cylinders: 524

Na me Flags Pa r t Type FS Ty pe Si z e (MB)

/ d e v /hdal Primary DOS F A T 1 6 CNO NA ME 1027.60


/dev/hda2 Primary Linux 2055 .20
/dev/hda3 Primary L i n u x Sw ap 13 3 . 3 6
/dev/hda4 Primary Linux 89 4 . 2 5

____________
[B o o t a b l e ] С Delete ] С He l p ] [Maximize] [ Print ]
[ Qu i t ] С Type ] С Units ] [ Write ]

_______________________ T o g g l e b o o t a b l e fl a g of the c u r r e n t p a r t i t i o nQ_____________________|

Рис. 2.61. Программа разбиения диска cfdisk

под Linux, - не было необходимости в создании программ с дружественным интер­


фейсом). Вторая программа, которой удобнее пользоваться, - cfdisk (буква «с» от
слова «curses» - названия используемой библиотеки вывода на экран).
Программа cfdisk предлагает интерактивный полноэкранный текстовый интер­
фейс (рис. 2.61). Так же как и fdisk, при запуске без параметров cfdisk начинает
работу с диском /dev/hda или /dev/sda, если в системе нет ID E -устройств. Для
редактирования таблицы разделов другого диска нужно указать имя соответству­
ющего устройства в командной строке; например, для второго ID E -диска на пер­
вом канале интерфейса эта команда будет выглядеть так:
cfdisk /dev/hdb
Все команды можно выполнить, выделив нажатием стрелок влево и вправо
нужный пункт меню и нажав клавишу Enter или пользуясь соответствующими
командами:
Вверх Переместить курсор в предыдущий раздел.
Вниз Переместить курсор в следующий раздел.
b Изменить состояние флага Boot (загрузочный) для текущего раздела
(пункт меню Bootable),
d Удалить текущий раздел (пункт меню Delete).
g Изменить геометрию диска (число головок, секторов, цилиндров) - эту
команду имеет смысл использовать, только если вы очень хорошо раз­
бираетесь в том, что делаете,
h, ? Подсказка (пункт меню Help).
m Максимизировать дисковое пространство, используемое текущим разде­
лом. Это делает раздел несовместимым с MS DOS, Windows или O S/2
(пункт меню Maximize).
84 Начальная установка дистрибутива

η Создать новый раздел (пункт меню New, если есть свободное место),
р Распечатать таблицу разделов на экране или записать ее в файл (пункт
меню Print). При этом можно будет выбрать один из трех форматов:
г В точности те данные, которые записываются на диск,
t Текстовая таблица.
s Текстовая таблица, упорядоченная по секторам.
q Выйти из программы, не внося никаких изменений в таблицу разделов
на жестком диске (пункт меню Quit),
t Изменить тип файловой системы текущего раздела (пункт меню Types),
и Изменить единицы, в которых показан размер раздела (пункт меню
Units).
W (только заглавная W ). Внести все сделанные изменения в таблицу раз­
делов на жестком диске (пункт меню Write). Пока не выполнена эта ко­
манда, никаких реальных изменений не произойдет. Так как эта опера­
ция уничтожает данные на модифицируемых разделах, вас дополнительно
попросят подтвердить внесение изменений.
Другая программа для разбивки дисков - fdisk, которую обычно используют
опытные пользователи в силу привычки. Программа эта применяется также в том
случае, если нужно произвести какие-то нетривиальные действия с таблицей раз­
делов; в fdisk вся работа идет в режиме командной строки. Единственным пара­
метром, задаваемым при ее вызове, является название устройства, с которым вы
собираетесь работать (по умолчанию - /dev/hda или /dev/sda). В командную стро­
ку fdisk вводятся следующие однобуквенные команды:
а Включить/выключить флаг загружаемого раздела (D O S/W indow s не
может загружаться с раздела, не помеченного этим флагом),
b Редактировать BSD-метку тома.
с Включить/выключить режим совместимости с DOS. При выключенном
режиме совместимости можно более эффективно использовать дисковое
пространство, но иногда DOS/W indows не работает с такими разделами,
d Удалить раздел.
1 Перечислить известные типы разделов.
m, h Вывести список команд с краткими описаниями.
η Добавить новый раздел.
о Создать новую пустую таблицу разделов.
р Показать текущее состояние таблицы разделов.
q Выйти из программы не производя никаких изменений.
t Изменить тип раздела.
и Изменить единицы размера, используемые при вводе и при выводе на
экран (либо секторы, либо цилиндры).
V П роверить таблицу разделов на отсутствие налож ений или других
ошибок.
w Записать новую таблицу разделов на диск (до выполнения этой коман­
ды на самом диске ничего не изменяется).
X Экспертный режим.
Slackware Linux 7.0.0 85

Для полной установки Slackware Linux, включая все пакеты - все Х-серверы,
Emacs и т.д., потребуется более 900 Мб, хотя, зная очень хорошо структуру па­
кетов, именно из Slackware можно установить систему Linux с С-компилятором
и с X Window объемом всего 40 Мб.
Обычно для установки Slackware создают раздел типа Linux Native размером
500 Мб - 1 Гб или больше и раздел типа Linux Swap, размер которого рекомендует­
ся устанавливать равным удвоенному объему оперативной памяти. Существующие
разделы других систем (например, DOS/W indows на рис. 2.61) можно сохранить.
Кроме того, иногда полезно создать еще один раздел Linux Native для специальных
целей - хранения новостей, если компьютер будет служить в качестве сервера но­
востей, для домашних каталогов пользователей, в целях безопасности и т.д.

2.6.3. Основное меню


После ввода команды setup в командной строке вы попадаете в основное меню ин­
сталлятора (рис. 2.62). Процедура установки Slackware сводится к движению по
этому меню сверху вниз. При этом в большинстве случаев по окончании очередной
стадии вам будет предложено сразу перейти к следующей или вернуться в меню.

rxvt

W e l c o m e to S l a c k u a r e L i n u x Setup.
S e l e c t an o p t i o n b e l o u u s i n g the U P / D O W N keys and S P A C E or ENTER.
A l t e r n a t e ke y s may also be used: r+ ' r r- r r and TAB·

Read the S l a c k u a r e S e t u p HE L P fi le
R e m a p yo u r k e y b o a r d if y o u ' r e not u s i n g a US
Set up your su a p p a r t i t i o n ( s )
Set up your t a r g e t p a r t i t i o n s
Select source media
S e l e c t c a t a g o r i e s of s o f t w a r e to i n s t a l l
Install selected software
R e c o n f i g u r e yo u r L i n u x s y s t e m
Exit S l a c k u a r e L i n u x S e t u p

< Cancel>

Рис. 2.62. Основное меню инсталлятора Slackware Linux

Включив опцию HELP (Подсказка), вы выведете на экран небольшой тексто­


вый файл с общими рекомендациями по разбиению диска и использованию про­
граммы setup. Начать можно с пункта KEYMAP для выбора раскладки клавиату­
ры, хотя буквы кириллицы вы не увидите, пока не измените экранный шрифт
в разделе CONFIGURE. После пункта KEYMAP инсталлятор проведет вас
последовательно через пункты ADDSW AP (Подключение раздела подкачки),
TARGET (Выбор раздела для установки системы), SOURCE (Выбор носителя
86 Начальная установка дистрибутива

с дистрибутивом), SELECT (Выбор пакетов для установки), INSTALL (Собствен­


но инсталляция) и CONFIGURE (Конфигурирование системы).
С момента появления приглашения Slackware login: в течение всего времени рабо­
ты инсталлятора задействованы шесть виртуальных консолей, на которые можно
переключаться клавишами Alt+Fl - Alt+F6. По ходу установки, используя эти кон­
соли, также можно входить в систему под именем пользователя root и выполнять лю­
бые действия - монтировать и демонтировать файловые системы, находяшиеся на
жестком диске, запускать различные программы и т.д. Можно даже осуществить уста­
новку всей системы, не пользуясь программой setup. Дистрибутив Slackware, верный
своему принципу, предоставляет максимальную свободу действий.

2.6.4. Стадия KEYMAP


На этой стадии вы можете переопределить раскладку клавиатуры (рис. 2.63).

rxvt

You ma y s e l e c t one of the -Following k e y b o a r d maps.


If you do not s e l e c t a k e y b o a r d map, 'u s ■m a p ' (the
US k e y b o a r d map) is the d e fa ul t. Use the U P / D O H N
a r r o u ke y s to s c r o l l t h r o u g h the w h o l e li s t of
choices .

1
і
n
n
P
r
u l .map

<Cancel>

Рис. 2.63. Изменение раскладки клавиатуры

В дистрибутив Slackware входят только три классических варианта русской рас­


кладки: ru.map, rul.map и ru2.map, распространяемые вместе с пакетом раскладок
для Linux. В ru.map переключение осуществляется при помоши правой клавиши
Ctrl, в rul.m ap - при помощи правой Alt; в ней отключены буквы ё, Ё и Ъ. Расклад­
ка ru2.map аналогична ru l, но использует кодировку IBM -CP866 (применяющую­
ся в MS DOS) вместо принятой в среде UNIX KOI8-R.
После выбора раскладки инсталлятор предложит вам ввести какой-нибудь текст
для проверки ее работоспособности, но кириллических букв вы увидеть не сможете,
так как в загруженном на этой стадии шрифте их нет. Вообще говоря, эта стадия
в действительности нужна в тех странах, где клавиатура значительно отличается от
американской, например пользователям в Германии, так как им будет сложно потом
Slackware Linux 7.0.0 87

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


американской. Введя цифру 2, можно вернуться в меню выбора раскладки, при
помощи цифры 1 - продолжить процесс установки.

2.6.5. Стадия ADDSWAP


На следующей стадии инсталлятор проверяет, присутствует ли у вас раздел типа
Linux Swap (и если да, то сколько их всего). В случае, если такого раздела нет,
вам будет задан вопрос, продолжить ли установку системы без создания раздела
подкачки (ответ Yes), - это вполне возможно, если хватает оперативной памяти, -
или прекратить работу программы setup, чтобы еще раз запустить cfdisk (ответ No).
Если раздел типа Linux Swap обнаружен, инсталлятор предлагает его инициали­
зировать в качестве области подкачки (рис. 2.64). Если обнаружено несколько та­
ких разделов - предлагается инициализировать их все. После этого setup выполня­
ет форматирование указанного раздела, так что если там имеются какие-нибудь
данные, они будут безвозвратно потеряны. Раздел подкачки немедленно включа­
ется в систему виртуальной памяти, и инсталлятор показывает строку, которую
он добавит в файл /etc/fstab. Структура этого файла будет рассмотрена позже,
в разделе 4.3, а пока заметим только, что все разделы, занесенные инсталлятором
в этот файл, будут автоматически монтироваться при запуске системы.

rxvt

Slackware S e t u p has d e t e c t e d a suap partition:

/dev/hda3 394 394 410 136552+ 82 Linux swap

Do you uiish t o install this as your suap partition?

Ш < No >

Рис. 2.64. Подключение области подкачки

2.6.6. Стадия TARGET


Следующая стадия процесса инсталляции - выбор раздела, в который будет уста­
новлена система. Инсталлятор выводит список всех обнаруженных разделов типа
Linux Native (рис. 2.65) и предлагает выбрать тот, на котором будет размещена
корневая файловая система.
88 Начальная установка дистрибутива

rxvt

Please select a partition from th e -Following li s t to use -For y o ur


ro o t (/) L i n u x p a r t i t i o n .

/ d e v / h d a 2 e i _ i n u x n a t i v e 2 1 0 4 515K
Linux native 9157Ф5К
(add none, c o n t i n u e ui t h setup)
(add none, c o n t i n u e ui t h setup)
(add none, continue uith setup)

< Cancel>

Рис. 2.65. Выбор раздела для установки системы

После выбора корневого раздела setup предлагает его отформатировать


(Form at), отформатировать с проверкой на сбойные сектора (Check) или не тро­
гать (No). Обычно выбирают пункт Format, кроме случая, когда корневой раздел
уже содержит файловую систему Linux.
В следующем диалоговом окне предлагается выбрать плотность узлов файло­
вой системы - inode density. Значение по умолчанию, 1 узел на 4096 байт, обыч­
но годится, но если вы собираетесь размещать на этом разделе сотни тысяч фай­
лов, как в случае сервера новостей, имеет смысл выбрать более плотный вариант -
2096, а в исключительных случаях 1024 байта. После этого корневой раздел форма­
тируется с использованием указанных параметров и монтируется автоматически.
Если у вас было больше одного раздела типа Linux Native, на этой стадии снова
выводится список разделов, как показано на рис. 2.65, чтобы вы выбрали следую­
щий из них для обработки. Инсталлятор снова предлагает отформатировать этот
раздел и в случае утвердительного ответа запрашивает плотность inode. После это­
го запрашивается точка монтирования - название каталога, содержимое которого
будет соответствовать данному разделу. Создавать дополнительные разделы име­
ет смысл для каталогов /home (здесь размещаются все домашние каталоги пользо­
вателей), /tmp (каталог временных файлов; из соображений безопасности можно
его смонтировать с запретом на исполнение программ), /var/spool (если вы имее­
те дело с сервером новостей, здесь будет располагаться огромное количество не­
больших файлов, поэтому может оказаться полезным отформатировать этот раз­
дел с большим числом inode). Раздел форматируется и монтируется, данная
операция повторяется для всех дополнительных разделов.
По окончании стадии TARGET инсталлятор показывает, какие строки он добав­
ляет в / e tc / f stab для автоматического монтирования всех обработанных разделов.
Slackware Linux 7.0.0 89

Если в вашей системе присутствуют разделы типа FAT, VFAT, FAT32 или
HPFS, используемые в различных версиях DOS, Windows, WindowsNT и OS/2,
инсталлятор их обнаружит и предложит добавить их описания в /etc/fstab,
чтобы обеспечить доступ к ним из Linux. В случае утвердительного ответа будет
выведен список, аналогичный представленному на рис. 2.65, при этом для каж ­
дого раздела будет предложено определить точку монтирования. Обычно для
этих разделов выбирают точки монтирования /dosc, /dosd, /dose и т.д. (старый
вариант) или /mnt/c, /mnt/d, /mnt/e и т.д. (вариант, удовлетворяющий стандарту
файловой системы FSSTD). По окончании этой стадии вам будут показаны но­
вые строки, добавленные в /etc/fstab.
2.6.7. Стадия SOURCE
На этой стадии инсталлятор определяет местонахождение самого дистрибутива
Slackware. Первый вопрос - тип носителя, на котором содержится дистрибутив
(рис. 2.66).
rxvt

W h e r e do you pl a n to i n s t a l l Slackuiare L i n u x f r o m ?

Install from a S l a c k w a r e C D - R O M
Install from a hard d r i v e p a r t i t i o n
3 Install via NFS
4 Install from a p r e - m o u n t e d d i r e c t o r y
5 Install from f l o p p y d i s k s (A and N s e r i e s only)

< Cancel>

Рис. 2.66. Носители, с которых можно установить Slackware Linux

2.6.7.1. Установка с компакт-диска


Теперь инсталлятор предлагает автоматически определить устройство, к которо­
му подключен CD-ROM (auto); ответив manual, вы сможете сделать выбор вруч­
ную. Во втором случае выводится меню, имеющее следующий вид:
custom Type in the CD-ROM device to use
/dev/hdb CD-ROM slave on first IDE bus
/dev/hda CD-ROM master on first IDE bus (unlikely)
/dev/hdc CD-ROM master on second IDE bus
/dev/hdd CD-ROM slave on second IDE bus
90 Начальная установка дистрибутива

Это меню содержит все возможные устройства - все ID E -диски, SCSI-диски,


устройства, подключаемые к параллельному порту, и устаревшие модели CD-
ROM, не поддерживающие стандарт IDE/ATAPI. Разумеется, вся эта экзотика име­
ет смысл, только если был использован образ загрузочной дискеты, содержащий
ядро с поддержкой такого устройства. Для совсем экзотических случаев здесь име­
ется опция custom, позволяющая ввести имя устройства и его старший и млад­
ший номера вручную. После выбора устройства оно будет смонтировано как CD-
ROM. В случае ошибочного монтирования вам дается возможность его повторить,
проигнорировать или выбрать другое устройство.
Выбор опции auto приводит к тому, что программа пытается смонтировать каж­
дое устройство из списка в качестве CD-ROM - до первой удачной попытки. Как
правило, автоматическое монтирование проходит успешно.
В следующем диалоговом окне предлагается выбрать тип установки - slackware,
slacktest или custom. Вариант slackware представляет собой собственно установку
Slackware Linux - набора пакетов суммарным объемом (для Slackware 4.0.0) до
386 Мб. В другом варианте, slacktest, на диск устанавливается всего 10 Мб
данных и большинство программ запускается прямо с CD (а точнее, каталог /usг
в устанавливаемой системе заменяется на символическую ссылку на /cd rom/live/us г).
Таким образом можно попробовать Linux, но работать так, конечно, сложно - хотя
бы потому, что CD-ROM все время занят. Если вы захотите потом установить пол­
ноценный Linux, придется все устанавливать заново. Третья опция, custom, м о­
жет потребоваться только при работе с CD, записанными третьими лицами, ког­
да дистрибутив Slackware не находится в каталоге slakware. После выбора этой
опции инсталлятор попросит ввести имя каталога, содержащего дистрибутив;
в дальнейшем процедура проходит так же, как при выборе стандартной опции
slackware.
rxvt

Noui ые ne e d to kn o w uhat d i r e c t o r y on th i s p a r t i t i o n
the S l a c k w a r e s o u r c e s can be f o u n d in- (The d i r e c t o r y
in w h i c h the s u b d i r e c t o r i e s for ea c h di s k is found)
N O T E : You mu s t gi v e the d i r e c t o r y na m e r e l a t i v e to the
top of the p a r t i t i o n . So, for ex am p l e , if y o u ' r e g o i n g
to m o u n t this p a r t i t i o n u n d e r / u s r , d o n ' t i n c l u d e the
' / u s r ' a t the b e g i n n i n g of the p a t h n a m e .

Wh a t d i r e c t o r y are the S l a c k w a r e s o u r c e s in?

/s l a c k w a r e

<Cancel>

Рис. 2.67. Выбор каталога для установки с жесткого диска


Slackware Linux 7.0.0 91

2.6.7.2. Установка с жесткого диска


Второй вид носителя для дистрибутива, жесткий диск, используется после вы ­
бора второго пункта на стадии SOURCE. Дистрибутив Slackware или его часть
можно поместить в любой каталог на жестком диске, а также в любой раздел -
под Linux, Windows или Windows NT.
На этой стадии инсталлятор запросит имя раздела, на котором находится
дистрибутив. Если вы забыли имена, присвоенные разделам в Linux, можно, на­
жав клавишу Enter, вывести на экран их список или просмотреть содержимое каж­
дого раздела на другом виртуальном терминале.
В следующем диалоговом окне предлагается ввести на выбранном только что
разделе имя каталога, который содержит дистрибутив Slackware. Точнее, им е­
ется в виду каталог, содержащий подкаталоги с именами а1, а2, арі и т. д. Именно
в этих подкаталогах и должен находится сам дистрибутив. Поэтому если вы, на­
пример, собираетесь загружать Slackware по FTP, вам потребуется только этот ка­
талог и образы дискет.
После этого инсталлятор монтирует раздел и проверяет, существует ли указан­
ный каталог. В случае ошибки он предложит выбрать раздел и каталог заново или
вернуться назад, а в случае успеха предложит перейти к следующей стадии в ос­
новном меню.

2.6.7.3. Установка по NFS


В локальных сетях часто наиболее удобным способом установки Linux является уста­
новка по NFS. Дистрибутив размещается на файловом сервере, доступном по этому
протоколу, и для запуска инсталлятора используется образ загрузочной дискеты n et. і.
На этой стадии от вас потребуется ввести последовательно ІР-адрес данного
компьютера, маску сети (обычно 255.255.255.0), а если в вашей сети есть шлюз
(и если он вам понадобится для доступа к N FS-серверу), то еще и его 1Р-адрес.
Затем запрашивается 1Р-адрес N FS-сервера и каталог, в котором находится ди­
стрибутив Slackware (то есть, опять же каталог, в котором находятся подкаталоги
типа а1, а2, аЗ и т.д.)
После этого программа setup переходит в обычный текстовый режим и выполняет
конфигурацию вашей сетевой карты, подключение к сети, а также монтирует уда­
ленную файловую систему. Инсталлятор спрашивает вас, не было ли сбоев в ходе
этих, достаточно сложных, операций, и если вы ответите No (нет), переходит
к следующей стадии.
2.6.7.4. Установка из каталога
Самый простой случай реализуется, когда дистрибутив находится в каталоге на уже
смонтированной (например, в другой виртуальной консоли) файловой системе.
Надо только задать полный путь к этому каталогу, например /dosc/slakware.
2.6.7.5. Установка с дискет
Раньше весь дистрибутив Slackware можно было установить с дискет. Для этого
все наборы пакетов (Д АР, D, Е) были разбиты на части, каждая из которых поме­
щалась на одну дискету. Сейчас такое разбиение сохранено только для набора А
92 Начальная установка дистрибутива

rxvt

The ba s e S l a c k w a r e s e r i e s (A) can be i n s t a l l e d from 1 . 2M


or 1 ■44M media. Mo s t of the o t h e r d i s k s will not fit on
1. 2M media, but can be d o w n l o a d e d to yo u r ha r d d r i v e and
i n s t a l l e d from t h e r e later-

H h i c h d r i v e do you wa n t to i n s t a l l f r o m ?

/dev /f d 0 u l 4 4 0 · ! .44 M d r i v e a -
1. 44M d r i v e b '
1 . 2M d r i v e a :
1 . 2M d r i v e b :

И Ш <c; :1>

Рис. 2.68. Установка Slackware Linux с дискет

(базовая система) и набора N (сетевые программы). Вы можете скопировать их на


дискеты и воспользоваться этим способом установки. Единственный вопрос ин­
сталлятора - название устройства (/dev/fdO (А:) или /dev/fd 1 (В:)) и его емкость
(1,2 или 1,44 Мб) (рис. 2.68).

2.6.8. Стадия SELECT


Массив пакетов, поставляемых с дистрибутивом Slackware, имеет несколько уров­
ней детализации. Самый крупный из них - наборы пакетов или дисков (рудимент
старых времен, когда все можно было поставить с дискет). У каждого набора есть
название, состоящее из одной-двух букв, и соответствующий подкаталог в ката­
логе в дистрибутивом.
На этой стадии вам предстоит выбрать, какие из 17 наборов дисков вы собира­
етесь устанавливать (рис. 2.69):
А - базовая система Linux
АР - приложения, не требующие для работы X Window
D - средства разработки (С, C++, Lisp, Perl и т.д.)
DES - средства шифрования
Е - система GNU Emacs
F - разнообразная документация, часто задаваемые вопросы и т.д.
GTK - графическая система GNOME
К - исходные тексты ядра Linux
KDE - графическая система KDE
N - поддержка сети (TC P/IP, почта, новости и т.д.)
Т - система верстки и подготовки к печати ТеХ
Slackware Linux 7.0.0 93

Рис. 2.69. Выбор наборов пакетов для инсталляции

TCL - языки создания сценариев tc l/tk


X - графическая система X Window (версия XFree86)
ХАР - приложения для X Window
XD - средства разработки Х-серверов
XV - диспетчер окон и приложения OpenLook
Y - игровые программы, не требующие для работы X Window
Из этих наборов абсолютно необходим только набор А Важными являются АР,
D, F, К и N. Если вам нужна графическая система, то потребуются наборы X и ХАР.
Все остальное отвечает специфичным требованиям и нужно далеко не на всех сис­
темах. Пакеты, которых нет в вашей копии дистрибутива, будут автоматически
помечены как отсутствующие.
С другой стороны, не произойдет ничего страшного, если вы выберете все на­
боры пакетов, ведь на следующей стадии вам предоставится возможность допол­
нительного контроля за меньшими группами пакетов и за каждым пакетом в от­
дельности.

2.6.9. Стадия INSTALL


Теперь начинается собственно инсталляция. Программа проверит, выполнены
ли все необходимые операции, и если не обнаружит ошибок, предложит выбрать
режим инсталляции (рис. 2.70).
Режим full
В этом режиме инсталлятор устанавливает все пакеты программ, входящие
в дистрибутив. Пакеты устанавливаются из тех наборов, которые вы выбрали на
предыдущем этапе. Это самый простой способ установки, но требующий большого
94 Начальная установка дистрибутива

rxvt

Nou you mu s t s e l e c t the ty p e of p r o m p t s y o u ' d li k e to see d u r i n g


the i n s t a l l a t i o n p r o c e s s . If you h a v e the d r i v e space, the ' f u l l J
o p t i o n is quick, easy, and by far the mo s t f o o l p r o o f c h o i c e - The
" n e w bi e' mo d e p r o v i d e s the mo s t i n f o r m a t i o n but is much mo re
t i m e - c o n s u m i n g ( p r e s e n t i n g the p a c k a g e s one by one) th a n the
m e n u - b a s e d c h o i ce s. O t h e r w i s e , yo u can pi c k p a c k a g e s fr o m m e n u s
using 'expert' or 'menu" mode. Which type of prompting would you
li k e to u s e?

I n s t a l l e v e r y t h i n g (up to 620 MB of s o f t w a r e )
Use v e r b o s e p r o m p t i n g (and f o l l o w t a g f i l e s )
C h o o s e g r o u p s of p a c k a g e s fr o m i n t e r a c t i v e me n u s
C h o o s e i n d i v i d u a l p a c k a g e s fr o m i n t e r a c t i v e m e n u s
Use c u s t o m t a g f i l e s in the p a c k a g e d i r e c t o r i e s
Use t a g f i l e s in the s u b d i r e c t o r i e s of a c u s t o m p a th
Re a d the p r o m p t mo d e h e l p f i le

Ш ЯШ < Cancel>

Рис. 2.70. Режимы инсталляции Slackware Linux

пространства на диске. При этом будет установлено множество совершенно не­


нужных вам пакетов, например Х-серверы для разнообразных видеокарт, кото­
рых у вас нет. Позже можно будет удалить лишние пакеты при помощи програм­
мы removepkg.
Режим newbie
Если вы устанавливаете Linux в первый раз, запаситесь временем и выбирайте
этот режим. В каждом наборе пакетов имеется специальный файл tagf ile , в кото­
ром указано, какие пакеты являются необходимыми, какие ненужными, а какие
можно установить по выбору. Необходимые пакеты инсталлятор устанавливает
автоматически, а кроме этого выводит описания пакетов по выбору, содержащие­
ся в tagf ile , и спрашивает, надо ли эти пакеты ставить.
Режим menu
В этом режиме для каждой группы пакетов выводится меню, из которого мож­
но выбрать еще один иерархический подуровень классификации пакетов. Пакеты
выбираются группами, например «Компилятор C /C + +» или «исходный текст
ядра». Этот способ быстрее всего и используется в том случае, если вы хотите по­
ставить не всю систему, а только то, что действительно необходимо, и если вы точ­
но знаете, что именно вам нужно.
Режим expert
Аналогичен режиму menu, но теперь выбирается каждый отдельный пакет.
Предоставляет максимум возможностей вмешиваться в процесс инсталляции,
но начинающим работать в этом режиме не рекомендуется. Новичок рискует
не установить какой-нибудь пакет, от которого зависит работа других пакетов.
Slackware Linux 7.0.0 95

В Slackware, в отличие от Red H at, зависимости между пакетами не отслеж ива­


ются.
Режим custom
Это аналог режима newbie, только теперь файлы tag f ile , определяющие, какие
именно пакеты будут устанавливаться, не берутся с дистрибутива, а создаются
вами. В пункте меню custom надо указать расширение, присвоенное именам этих
файлов. Если инсталлятор не найдет файлы с таким расширением, будут исполь­
зоваться, прилагающиеся к дистрибутиву, то есть произойдет установка в режи­
ме newbie.
Режим tagpath
Аналог режима custom, но здесь нужно указывать не расширения файлов
tag f ile , а путь к каталогу, в котором в подкаталогах Д АР и т.д. располагаются
эти файлы. Этот режим удобен, если дистрибутив располагается на CD, на кото­
рый, естественно, ничего записать нельзя. Если в указанных подкаталогах файлы
tag f i l e найдены не будут, установка пойдет в режиме newbie.
Закончив установку, инсталлятор переходит к последней стадии из указанных
в основном меню - конфигурированию системы.

2.6.10. Стадия CONFIGURE


2.6.10.1. Установка ядра
На этой стадии выполняются все необходимые действия по настройке основных
элементов системы. Первое из них - установка ядра системы (рис. 2.71).
ravt

In o r d e r for yo u r s y s t e m to bo o t c o r r e c t l y , a k e r n e l mu s t be
i n s t a l l e d . If y o u ' v e made it this far u s i n g the i n s t a l l a t i o n
b o o t d i s k ' s kern el , you s h o u l d p r o b a b l y i n s t a l l it as yo u r s y s t e m
k e r n e l (/ vm l i n u z ) . If y o u ' r e sure you kn o w wh a t y o u ' r e doing, you
can al s o i n s t a l l yo u r c h o i c e of k e r n e l s from the S l a c k w a r e CD, or
a k e r n e l fr o m a f l o p p y disk. You can al s o sk i p this menu, u s i n g
w h a t e v e r k e r n e l has be e n i n s t a l l e d a l r e a d y (such as a g e n e r i c
k e r n e l fr o m the A s e ri es .) W h i c h o p t i o n w o u l d you l i k e ?

Use the kernel from the installation bootdisk


Use a k e r n e l fr o m th e S l a c k w a r e CD
I n s t a l l a z i ma ge or b z i m a g e fi l e fr o m a DOS f l o p p y
Sk i p this me n u and use the d e f a u l t / v m l i n u z

Ш ЇЖ < Cancel>

Рис. 2.71. Установка ядра системы


96 Начальная установка дистрибутива

Обычно, если вы установили ядро из дисковой серии А, достаточно выбрать


пункт меню skip. Инсталлятор проверит, действительно ли ядро уже установле­
но, и если нет, предложит вернуться или продолжить работу без установки ядра.
Дистрибутив Slackware позволяет осуществить даже такой вариант установки,
при котором ядро загружается либо с инсталляционной дискеты, либо с D O S /
Windows-раздела с помощью программы loadlin.
Опция bootdisk позволит установить в качестве системного именно то ядро,
с которого вы загрузились для установки системы (если, конечно, вы стартовали
с дискет, а не с помощью loadlin). Инсталлятор предложит вставить загрузочную
дискету в /dev/fdO (дисковод А:) и скопирует образ ядра автоматически.
Можно также выбрать одно из ядер, поставляющихся на Slackware CD. После
выбора опции cdrom инсталлятор предложит выбрать один из подкаталогов
в /cdrom/kernels, имена которых совпадают с именами образов загрузочных дис­
кет из /cdrom/bootdsks. 144.
Третий вариант, floppy, может потребоваться, если ваша система требует спе­
циально сконфигурированного ядра, которое вы подготовили на другой Linux-
системе. В этом случае инсталлятор попросит вставить в дисковод /dev/fdO (А:)
дискету, отформатированную в формате MS DOS и содержащую образ ядра
в виде файла с именем ZIMAGE или BZIMAGE.
2.6.10.2. Создание загрузочной дискеты
После того как установлено (или не установлено) ядро, инсталлятор предлагает
создать загрузочную дискету (рис. 2.72). Разумеется, можно этого не делать, если
система будет загружаться с жесткого диска через загрузчики LILO или loadlin.
Кроме того, при необходимости можно с этой целью использовать дискеты, со­
зданные для инсталляции. Тем не менее лучше перестраховаться и приготовить
одну или даже две загрузочные дискеты для вашей системы.
rxvt

It is h i g h l y r e c o m m e n d e d th a t you m a k e a b o o t d i s k (or two) for y o ur


s y s t e m at th i s time. T h e r e are tuio t y p e s of b o o t d i s k s that you can
make: a s i m p l e b o o t d i s k (which is just a k e r n e l i m a g e w r i t t e n d i r e c tly
to disk) or a LI L O b o o t d i s k (which is mo r e f l e x i b l e , but t a k e s a
l i t t l e l o n g e r to load)- N h i c h o p t i o n w o u l d you l i k e ?

f ormat format fit disk in /dev/fdO


ma k e s i m p l e v m l i n u z > / d e v / f d O b o o t d i s k
ma k e lilo b o o t d i s k
l e a v e b o o t d i s k me n u and c o n t i n u e wi t h the c o n f i g u r a t i o n

< Cancel>

Рис. 2.72. Создание загрузочной дискеты


Slackware Linux 7.0.0 97

Выбор опции format позволит вам выполнить форматирование дискеты в дис­


ководе /dev/fdO (А:). При выборе следующих двух опций возникает необходи­
мость в уже отформатированной дискете.
Выбрав опцию simple, вы произведете прямое копирование ядра на дискету. Эта

с нее можно будет загрузить только вашу систему и никакую другую. Ядро, поме­
щаемое на дискету, конфигурируется таким образом, чтобы автоматически загру­
жать систему, расположенную в том разделе (/dev/hdal,/dev/hda4 и т.п.), где вы ее
установили.
Более гибкий вариант, загрузчик на дискете, реализуется при выборе опции
lilo. При загрузке с такой дискеты появится подсказка LILO. Если сразу нажать
клавишу Enter, будет выполнена обычная загрузка, как в предыдущем случае. При
необходимости можно загрузить систему с любого другого раздела, введя после
такой подсказки команду типа:
mount root=/dev/sda1 го

где вместо /dev/sda1 может быть указан любой раздел, на котором находится корневая
файловая система Linux со всеми необходимыми файлами.
После того как дискета подготовлена (или если вам вообще не нужна загрузоч­
ная дискета), выберите пункт меню continue для продолжения процесса конфи­
гурирования системы.

2.6.10.3. Подключение модема


На этом этапе конфигурации вы должны указать системе, с каким последователь­
ным портом связан модем, если он у вас имеется (рис. 2.73).

Th i s pa r t of the c o n f i g u r a t i o n p r o c e s s ui l l c r e a t e a / d e v / m o d e m
li n k p o i n t i n g to the c a l l o u t d e v i c e (ttySO^ ttySl, ttyS2„ ttyS3)
r e p r e s e n t i n g yo u r d e f a u l t modem. You can c h a n g e th i s li n k l a t e r if
you mo v e yo u r m o d e m to a d i f f e r e n t port. P l e a s e s e l e c t the c a l l o u t
d e v i c e uihich you w o u l d li k e to us e for yo u r modem:

/ (COM2: u n d e r DOS)
/ (COM3: u n d e r DOS)
/ (COM4: u n d e r DOS)
n I d o n ' t have a modem!

ШШШ < Cancel>

Рис. 2.73. Подключение модема


98 Начальная установка дистрибутива

Фактически вся поддержка модемов уже включена в ядро и в программы, ра­


ботающие с ними. Все, что происходит на этом этапе - создание символической
ссылки /dev/modem на выбранное из меню устройство. В дальнейшем всем про­
граммам, работающим с модемом, можно будет указывать одно и то же устройство
/dev/modem. Более того, большинство программ считает, что модем доступен как
/dev/modem по умолчанию. В дальнейшем, если вы подключите модем к другому
порту, переопределить символическую ссылку можно будет командой
ln -sf /dev/ttySO /dev/modem

где вместо /dev/ttySO может фигурировать любое другое устройство из набора


/dev/ttyS?.

2.6.10.4. Автомонтирование CD
В этот момент основной процесс конфигурации заканчивается и выполняются от­
дельные файлы сценариев, установленные вместе с пакетами программ. Некото­
рые пакеты, например программы поддержки T C P /IP сети, требуют определен­
ного конфигурирования перед тем, как они будут встроены в систему. В каждый
такой пакет входит специальный сценарий, который размещается в каталоге
/var/log/setup и выполняется автоматически при установке этого пакета програм­
мой setup или pkgtool. На данном этапе программа setup по очереди выполняет
все эти сценарии, установленные в ходе основной инсталляции. При установке
всех пакетов первым будет выполнен сценарий /var/log/setup/setup. cdrom, кон­
фигурирующий дисковод CD-ROM.
Если CD-ROM не был определен в ходе установки, на этом этапе будет выпол­
нена его конфигурация, аналогичная описанной в разделе 2.6.7.1. После этого

Рис. 2.74. Автомонтирование CD


Slackware Linux 7.0.0 99

создается символическая ссылка /dev/cd rom, указывающая на устройство, к которому


реально подключен CD-ROM. Последний вопрос этого сценария (см. рис. 2.74) -
выполнять ли автоматическое монтирование CD, если в момент загрузки систе­
мы он вставлен в CD-ROM.

2.6.10.5. Выбор шрифта


Следующий сценарий - /var/log/setup/setup. fontconfig. Если вы ответите Yes на
вопрос о том, следует ли выбрать какой-либо нестандартный экранный шрифт, на
экран будет выведен список шрифтов (рис. 2.75).
rxvt

S e l e c t one of the f o l l o w i n g c u s t o m
fonts. If you d e c i d e you like it,
you can ma k e it y o u r new d e f a u l t
s c r e e n font- Y o u ' l l be ab l e to try
as many of t h e s e as you like.

< Cancel)

Рис. 2.75. Выбор нестандартного экранного шрифта

К сожалению, этот список не включает в себя все шрифты из /usr/lib/kbd/


consolefonts, в частности не все русские шрифты присутствуют здесь. Тем не менее
выберите какой-нибудь подходящий шрифт. При этом инсталлятор создаст сцена­
рий /etc/rc. d/rc. font, который вы сможете легко отредактировать для использо­
вания более подходящего кириллического шрифта, как будет сказано в разде­
ле 6.1. После выбора любого шрифта из меню (рис. 2.75), сценарий покажет окно
с пробным текстом, набранным этим шрифтом. Если вы ответите No, можно бу­
дет задать другой шрифт, ответ Yes приводит к созданию сценария /etc/rc. d/
rc. font и продолжению конфигурации системы.
Эту операцию конфигурирования можно выполнить и позже, воспользовав­
шись командой fontconfig.

2.6.10.6. Конфигурирование LILO


Наиболее удобный способ запуска системы Linux с жесткого диска - использова­
ние специального загрузчика LILO (Linux Loader), который позволяет загружать
Linux и любые другие операционные системы из любого раздела. Первый вопрос
100 Начальная установка дистрибутива

конфигуратора LILO - использовать ли Frame buffer console - графическую кон­


соль вместо обычной текстовой и с каким разрешением. Выбирать эту опцию мож­
но только в том случае, если у вас установлена видеокарта, которая поддерживает
линейный кадровый буфер (LFB) без каких-либо специальных драйверов. Это не
означает, что будет осуществляться вход в графическую систему X Window. При
использовании Frame buffer console переключение в графический режим осу­
ществляет сам загрузчик, еще до запуска ядра системы, а при использовании
графического входа система загружается в текстовом режиме, и лишь потом за­
пускается X Window, с помощью которой устанавливается графический интер­
фейс. Если вы выберете Frame buffer console, вам также потребуется специальный
X server - XF86_FBDev.
LILO можно установить несколькими способами - в главную загрузочную за­
пись (M BR), в суперблок Linux-раздела или на дискету (рис. 2.76).

rxvt

LI L O can be i n s t a l l e d to a v a r i e t y of pl aces:

1. The M a s t e r Boot R e c o r d of your f i r s t hard drive.


2. The s u p e r b l o c k of your ro o t L i n u x p a r t i t i o n . (which co u l d
be made the b o o t a b l e p a r t i t i o n ui t h DOS or L i n u x fdisk, or
b o o t e d uiith a p r o g r a m like O S / 2 Bo o t Ma na ge r)
3. A f o r m a t t e d f l o p p y di s k -

O p t i o n s 2 and 3 are the safe st , but o p t i o n 2 do e s r e q u i r e a l i t t l e


e x t r a wo r k l a t e r ( s e t t i n g the p a r t i t i o n b o o t a b l e uith fdisk) .
W h i c h o p t i o n u o u l d you l i k e ?

Install to M a s t e r Bo o t R e c o r d
R Install to s u p e r b l o c k Cuihich mu s t be made b o o t a b l e )
F Install to a f o r m a t t e d f l o p p y in / d e v / f d O ( A O

< Cancel>

Рис. 2.76. Конфигурирование LILO

В случае, если вы используете Boot Manager из O S/2, сценарий определит это


автоматически и предложит установить LILO только в суперблок, так как его уста­
новка в MBR уничтожит любой другой системный загрузчик. С другой стороны,
сам LILO может выполнять те же функции, что и Boot Manager, запуская любые
операционные системы, установленные в любых разделах, так что выбор загруз­
чика - дело вкуса. Выбор опции MBR приведет к установке LILO в качестве ос­
новного загрузчика в системе, опции Root - к установке его в суперблок Linux-раз-
дела (если используется какой-либо другой мультисистемный загрузчик), опции
Floppy - к его установке на отформатированную дискету в дисководе /dev/fdO (А:).
При установке LILO сценарий liloconfig автоматически обнаружит все разделы
типа Linux Native, DOS/W indows и O S/2 и предложит выполнить автоматическое
Slackware Linux 7.0.0 101

построение файла конфигурации (вариант инсталляции simple). Даже если вы


не имеете представления о том, как строится файл конфигурации /etc/lilo.conf,
лучше воспользоваться пунктом expert, который позволит выполнить тонкую
настройку этого файла из удобного меню. Здесь можно ввести дополнительные
параметры ядра, выбрать временной интервал, в течение которого LILO держит
паузу, высвечивая подсказку для выбора загружаемой системы, а также выбрать
и поименовать отдельно каждый раздел, о котором будет известно загрузчику.
Если LILO вам не нужен или вы собираетесь сконфигурировать его позже, можно
выбрать опцию skip и перейти к следующему этапу конфигурации системы.
Операцию конфигурирования LILO можно выполнить и позже, воспользовав­
шись командой liloconfig.

2.6.10.7. Настройка сети


Следующий сценарий, оказывающийся в /var/log/setup, - setup, netconfig. Он
устанавливается туда при распаковке пакетов из серии N (рис. 2.77).

rxvt

Nou ше mi l l a t t e m p t to c o n f i g u r e y o u r ma i l and TCP/ IP . This


p r o c e s s p r o b a b l y u o n ' t uo r k on al l p o s s i b l e n e t w o r k
c o n f i g u r a t i o n s , but s h o u l d gi v e you a go o d s t ar t- You ui l l be
a b l e to r e c o n f i g u r e yo u r s y s t e m at any ti m e by ty ping:

netconfig

Ж ІЖ

Рис. 2.77. Конфигурирование сети

Конфигурационный сценарий предложит указать следующие параметры:


1. Имя компьютера без имени домена (например, www для www.lionking.orgy
2. Имя домена без первой точки (например, lionking.org для www.lionking.orgy
3. Будет ли использоваться реальная сеть или только установлен loopback -
псевдоустройство, связывающее компьютер в сеть с самим собой. Во втором
случае следующие три вопроса пропускаются.
4. IP -адрес компьютера.
5. Маска сети.
102 Начальная установка дистрибутива

6. Адрес шлюза.
7. Будет ли использоваться сервер DNS, и если да, то каков его 1Р-адрес.
После этого создаются файлы /etc/rc. d/rc. inetl,/etc/networks, /etc/hosts, /usг/
lib/smail/config, /var/lib/elm/elmrc и /etc/resolv. conf, которые позже удобно
редактировать обычными текстовыми редакторами, изменяя таким образом кон­
фигурацию. Или же можно повторить эту операцию конфигурирования, восполь­
зовавшись командой netconfig.
2.6.10.8. Настройка мыши
Linux поддерживает работу с мышью в текстовой консоли при помощи специального
демона gpm (general purpose mouse - мышь общего назначения). Если этот демон был
установлен при инсталляции Slackware, на этом этапе выполняется его конфигурация.
На экран выводится достаточно большой список различных моделей мышей
(рис. 2.78), из которого надо выбрать ту, что установлена у вас. Этот список не
обязательно соответствует всем возможностям программы gpm. Если вы будете
пользоваться более новой его версией, выполните команду gpm -t help, чтобы по­
лучить действительный список всех поддерживаемых моделей.

rxvt

Th is part of the c o n f i g u r a t i o n p r o c e s s ui i i c r e a t e a / d e v / m o u s e link


p o i n t i n g to your d e f a u l t m o u s e de vi ce . You can c h a n g e the / d e v / m o u s e
li n k l a t e r if the m o u s e d o e s n ' t uork, or if you s w i t c h to a
d i f f e r e n t ty p e of p o i n t i n g devi ce . He mill al s o use the i n f o r m a t i o n
a b o u t the m o u s e to set the c o r r e c t p r o t o c o l for gpm, the L i n u x m o u s e
s e r v e r - P l e a s e s e l e c t a m o u s e ty p e fr o m the li s t below:

3 button Microsoft compatible serial mouse


L o g i t e c h s e r i a l M o u s e M a n and s i m i l a r d e v i c e s
PS / 2 po r t m o u s e (also mo s t l a p t o p s )
M o u s e S y s t e m s s e r i a l (most 3 b u t t o n mice)
Pl u g and Pl a y (ser ia l mi c e th a t do not uo r k uiith ms)
Microsoft serial Intellimouse
M i c r o s o f t PS/2 I n t e l l i m o u s e

^ Cancel>

Рис. 2.78. Настройка демона gpm

В отношении моделей мышей bare, ms, mman, msc, genitizer, pnp, ms3, logi,
logim, wacom и twid будет также задан вопрос о том, к какому последовательному
порту подключена такая мышь. После этого создается символьная ссылка /dev/
mouse, указывающая на соответствующее устройство (/dev/ttySO для мыши на
CO M I, /dev/j sO для джойстика, используемого вместо мыши и т.п.). Затем сцена­
рий добавляет в файл /etc/rc. d/rc. local строку, загружающую gpm для мыши вы­
бранного типа при запуске системы.
Slackware Linux 7.0.0 103

Эту операцию конфигурирования можно выполнить позже, запустив команду


mouseconfig.

2.6.10.9. Настройка sendmail


Основной почтовый демон в U N IX -системах в сети In tern et - программа
sendmail. Это очень сложная программа с большим количеством возможностей, ос­
новная задача которой - пересылка почтовых сообщений между UNIX-системами.
При установке sendmail в Slackware Linux вызывается небольшой сценарий, кото­
рый предлагает выбрать один из двух файлов конфигурации (рис. 2.79).
ravt

Sendmail r e q u i r e s a c o n f i g u r a t i o n f i l e ( / e t c /sendmail·■c f )■ Tuo


versions are p r o v i d e d : T C P / I P uiith a n a m e s e r v e r , and UU C P (where the
mailhost u n d e r s t a n d s d o m a i n name s) . If n e i t h e r of t h e s e p r o v e s
su i t a b l e , you can ma k e yo u r own la ter, (look in / u s r / s r c / s e n d m a i l ) .
It w o n ' t hu r t to try one of these, th ough.

S M T P + B I N D B C o n n e c t e d to the net wi t h n a m e s e r v e r a c c e s s
Use UU C P for ma i l t r a n s m i s s i o n t h r o u g h a s m a r t h o s t

<Cancel>

Рис. 2.79. Установка sendmail

Второй случай (UUCP) сейчас уже практически не встречается и соответствует


ситуации, когда компьютер не подключен реально к сети Internet, а использует про­
токол U U CP (Unix to Unix Copy) для передачи почтовых сообщений на какой-то
другой компьютер, который уже решает, что с ними делать. Обычно следует выби­
рать вариант SMTP+BIND. Позже, если вам потребуется тонкая конфигурация
sendmail, можно создать для него собственный файл конфигурации, используя ис­
ходные тексты на языке М4, находящиеся в каталоге /usr/src/sendmail.

2.6.10.10. Настройка часового пояса


Последняя операция в процедуре конфигурировании отдельных пакетов - на­
стройка часового пояса (рис. 2.80).
В Linux, как и во всех U N IX -системах, как правило, аппаратные часы BIOS
показывают гринвичское время, в то время как системные часы работают в соот­
ветствии с местным часовым поясом. Если вы не хотите задействовать этот меха­
низм, например, если на вашем компьютере установлена система типа Windows,
104 Начальная установка дистрибутива

rxvt

P l e a s e s e l e c t one of the f o l l o w i n g timezones


for yo u r ma ch in e:

lurope/M oscow
E
E
E
E
E
E
E
E
E
E
E
E

< Cancel>

Рис. 2.80. Настройка часового пояса

надо выбрать часовой пояс UTC или GMT. В таком случае Linux будет показывать
то же время, что и Windows, но не будет переводить часы на летнее время.
Фактически вся работа этого сценария сводится к единственной команде In,
создающей файл /var/lib/zoneinfo/localtime как символическую ссылку на /usr/
share/zomeinf о/пояс, где пояс - имя файла, в котором записаны особенности данно­
го часового пояса - временной сдвиг относительно Гринвича и правила перехода на
летнее время.
Эту операцию можно выполнить и позднее, воспользовавшись командой
timeconfig.

2.6.10.11. Выбор графической системы по умолчанию


Последняя операция настройки - выбор графической системы по умолчанию.
При этом фактически выбирается, на какой из файлов xinitrc. * будет указывать
ссылка /var/X11R6/lib/xinit/xinitrc. Это могут быть: xinitrc. kde для KDE,
xinitrc. gnome для GNOME, xinitrc. fvwm2 для FVW M2 и т.п., в зависимости от
установленных пакетов. Примерный внешний вид системы в случае выбора фай­
ла xinitrc. kde показан на рис. 2.81.
2.6.10.12. Выбор пароля системного администратора
После выполнения всех сценариев, установленных вместе с отдельными пакета­
ми, инсталлятор Slackware Linux еще раз получает управление и предлагает вы­
брать пароль системного администратора. Этот пароль надо задать обязательно,
особенно если ваш компьютер подключен к сети. Иначе любой желающий сможет
войти в систему с неограниченными правами и уничтожить любые файлы или пе­
реформатировать диски.
Debian GNU/Linux 2.2 Potato 105

О fiBroot' [Ml KGnSGle C D P la y e r

(g>-M flle:rtOot/ □ X
Ed it V ie w Go Bookmarks O ptions Help

Cl· о m a
£ L o ca tio n : |file:/root/
1^ A p p lic a tio n s

x|[ Em acs
fjg Gam es Emacs
G ra p h ic s
<£& ^ aadlinl 6a.txt loadlinl 6a.zip
I G ra p h ic s ||§ Internet k X E m acs
3 j Internet
@ Toys
@ M u ltim e d ia @ U tilities
© S ettin g s ■0 W ord P ro c e s s in g
S y ste m

f$ | u tilitie s И -W Konsole

Щ F in d F ile s F ile S e s s io n s O p tio n s H e lp

H em e D ire c to ry
Uhen I came back to Dublin I was court mart ialed in my absence an
Щ K D E C on trol C e n te r
to death in my absence, so I said they could shoot ne in ny abse
ф K D E H e lp — Brendan Behan
g Ф R e fre s h D e sk to p
gunnadoon:~tt |
3 T ra s h c a n
І Playing
N a v ig a to r ► I VoI:40%
“ Л Panel к
>
DB entryround,
- Й Loch: S c re e n

_ ^ Logout
ii....................
ФйГФВ&ін? Three

Four

Рис. 2.S / . Установленная система Slackware 7.0.0

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

2.7. Debian GNU/Linux 2.2 Potato


Debian - самый большой дистрибутив, его авторы собирают практически все па­
кеты, которые удовлетворяют лицензии GNU и требованиям Debian. Ф актичес­
ки Debian распространяет две системы - Debian G N U /Linux и Debuan G N U /
Hurd. Они полностью идентичны, за исключением того, что в G N U /H urd ис­
пользуется другое ядро.
Процесс установка Debian включает в себя три основные стадии:
1. Загрузка инсталлятора и начальная конфигурация системы.
2. Установка базовой системы.
3. Установка основной системы.
Каждый шаг можно осуществить несколькими независимыми способами: за­
грузку инсталлятора - с дискеты или CD, установку базовой системы - с дискет,
10ό Начальная установка дистрибутива

жесткого диска, CD или по NFS, установку основной системы - с CD или по NFS,


FTP или HTTP.

2.7.1. Загрузка инсталлятора


Загрузить инсталлятор Debian можно двумя способами - с дистрибутивного CD
или с так называемой спасательной (rescue) дискеты. Для загрузки с CD нужно
перезапустить компьютер и задать в BIOS загрузку с CD-ROM или же запустить
DOS и выполнить BOOT. ВАТ из каталога install/. Если у вас нет поддержки CD
в DOS, можно скопировать файлы rescue.bin, root.bin, drivers.tgz, base2_2.tgz,
linux, install.bat и loadlin.exe в D OS-раздел и перезагрузить систему в DOS (на­
жав клавишу F8 во время загрузки).
Для запуска инсталлятора с дискеты ее потребуется сначала создать из образа
rescue, bin, находящегося в каталоге install/ или dists/potato/main/disks-i386/
cur rent/images- 1.44/ на первом CD дистрибутива. Кроме этого, имеет смысл со­
здать дискеты драйверов из образов driver-1.bin, driver-2, bin и driver-3, bin, -
они могут быть запрошены инсталлятором в некоторых ситуациях, например, если
вы будете устанавливать базовую систему из сети. Образ дискеты записывается,
как и в других дистрибутивах, при помощи программы RAWRITE:
RAWRITE2 -f rescue.bin -d А:
Инсталлятор выводит приветствие, показанное на рис. 2.82, и после нажатия
клавиши E nter загружает ядро и запускает программу dbootstrap.
С этого момента вы работаете с программой dbootstrap, которая устанавли­
вает базовую систему Debian и конфигурирует набор ее базовых параметров.
Это текстовая программа, по меню которой можно перемещаться при помощи
Ые 1с ом е to D e bi an G N U ^ L i n u x 2.2!

Th is is the Dob іan Rescue d isk. Keep it once you have insta 1 led your systeM,
as you can boot froM it to repair the s y s t e M оті your hard disk if that ever
becories n e c es sa ry (press <F3> for details).

On Most s y s t e M S s you c a n go a h e a d and p r e s s <ENTER> t o b e g i n i n s t a l l a t i o n .


You will p r o b ab ly want to try doing that before you try anything else. If
you run into trou bl e or if you al rea dy have questions, press <F1> for
quick i nstallation help.

UflHNING: You shou ld C G M p l e t e l y back up all of your hard disks before


proceeding. Tlie i nstallation p ro ce d u r e can c o M p l e t e l y and i r r e u e r s i b ly
erase then? 1f you h a v e n 4 Hade b ack up s y e t , r e no ve the r e sc ue disk
froM the drive and press <RESET> or < C o n t r o 1-ftlt-Del> te get back to
your old systeM.

Debian G N U / L i n u x cones with R E S O L U T E L Y NO UfiHRflNTY, to the extent


per M i t t e d by a p p l i c a b l e lau. For c op yright inforMation, press <F10>.

This disk uses L i n u x 2.2.15


(froM kerne і - і м а д е - 2 .2.1 5 _ 2 .2.1 5 p r e l 9 - l )

Press <F1> for help, or <ENTER> to boot,


boot :

Рис. 2.82. Приветствие инстолляторо Debion 2.2


Debian GNU/Linux 2.2 Potato 107

клавиш Enter, Tab и стрелок. Программа выводит на экран список пунктов


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

D ebi an GNLVL inux I ns tallation Main Menu

Your k e y b o a r d has mot yet been conf i g u r e d . P lease select


"Next" Ггом t h e Menu t o c o n f i g u r e t h e k e y b o a r d .

: Conf igure the K eyboard


Alternate: Par ti t i o n a Hard Disk

C on fi g u r e the Keyboa rd
P ar ti t i o n a Hard Disk
Initialize and A c t i v a t e a Swap P a r t iti on
Act іvat є a P r e v i o u s 1 μ - In it іa 1 іzed Snap Part it ion
Do Uithout a Swap P a r tit io n
Initialize a L in u x P a r ti ti on
Mount a P r e v i o u s l y - I n it i a l іzed Part it ion
UnMount a Part it ion
Instal 1 Operat ing S y s t e n Kernel and Modul es
C on fi g u r e D ev ice D r iv er Modul es

< U p>^ <D ow n> bet we en elerients <Enter> selec ts

Рис. 2.83. Главное меню программы dbootstrap

2.7.2. Конфигурация клавиатуры


Первый пункт основного меню - Configure the Keyboard (Конфигурация клави­
атуры). Здесь имеется всего один вариант для русского языка - qwerty/ru, его
и надо выбрать.

2.7.3. Разбиение жесткого диска


На стадии Partition a Hard Disk (разбиение жесткого диска) вы можете выбрать,
какой диск разбивать (по их Linux-именам, /dev/hda, /dev/hdb и т.д.). Затем будет
запущена программа cfdisk для разбиения этого диска (если на диске не было ни­
какой таблицы разделов, нужно будет дополнительно подтвердить ее создание).
Работа с этой программой описана в разделе 2.6.2. Вы должны создать как мини­
мум один корневой раздел типа Linux Native и один раздел подкачки типа Linux
Swap (хотя в случае необходимости Debian позволяет выполнить установку без
раздела подкачки). Кроме того, может потребоваться небольшой раздел типа
Linux Native в начале диска, который будет смонтирован как /boot и в котором
будет находиться ядро Linux, - для старых версий BIOS и LILO, не имеющих воз­
можности обращаться ко всему диску.
108 Начальная установка дистрибутива

2.7.4. Инициализация раздела подкачки


На стадии Initialize and Activate a Swap Partition (Инициализация и активизация
раздела подкачки) вы можете выбрать раздел типа Linux Swap, который будет не­
медленно отформатирован и подключен в качестве раздела подкачки. Если у вас
уже был отформатированный раздел этого типа, можно отметить пункт Activate
a Previously-Installed Swap Partition (Активизировать ранее установленный раз­
дел подкачки). Если вы по каким-либо причинам не собираетесь использовать
раздел подкачки (например, при использовании файла или если у вас достаточно
RAM), можно воспользоваться пунктом Do W ithout a Swap Partition (Действо­
вать без раздела подкачки).

2.7.5. Инициализация Linux-раздела


На стадии Initialize a Linux Partition (Инициализация Linux-раздела) вы можете
выбрать, какой из перечисленных разделов типа Linux Native отформатировать
(рис. 2.84). После этого будет задан вопрос, нужно ли сохранять совместимость
с ядрами Linux 2.О.* (обычно это не требуется; ответ No). Затем задается вопрос
Mount as the Root Filesystem? (Смонтировать как корневую систему?). Отвечать
Yes следует только в том случае, если именно этот раздел вы запланировали ис­
пользовать как корневой, потому что как корневая должна быть смонтирована
одна и только одна система.

De bi an GNU/L іїіих S ys te M Installation

<Цр>^<Ронті> Ье іне ел eleiients ! <Enter> sele ct s

Рис. 2.84. Выбор разделов для форматирования

2.7.6. Монтирование Linux-раздела


Если вы указали корневой раздел, но хотите использовать другие разделы типа
Linux Native, воспользуйтесь пунктом Mount a Previously-Initialized Partition
(Смонтировать ранее инициализированный раздел). Вы сможете выбрать раздел
Debian GNU/Linux 2.2 Potato 109

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


выбрать один из стандартных каталогов (/boot, /usr, /var, /horne) или ввести соб­
ственный.

2.7.7. Установка ядра и модулей


Следующая обязательная стадия - Install Operating System Kernel and Modules
(Установить ядро операционной системы и модули). Здесь вы должны опреде­
лить, с какого носителя считывать ядро, которое будет использоваться на
стадии загрузки базовой системы. Можно указать cdrom, если у вас есть дистри­
бутивный CD, mounted, если дистрибутивные файлы linux и drivers, tgz присут­
ствуют на каком-то смонтированном разделе жесткого диска, или harddisk, если
раздел еще не смонтирован. Можно также воспользоваться дискетами, выбрав
соответствующий дисковод. В этом случае инсталлятор потребует у вас rescue-
дискету (которая, скорее всего, уже находится в дисководе) и дискеты драйве­
ров. При установке с CD или жесткого диска потребуется указать путь к дист­
рибутиву и путь к каталогу, содержащему images-1.44/rescue, bin. При установке
с CD достаточно согласиться с предлагаемым значением в первом случае и выб­
рать default или list во втором.

2.7.8. Конфигурация модулей


На этапе Configure Device Driver Modules (Конфигурировать модули драйверов
устройств) вы можете выполнить конфигурацию всех драйверов устройств, которые
подключены к устанавливаемому ядру в качестве отдельных модулей (рис. 2.85).
Здесь присутствуют драйверы блочных устройств и жестких дисков (block), CD-yc-
тройств (cdrom), драйверы поддержки различных файловых систем (fs), драйверы
поддержки протоколов T C P /IP (ipv4), новой версии протокола IP (ipv6), драйверы

-| Se lect Categ or y |-
Mod ul es are loadable device drivers. Please go th ro ug h the Menus
f o r e a c h c a t e g o r y and l o o k f o r d e v i c e s , n e t w o r k p r o t o c o l s , f i l e s y s t e M s ,
e t c . that you would 1 ike to have s u p p o r t e d by your systeM. You shouId
mot install Mo du les for de vic es that aren't installed in your systeM,
a s th e y w i l l soMetlMes c a u s e t h e systeM t o pause fo r a long t i n e w h ile
it is s ear c h i n g for the device. Also, dr ive rs for de vi ce s that you
don't have use мемогу that you could put to better use.

Pl ea se select the ca t e g o r y of Modules.

cdroM D evi ce dri ve rs for C D - Л О М drives.


fS Dr i vers that a l l o w мапу di ff erent f i l es ys te Ms to be a cc essed
ipv4 Internet P r o t o c o 1 dr іv e r s .
ipvG Internet Protocol ve rsi on Б drivers,
мі s c Dr i vers that d o n !t fit in the other categories.
met Driver s for ne tw ork interface cards and n et wo rk protocols.
scs i Drive rs for SCSI c o n t r o 1ler cards and c la ss es of SCSI device
video Dr iv er s for Ui de o4 L i n u x .

Рис. 2.85. Конфигурация модулей


110 Начальная установка дистрибутива

сетевых карт и низкоуровневых сетевых протоколов (net), SCSI-устройства (scsi),


драйверы для видеокарт (video) и другие драйверы, не вошедшие в перечисленные
категории (misc). Инициализировав любой из этих пунктов, вы получите список
драйверов, которые установлены или не установлены в вашей системе в насто­
ящий момент. Совсем не обязательно конфигурировать все устройства, - доста­
точно тех, которые необходимы при установке базовой системы. Например, если
система находится в Windows-разделе, нужно будет подключить поддержку vfat fs
в меню fs. Или если сетевая карта не была определена автоматически, нужно
выбрать необходимый драйвер. В любой момент после инсталляции системы вы
сможете переконфигурировать эти устройства при помощи программы modconf.

2.7.9. Конфигурация сети


Следующий пункт основного меню, Configure the hostname (Конфигурировать
сетевое имя), - это просто определение имени компьютера. У любого Linux-ком-
пьютера есть имя, даже если он не подключен к сети.
Если же у вас установлена сетевая карта и драйвер для нее загружен на ста­
дии конфигурации модулей, можно задействовать пункт Configure the Network
(Конфигурировать сеть); если используется dialup-подключение, этот пункт
следует пропустить. И нсталлятор задаст вопрос, желаете ли вы использовать
протокол D H C P /B O O T P или ввести IP -адрес самостоятельно. Для конфигура­
ции сети потребуются IP -адрес компьютера, маска сети, адрес шлюза, имя доме­
на и 1Р-адрес DNS-сервера.

2.7.10. Установка базовой системы


Следующий пункт, Install the Base System (Установить базовую систему), за­
вершает первую стадию установки системы (рис. 2.86). Базовая система - это

Рис. 2.86. Установка базовой системы Debian


Debian GNU/Linux 2.2 Potato

действующий Debian Linux минимальной конфигурации. Вам будет представлен


набор устройств, с которых можно установить базовую систему.
При установке с CD (cdrom ) или жесткого диска (m ounted) будет нужно ука­
зать путь к файлу base2_2. tgz относительно точки монтирования носителя. Для
дистрибутивного CD достаточно воспользоваться значением по умолчанию.
При установке с дискет (/dev/fdO или /d e v /f d l) необходимо иметь 11 дискет,
созданных из образов base-1.bin - base-11.bin, находящихся в каталоге dists/
potato/main/disks-i386/current/images-1 .44/ на дистрибутивном CD.
При использовании сети (netw ork) выполняется установка по протоколу
HTTP, по умолчанию с сервера Debian.

2.7.11. Конфигурация базовой системы


На стадии Configure the Base System (Конфигурировать базовую систему) вы­
полняется настройка местного времени. Выберите в меню слева Europe, а затем
в списке городов справа, например Moscow, если у вас московское время. На сле­
дующий вопрос - будут ли аппаратные часы использовать GMT, обычно отвеча­
ют Yes, если компьютер использует в основном Linux. Если вы используете
Windows, a Linux будете загружать от случая к случаю, лучше установить местное
время в CMOS, так как Windows не умеет работать с часами в GMT. Время в GMT
удобно для Linux-систем, так как оно позволяет системе автоматически отслеживать
переходы на летнее время, високосные годы и даже позволяет разным пользова­
телям использовать разное местное время.

2.7.12. Установка системного загрузчика


На стадии Make Linux Bootable D irectly From H ard Disk (Сделать Linux загру­
жаемым непосредственно с жесткого диска) вы можете выбрать, куда установить
загрузчик LILO - в главную загрузочную запись (M BR) или в загрузочный сек­
тор раздела, смонтированного как /boot (или корневого раздела, если /boot не был
выделен в отдельный раздел). Во втором случае для старта Linux потребуется ка­
кой-нибудь мультисистемный загрузчик в MBR. Debian предоставляет собствен­
ный загрузчик, и если вы выбрали установку LILO в раздел /boot, инсталлятор
предложит заменить загрузчик в MBR на свой собственный. Если вы нажмете Yes
в ответ на вопрос C reate M aster B oot R ecord? (Создать MBR?), старый загруз­
чик, который мог там находиться, будет уничтожен. Новый загрузчик показывает
список активных разделов, с которых он может загрузиться, при нажатии клави­
ши Shift. Затем можно выбрать раздел, введя его номер, или загрузиться с диске­
ты, напечатав F. Нажатие клавиши А выведет список всех первичных разделов,
а не только активных. По умолчанию загрузчик Debian запускает операционную
систему, находящуюся в первом активном разделе.
После установки загрузчика можно создать на всякий случай загрузочную дис­
кету (пункт M ake a B oot Floppy) или завершить работу с dbootstrap, выбрав
пункт R eboot the System.

2.7.13. Создание пользователей


После перезагрузки системы продолжается настройка системы. Первый вопрос -
включение MD5 паролей. Этот алгоритм допускает более длинные пароли и более
112 Начальная установка дистрибутива

безопасен. Следующий вопрос - включение теневых (shadow) паролей. Это обяза­


тельно следует сделать, поскольку данный механизм реализует сокрытие зашифро­
ванного пароля от пользователей, что делает невозможной несанкционированную
расшифровку. После этого нужно ввести пароль системного администратора (root
password), дающий неограниченный доступ к системе. Затем инсталлятор предла­
гает создать обычного пользователя для действий, не связанных с администрирова­
нием системы. Последовательно вводятся: системное имя пользователя, полное имя
пользователя, пароль.

2.7.14. Установка системы


Если вы планируете установить систему через сеть, доступ к которой осуществ­
ляется по РРР, на следующий вопрос инсталлятора: Do you want to use a PPP
connection? (Хотите ли вы использовать P P P -соединение?), следует ответить Yes
и затем ответить на все вопросы программы pppconfig: статический или динами­
ческий DNS, 1Р-адрес DNS-сервера в случае статического DNS, протокол аутен­
тификации, имя и пароль, скорость модема, тоновый или импульсный набор, но­
мер телефона, порт, на котором расположен модем.
После этого инсталлятор сканирует CD. Если у вас есть все дистрибутивные
CD, вставьте следующий диск в ответ на запрос инсталлятора. Если вы собира­
етесь устанавливать систему с другого источника, укажите, откуда именно, - это
могут быть CD, каталог на жестком диске, другая уже смонтированная система
(например, NFS) или сетевой архив, доступный по FTP или H TTP (рис. 2.87).
Затем указывается класс установки: Simple (простой) или Advanced (подроб­
ный). В простом режиме выбор осуществляется между предопределенными груп­
пами пакетов, в режиме Advanced каждый пакет выбирается индивидуально.

eb ian C o n f i g u r a t ion

Рис. 2.87. Выбор носителя для основной системы Debian


Debian GNU/Linux 2.2 Potato 113

ebi an Task Insta 1 ler v l . 0 - ( с J 1999-2000 SPI and oth er s

-| Select task pa ck a g e s to install |-------------------


C++ Dev Dev el op Men t ill C + +
С Deu D ev el op Me nt іїї С
Ch in es e S 5 і м р 1 i f іed C hi nes e enui ro nM en t
Ch in es e T Tradit іоїіа 1 Ch inese enviroiiMent
Data bas e Pg P o s t g r e S Q L d at a b a s e
Debug De bu g g i n g of C, C++, O bje c t i v e С and friend*
Deve 1 Соммоп D ev el op Me nt in var ious languages
D іa Iup D ialup ut і 1 it ies
Dialup Isdn D іalup ut і 1 it ies С ISDN)
Dns Server DNS Ser ve r
Fort ran For tr an d e u e lopnent e nv iro nM en t
GaMes fl s e l e c t i o n of gaMes
GerMan GerMan-speaking є ї ш і г о п м є п ї
Gnor-ie Rpps GNOME app 1 іcat ions and ut і 1 it ies
GnoMe Deskt op GNOME b a s іс deskt op
GnoMe GaMes GNOME gaMes

<Finish> <Task Info> <Help>

Рис. 2.88. Выбор пакетов в режиме Simple

Пакеты распределены по группам следующим образом (рис. 2.88):


□ C++ Dev - средства разработки на C++;
□ С Dev - средства разработки на С;
□ Chinese S - поддержка упрощенной модели китайского языка;
□ Chinese Т - поддержка традиционного китайского языка;
□ Database Pg - система управления базами данных PostgreSQL;
□ Debug - средства отладки для С, C++, Objective С и других языков;
□ Devel Common - средства разработки на различных языках;
□ Dialup - поддержка доступа в сеть по модему;
□ Dialup Isdn - поддержка доступа в сеть по ISDN;
□ Dns Server - собственный сервер имен;
□ Fortran - средства разработки на языке Fortran;
□ Games - игры и развлечения;
□ Gnome Apps - приложения и утилиты для GNOME;
□ Gnome Desktop - базовый рабочий стол GNOME;
□ Gnome Games - игры для GNOME;
□ Gnome Net - сетевые приложения для GNOME;
□ Imap - сервер IMAP;
□ Laptop - набор утилит для пользователей компьютеров Laptop;
□ Newbie Help - документация для новых пользователей;
□ News Server - сервер USENET-новостей;
□ Objc Dev - средства разработки на языке Objective С;
□ Parallel Computing Dev - средства разработки для параллельных вычислений;
□ Parallel Computing Node - библиотеки для параллельных вычислений;
114 Начальная установка дистрибутива

□ Python - средства разработки на языке Python;


□ Python Bundle - полный дистрибутив Python;
□ Python Dev - полная среда разработки на языке Python;
□ Python Web - среда разработки W W W -приложений на языке Python;
□ Samba - SMB-сервер (файловый сервер для Windows);
□ Science - базовые программы для научной работы;
□ Sgml - средства создания и редактирования SGML и XML;
□ Sgml Dev - средства разработки SGML и XML;
□ Spanish - поддержка испанского языка;
□ Tcltk - средства запуска T C L /T k -приложений;
□ Tcltk Dev - средства разработки T C L /T k -приложений;
□ Тех - система TeX/LaTeX;
□ X Window System - полная система X Window;
□ X Window System Core - минимальная система X W indow
Для каждой группы можно прочитать краткую справку о ее назначении и со­
держимом, выбрав опцию Task Info.
Режим Advanced использует программу dselect, при помощи которой выпол­
няется управление пакетами в системах Debian. Так как носитель или носители
с пакетами для установки уже были сконфигурированы, можно сразу выбрать оп­
цию [SJelect. Вы попадаете в список пакетов. Выбор пакета для инсталляции вы­
полняется клавишей + или Ins, отмена клавишей - или Del. Клавиша E nter за­
вершает выбор пакетов, причем выполняется проверка зависимостей, и прежде
чем вы сможете вернуться в основное меню dselect, нужно будет разделить на тре­
буемые, рекомендуемые и несовместимые с другими пакетами. Работа с dselect

dselect - маіп pac ka ge listing t a v a i 1., pr ior i t y ) магк:+/'=/'- v e r b o s e : v help:?


E I O M Pri Se ct io n Pack ag e I n s t .UG r Aua і 1 .ve r Descr іpt ion
— All pa ckages —
Newly a v ai la ble p ac ka ge s
New Requ ire d packa ge s ------
-------- Mew R e q u i r e d packa ges іτι s e c t i o n base --------
n* Req base bs d u t i l s <none> 2. 10f -3 Basic u ti li t i e s froM 4.4B
n* Req base per l- b a s e <none> 5.004.05-1. Fake pac kag e as s u r i n g tha
------ New Inportant p a c k a g e s ------
-------- New Inportant p a c k a g e s in se cti on adnin --------
n* Імр ή dм і n at <none> 3.1 .8 -10 B el at ed job e xe cu t i o n and
n* Імр adMin cron <none> 3 . 0 p 11-57 M a n a ge Me nt of reg ul ar bac
n* Імр adnin logrotate <none> 3.2-11 Log rot at іоті ut і 1 ity
н 11 pa ck a g e s
Tbe 1 іне you have h i g h l i g h t e d r e p r es en ts Many packages; if you ask to
i n s t a l l , r e M o v e , l i o l d , йс i t y o u w i l l a f f e c t a l l t h e p a c k a g e s w h i c h Match
the c r i t e r i o n shown.

If y o u Move t h e h i g h l i g h t t o a l i n e f o r a p a r t i c u l a r p a c k a g e you w i l l s e e
inforMat іоїі about that pack ag e dis pl a y e d here. You can use 'o' and !0 5 to
c han ge the sort order and give y o u r s e l f the o p p o r t u n i t y to Mark pa c k a g e s in
d i f f e r e n t kinds of groups.

|descr ipt ion

Рис. 2.89. Выбор пакетов в режиме A dvanced


Некоторые трудности и общие вопросы 115

может быть слишком сложна при первой установке Debian, так что лучше вос­
пользоваться режимом Simple.

2.8. Некоторые трудности и общие вопросы


Здесь описаны некоторые наиболее часто возникающие сложности и вопросы при
инсталляции Linux из различных дистрибутивов. Внимательное чтение этого раз­
дела можно рекомендовать прежде всего начинающим пользователям.
1. Проблемы с инсталляцией системного загрузчика LILO.
Неправильная инсталляция системного загрузчика, как правило, не дает воз­
можности войти в операционную систему, даже в исправно работавшие ранее
DOS или Windows. Типичные случаи: зависание при загрузке или появление
только первых двух букв LI с дальнейшей остановкой. Очень часто эти пробле­
мы встречаются при ручном разбиении жесткого диска на разделы и попытке
инсталлировать загрузчик в слишком большой раздел. Старые версии LILO, по­
ставляемые с большинством дистрибутивов, не могут быть инсталлированы
в раздел длиною более 1024 цилиндра из-за ограничений, налагаемых BIOS.
В подобных случаях необходимо либо переинсталлировать Linux, создав отдель­
ный небольшой раздел в начале диска для установки загрузчика, либо, если вы
владеете установкой программ из исходных текстов, установить последнюю вер­
сию загрузчика.
2. Как вообще убрать LILO из MBR?
Необходимо загрузиться с системной дискеты DOS и подать команду FDISK /
MBR, что приведет к восстановлению исходного состояния главной загрузочной за­
писи. Имейте в виду, что fdisk под Linux такой опции не имеет.
3. Выбор размера раздела подкачки (swap).
Для машин с оперативной памятью до 64 Мб можно создавать раздел, размер
которого вдвое превышает объем имеющейся памяти. В принципе для обычной
конфигурации персонального компьютера, не предназначенного для работы
в режиме сервера, раздел подкачки размером более 128 Мб может потребоваться
в очень редких случаях. В старых ядрах существовало ограничение на размер раз­
дела подкачки, - если для какой-то задачи требовался очень большой объем вир­
туальной памяти (автор сталкивался с программой, перенесенной на Linux
с суперкомпьютеров и требовавшей около гигабайта памяти), приходилось созда­
вать несколько разделов или файлов подкачки по 128 Мб, но в настоящее время
это неактуально.
4. Забыт пароль root.
Несмотря на многочисленные предупреждения, пароль пользователя root иног­
да все же можно случайно ввести в русской кодировке или просто забыть и не
суметь правильно воспроизвести при последующей загрузке. В этом случае войти
в работающую систему Linux и попытаться изменить пароль практически невоз­
можно. И вероятно, придется инсталлировать систему заново.
Однако, если система не была полностью защищена, возможны некоторые об­
ходные пути. Во-первых, можно загрузить Linux с дискет, например загрузочных
116 Начальная установка дистрибутива

дискет дистрибутива Slackware, и вместо того, чтобы запускать процедуру setup,


можно смонтировать уже имеющийся Linux-раздел и очистить поле пароля root
вручную в файлах /etc/passwd или /etc/shadow (все символы между первыми двумя
двоеточиями). После перезагрузки пользователь root может войти в систему, нажав
Enter, и поменять пароль. С помощью этих же дискет можно попытаться повторить
процедуру и для многих других дистрибутивов Linux.
Другой способ - указать в командной строке загрузчика LILO параметр init=
/bin/sh после метки, присвоенной вашей системе (обычно linux init=/bin/sh).
В этом случае ядро после загрузки передаст управление не обычной программе
/sbin/init, которая запускает программы, предлагающие ввести пароль, а сразу
командный интерпретатор /bin/sh с правами пользователя root, что опять-таки
даст возможность отредактировать файлы паролей.
Одновременно это должно послужить предупреждением системному админис­
тратору: если предусмотрена свободная возможность загрузки с дискеты или не
включен пароль на ввод командной строки в LILO, всегда существует возмож­
ность несанкционированного доступа.
5. Пароли.
О выборе адекватного пароля, особенно для администратора системы, сказано
и написано уже довольно много. Тем не менее следует сделать несколько замечаний
для тех, кто выбирает пароль впервые. Никогда не следует использовать в качестве
пароля имя собственное, слово из словаря (легко находятся перебором), различные
даты и т.д. Хороший пароль - это комбинация символов, не имеющая никакого от­
ношения к реальным словам или числам и не понятная никому, кроме автора.
Лучше всего построить цепочку мнемонических ассоциаций или логических рас-
суждений, которые позволят воссоздать тот же самый пароль даже в том случае,
если он будет забыт. Примеры хороших паролей: dFG27_h+ или M7-rv_4A; примеры
плохих паролей: Oleg 1977, Li nuxl23 или qwerty.
Глава III
Базовы е понятия
о иПІІХ-системах

□ Вход в систему
□ Основные команды
□ Файловая система
□ Управление процессами
□ Текстовый редактор Vi

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

3.1. Вход в систему


У каждого пользователя системы есть свое имя (слово, обычно состоящее из ма­
леньких латинских букв и цифр, не более восьми) и пароль. После загрузки сис­
темы, при соединении через telnet, входе в X Window и т.д. пользователь получа­
ет следующий запрос:
Login:

В ответ на него необходимо ввести имя, под которым пользователь зарегистри­


рован в системе. После начальной установки будет существовать по крайней мере
один пользователь с именем root, обладающий неограниченными правами.
118 Базовые понятия о UNIX-системах

Login: root
Password:
После ввода пароля вы попадаете в систему.

3.2. Основные команды


3.2.1. Командные интерпретаторы
Первое, что видит пользователь, попав в систему в текстовом режиме, - пригла­
шение к вводу командного интерпретатора.
Оно может выглядеть так:
gummadoon:~#

cubbi@iion king ~$
или так:
[cubbi@u rsaiia bin]$
Возможны и иные варианты. Эту строку можно легко настраивать по своему
вкусу.
Командный интерпретатор (shell) - это программа, которая отвечает за обще­
ние с пользователем. Все, что пользователь вводит в командной строке в тексто­
вом режиме или в терминальном окне в графическом режиме, получает shell,
и именно shell запускает все остальные программы по запросу пользователя.
В MS D OS/W indows в качестве командного интерпретатора практически всегда
выступает C:\C0MMAND.C0M, хотя и существуют более эффективные его зам ены -
NDOS или 4DOS. Однако они встречаются весьма редко, так как в мире D O S /
Windows не принято работать из командной строки. В UNIX-системах, наоборот,
большинство операций управления быстрее и удобнее выполнить напрямую из
shell. По этой причине за несколько последних десятилетий shell в UNIX превра­
тился в сложное и многофункциональное средство, которое лишь отдаленно на­
поминает тривиальные интерпретаторы типа COMMAND.COM. В Linux по умол­
чанию устанавливается командный интерпретатор bash -B o u rn e Again Shell
(Рож денны й Заново Shell), который мы и будем рассматривать. Кроме него,
с дистрибутивами могут поставляться tcsh (улучш енная версия С Shell), zsh,
ash, pdksh, могут встретиться csh и bsh (более ранние версии tcsh и bash) и т.д.
Самым удобным свойством bash является возможность дополнения команд
и путей. Попробуйте, войдя в систему, нажать клавишу табуляции два раза. Ско­
рее всего, bash переспросит вас, правильно ли он понял, что вы хотите увидеть
сразу все доступные команды, и после нажатия на клавишу у по экрану пробежит
около тысячи слов - названий команд и программ, которые доступны в вашей
системе. Дело в том, что табуляция служит для дополнения имени вводимой вами
команды или названия файла. Наберите, например, rmd и нажмите Tab - команда
автоматически будет дополнена до rmdir (удалить каталог). Если bash не может
Основные команды 119

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


список вариантов. Попробуйте набрать a<Tab><Tab> - на экране появится прибли­
зительно следующее:
gummadoon:~$ а
а2р afmtodit apm arch asapm atq
addftinfo alias appres arithmetic at atrm
add г ansi2knr apropos as ate awk
adventure answer ar as86 atobm
gummadoon:“$ a

то есть bash покажет список известных ему команд, начинающихся на а.


Кроме этого, клавишу Tab можно использовать для быстрого набора имен фай­
лов и каталогов, нажав ее после нескольких первых букв. Например, чтобы вы­
полнить команду
ls /usr/local/lib/
обычно достаточно набрать
ls /us<Tab>lo<Tab>l<Tab><Enter>
Конечно, все команды сразу выучить невозможно, - это все равно что пытаться
выучить язык, заучивая из словаря каждое слово по порядку. Для начала рассмот­
рим наиболее употребительные команды и их применение.

3.2.2. Выход из системы


Завершение работы системы (а точнее, shell) традиционно осуществляется любой
из команд exit (в других интерпретаторах могут использоваться bye, xit, 1о и т.д.).
Выход из основного пользовательского shell, равнозначный полному заверше­
нию работы системы, выполняется командой logout или вводом символа AD
(Ctrl+D). Так как этот символ часто используется для выхода из различных про­
грамм, bash по умолчанию предлагает воспользоваться logout, хотя если повто­
рить AD 10 раз, shell все-таки закончит работу. Если выполнить команду
export IGN0REE0F=0
то будет достаточно один раз ввести AD.
После выхода из shell в текстовой консоли снова появится первоначальное при­
глашение к входу в систему
Login:

3.2.3. Переменные среды


Команда export из предыдущего примера устанавливала значение переменной
среды IG N O REEO F равным нулю. Каждый shell, включая COMMAND.COM из MS
DOS, поддерживает концепцию переменных среды. Как и в COMMAND. СОМ, их спи­
сок можно просмотреть, подав команду:
set
120 Базовые понятия о UNIX-системах

Однако для присвоения переменным определенных значений надо воспользо­


ваться командой export, как в предыдущем примере.
Вообще говоря, стандартной является следующая запись этой строки:
IGNOREEOF=0; export IGN0REE0F
где первая команда фактически определяет значение переменной, точка с запятой
служит разделителем при вводе нескольких команд в одной строке, a export ис­
пользуется по своему прямому назначению - вносит переменную в список теку­
щего shell. Обычная запись вида «ИМЯ=значение» будет действовать только до
конца строки (или, в командных файлах shell, до конца файла).
Например, в tcsh вместо команд export и set используется команда setenv (без
знака равенства):
setenv ИМЯ зн а ч е н и е

3.2.4. Постраничный просмотр


Если вы выполните команду set, список переменных почти наверняка не умес­
тится на вашем экране. Для последовательного просмотра можно воспользовать­
ся командой more в точности так же, как это делается в MS DOS:
set I more
(«more» по-английски значит «больше»).
На экране появится начало списка переменных и приглашение
-Моге-
в самой нижней строке, представляющей собой строку состояния; она также сооб­
щает, какая часть файла выведена в настоящее время. Нажатие клавиши Enter
покажет следующую строку, Space - следующую страницу выводимого текста.
Выход из mo ге осуществляется по достижении конца файла или нажатием клави­
ши q. В действительности more в Linux поддерживает достаточно много команд:
поиск, переход в редактор, просмотр нескольких файлов, но обычно вместо этой
достаточно примитивной программы используют более эффективное средство по­
страничного просмотра less
set I less
(«less» по-английски значит «меньше»).
Основное отличие less состоит в том, что по файлу можно перемещаться в обе
стороны посредством следующих команд:
Переход на одну строку вниз Enter, е, АЕ, j, AN
Переход на одну строку вверх АР, у, AY, к, АК
Переход на одну страницу вниз Пробел, f, AF, AV, z
Переход на одну страницу вверх b, АВ, Esc+V, w
Выход q, :q, Q, :Q, ZZ
Такое обилие вариантов объясняется тем, что авторы less хотели угодить всем
и использовали для перемещения по тексту комбинации клавиш из разных попу­
лярных текстовых редакторов.
Файловая система 121

Кроме того, less поддерживает множество режимов поиска (самый простой -


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

3.2.5. Описания команд


Только что, рассказывая о команде less, мы не упомянули и о десятой доли ее
возможностей. Большинство команд в UNIX-системах настолько многофункци­
ональны, что полное их описание заняло бы несколько тысяч страниц. Такие опи­
сания существуют, но нет смысла полностью приводить их здесь, потому что они
имеются в самой системе. По-видимому, самой часто используемой командой
UNIX является
man
(от слова «manual» - «документация, инструкция по эксплуатации»).
Чтобы получить полную информацию об упомянутых программах, достаточно
набрать:
man bash
man more
man less
Команда set встроена в bash, и поэтому ее описание можно найти в man bash
или прочесть отдельно, используя help:
help set
Перемещение по тексту так называемой «тап-страницы» осуществляется ко­
мандами less, потому что man вызывает именно эту программу для показа текста.
Данную настройку можно изменить, присвоив, например, значение more перемен­
ной среды PAGER:
export PAGER=more
В m an-страницах собрана не только документация на различные установлен­
ные программы, но и описания системных функций для программирования,
форматы файлов конфигураций и многое другое. Разные типы тап-страниц раз­
несены по разным секциям, номера которых указывают сразу после названия ко­
манды или функции, как, например, bash (1) или f printf (3). Для того чтобы про­
читать страницу из конкретной секции, ее номер надо указать перед командой.
Команды
man 1 printf
man 3 printf
покажут разные страницы, так как существует и системная команда (секция 1)
printf, и системная функция в языке С (секция 3) с тем же названием.

3.3. Файловая система


В Linux, как и во всех современных операционных системах, данные представляют­
ся в виде файлов, которые располагаются в каталогах (директориях), содержащих
122 Базовые понятия о UNIX-системах

наряду с файлами и другие каталоги (подкаталоги). Эта структура стала попу­


лярной и попала в MS DOS и другие системы именно из UNIX (в первой версии
MS DOS каталогов не существовало). В U N IX -системах, однако, нет никакого
ограничения на имя файла: оно может содержать абсолютно все символы, кро­
ме /, и иметь длину до 256 символов. Знак / (косая черта, slash) используется
в качестве разделителя между названиями каталогов при указании пути
к файлу, так же как \ (обратная косая черта, backslash) - в MS DOS. Однако ло­
гических дисков, обозначаемых А: или С:, в UNIX нет. Все файлы описываются
единым образом, начиная с единственного корневого каталога, который обозна­
чается просто /.
Войдя в систему, вы сразу оказываетесь в своем домашнем каталоге - в Linux
это /horne/use г пате, где username - системное имя пользователя.

3.3.1. Команда pwd


Чтобы определить, в каком каталоге вы сейчас находитесь, введите команду pwd
(print working directory - распечатать рабочий каталог):
gummadoon:~$ pwd
/home/cubbi
Часто подсказка shell настраивается таким образом, чтобы текущий каталог
показывался в ней автоматически. В данном примере она настроена именно так,
но /home/cubbi обозначен символом тильды (~) - это принятое в UNIX сокра­
щение для домашнего каталога текущего пользователя. К домашнему ката­
логу любого другого пользователя всегда можно обратиться, используя его
имя - "username. Именно поэтому так много W W W -адресов имеют вил http: I I
www.host.tld/~username - это просто страничка, расположенная в домашнем ка­
талоге пользователя username на компьютере с именем www.host.tld.

3.3.2. Команда Is
Содержимое каталога показывает команда Is (list - список). У нее очень много
возможностей, но мы рассмотрим только самые употребительные. Команда Is
по умолчанию выводит на экран только список файлов в заданном каталоге
(или в текущем, если пользователь не указал каталог):
gummadoon:~$ is
Mail linux-koi8.source
ai-koans.html linux.source
Разумеется, в вашем каталоге будут другие файлы, а может и вообще ничего не
быть, если вы только что установили Linux.
В этом списке не делается никаких различий между объектами, которые могут
находиться в каталогах. Команда Is -F добавляет специальные символы после
имен файлов: / для подкаталогов, * для исполнимых файлов и т.д.:
gummadoon:~$ Is -F /
bin/ dev/ etc/ lib/ sbin/ var/
Файловая система 123

boot/ dosc/ horne/ proc/ tmp/ vmlinuz/


cdrom/ dosd/ lost+found/ root/ usr/

Выше показано содержимое корневого каталога. Здесь располагаются основные


системные каталоги и единственный файл vmlinuz, в котором находится заархи­
вированное ядро системы.
Файлы, названия которых начинаются с точки, не показываются командой Is
или Is -F. В них принято хранить конфигурации различных программ, например,
в файле . profile в домашнем каталоге каждого пользователя хранятся его лич­
ные настройки shell - обычно переопределения некоторых переменных среды и из­
менения настроек команд по умолчанию. Скрытые файлы можно увидеть, вос­
пользовавшись командой Is -а. Вот так будет выглядеть начало того же каталога
/home/cubbi с опциями -а и -F:

gummadoon:~$ Is -aF
/ .i roro
/ Mail/
CtoolZ/ ai-koans.html
Xauthority linux-koi8.source
bash_history linux.source

Здесь файл .ircrc и каталог .CtoolZ содержат файлы конфигурации, относя­


щиеся к IR C -клиенту ctoolz, в файле . Xautho rity находится информация, исполь­
зуемая графической средой X Window для разграничения доступа, . bash_history
содержит последние 500 введенных команд shell для того, чтобы к ним можно
было вернуться нажатием клавиш Т и 1. Каталог . (точка) соответствует текуще­
му, каталог . . (две точки) - вышележащему. Так, если мы находимся в /home/cubbi,
команда Is . . покажет содержимое каталога /home, а команда Is . . / . . - корнево­
го каталога /.
Вместо того, что предлагает Is -F, в Linux можно включать выделение различ­
ных типов файлов цветом: Is —color=yes (перед словом color два знака минус).
Так как набирать каждый раз Is -a --color=yes утомительно, shell позволяет из­
менять установки команд по умолчанию. Выполните
alias ls=’ls -a --color=yes’
Теперь команда ls будет вызываться с этими параметрами автоматически. Что­
бы так происходило всегда, надо вписать ее в файл ~/. profile (то есть . profile
в домашнем каталоге) при помощи текстового редактора или следующей команды:
cat "alias ls=’ls -a --color=yes’" » “/.profile
И наконец, вывод полной информации о файлах, включая размер, владельцев,
атрибуты и т.д., осуществляется командой Is -1:
gummadoon:~$ Is -la
total 709
d rwx-x-x 21 cubbi users 2048 dun 9 12:02 .
drwxr-xr-x 10 root root 1024 dun 3 17:05 ..
124 Базовые понятия о UNIX-системах

drwxr-xr-x 2 cubbi users 1024 Mar 27 1998 .CtoolZ


- rw— 1 cubbi users 204 May 31 13:35 .Xauthority
-rw-r-r- 1 cubbi users 152 Jan 31 19:53 .bash_history
drwxr-xr-x 2 cubbi users 1024 Jan 21 1998 .ircrc

И т.д.
Информация о каждом файле выводится в отдельной строке, содержащей
7 полей: атрибуты, число ссылок, имя владельца, имя группы-владельца, размер
в байтах, дата создания и имя файла.
В поле атрибутов первый знак соответствует типу объекта:
файл;
d каталог (directory);
1 ссылка (link).
Существуют и другие объекты, доступ к которым может осуществляться как
к файлам, - символьные и блочные устройства, конвейеры для передачи данных
между программами, даже Internet-соединения. Нам пока потребуются только три
вышеуказанных типа.
Девять следующих символов в поле атрибутов - права доступа к файлу. Б ук­
вы г, w, х разрешают права на чтение, запись и выполнение соответственно.
Минусы на их месте - запрещают. Первые три буквы соответствуют правам вла­
дельца файла, следующие три - правам пользователей, входящих в группу-вла-
дельца, и последние - правам всех остальных пользователей. Так, с файлом
с rwx— может работать только его владелец, файл с правами г-г-г- доступен
всем, но только для чтения, а файл с rw-r-r- (чаще всего встречающийся вари­
ант) доступен владельцу для чтения и записи, а остальным пользователям -
только для чтения. Право на исполнение (х) для подкаталогов соответствует
разрешению зайти в них. Так, если каталогу присвоены атрибуты drwx-x-x, всем
позволяется заходить в этот каталог, но получить список файлов, подав команду
is, сможет только сам владелец.

3.3.3. Команда cd
Команда cd (change directory - сменить каталог) нужна, чтобы изменять текущий
каталог. Вообще говоря, можно обращаться к любому файлу и просматривать со­
держимое любого каталога, не пользуясь cd, но работать с объектами в текущем
каталоге гораздо удобнее, так как не нужно указывать их имена с полными путя­
ми. Синтаксис этой команды: cd каталог
Например, если нужно работать с корневым каталогом, подается команда:
gummadoon:~$ cd /
gummadoon:/$
Теперь можно будет просматривать основные системные каталоги при помощи
команд is bin, is etc, is lib. Если перейти в /usr:
gummadoon:~$ cd /usr
gummadoon:/usr$
Файловая система 125

то Is bin, ls etc, ls lib отобразят на экране содержимое /usr/bin, /usr/etc,


/usr/lib.
Команда cd . . выполняет переход в вышележащий каталог, a cd без параметров
возвратит вас в домашний каталог откуда угодно:
gummadoon:/var/X11R6/lib/fvwm2$ cd
gummadoon:“$

3.3.4. Системные каталоги


В любой UNIX-системе нормальной является ситуация, когда в пределах одной
файловой системы находятся десятки, а то и сотни тысяч файлов. По мере разви­
тия разрабатывались и детализировались правила относительно того, что в каких
каталогах размещать. В Linux принят вариант этих правил, называемый FSSTND
(File System Standard - стандарт на файловую систему) или FHS (Filesystem Hierarchy
Standard - стандарт на иерархию файловой системы). Его полный текст можно
найти по адресу ftp://tsx-ll.mit.edU/pub/linux/docs/linux-standards/fsstnd/fhs-2.0.tar.gz
или на другой копии сервера TSX-11. Рассмотрим наиболее важные элементы.
/ Корневой каталог. Должен содержать все, что необходимо для
старта и запуска системы, а также на случай восстановления
из резервной копии.
/bin Необходимые программы.
/boot Файлы загрузчика LILO.
/dev Устройства (все устройства доступны в виде файлов).
/etc Файлы конфигурации.
/etc/X11 Файлы конфигурации для X Window.
/home Домашние каталоги пользователей.
/home/cubbi Домашний каталог пользователя cubbi.
/lib Разделяемые библиотеки, необходимые для работы программ,
находящихся в каталогах /bin, /sbin и др.
/lib/modules Модули ядра.
/mnt Точка для временного монтирования файловых систем.
/opt Каталог для пакетов программ.
/opt/Offісе50 Пакет Star Office 5.0 (в данном случае).
/ргос Специальные виртуальные файлы, обеспечивающие доступ
к различным функциям ядра Linux.
/root Домашний каталог пользователя root.
/sbin Необходимые системные программы.
/tmp Временные файлы для всех программ. Эти файлы могут уни­
чтожаться системой при каждой перезагрузке или, скажем, раз
в месяц (некоторые UNIX-системы работают без перезагрузок го­
дами).
/usг Второй уровень иерархии.
/var Изменяемые данные.
Образ ядра системы - единственный файл, который имеет право находиться в ка­
талоге /. Каталоги /tmp, /home, /opt, /usг и /var могут находиться в других разделах,
126 Базовые понятия о UNIX-системах

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


в систему уже после загрузки, и именно поэтому /, /boot, /bin, /etc и /lib должны
содержать все необходимое как для загрузки, так и для монтирования файловых
систем.
/us г
Второй уровень иерархии. Содержит данные, которые доступны только для
чтения, и может использоваться одновременно несколькими компьютерами
в сети.
/usr/X11R6 Система X Window, версия 11.6.
/us г/Х386 Система X Window, версия 11.5.
/usr/bin Программы, предназначенные для пользователей.
/usr/games Игры и развлечения.
/usr/include Файлы заголовков для программ на языке С.
/usr/lib Библиотеки.
/usr/local Локальная иерархия (пуста непоредственно после установ­
ки системы).
/usr/sbin Системные программы.
/usr/share Архитектурно независимые данные.
/usr/share/dict Словари.
/usr/share/doc Документация в свободных форматах.
/usr/share/games Файлы данных для программ из /usr/games.
/usr/share/info Документация в формате GNU info.
/usr/share/locale Данные для системной локали.
/usr/share/man Документация в формате man.
/usr/share/nls Данные для системы поддержки национальных языков
NLS.
/usr/share/misc Все остальные данные.
/usr/share/terminfo База данных terminfo.
/usr/share/tmac Макросы для troff.
/usr/share/zoneinfo База данных и конфигурация местного времени.
/usr/src Исходные тексты.
/usr/src/linux Исходные тексты ядра системы Linux.
В идеале после того как система установлена, ни один подкаталог /u sг не дол­
жен модифицироваться - кроме /usr/local, в который администратор может уста­
навливать новые программы, не поставлявшиеся с системой (в этом случае испол­
нимые файлы попадают в /usr/local/bin, библиотеки - в /usr/local/lib, исходные
тексты - в /usr/local/src, документация - в /usr/local/man и т.д.). Единственное
исключение - замена программ, которые уже существуют в /usr/bin, или библио­
тек, находящихся в /u s r /lib , хотя и в этой ситуации часто можно обойтись поме­
щением более новой программы в /usr/local/bin, убедившись, что этот путь есть
в РАТИ до /usr/bin.
Продолжим рассмотрение каталогов.
/var Каталог, содержащий файлы и каталоги, содержимое которых
может изменяться при работе системных программ.
Файловая система 127

/var/cache Временно сохраненные файлы различных программ (браузеров


Internet, программы man, сервера шрифтов и т.д.).
/var/games Изменяемые файлы данных для игр из /usr/games.
/var/lock lock-файлы, указывающие, что то или иное устройство (обычно
модем) занято.
/var/log Системные журнальные файлы.
/var/mail Почтовые ящики пользователей.
/var/opt Изменяемые данные для программ из /opt.
/var/run Файлы, имеющие отношение к запущенным в настоящий мо­
мент программам, например хранящие номера процессов,
/var/spool Данные, обработка которых отложена (статьи из групп новостей
USENET, документы, посланные на печать, письма, которые не
удалось послать сразу из-за проблем со связью и т.д.).
/var/state Данные, имеющие отношение к состоянию программ, например
backup, файлы текстовых редакторов, конфигурации, имеющие
отношение ко всей системе и пр.
/va r/tmp Временные файлы, которые не должны регулярно уничтожаться
системой.
/var/yp Файлы системы NIS.
К сожалению, до сих пор не все дистрибутивы Linux придерживаются единого
стандарта, но в большинстве случаев назначение и расположение системных ка­
талогов будет близким к вышеописанному.
Пользователь свободен в создании и размещении файлов внутри своего домаш­
него каталога, но с течением времени оказывается, что удобнее всего держать про­
граммы, которые вы установили для себя, в "/bin, их файлы конфигурации - в ~/
etc, библиотеки - в “/lib и т.д.

3.3.5. Создание и удаление файлов


Если нужен новый каталог, достаточно подать команду mkdir каталог (от make
directory - создать каталог):
gummadoon:~$ Is -aF
./ .■/
gummadoon:~$ mkdir bin
gummadoon:~$ Is -aF
./ ../ bin/

Уничтожение пустого каталога выполняет команда rmdir каталог (remove


directory - удалить каталог):
gummadoon:~$ rmdir bin
gummadoon:~$ Is -aF
■/ ·■/
Чтобы создать копию файла, используется команда ср откуда куда (сору - копи­
ровать). Например, чтобы скопировать программу /bin/ls (именно она запускается
для выполнения Is) в текущий каталог, можно подать такую команду:
128 Базовые понятия о UNIX-системах

gummadoon:~$ ср /bin/ls “/Is


gummadoon:~$ ls -aF
./ ../ Is*
Для указания текущего каталога можно воспользоваться специальной ссылкой
на него - точкой (ср /bin/ls . ). Это именно та точка, которую показывает Is -а
в любом каталоге наряду с вышележащим каталогом . . /.
В качестве второго аргумента (куда) для ср разрешается указывать как имя
файла (ср /bin/ls ./Is), так и имя каталога (ср /bin/ls ./) . Во втором случае
можно скопировать сразу несколько файлов: ср /bin/* . скопирует все файлы из
/bin в текущий каталог.
Если вы выполните команду ср /bin/* , , в текущем каталоге у вас окажется
очень много файлов. Соответственно, пора научиться их удалять. Уничтожение
файлов выполняет команда rm файл,... (remove - удалить). Будте осторожны с этой
командой: в UNIX-системах нет возможности восстановить удаленное програм­
мами undelete или unerase, как в DOS/W indows.
rm Is Удалить файл Is в текущем каталоге.
rm а* Удалить все файлы, начинающиеся на а в текущем каталоге,
rm -і * Удалять все файлы в текущем каталоге, спрашивая разрешение пе­
ред каждым файлом,
rm -rf bin Удалить подкаталог bin, даже если он не пустой,
rm -fr * Удалить все файлы и подкаталоги со всем содержимым в теку­
щем каталоге.
rm -rf / Удалить все файлы в системе (никогда не выполняйте эту ко­
манду!).
На самом деле с другими командами также надо проявлять осторожность: ср
уничтожает содержимое старого файла при совпадении имен (чтобы система зап­
рашивала в таких случаях подтверждение, нужно подать команду ср - і).
Еще одна команда, относящаяся к этому разделу, - mv откуда куда (move - пере­
нести), объединяющая функции ср и rm. Ее можно использовать для переимено­
вания файла или для переноса его из одного каталога в другой:
gummadoon:~$ ср /bin/ls .
gummadoon:~$ mv ls myls
gummadoon:~$ ls -Fa
./ ../ myls*
gummadoon:~$ ./myls -Fa
./ ../ myls*

В отличие от DOS, при вводе команды программа с таким именем ищется не


в текущем каталоге, а только в перечисленных в переменной среды PATH. Поэто­
му в данном примере, чтобы запустить myls, мы вызвали ее, указав путь, который
в нашем случае представлял собой текущий каталог (.). Если текущий каталог
окажется другим, эту же программу можно будет вызвать как "/myls или /horne/
cubbi/myls (если имя пользователя - cubbi).
Файловая система 129

3.3.6. Ссылки
Еще одна важная особенность файловых систем UNIX - возможность создания
ссылки. При этом имя файла помещается в указанный каталог, но реального копиро­
вания не происходит, и объем занятого места на диске не увеличивается. Существу­
ет два типа ссылок - жесткие (hard links) и мягкие, или символические (soft links).
Жесткая ссылка неотличима от самого файла. Все изменения, происходящие с од­
ной из ссылок на файл, автоматически совершаются со всеми остальными. Если на
файл имеется несколько жестких ссылок, он продолжает существовать до тех пор,
пока все они не будут удалены из файловой системы. Когда файл открыт какой-
либо программой для работы, это также считается жесткой ссылкой. Именно по­
этому, если какая-то программа постоянно выполняет запись в файл, увеличивая
его так, что на диске остается мало места, удаление файла командой rm ничего не
изменит - любой файл в Linux существует до тех пор, пока существует хотя бы одна
ссылка на него!
Жесткая ссылка создается командой In откуда куда
gummadoon:~$ ln /bin/ls ,/myls
gummadoon:~$ Is -1
total 58
-rwxr-xr-x 2 root bin 54936 Apr 2 1998 myls

Здесь цифра 2 во втором поле вывода команды Is -1 говорит о том, что на файл
существуют две жесткие ссылки (/bin/ls и /home/cubbi/myls), но узнать по одной
из них, где находится другая, непросто. Сначала надо воспользоваться командой
ls -і, выдающей номер Inode, на который указывает "/myls, например

gummadoon:~$ ls -і
92768 myls

а затем надо найти все ссылки на файл с этим номером Inode при помощи find:
gummadoon:~$ find / -inum 92768 2>/dev/null
/bin/ls
/home/cubbi/myls

Следует отметить, что ссылки через границы файловых систем запрещены. Так,
если /home и / находятся в разных разделах жесткого диска, эта команда не срабо­
тает. Дело в том, что в следующий раз раздел /horne может быть смонтирован на
другом компьютере, и не будет понятно, куда должна указывать эта ссылка. Кро­
ме того, невозможны жесткие ссылки на каталоги.
Второй тип - мягкая, или символическая, ссылка, создаваемая командой In -s
откуда куда.
gummadoon:~$ ln -s /bin/ls ./myls
gummadoon:~$ ls -1
total 3
lrwxrwxrwx 1 cubbi users 7 Jun 14 21:04 myls -> /bin/ls
130 Базовые понятия о UNIX-системах

В этом случае в каталоге помещается специальная запись с первым символом


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

3.4. Управление процессами


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

3.4.1. Команда ps
Для того чтобы увидеть список запущенных процессов, используется команда ps
(process status - состояние процессов). Ps без параметров выдает краткую инфор­
мацию о процессах, принадлежащих вызвавшему ее пользователю.
gummadoon:~$ ps
PID TTY STAT TIME COMMAND
305 p3 S 0:00 -bash
312 p3 R 0:00 ps
gummadoon:~$

Здесь видно, что запущено всего два процесса - командный интерпретатор bash
и сама программа ps. Кроме того, указаны номера процессов (PID ), которые нуж­
ны для работы с ними при помощи всех других программ (имя для этой цели не
подходит, так как под одним именем может быть запущено несколько процессов),
терминал, с которого их запустил пользователь (в данном случае /dev/ttyp3), со­
стояние процесса (S (sleeping) - спит, R (running) - работает), время, в течение
которого он был неактивен, и имя программы, которая его запустила.
Чтобы увидеть действительно все процессы, нужно воспользоваться коман­
дой ps -а.

3.4.2. Команда top


Гораздо более удобный способ наблюдения за запущенными процессами - интер­
активная программа top. Она показывает процессы в порядке уменьшения потреб­
ляемого ими процессорного времени (само время указано в процентах в крайнем
правом столбце). Нажатие клавиши h в программе выводит краткий список ко­
манд, клавиши q - приводит к выходу из top. Тор также выводит данные о загруз­
ке ресурсов компьютера, использовании памяти и различную информацию
о процессах в более удобном виде, чем ps (попробуйте исполнить команду ps -aux
для получения той же или несколько большей информации).
Управление процессами 131

Если top отсутствует в вашем дистрибутиве (что маловероятно) или если у вас
старый дистрибутив, а ядро системы обновлялось много раз (иногда это приво­
дит к тому что top перестает работать), последняя версия этой программы доступ­
на по адресу ftp ://eecs.nw u.edu/pub/top/·

3.4.3. Управление задачами в shell


Каждый раз, когда вы запускаете программу из командной строки shell, вы не мо­
жете запустить другую программу до тех пор, пока выполнение текущей не закон­
чится (пример - только что рассмотренная top). Говорят, что такая программа ра­
ботает в интерактивном режиме. Командный интепретатор, однако, позволяет
запускать программы и в фоновом режиме, при котором подсказка ко вводу shell
появляется немедленно и позволяет продолжить работу. Для примера выполним
программу, копирующую данные из устройства /dev/zero (устройство, чтение из
которого возвращает нули) в /dev/null (устройство, в которое можно записывать
любые данные, и они пропадут в нем навсегда):
gummadoon:~$ cat /dev/zero > /dev/null
Командная строка не возвращается, потому что /dev/zero никогда не закончит­
ся, a /dev/null никогда не переполнится. Выполнение команды в интерактивном
режиме обычно можно прервать комбинацией клавиш Ctrl+C (АС).
Для зависших или неправильно работающих программ нажатие Ctrl+C сраба­
тывает не всегда; в этом случае можно воспользоваться более «сильной» комби­
нацией Ctrl+\, попытаться перевести задачу в фон, как будет показано ниже, или
воспользоваться командой kill с другого виртуального терминала.
Разумеется, Linux позволяет запускать несколько процессов одновременно из
командной строки. Для этого нам потребуется перевести процесс в фоновый ре­
жим, чтобы на экране появилась подсказка, которую можно использовать для за­
пуска следующего процесса. Запуск процесса в фоновом режиме осуществляется
командным интерпретатором, если к вводимой команде добавлен символ & (ам-
персенд).
gummadoon:~$ cat /dev/zero > /dev/null &
[1] 1518
gummadoon:~$
Теперь shell готов к вводу новой команды, в то время как копирование нулей
из /dev/zero в /dev/null выполняется в фоне и занимает все свободное процес­
сорное время (в чем можно убедиться при помощи команд ps -и или top). Вы
можете запустить еще один такой же процесс (достаточно нажать клавиши Ти Enter),
при этом каждый из двух процессов получит чуть меньше 50% процессорного
времени.
В отличие от реальных задач, требующих запуска в фоновом режиме, напри­
мер, архивации или компиляции больших программ, наши процессы никогда не
остановятся. Существуют команды, которые позволяют управлять всеми запу­
щенными процессами, - это встроенные команды интерпретатора jobs, bg и fg.
132 Базовые понятия о UNIX-системах

Выполним команду jobs:


gummadoon:~$ jobs
[1]- Running cat /dev/zero >/dev/null &
[2]+ Running cat /dev/zero >/dev/null &
gummadoon:~$

Числа в квадратных скобках - это номера заданий shell, которые присваиваются


всем процессам, запущенным в фоновом режиме или приостановленным в данной
сессии. Теперь любой процесс можно перевести обратно в интерактивный режим
(как если бы его запустили без символа &) при помощи команды f g %N (foreground -
передний план) с номером задачи N, указываемым после знака процента.
gummadoon:~$ fg %1
cat /dev/zero >/dev/null
fg еще раз выводит название команды на экран и передает ей контроль над тер­
миналом. Теперь можно прервать ее при помощи Ctrl+C или Ctrl+\. Команда fg
без параметров выдвигает на передний план последнюю остановленную задачу,
которая помечена знаком «плюс» в списке, выдаваемом командой jobs (в нашем
случае - задача номер 2). Второй запуск fg переведет в интерактивный режим
единственный оставшийся фоновый процесс, который теперь также можно пре­
рвать. После этого ps и top уже не покажут никаких лишних процессов.
Третья команда управления задачами, bg (background - фон), используется для
перевода приостановленного процесса в фоновый режим исполнения. Приоста­
новка осуществляется комбинацией клавиш Ctrl+Z. При этом обычный процесс,
выполнявшийся в интерактивном режиме, освобождает терминал, позволяя вво­
дить новые команды, но сам оказывается в состоянии ожидания. Команда Ьд пе­
реводит такой приостановленный процесс в фоновый режим, как если бы его за­
пустили с символом &с самого начала:
gummadoon:~$ cat /dev/zero > /dev/null
Z
[1]+ Stopped cat /dev/zero >/dev/null
gummadoon:~$ ps -u | grep cat
cubbi 1580 1.0 0.8 840 252 p1 T 16:12 0:01 cat /dev/zero
gummadoon:~$ bg
[1]+ cat /dev/zero >/dev/null &
gummadoon:~$ ps -u | grep cat
cubbi 1587 99.9 0.8 840 252 p1 R 16:16 0:02 cat /dev/zero

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


рую показывает команда ps -и в третьем поле - 1.0% после AZ и 99.9% после bg.
Управление задачами необходимо для запуска процессов, которые работают
долго - от минут до дней, хотя некоторые вписывают амперсенд после каждой
команды - копирования файла, поиска строки и т.п., чтобы не ждать ни секунды.
Однако если требуется работать сразу с несколькими программами, переключаясь
Управление процессами 133

с одной на другую, эта система оказывается неудобной, - приходится каждый раз


набирать AZ f g %1, чтобы перейти в первую задачу, и AZ f g %2, чтобы вернуться во
вторую. Для этого гораздо лучше подходят виртуальные консоли Linux (клавиши
Alt+Fn) или, если вы вынуждены работать с одним терминалом (например, зайдя
по telnet на удаленную машину), программа screeen, доступная по адресу f tp ://
ftp.gnu .org /pub /GNU /screen.
Так как команды jobs, fg и bg являются встроенными командами интерпрета­
тора, полное их описание получают не при помощи man jobs, man fg, man bg, а по­
средством встроенной команды help: help jobs, help fg, help bg.
Некоторые командные интерпретаторы могут вообще не иметь поддержки этой
группы команд, но устанавливаемый по умолчанию на всех Linux системах bash
поддерживает управление задачами (job control) именно в таком виде.

3.4.4. Управление процессами


В UNIX-системах существует понятие сигнала. Сигнал - это специальная форма
взаимодействия между процессами. Один процесс сообщает другому о том, что
что-то случилось - оборвалась линия связи, пользователь решил приостановить
процесс, изменился размер окна и т.д. Часть сигналов обрабатывается системой,
часть - программой, некоторые просто игнорируются. Пользователь может вруч­
ную послать любой сигнал любому процессу, которым он владеет, при помощи
команды kill, получившей свое название (kill - убивать) от наиболее распрост­
раненной цели ее применения - для остановки процессов.
kill - с и г н а л PID...
Здесь PID - идентификатор процесса, которому нужно послать сигнал. PID
можно определить, воспользовавшись командой ps. Кроме того, в интерпретато­
рах bash и tcsh команда kill является встроенной, что позволяет указывать вмес­
то номера процесса номер задачи shell (точно так же, как и для fg/bg, после знака
процента). Сигнал задается указанием его номера или имени.
Соотношение имен сигналов и их номеров вызывается командой kill -1.
gummadoon:~$ kill -1
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12)SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16)SIGCHLD
17) SIGCONT 18) SIGSTOP 19) SIGTSTP 20)SIGTTIN
21) SIGTTOU 22) SIGURG 23) SIGXCPU 24) SIGXFSZ
25) SIGVTALRM 26) SIGPROF 27) SIGWINCH 28) SIGIO
29) SIGPWR

Сигналы можно указы вать как полными именами (kill -SIGHUP %1), так
и без префикса SIG (kill -KILL %1). Рассмотрим наиболее интересные для нас
случаи - сигналы, требующие прекратить работу:
SIGHUP (Hang UP - повешена трубка); сообщает процессу, что пользова­
тель, запустивший его, вышел из системы. Обычные процессы при
134 Базовые понятия о UNIX-системах

этом завершаются. Чтобы процесс сохранился, например в случае,


если вы запускаете ftp на удаленной системе и уходите, надо за­
пускать его через специальную команду nohup. Процессы-демоны,
запускаемые системой и обычно постоянно работающие в фоно­
вом режиме, получив сигнал HUP, перечитывают свои конфигура­
ционные файлы.
SIGINT (INTerrupt - прерывание); именно этот сигнал получает текущий
процесс, когда вы нажимаете Ctrl+C.
SIGQUIT (Q U IT - выход); этот сигнал посылается при нажатии Ctrl+\.
SIGTERM (TERM inate - прекратить); этот сигнал требует немедленного пре­
кращения работы. Программа должна как можно быстрее записать
все буфера, завершить все, что нужно, и остановиться.
SIGKILL (KILL - убить); немедленное и неизбежное (теоретически) унич­
тожение процесса. Ни одна программа не может перехватить
и игнорировать этот сигнал.
Таким образом, если какой-то процесс «завис», не прерываясь после нажатия
Ctrl+C C trl+\ и не останавливаясь после Ctrl+Z, надо перейти в другой вирту­
альный терминал (например, нажатием Alt+F2, если вы были в первом) или от­
крыть другое окно xterm, определить номер процесса при помощи команды ps
и послать ему последовательно сигналы SIGHUP, SIGTERM и SIGKILL. Обычный
пользователь может останавливать только процессы, принадлежащие ему лично,
пользователь root может прервать любой процесс.
Н е р ек о м е н д ует ся пользо ва т ься числовы м и об озн ачениям и сигналов д ля к о ­

® м а н д ы k i l l , х о т я -7 н а б р а т ь прощ е, чем -HUP. Д о ст а т о чн о п р о п уст и т ь


м и н у с перед един ицей, чт обы послат ь SIGTERM ( сигнал по у м о л ч а н и ю ) п р о ­
ц ессу с эт им н о м ер о м !Н ео д нократ но вст речалась си т уа ц и я, когда сист ем ­
ны й адм и ни ст р а т о р делал т а к ую ош ибку, пы т а ясь послат ь SIGHUP ка ко й -
н и б у д ь п о ль зо ва т ель ско й програм м е. В р е зу л ь т а т е , н а п р и м ер , ком анд ы
k i l l 1 4 4 5 6 п осы лает ся SIGTERM процессам ном ер 1 и 4456. П роцесс ном ер
1, кот оры й н а зы ва ет ся i n i t , я в л я е т с я процессом -предком д ля абсолю т но
всех д р у ги х процессов в сист ем е, т а к чт о его за вер ш ен и е пр и во д и т ли б о
к п олной ост ановке, ли б о к п ер еза гр узк е ком пью т ера.

3.4.5. Изменение приоритетов


В разделе 3.4.3 был описан пример запуска двух процессов, каждый из которых по
отдельности требовал для себя все доступное процессорное время. Когда оба процес­
са были переведены в фоновый режим, система выделила каждому из них примерно
по 50% времени. Это произошло потому, что процессы имели равные приоритеты.
Теперь представьте себе, что система загружена подобными процессами, не дела­
ющими ничего полезного, а администратору потребовалось запустить что-то дей­
ствительно необходимое. Запущенный обычным образом, третий процесс получит
Текстовый редактор Vi 135

только треть процессорного времени. Можно, конечно, если вы администратор,


прервать загрузившие систему процессы (послав им один из сигналов из преды­
дущей главы), можно временно приостановить, послав им сигнал SIGSTOP или
SIGTSTP, а затем SIGCONT для продолжения, но самое правильное решение -
понизить приоритет выполнения пользовательских процессов или поднять при­
оритет своего.
В UNIX приоритет выполнения процесса называется nice value (значение тактич­
ности). Если это число велико (процесс «тактичный»), его приоритет низок, и на­
оборот. Обычный пользователь может понизить приоритет любого своего процес­
са (увеличив его nice value), пользователь root может изменить приоритет любого
процесса в любую сторону.
Значения nice value лежат в Linux между -2 0 (минимальная тактичность, мак­
симальный приоритет) и +20 (максимальная тактичность, минимальный приори­
тет). Обычный процесс при запуске получает приоритет ноль. Для запуска про­
цесса с ненулевым приоритетом используется команда nice.
nice [-приращ ение ] команда аргументы
При этом команда запускается с nice value, к которому прибавлено указанное
приращение. Только пользователь root может использовать приращение меньше
нуля, увеличивая тем самым приоритет. Если приращение не указано, по умолча­
нию используется значение 10.
Можно также модифицировать приоритеты запущенных процессов, для чего
служит команда renice:
гепісе приращение [[-р] PID...] [[-g] PGRP...~\ [[-u] username...~\
Указанное в виде числа приращение будет добавлено к nice value всех процессов
с номерами PID, всех процессов, входящих в группу процессов PGRP, и всех процес­
сов, которые запустил пользователь username. Например, команда
гепісе +1 987 -u daemon root -р 32
уменьшит на 1 приоритет процессов 987 и 32 и всех процессов, владельцами кото­
рых являются пользователи daemon и root.

3.5. Текстовый редактор Vi


Самая используемая программа в UNIX (после командного интерпретатора) -
текстовый редактор. В нем выполняется редактирование всевозможных конфи­
гурационных файлов, с его помощью пишут письма, программируют и даже соз­
дают документы, если в последних используются языки ТеХ или SGML. Редактор
является ключевой программой в системе.
В UNIX есть два текстовых редактора, достаточно мощных для того, чтобы
делать все перечисленное без каких-либо проблем. Это Emacs и Vi. Оба редактора
имеют свои плюсы и минусы, а также армии преданных поклонников.
Emacs - это сложная система, включающая в себя язык программирования elisp
и позволяющая с его помощью расширять воможности Emacs, превращая его из
136 Базовые понятия о UNIX-системах

простого текстового редактора в систему обработки документов, в программу для


работы с почтой и новостями, в W W W -браузер, в личного психоаналитика - сло­
вом, во все, что пожелал программист, написавший соответствующий модуль на
elisp. Адепты Emacs используют его практически как полноценную операционную
систему.
Vi - это редактор несколько иного типа. В нем не предусмотрено встроенного
языка программирования для расширения возможностей, но набор команд, кото­
рыми он управляется, включает в себя практически все, что может когда-либо
потребоваться (и даже больше того). Самая расширенная его версия, Vim, позво­
ляет работать в X Window с окнами и меню, поддерживает синтаксическую под­
светку для более чем 150 форматов файлов, включает возможность выполнения
команд на языках tel, python и peri, контекстные подсказки, программу ctags, зна­
чительно облегчающую программирование на языках С, C++, FORTRAN, Eiffel
a Java и многое другое. Даже из собственных команд Vim можно составлять не­
большие программы, примеры которых распространяются с дистрибутивом.
Мы будем рассматривать редактор Vi, так как он присутствует практически
в любой UNIX-системе, включая любой дистрибутив Linux. В первую очередь сле­
дует сказать, что редактор vi как таковой существует только на бумаге - в текстах
стандартов на UNIX (а именно, IEEE 1003.2, часть 2). Каждая UNIX-совместимая
система содержит свой собственный Vi, включающий в себя те или иные расши­
рения. В Linux встречаются редакторы Elvis и Vim, доступные по адресам f tp ://
ftp.cs.pdx.edu/pub/elvis/ и h ttp ://w w w vim .org соответственно, но команда для
вызова редактора обычно везде имеет один и тот же стандартный вид - vi.
Из двух последних вариантов мы выберем Vim, так как именно он является наи­
более совершенным редактором из серии vi. Рассказывают, что сам автор Emacs
однажды, увидев Vim в действии - с несколькими окнами, синтаксической под­
светкой и т.п., - некоторое время считал, что это модифицированный вариант его
Emacs, а не главный противник последнего Vi.
Пользователям, привыкшим иметь дело только с текстовыми редакторами
Windows, возможно, придется потратить некоторое время на то, чтобы понять
идеологию Vi или Emacs, осознать их грандиозные возможности в сочетании
с безграничной гибкостью.

3.5.1. Установка Vim


Для установки Vim вам потребуются два файла (номер версии, 5.4, может изме­
ниться, так как Vim совершенствуется весьма активно): ftp: //ftp.vim .org/pub/vim /
unix/vim-5.4-rt.tar.gz и ftp://ftp.vim .org/pub/vim /unix/vim -5.4-src.tar.gz·
Кроме того, если вы хотите работать с использованием довольно удобного гра­
фического интерфейса под X Window, вам потребуется одна из трех поддержива­
емых Vim графических библиотек:
Motif Коммерческая, но существует ее бесплатный эквивалент Lesstiff
(http://www.lesstiff.orgV хотя последний еще не вышел из стадии
разработки.
GTK По-видимому, лучшая из существующих библиотек такого рода
для Linux, http://w w w .gtk.org.
Текстовый редактор Vi 137

Athena - библиотека, распространяющаяся


/us г/Х11 R6/lib/X11/libXaw.so
вместе с X Window, однако, к сожалению, внешний вид ее интер­
фейса не вполне оптимален. Если вам действительно необходимо
пользоваться Xaw, лучше взять одну из улучшенных м одиф и­
каций:
Xaw3D ftp://ftp.X O rg/contrib/w idgets/X aw 3d
Xraw http://w w w am ber.ucsf.edu/hom es/rom sky/public_htm l/X raw
Xaw95 http://logic.csc.cuhk.edu.hk/~s947547/Xaw95
NeXtaw http://w w w inf.ufrgs.br/~kojim a/nextaw /index.htm l
Xaw-Xpm http://w w w zip.com .au/~bb/X aw X pm
Обратите внимание, что Vim, скомпилированный с поддержкой графики, не бу­
дет запускаться даже в текстовом режиме, если соответствующая библиотека от­
сутствует (например, если вы просто перенесете уже скомпилированный Vim на
другой компьютер).
Распакуйте архивы, подав команды
tar zxvf vim-5.4-rt.tar.gz
tar zxvf vim-5.4-src.tar.gz
cd vim-5.4
Выполните конфигурирование. В следующем примере строится редактор с мак­
симальным количеством возможностей:
CFLAGS=-02 ./configure --enable-max-features --enable-perlinterp --enable-
tclinterp --enable-pythoninterp
Скомпилируйте и установите Vim посредством команд
make
make install
Добавьте в файл /etc/profile строку (хотя это и необязательно)
VIM=/usr/local/share/vim; export VIM
Создайте ссылку vi на /usr/local/bin/vim:
ln -s /usr/local/bin/vim /usr/local/bin/vi
Начало каталога в предыдущих двух командах может отличаться от /usr/local,
если вы переопределили его при помощи команды . /configure --prefix.

3.5.2. Основы работы с Vi


Редактор Vi может мгновенно запутать новичков тем, что одни и те же клавиши
в нем действуют совершенно по-разному в зависимости от установленного режима.
Существует нормальный режим (normal mode), предназначенный для переме­
щения текста и курсора по экрану и ввода простых команд. Есть режим вставки
(insert mode), в котором нажатие большинства клавиш приводит просто к добав­
лению соответствующих символов в текст. Также существует режим команд­
ной строки (command-line mode) или режим двоеточия (colon mode), названный так
потому, что Vi обозначает начало командной строки символом двоеточия. В этом
138 Базовые понятия о UNIX-системах

режиме вводятся все сложные команды. В Vim есть еще и визуальный режим
(visual mode), предназначенный для выделения произвольного прямоугольного
блока текста.
Если не испугаться этого и понять идеологию Vi, окажется, что трудно приду­
мать более эффективный способ создать редактор с многими сотнями команд, так
чтобы любую из них можно было быстро и удобно набрать.

3.5.2.1. Запуск Vim


Редактор Vim, как и Vi, чаще всего запускается просто указанием имени редакти­
руемого файла в командной строке, то есть командой vim или vi, если была созда­
на соответствующая ссылка:
vi filename
Конечно, существует множество опций, но для начала ни одна из них не потре­
буется. Можно запустить Vim (но не Vi) вообще без аргументов - вы начнете ре­
дактировать пустой буфер, который позже можно будет сохранить; но для начала
загрузите Vim с каким-нибудь текстовым файлом.
Под редактированием в Vi понимается нижеперечисленная последовательность
действий:
1. Загрузка файла во внутренний буфер.
2. Внесение изменений в содержимое буфера.
3. Сохранение буфера в файл.
Поэтому не беспокойтесь насчет содержимого файла - пока вы не подадите
команду для записи, никакие изменения не будут в него внесены.

3.5.2.2. Минимальные необходимые знания


Запустите Vi с каким-либо текстовым файлом, например:
vi filename.txt
Текст должен появиться на экране, и по нему можно будет перемещать курсор,
пользуясь клавишами h, j, k, 1 или стрелками. Пользоваться стрелками, может
быть, привычнее, но классические клавиши могут пригодиться при работе с не­
правильно настроенным терминалом, да и работать с ними быстрее, ведь обе руки
постоянно находятся на основной части клавиатуры. Клавиша h находится слева
и перемещает курсор влево, клавиша 1 находится справа и перемещает курсор
вправо. Запомнить назначение j и к можно, пользуясь тем, что j (перемещающая
курсор вниз) похожа на стрелку вниз. Передвигайте курсор по экрану с помощью
этих клавиш, пока не освоитесь.
Если вы хотите выйти из редактора Vi, надо нажать Esc, чтобы наверняка оказать­
ся в режиме команд, и ввести с клавиатуры команду : q!и нажать Enter. Это приводит
к завершению работы редактора без сохранения каких-либо изменений. Для выхода
с сохранением изменений используется команда : wq с последующим нажатием Enter.
Находясь в режиме команд, вы можете удалить символ: для этого установите
на него курсор и нажмите х . Проделайте это несколько раз.
Текстовый редактор Vi 139

Чтобы ввести новый текст, установите курсор на первый символ после того
места, в которое вы хотите произвести вставку, нажмите клавишу і, наберите текст
и нажмите Esc для возвращения в режим команд. Альтернативный вариант: по­
ставить курсор на символ перед тем местом, в которое вы хотите вставить текст,
и нажать клавишу а. Затем точно так же, как и в предыдущем случае, введите текст
и нажмите Esc.
Можно удалить больше одного символа, пользуясь различными вариантами
команды d: dw для удаления символов от курсора до конца слова, d$ для удале­
ния символов от курсора до конца строки, dd для удаления текущей строки. Во­
обще говоря, полный формат команды d - «число d объект», где число - число
повторений а объект - то, что следует удалить. Попробуйте команды 2dd и 3dd
для удаления сразу двух и трех строк соответственно.
После того как вы удалили какой-то текст, можно вернуться к предыдущему
состоянию, воспользовавшись командой отмены изменений и. Повторение этой
команды (только в редакторе Vim) приводит к восстановлению все более ранних
модификаций.
Если вы восстановили слишком много, можно вернуться к измененному тексту,
командой Ctrl+R
Только что удаленный текст можно вставить в другое место при помощи ко­
манды р. Удалите строку при помощи dd, переместите курсор на другую строку
и нажмите р.
Для поиска слова в тексте введите символ /, искомое слово, и нажмите Enter.
Курсор переместится на начало этого слова, если оно присутствует в тексте.
Для поиска с изменением введите символы : %s/, искомое слово, символ /, сло­
во, которое заменит искомое, символы / g и Enter. Например, :%s/old/new/g для
замены всех слов old на слово new. Чтобы заменить только первое встреченное
слово, не вводите g.
Чтобы записать текущий текст в файл, воспользуйтесь командой :w filename,
для записи в файл с именем filename. Можно также считать файл, вставляя его
в позицию курсора - для этого используется команда : г filename.
В следующих разделах мы рассмотрим все команды редактора Vim подробно.

3.5.3. Нормальный режим


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

3.5.3.1. Перемещение по тексту


Итак, вы находитесь в нормальном режиме Vi и видите на экране курсор. Есте­
ственно, чтобы его переместить, можно нажать клавиши со стрелками, - в Vim это
приведет к желаемому результату. В настоящем Vi для управления курсором слу­
жат только клавиши h, j, k, 1, и профессионалы пользуются именно ими, так как
они всегда под рукой, а в мире UNIX часто бывают ситуации, в которых клавиши
управления курсором просто не работают.
140 Базовые понятия о UNIX-системах

Вот команды, приводящие к перемещению курсора в нормальном режиме:


Движение по горизонтали:
h, Left, Ctrl+H, Backspace На один символ влево.
1, Right, Space На один символ вправо.
0 (цифра ноль), Home (не в Vi) В начало строки.
На первый непустой символ строки.
$, End В конец строки.
gO, gHome (не в Vi) Не левый край экрана.
gA (не в Vi) На первый непустой символ на экране.
gm (не в Vi) На половину ширины экрана вправо.
g$, gEnd (не в Vi) На правый край экрана.
N\ На Ν -й столбец.
ІА На первый найденный справа от текущей
позиции символ А.
E4 На первый найденный слева от текущей
позиции символ А.
tA На символ перед первым справа символом А.
ΎΛ На символ после первого слева символа А.
; Повторить последнюю команду f, F, t, Т.
, Повторить последнюю f, F, t, Т в противо­
положную сторону.
Все перечисленные команды (включая поиск) не приводят к выходу за преде­
лы строки, на которой стоит курсор.
Движение по вертикали:
k, Up, Ctrl+P На одну строку вверх,
j, Down, Ctrl+J, Ctrl+Enter, Ctrl+N На одну строку вниз.
gk, gUp (не в Vi) На одну строку экрана вверх.
gj, gDown (не в Vi) На одну строку экрана вниз.
На одну строку вверх и на первый непус­
той символ.
+, Ctrl+M, Enter На одну строку вниз и на первый непустой
символ.
N_ Вниз на N -ί строк и на первый непустой
символ.
G, Ctrl+End На последнюю строку.
gg, Ctrl+Home На первую строку.
:N На А^-ю строку.
N% (не в Vi) На Л^-й процент от всего буфера.
Ngo (не в Vi) На Л^-й байт в буфере.
H На первую строку экрана.
M На среднюю строку на экране.
L На последнюю строку экрана.
Текстовый редактор Vi 141

Здесь следует обратить внимание на различие между строками экрана и текста.


На экране обычно помещается только часть текста. Кроме того, длинные строки
текста могут изображаться в виде нескольких строк на экране, если не отключена
опция wrap1.
Подав команду Ctrl+G, в любой момент можно проверить, в каком месте файла
вы находитесь - выводится название файла, номер строки, процент от общего раз­
мера файла и номер столбца.
Движение по словам:
W, Shift+Right На одно слово вперед.
W, Ctrl+Right На одно Слово вперед.
е Вперед до конца слова.
Е Вперед до конца Слова.
b, Shift+Left На одно слово назад.
В, Ctrl+Left На одно Слово назад.
ge Назад до конца слова.
gE Назад до конца Слова.
Здесь «слово» - это последовательность букв, цифр и знаков подчеркивания
или других непустых символов, в то время как «Слово» - это последовательность
любых непустых символов, разделенная пробелами, табуляциями или символами
конца строки. Например слово в кавычках рассматривается этими командами как
одно «Слово» и как три «слова» (первая кавычка, последовательность букв, вто­
рая кавычка).
Движение по тексту:
( На одно предложение назад.
) На одно предложение вперед.
{ На один абзац назад.
} На один абзац вперед.
[[ Вперед на одну секцию или до { в начале строки.
][ Вперед на одну секцию или до } в начале строки.
]] Назад на одну секцию или до { в начале строки.
[] Назад на одну секцию или до } в начале строки.
Эти команды оперируют еще тремя объектами, известными Vi. Предложение
завершается точкой, восклицательным или вопросительным знаком, за которыми
допускается любое число закрывающих скобок или кавычек, но затем обязатель­
но должен следовать пробел, табуляция или конец строки. Раздел начинается
и заканчивается пустой строкой или парой символов из языка nroff - . IP,. LP и т.д.
Секция начинается и заканчивается символом перевода страницы Ctrl+L или ко­
мандами nroff . SH, . NH, . Н, . HU, . nh или . sh.
Граница секции одновременно является границей параграфа, граница парагра­
фа одновременно является границей предложения.
1 Под опцией в Vim подразумевается одна из специальных внутренних переменных, которые включа­
ют или отключают различные необязательные возможности. Опция wrap устанавливается командой
режима двоеточия : s e t wrap и снимается : s e t nowrap.
142 Базовые понятия о UNIX-системах

Перед любой командой перемещения можно набрать число, в результате чего


эта команда будет выполнена указанное число раз. Так, команда 5j переместит
курсор на пять строк вниз, 4fa найдет четвертую по счету букву «а» и т.д.
3.5.3.2. Редактирование с перемещением
Существует несколько команд, так называемых операторов, которые применяют­
ся только совместно с командами перемещения. Это означает, что нужно набрать
последовательно оператор и любую команду перемещения, после чего действие,
заданное оператором, будет выполнено на всей области, через которую был бы
перенесен курсор. Так, например, оператор удаления d может удалить текущую
строку и строку под ней, будучи набранным в форме dj, или текущую строку и все
строки до конца буфера, если ввести его в форме dG. И перед командой перемеще­
ния, и перед оператором можно указывать числа их повторений, например 2d3w
удаляет шесть слов.
Команды перемещения в визуальном режиме (см. раздел 3.5.4) также можно ис­
пользовать после операторов. Например, das удаляет предложение, в котором сто­
ит курсор, и пробелы после него в отличие от команды d, которая удаляет текст
только от курсора до конца предложения.
Операторами являются следующие команды:
с Изменение.
d Удаление.
У Копирование в регистр.
g~ Изменение регистра букв.
gu Превращение букв в строчные.
gu Превращение букв в заглавные.
I Обработка внешней программой.
= Расстановка отступов для С.
< Сдвиг влево.
> Сдвиг вправо.
Подробно операторы редактирования текста рассматриваются ниже.
3.5.3.3. Прокрутка экрана
Следующие команды перемещают окно редактирования (часть текста, которую вы
можете видеть) по буферу, но при этом положение курсора относительно редакти­
руемого файла не меняется (лишь некоторые из этих команд переводят курсор на
первый непустой символ строки, в которой он находился).
Ctrl+E Прокрутка вниз на одну строку.
Ctrl+D Прокрутка вниз на scroll строк.
Ctrl+F, PageDown, Shift+Down Прокрутка вниз на одну страницу.
Ctrl+Y Прокрутка вверх на одну строку.
Ctrl+U Прокрутка вверх на scroll строк.
Ctrl+B, PageUp, Shift+Up Прокрутка вверх на одну страницу.
Если перед Ctrl+D и Ctrl+U указать число, оно станет новым значением опции
scroll, так что все последующие такие команды будут прокручивать экран на то же
Текстовый редактор Vi 143

число строк. Числа перед другими командами из этого списка имеют обычный
смысл числа повторов.
zEnter Прокрутка вверх, пока курсор не окажется на первой строке,
zt (не в Vi) То же самое, но курсор остается в том же столбце.
ziVEnter Изменить размер окна до N строк, оставляя курсор на месте,
z. Прокрутка, помещающая строку с курсором в центр экрана,
zz (не в Vi) То же самое, но курсор остается в том же столбце,
z- Прокрутка вниз, пока курсор не окажется на последней
строке.
zb (не в Vi) То же самое, но курсор остается в том же столбце.
Следующие шесть команд работают только в том случае, если опция wrap от­
ключена (командой : unset wrap, см. ниже):
zl, zRight (не в Vi) Прокрутка на один символ влево.
zh, zLeft (не в Vi) Прокрутка на один символ вправо.
zL (не в Vi) Прокрутка влево на полуширину экрана.
zH (не в Vi) Прокрутка вправо на полуширину экрана.
zs (не в Vi) Прокрутка, помещающая курсор на левый край.
ze (не в Vi) Прокрутка, помещающая курсор на правый край.
Если открыто несколько окон, в части из них можно установить опцию scroll-
bind. После этого прокрутка любого окна, для которого эта опция установлена,
приводит к одновременной синхронной прокрутке всех остальных таких же окон.
Если синхронизация по какой-то причине потеряна, ее можно восстановить ко­
мандой : syncbind.

3.5.3.4. Сложное перемещение


Казалось бы, в разделе 3.5.3.1 были перечислены очень сложные команды переме­
щения. Но если рассмотреть их внимательно, станет ясно, что на самом деле они
все работали с тривиальными объектами: символами, строками, словами, пред­
ложениями, частями текста, заключенными в скобки. Но в редакторе Vim суще­
ствует еще множество объектов, которые можно задействовать при перемещени­
ях. Самый важный из них - метка (mark). В качестве имени метки используется
одна буква латинского алфавита, причем заглавные и строчные буквы различают­
ся. Кроме того существуют метки со специальными именами - ‘, “, [ ,] ,< ,> , с име­
нами в виде цифр и т.п.
mМ Установить метку М в позиции курсора.
т “ ит ’ Установить метку предыдущего контекста.
:Λ/ma М, :A/k М Установить метку М на строке N.
’М Перемещение в начало строки с меткой М.
“М Перемещение на метку М.
: marks (не в Vi) Показать список меток в текущем буфере.
: marks ABC... Показать метки ABC...
Метки, обозначенные строчными буквами (от ’а до ’z), действительны в преде­
лах только одного файла и только пока он находится в буфере. Если вы удаляете
144 Базовые понятия о UNIX-системах

файл из буфера, все они пропадают. Уничтожение строки также приведет к уда­
лению содержащейся в ней метки. Команды перехода к таким меткам можно
использовать после операторов, например, команда d ’t удаляет строки от теку­
щей до содержащей метку t. Классический Vi поддерживал только такой вид
меток.
Метки, обозначенные заглавными буквами (от Ά до ’Z), действуют между раз­
личными редактируемыми файлами. Команды перехода на такие метки могут пе­
реключать текущий буфер на другой файл. Соответственно, с операторами их
можно использовать, только если вы редактируете именно тот файл, в котором
находится метка. Эти метки привязаны только к номеру строки, но не к ее содер­
жимому, так что они изменяют позицию, когда вы добавляете или удаляете стро­
ки. Если включена опция viminfo (:set viminfo), эти метки будут сохранены
в файле . viminfo, где их можно модифицировать вручную.
Существуют также специальные метки Ό - ’9. Их нельзя установить из редак­
тора, но можно изменить путем редактирования файла .viminfo, в котором они
сохраняются. Метка ‘0 указывает на позицию, в которой находился курсор при
выходе из редактора Vim в последний раз, ‘1 - в предпоследний и т.д.
Существуют метки, которые устанавливаются редактором Vim автоматически
(также отсутствующие в Vi, кроме ‘ и “):
’[ Первый непустой символ в первой строке части текста, над которой про­
изводилась последняя операция.
“[ Первый символ части текста, над которой производилась последняя опе­
рация.
’] Первый непустой символ в последней строке части текста, над которой
производилась последняя операция.
“] Последний символ части текста, над которой производилась последняя
операция.
Например, команда 10Y’] скопирует 10 строк в регистр и переставит курсор на
последнюю из них, команда р ’] вставит содержимое регистра и опять перенесет
курсор на последнюю из вставленных строк.
’< Первый непустой символ в первой строке части тескта, которая была
выбрана в визуальном режиме.
“< Первый символ в части текста, которая была выбрана в визуальном ре­
жиме.
’> Первый непустой символ в последней строке части текста, которая была
выбрана в визуальном режиме.
“> Последний символ части текста, которая была выбрана в визуальном
режиме.
’’ Первый непустой символ в строке, на которой была выполнена последняя
команда перехода ( ” - это команда для возвращения назад).
Символ, с которого производился последний переход на метку.
Текстовый редактор Vi 145

Первый непустой символ в строке, на которой находился курсор, когда


вы последний раз выходили из текущего буфера.
Символ, на котором находился курсор перед последним выходом из те­
кущего буфера.
Под командой перехода команды возврата ” и подразумевают не только пе­
реход на метку, но и команды G, /, ?, η, N, % , (, ), [[, ]], {,}, :s, :tag, L, Μ, Η, а также
команды, вызывающие новый файл для редактирования.
Помимо меток, Vim (но не Vi) поддерживает так называемый список перехо­
дов (jumplist), свой для каждого окна. В этим списке сохраняются адреса, на кото­
рые выполнялись последние 50 команд переходов.
Ctrl+O Перейти на предыдущую позицию из списка переходов.
Ctrl+I, Tab Перейти на следующую позицию из списка переходов.
:j и Показать список переходов.
Перед Ctrl+O/Ctrl+I можно указывать число N для перехода сразу на Ν -ю по­
зицию в списке относительно текущей.
Помимо команд, управляющих переходами к меткам, в Vim существуют коман­
ды перехода, работающие с более сложными контекстными объектами. В первую
очередь они направлены на облегчение программирования на языке С.
Нажатие символа % без указания числа перед ним приводит к тому, что редактор
анализирует часть текста, на которой расположен курсор, и если она представляет
собой одно из следующих выражений: (,),[,], {,}, /*, */, #if, #ifdef, #else, #elif, #endif,
Vim находит пару для этого фрагмента и переносит курсор туда. Скобки игнориру­
ются, если перед ними стоит символ \ или если они находятся внутри двойных ка­
вычек, кроме случая, когда число правых и левых кавычек в этой строке не совпада­
ет, а предыдущая строка не заканчивается символом \. Кроме того, игнорируются
скобки, взятые в одинарные кавычки (‘[‘, ‘)’ и т.д.).
Следующие четыре команды выполняют действие, аналогичное % на символе
скобки, но их можно вызывать с любого места между скобками:
[( Перейти к предыдущей незакрытой (.
[{ Перейти к предыдущей незакрытой {.
]) Перейти к следующей неоткрытой ).
]} Перейти к следующей неоткрытой }.
Следующие четыре команды работают с методами и классами в том виде, в ко­
тором они описываются на языке Java:
]m Перейти к следующему началу метода.
]М Перейти к следующему концу метода.
[m Перейти к предыдущему началу метода.
[М Перейти к предыдущему концу метода.
Если начало/конец метода не найдены, поиск останавливается на начале/кон­
це текущего или предыдущего/следующего класса соответственно.
146 Базовые понятия о UNIX-системах

Следующие четыре команды работают с директивами препроцессора С и ком­


ментариями. После выполнения такой команды можно будет переходить на пар­
ный найденному элемент и обратно, нажимая %.
[# Перейти на предыдущий незакрытый #if или #else.
]# Перейти на следующий неоткрытый #else или #endif.
[*, [ / Перейти на предыдущее начало С-комментария.
]*, ] / Перейти на следующий конец С-комментария.
Все команды, начинающиеся с [, выполняются несколько раз, если указать пе­
ред ними число.

3.5.3.5. Редактирование текста


Большинство команд, имеющих отношение к редактированию текста, выполня­
ется из нормального режима. Только для ввода текста с клавиатуры требуется
переход в режим ввода.
X, Del Удалить символ под курсором. Аналог команды dl.
X Удалить символ перед курсором. Аналог команды dh.
dкоманда Удалить текст, через который перенесла бы курсор команда пере­
мещения.
dd Удалить строку.
D Удалить текст от текущего символа и до конца строки. Аналог d$.
J Объединить строку с последующей. Может добавить до двух про­
белов.
gj Объединить строку с последующей, не вставляя новых пробелов
(не в Vi).
R Перейти в режим замены (см. раздел 3.5.5.4).
gR Перейти в виртуальный режим замены.
с команда Удалить участок текста, определенный командой перемещения
и перейти в режим ввода.
сс Удалить строку и перейти в режим ввода.
С Удалить символы от курсора до конца строки и перейти в режим
ввода (синоним с$).
s Удалить символ и перейти в режим ввода (синоним cl).
S Удалить строку и перейти в режим ввода (синоним сс).
Перед всеми этими командами можно вводить число для повторения их дей­
ствия заданное количество раз. Кроме того, перед командами удаления (произ­
водные от X , d, с и s) можно указывать имя регистра, в который будет помещен
удаленный текст.
гсимвол Заменить символ в позиции курсора на другой. Можно ввести
rEnter - тогда на месте текущего символа будет конец строки,
grсимвол Заменить виртуальный символ в позиции курсора на другой. Н а­
пример, можно заменить часть пробелов, выведенных на экран
при отображении символа табуляции.
Текстовый редактор Vi 147

(если опция tildeop = off). Изменить регистр буквы в позиции курсора


и переместить курсор вправо. Для определения соответствия заглавных
и строчных букв используется текущая локаль (см. раздел 6.3).
-к о м а н д а (если опция tildeop = on). Изменить регистр букв на всем участке
текста, через который перенесла бы курсор команда перемещения
(не в Vi).
g~ ком анда Изменить регистр букв на всем участке текста, через который пе­
ренесла бы курсор команда перемещения (не в Vi).
g ~ g ~ ,g ~ ~ Изменить регистр букв в текущей строке (не в Vi).
g \J к о м а н д а Сделать заглавными все буквы на участке текста, через который
перенесла бы курсор команда перемещения (не в Vi).
gUgU, gUU Сделать заглавными все буквы в текущей строке (не в Vi).
gU K O M anda Сделать строчными все буквы на участке текста, через который
перенесла бы курсор команда перемещения (не в Vi).
gugu, guu Сделать строчными все буквы в текущей строке (не в Vi).
g ln o M a n d a Перекодировать по алгоритму rot 13 все буквы на участке текста,
через который перенесла бы курсор команда перемещения (не в Vi).
g?g?, g?? Перекодировать по алгоритму rot 13 все буквы в текущей строке
(не в Vi).
iVCtrl+A Добавить число N (по умолчанию 1) к числу в позиции курсора
(не в Vi).
iVCtrl+X Вычесть число N (по умолчанию 1) из числа в позиции курсора.
Эти две команды работают для десятичных, восьмеричных и шест­
надцатеричных чисел со знаком, записанных в формате, принятом
в языке С (не в Vi).
<ком анда Сдвинуть влево на значение shiftwidth строки, через которые пе­
ренесла бы курсор команда перемещения.
« Сдвинуть влево текущую строку.
>ком анда Сдвинуть вправо на значение shiftwidth строки, через которые пе­
ренесла бы курсор команда перемещения.
» Сдвинуть вправо текущую строку.

3.5.3.6. Регистры
Операции удаления, а также специально для этого предназначенная команда у по­
мещают текст, на который распространяется их действие, в один из регистров Vi.
У каждого регистра есть имя, задаваемое буквой, цифрой или одним из следующих
символов:., %, # ,:, -, ". Имя регистра при использовании указывается после симво­
ла ", так что, например, команда удаления строки с занесением в регистр а выглядит
как "add. В Vim поддерживается девять классов регистров.
1. Безымянный регистр " " заполняется любой командой d, с, s, х, у, вне зави­
симости от того, был ли указан для этих команд целевой регистр. Единствен­
ное исключение - регистр "_. Команда "_dd не сохранит данные ни в одном
регистре.
148 Базовые понятия о UNIX-системах

2. Пронумерованные регистры от "О до "9 заполняются автоматически. Регистр


"О содержит текст, прочитанный последней командой у, если для нее не был
указан целевой регистр. Регистр "1 содержит последний удаленный или из­
мененный текст (команды d, с, s, х), если этот текст занимал одну целую
строку или больше и для команды не был указан целевой регистр. С каж­
дым следующим удалением или изменением содержимое регистра "1 копи­
руется в "2, прежнее содержимое "2 - в "3 и т.д. до регистра "9, содержимое
которого теряется.
3. Регистр небольшого удаления заполняется при удалении текста, занима­
ющего меньше одной строки (обычно буквы или слова), если для команды
не был указан целевой регистр.
4. Именованные регистры от "а до "z или от "А до "Z заполняются только тог­
да, когда вы указываете их специально. Указание имени регистра в виде
строчной буквы приводит в тому, что его содержимое заменяется новым,
в виде заглавной - к присоединению нового текста к уже находящемуся
в регистре.
5. Регистры только для чтения:
". содержит последний вставленный текст;
"% содержит имя редактируемого файла;
"# содержит имя альтернативного файла;
": содержит последнюю введенную команду в режиме двоеточия.
6. Регистр выражения "= - это способ использовать выражение Vim (см. раз­
дел 3.5.8). При указании этого регистра в команде р курсор переходит
в командную строку, в которую вы можете ввести любое выражение. Резуль­
тат будет вставлен в текст.
7. Регистр выбора "* хранит в себе выбранный мышью текст в графическом
режиме.
8. Регистр «черная дыра» не содержит ничего; при записи в него вся инфор­
мация пропадает без изменения какого-либо другого регистра.
9. Регистр последнего поиска " / содержит выражение для поиска, заданное
последней командой ? или /.
Следующие команды нормального режима специально предусмотрены для ра­
боты с регистрами.
" гук ом ан да Поместить в регистр г текст, через который перенесла бы
курсор команда перемещения.
"гуу Поместить в регистр г текущую строку (или N строк для
N"ryy).
'VY То же, что и " г у у , для совместимости с Vi. Чтобы эта ко­
манда действовала в области от текущего положения
курсора до конца строки (по аналогии с другими коман­
дами), переопределите ее с помощью команды :тар Y у$.
"гр Вставить текст из регистра г после курсора.
'VP, "г <M idM ouse> Вставить текст из регистра г перед курсором.
Текстовый редактор Vi 149

"rgp То же, что и р, но курсор перемещается в конец вставлен­


ного текста (не в Vi).
'VgP То же, что и Р, но курсор перемещается в конец вставлен­
ного текста (не в Vi).
"г\р, "г] <MidMouse> То же, что и р, но дополнительно модифицируется от­
ступ вставляемого текста аналогично отступу текущей
строки.
"г]Р, "r[P, "r[p, V[<MidMouse>
То же, что и Р, но дополнительно модифицируется от­
ступ вставляемого текста аналогично отступу текущей
строки.
Обозначение <MidMouse> в данных командах соответствует щелчку по сред­
ней кнопке мыши. Следующие команды режима двоеточия также работают с ре­
гистрами Vim:
: гед регистры (: registe rs). Показать содержимое указанных регистров, по
умолчанию - всех (не в Vi).
: di регистры (: display). То же, что и : registers.
: строкиу г N (: yank). Поместить строки в регистр г и еще N строк после
них.
: строкири г (: put). Поместить в указанные строки содержимое регистра г.
При использовании регистра выражения само выражение
нужно привести тут же, причем С И М В О Л Ы I и “ должны быть
защищены обратной дробью: put = 'path' . \I,/test\I.

3.5.3.7. Команды Undo и Redo


Самое большое неудобство оригинального редактора Vi - то, что операция Undo
(исправление внесенных изменений) работает только один раз, то есть отменяет
действие последней команды. Повторное выполнение Undo в Vi приводит к отмене
действия предыдущей команды Undo, восстанавливая изменение.
В редакторе Vim запоминаются все сделанные изменения и последовательное
выполнение Undo позволяет восстановить состояние редактируемого буфера прак­
тически до любого момента в прошлом. На самом деле число запомненных изме­
нений ограничено значением опции undolevels, но по умолчанию оно равно 1000,
и вы всегда можете увеличить это число по своему усмотрению (например, ко­
мандой : set undolevels 10000)
u, Undo Отменить одно изменение (операция Undo).
:u (: undo). Аналог и в режиме двоеточия.
Ctrl+R Восстановить одно изменение (операция Redo).
: red (: redo). Аналог Ctrl+R в режиме двоеточия.
U Отменить все изменения, повлиявшие на текущую строку.
При этом команда U рассматривается с точки зрения действия u/Ctrl+R как самая
обычная команда. Если после выполнения U нажать на и, строка восстановится.
150 Базовые понятия о UNIX-системах

Перед командами и и Ctrl+R, как и перед большинством команд нормального


режима, можно ввести число, указывающее, сколько раз надо выполнить ко­
манду.

3.5.3.8. Повторение команд


Команда . (точка) приводит к повторению предыдущей команды нормального
режима, изменившей буфер (включая команды ввода текста, вставки и т.п.). Так,
если последним был переход в режим ввода, точка еще раз выполнит все изме­
нения, произведенные в режиме ввода. Если перед точкой не указано число по­
вторений, будет использовано число, заданное для повторяемой команды. Если
последнее изменение включало в себя операцию над нумерованным регистром
(см. раздел 3.5.3.6), например, это была команда "1Р, то точка приведет к выпол­
нению "2Р, следующая точка - "ЗР, и так до "9Р. Это имеет смысл, так как если
команда "1Р вставляет текст, удаленный в последний раз, "2Р вставит текст из
предпоследнего удаления и т.д.
Vim может воспринять содержимое любого регистра как набор команд нор­
мального режима. Для этого служат команды @1-@9, @a-@z, @=, @*.
Единственное исключение - команда которая приведет к выполнению содер­
жимого регистра в качестве команды режима двоеточия (потому что регистр со­
держит не что иное, как последнюю введенную команду двоеточия).
Команда @@ повторяет предыдущую @г указанное число раз.
Чтобы занести набор команд в регистр, удобнее всего воспользоваться специ­
ально предназначенной для этого командой записи макроса qг (где г - имя регис­
тра: 0-9, a-z, A -Z или "). После ее ввода все нажатия на клавиши записываются
в указанный регистр, пока q не будет нажата второй раз. Затем эту последователь­
ность можно воспроизвести при помощи соответствующей команды @.
Команды режима двоеточия также можно выполнять из регистров. Для этого
служат следующие команды:
: строки@регистр Выполнить содержимое регистра (0-9, a-z, =), считая
курсор находящимся на указанной строке. Так можно
выполнить и команды нормального режима, указав их
как аргументы к команде : normal.
: строки*регистр Аналог команды : который разрешен только если в оп­
ции cpoptions присутствует флаг *. Единственное отли­
чие этой команды - с ее помощью можно выполнять со­
держимое регистра
: строки@: Повторить предыдущую команду режима двоеточия (со­
держимое регистра ":).
: строки@@ Повторить предыдущую команду :
Кроме регистров, набор команд нормального режима или режима двоеточия
можно сохранить и в отдельном файле (файле сценария), и выполнить позже од­
ной из следующих команд:
Текстовый редактор Vi 151

:so файл (: source). Выполнить содержимое файла в качестве ко­


манды режима двоеточия.
:so! файл (: sou гее! ). Выполнить содержимое файла в качестве ко­
манды нормального режима (а точнее, в качестве после­
довательности символов, введенной с клавиатуры, -
сюда могут входить любые команды и переходы между
любыми режимами).
И наконец, Vim позволяет связывать отдельные часто используемые комбина­
ции команд с любыми комбинациями клавиш. Так, можно сделать, например, что­
бы клавиша F1 вызывала команду : help, комбинация Shift+Enter вводила тэг язы ­
ка HTM L <BR> и команду перевода строки в режиме ввода. Фактически можно
придать Vim свойства любого специализированного текстового редактора. Это до­
стигается командой : тар, а точнее, группой команд:
:тар к о м б и н а ц и я Связывает команды с комбинацией клавиш для трех ре-
команды жимов: нормального, визуального и режима ожидания
команды перемещения после ввода команды-оператора
(d, с, у и т.д.). Команда : тар без параметров выводит спи­
сок таких связей. Разрешены рекурсивные определения.
: пт комбинация (: птар). То же, что и : тар, но только для нормального ре-
команды жима.
: vm комбинация (: vmap). То же, что и : тар, но только для визуального ре-
команды жима.
: от ко м б и н а ц и я (: отар). То же, что и : тар, но только для режима ожида-
команды ния команды перемещения после команды-оператора.
: тар! ком бинация То же, что и : тар, но только для режимов ввода и двое-
команды точия.
: im комбинация (: imap). То же, что и : тар, но только для режима ввода.
команды
: cm комбинация (: стар). То же, что и : тар, но только для режима двоеточия.
команды

Все эти команды допустимо также вызвать в форме noremap: : no (: по remap),


:пп (: ппоremap), :vn (: vnoremap), :ono (: onoremap), :no! (: no remap!), :ino (: inoremap),
: cno (: ono remap) - в этом случае для создаваемого определения набора команд зап­
рещено дальнейшее вложенное переопределение.
Для удаления такого определения можно использовать команды серии unmap:
:unm (:unmap), :nun (:nunmap), :vu (:vunmap), :ou (:ounmap), :unm! (:unmap!), :iu
(: iunmap), : cu (: cunmap). При этом, если комбинация клавиш была задана для не­
скольких режимов (командами : тар или : тар! ), то удаление этой комбинации из
одного из них (например, :i и для режима ввода) сохраняет ее действие в осталь­
ных режимах, для которых она была определена.
152 Базовые понятия о UNIX-системах

Следующий набор команд (серия mapclear) удаляет все определения для данного
режима: : таре (: mapclear),: nmape (: nmapclear),: vmape (: vmapclear),: отаре (: omapclear),
:таре! (: mapclear! ), :imape (: imapclear), :emape (: cmapclear).
Все выражение от первого непустого символа после переопределяемой комби­
нации клавиш до конца строки или символа | считается частью набора команд.
Это в частности означает, что в конце команды не должно быть лишних пробелов
и что комментарии после нее также невозможны.
При вводе как комбинации клавиш, так и ставящегося ей в соответствие набо­
ра команд действуют следующие правила:
□ все печатные символы вводятся в их собственном виде, кроме символов \ и <;
□ символ \ вводится либо как \ \ , либо как <Bslash>;
□ символ < вводится либо как \< , либо как <lt>;
□ все специальные символы вводятся внутри угловых скобок в соответствии
с табл. 3.1, за исключением < С -С > ;
□ символ Ctrl+C переопределить невозможно;
□ для ввода пробела необходимо вводить символ Ctrl+V (но не < C -V > ) перед
ним (для этого надо нажать на Ctrl+V дважды).

Таблица 3.1. Запись специальных символов в редакторе Vim

Комбинация
Символ Название ASCII-код
клавиш

<Nul> Null (ноль) CTRL-@ 0 (хранится как 10)

<BS> Backspace CTRL-H 8

<Tab> Tab (табуляция) CTRL-I 9

<NL> N ew Line (новая строка) CTRL-J 10 (используется


для <Nul>)

<FF> Form Feed (перевод страницы) CTRL-L 12

<CR> Carriage Return (возврат каретки) CTRL-M 13

<Enter> то же, что и <CR>

<Esc> Escape CTRL-[ 27

<Space> Space (пробел) 32

<lt> Less Than (знак меньше) < 60

<Bslash> Back Slash (обратная дробь) \ 92

<Bar> Vertical Ваг (вертикальная черта) 1 124

<Del> Delete (удаление) 127

<EOL> End O f Line (конец строки может быть


<CR>, <LF> или <CR><LF> в зависимости
от системы и опции fileformat)

<Up> Up (вверх)

<Down> Down (вниз)


Текстовый редактор Vi 153

Таблица 3.1 (окончание)


j. Комбинация
Символ Н азва н и е ASCII-код
клавиш

<Left> Left (влево)

<Right> Right (вправо)

<S-Up> Shift+Up

<S-Down> Shift+Down

<S-Left> Shift+Left

<S-Right> Shift+Right

<C-Left> Ctrl+Left

<C-Right> Ctrl+Right

<F1> - <F12> Function keys (функциональные


клавиши) c l no 12

<S-F1> - <S-F12> Shift-Function keys


(Shift+функциональные клавиши)
*
X

Help (подсказка)
V

Λ
CD
Q_

<Undo>* Undo (восстановление)

<lnsert> Insert (вставка)

<Home> Home (начало)

<End> End (конец)

<PageUp> Page Up (страница вверх)

<PageDown> Page Down (страница вниз)

<kHome> Клавиша Home на цифровом блоке

<kEnd> Клавиша End на цифровом блоке

<kPageUp> Клавиша PgUp на цифровом блоке

<kPageDown> Клавиша PgDn на цифровом блоке

<kPlus> + на цифровом блоке (серый +)

<kMinus> - на цифровом блоке (серый -)

<kMultiply> * на цифровом блоке (серая *)

<kDivide> / на цифровом блоке (серая /)

<kEnter> Enter на цифровом блоке

Shift+клавиша

Control+клавиша

<M-.. > Alt+клавиша или M eta+клавиша

<t_xx> Клавиша с записью "хх" в /etc/termcap

* Клавиш Help и Undo нет на клавиатуре PC, но их можно эмулировать средствами системы (keytable
в Linux) или переопределить при помощи той же команды : тар.
154 Базовые понятия о UNIX-системах

3.5.3.9. Сложное редактирование


Следующие команды нормального режима выполняют более сложные операции,
связанные с изменением текста.
[команда-фильтр Передать участок текста, заданный командой перемеще­
ния, внешней программе-фильтру в качестве ввода и за­
менить его в тексте выводом этой программы.
Мфильтр Обработать текущую строку (или N строк для N11) про­
граммой-фильтром.
=команда Обработать участок текста, заданный командой переме­
щения, программой, зафиксированной в опции equalprg.
По умолчанию используется встроенная функция, выпол­
няющая форматирование отступов для программ на С.
Обработать текущую строку (или N строк в случае ко­
манды N==) программой equalprg.
& Повторить предыдущую команду поиска и замены (:s).
Это синоним команды :s //~ /.
gqкоманда Выполнить форматирование участка текста, заданного
командой перемещения. Например, выравнивание абза­
ца выполняется командой gqip. Стратегия выравнива­
ния определяется так же, как и при автоматическом фор­
матировании, см. раздел 3.5.5.6.

3.5.3.10. Другие команды нормального режима


Перечислим еще несколько часто применяемых команд реального режима, кото­
рые мы пока не упомянули.
Ctrl+L Очистить экран и вывести все изображение заново. Быва­
ет полезно при работе через плохо настроенный терминал,
в котором на экране остается мусор при прокрутке,
ga, : as [c ii ] Вывести значение ASCII кода символа в позиции курсо­
ра в виде десятичного, шестнадцатеричного и восьмерич­
ного числа.

3.5.4. Визуальный режим


Визуальный режим используется для выполнения операций над частью текста,
которую можно выделить интерактивно. В нем выполняются три операции:
1. Выделение начала блока. Символ, находящийся под курсором, станет пер­
вым символом блока.
2. Перемещение к концу блока. Текст будет выделен от начала блока до симво­
ла, на котором окажется курсор, включительно.
3. Операция над выделенным блоком.
Текстовый редактор Vi 155

3.5.4.1. Выделение блока


Выделение блока начинается в нормальном режиме Vim с помощью одной из трех
команд:
V Войти в посимвольный визуальный режим.
V Войти в построчный визуальный режим.
Ctrl+V Войти в блочный визуальный режим.
Нажатие клавиш Esc, Ctrl+C, щелчок левой кнопки мыши, подача любой ко­
манды, переключающей редактируемый буфер, или повторной команды начала
визуального режима снимают выделение, и никаких изменений не происходит.
Причем такой эффект дает именно та команда, которая использовалась для входа
в текущий визуальный режим: v для посимвольного, V для построчного, Ctrl+V
для блочного. Команда другого типа просто приведет к переходу в другой вари­
ант визуального режима.
Различие между тремя вариантами этого режима состоит в следующем. Посим­
вольный режим позволяет выбрать непрерывную последовательность символов
в текущем буфере. Это могут быть несколько слов в одной строке или несколько
строк подряд. Первая и последняя строка могут быть неполными, но все строки
между ними будут целиком входить в выделенный блок. Построчный режим поз­
воляет выделять только целые строки текста. Блочный режим, наоборот, предос­
тавляет полную свободу: можно выбрать любой прямоугольник символов на эк­
ране, не обращая внимания на строки.
Команда Ctrl+G приводит к переключению в режим выбора, см. раздел 3.5.4.4.
Помимо вышеуказанных, могут использоваться следующие дополнительные
команды:
gv Вход в визуальный режим с сохранением выделения, вы­
полненного ранее в визуальном режиме. Используемый ва­
риант режима также совпадает с предыдущим.
<LeftM ouse> Щ елчок по левой кнопке мыши изменяет текущую пози­
цию курсора, но не приводит к входу в визуальный режим
(хотя приводит к выходу из него, если он был запущен ра­
нее). Но если провести курсором мыши с нажатой левой
кнопкой, а затем отпустить ее, область, по которой прошел
курсор, будет считаться областью, выделенной в визуаль­
ном режиме.
<RightMouse> Щелчок по правой кнопке мыши в нормальном режиме при­
водит к входу в визуальный режим и выделению области
текста от текущей позиции текстового курсора до позиции,
в которой было произведено нажатие. В визуальном режи­
ме щелчок по правой кнопке мыши увеличивает выделен­
ную область, перемещая ее начало или конец (в зависимо­
сти от того, что ближе) до позиции курсора мыши.
156 Базовые понятия о UNIX-системах

3.5.4.2. Перемещение к концу блока


В визуальном режиме действуют все команды передвижения по тексту, действу­
ющие в нормальном режиме, плюс еще несколько:
о Изменить направление. Текущая позиция курсора становится
началом блока, а бывшее начало теперь можно как угодно пе­
ремещать.
О То же, что и о, но теперь в блочном визуальном режиме курсор
переносится не в противоположный угол выделенного блока,
а в соседний угол на той же строке,
aw Выбрать слово с пробелами,
iw Выбрать слово без пробелов.
aW Выбрать Слово (см. раздел 3.5.3.1) с пробелами.
iW Выбрать Слово без пробелов,
as Выбрать предложение с пробелами,
is Выбрать предложение без пробелов,
ар Выбрать параграф с пробелами,
ip Выбрать параграф без пробелов,
а], а[ Выбрать блок от [ до ] включительно.
i[,i] Выбрать блок от [ до ], не включая концы.
а(, a), ab Выбрать блок от ( до ) включительно.
i(, i), ib Выбрать блок от ( до ), не включая концы.
а<, а> Выбрать блок от < до > включительно.
i<, i> Выбрать блок от < до >, не включая концы.
а{, а}, аВ Выбрать блок от { до } включительно.
і{, і}, ІВ Выбрать блок от { до }, не включая концы.
Вообще говоря, здесь действуют все команды нормального режима, не изменя­
ющие содержимое файла. Особое значение принимает команда $ (переход к кон­
цу строки). В блочном визуальном режиме она перемещает правую границу блока
вправо так, чтобы конец самой длинной строки попал в выделенную область. Этот
режим поддерживается до тех пор, пока не будет использована любая команда,
кроме перемещения строго по вертикали.

3.5.4.3. Операции над выделенным блоком


После того как блок требуемого размера выделен, над ним можно произвести раз­
личные действия. Здесь используются все операторы изменения текста, а также
некоторые специальные команды:
: Выполнить команду режима двоеточия над выделенными стро­
ками.
< Сдвинуть влево на значение опции shiftwidth все выделенные
строки.
> Сдвинуть вправо на значение shiftwidth все выделенные строки.
\филътр Пропустить выделенный текст через программу-фильтр.
Текстовый редактор Vi 157

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


в опции equalprog, или отформатировать в соответствии с пра­
вилами языка С, если эта опция пуста.
gq Переформатировать выделенные строки.
Изменить регистр букв в выделенном тексте.
r, s, с Удалить выделенный текст и перейти в режим ввода.
С, S, R Удалить выделенные строки и перейти в режим ввода.
x, d Удалить выделенный текст.
X, D Удалить выделенные строки. В режиме выделения блока ко­
манда D удаляет выделенный текст и весь текст до конца строк.
Скопировать выделенный текст в регистр г.
ηί Скопировать выделенные строки в регистр г.
J Объединить выделенные строки в одну. Возможно добавление
одного-двух пробелов.
gj Объединить выделенные строки в одну, не вставляя ни одного
пробела.
u Сделать все буквы в выделенном тексте заглавными.
u Сделать все буквы в выделенном тексте строчными.
g? Перекодировать все буквы в выделенном тексте по алгоритму
ro tl3 .
Ctrl+] Найти тэг.
lcmpoxa<Esc> Вставить строку в начале каждой строки в блоке.
AcmpoKa<Esc> Присоединить строку к концу каждой строки в блоке.
3.5.4.4. Режим выбора
В редакторе Vim поддерживается дополнительный вариант визуального режима,
который называется режимом выбора (selection mode). Действия в этом режиме
напоминают действия с выбранным блоком текста в различных программах для
DOS/W indows.
Вход в этот режим осуществляется в одном из следующих случаев:
□ при выборе области текста с помощью мыши, если в опции selectmode есть
строка mouse (по умолчанию опция не установлена);
□ при выполнении одной из команд перемещения по тексту, не являющейся
буквой, с нажатой клавишей Shift. Например, Shift+Left, Shift+Home и т. д.
Необходимо также, чтобы в опции selectmode была строка key;
□ при выполнении команд v, V или Ctrl+V, если в опции selectmode имеется
строка cmd;
□ при выполнении команд нормального режима g h .g H или g<Ctrl+H> (для
перехода в посимвольный, построчный и блочный режим выбора соответ­
ственно);
□ при выполнении команды визуального режима Ctrl+G.
В режиме выбора действуют следующие команды:
□ введение любого печатного символа и нажатие клавиши Enter приводит
к тому, что выделенный фрагмент текста удаляется и Vim переходит в режим
ввода. Введенный символ вставляется первым;
158 Базовые понятия о UNIX-системах

□ непечатные команды перемещения с нажатой клавишей Shift изменяют раз­


мер выделенной области;
□ непечатные команды перемещения без клавиши Shift отменяют режим вы­
бора;
□ нажатие клавиши Esc отменяет режим выбора;
□ нажатие комбинации Ctrl+O выполняет следующую команду в визуальном
режиме;
□ нажатие комбинации Ctrl+G выполняет переключение в визуальный режим;
□ все остальные команды действуют так же, как и в визуальном режиме.

3.5.5. Режим ввода


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

3.5.5.1. Вход в режим ввода


Режим ввода используется для ввода нового текста в текущий буфер. Следующие
команды позволяют перейти в режим ввода из нормального режима Vi:
а Добавить текст в область после курсора.
А Добавить текст в конце строки.
i, <Ins> Вставить текст перед курсором.
I Вставить текст перед первым непустым символом в строке.
gi Вставить текст в начале строки (не в Vi).
о Начать новую строку ниже курсора и ввести текст.
О Начать новую строку выше курсора и ввести текст.
Как и к большинству команд нормального режима, к этим командам можно
применять параметр повторения. Команда За добавит введенный текст три раза.
Следующие команды используются для ввода текста из режима командной стро­
ки (это единственный способ ввести текст, если Vi был запущен под именем ех).
: Λ/а Ввести текст под N -й строкой или под текущей строкой, если но­
мер N не указан.
: /Vi Ввести текст над N -й строкой или над текущей строкой, если но­
мер N не указан.
После ввода такой команды редактор будет ожидать от вас последовательности
строк текста, которую можно закончить, только введя строку, состоящую из од­
ной точки.
Vim дополнительно включает следующие команды:
: st a rt in se rt Перейти в нормальный режим ввода аналогично команде і.
: st a rt insert! Перейти в нормальный режим ввода аналогично команде А.

3.5.5.2. Специальные клавиши


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

клавиш распознаются и обрабатываются как команды. Такими последовательнос­


тями являются:
Ctrl+[, Esc Выход из режима вставки или замены в нормальный.
Ctrl+C Тоже выход в нормальный режим, но без расшифровки аб­
бревиатур.
Ctrl+@ Ввести еще раз текст, который был набран в последней опера­
ции ввода и перейти в нормальный режим.
Ctrl+A Ввести текст, набранный в последней операции ввода (не в Vi).
Ctrl+H, Backspace
Удалить символ перед курсором. Символ конца строки уда­
ляется, если установить значение опции backspace равным 1
или 2. Текст, который не был только что введен, удаляется,
только если установить значение 2.
Del Удалить символ под курсором (не в Vi).
C trl+W Удалить слово перед курсором.
Ctrl+U Удалить весь введенный текст.
Ctrl+I, Tab Вставить символ табуляции (или несколько пробелов, если
установлена опция expandtab).
Ctrl+J, NL,
Ctrl+M, Enter Начать новую строку.
Ctrl+K Ввести символ старшей половины таблицы ASCII, например,
нажатие Ctrl+K А Е вводит символ . Не имеет смысла, если
загружен русский шрифт (не в Vi).
Ctrl+N Найти следующее ключевое слово (не в Vi).
C trl+P Найти предыдущее ключевое слово (не в Vi).
C trl+R r Вставить содержимое регистра г (0 -9 , a-z, все специальные
регистры, включая неименованный). Содержимое регистра
вводится так, как если бы его вводили с клавиатуры (не в Vi).
Ctrl+R, C trl+R г Вставить содержимое регистра г побайтово. Например, если
в регистр попал символ Backspace, он появится как АН, а пре­
дыдущая буква не сотрется (не в Vi).
Ctrl+T Вставить отступ в начале строки (его размер задается опцией
shiftwidth).
0 Ctrl+D Удалить отступ в начале строки.
Л Ctrl+D Удалить отступ в начале строки, но сохранить его для следу­
ющей.
Ctrl+V, C trl+Q Ввести следующий символ (кроме цифры) буквально (вклю­
чая любой управляющий символ, кроме <NL> - конца стро­
ки). Или же можно ввести до трех цифр, задающих десятич­
ный ASCII код символа (аналогично нажатию комбинации
A lt+цифра в DOS/W indows).
Ctrl+X Войти в расширенный режим ввода. В этом режиме действу­
ют следующие команды (не в Vi):
Ctrl+E - прокрутка экрана вверх;
160 Базовые понятия о UNIX-системах

Ctrl+Y - прокрутка экрана вниз;


Ctrl+L - дополнить строку (ищется строка, начинающаяся
с того же текста, который уже введен в текущей строке, и если
таковая найдется, она копируется в область после курсора);
Ctrl+N - дополнить слово, поиск слова, начинающегося так­
же - вперед;
Ctrl+P - дополнить слово, поиск слова, начинающегося так­
же - назад;
Ctrl+K - дополнить слово из словаря (словарь указывается
в опции dictionary, в противном случае используется стандарт­
ный из UNIX);
Ctrl+I - дополнить слово из текущего и включаемых файлов
(они перечисляются в опции include);
Ctrl+] - дополнить имя тэга;
Ctrl+F - дополнить имя файла;
Ctrl+D - дополнить имя определения (строки после #define).
Выход из расширенного режима ввода осуществляется после
подачи любой команды, которая не является командой этого
режима.
Ctrl+E Вставить символ под курсором (не в Vi).
Ctrl+Y Вставить символ над курсором (не в Vi).
Ctrl+_ Переключение с ввода слева направо на ввод справа налево,
и наоборот (не в Vi).
Ctrl+] Расшифровать аббревиатуру.
Insert Переключиться между режимами вставки и замены.
Кроме этого, в Vim можно прямо в режиме ввода перемещаться по тексту, ис­
пользуя клавиши управления курсором. При этом редактор выходит из режима
ввода, перемещает курсор и затем возвращается. Поэтому, в частности, команда
Undo будет восстанавливать состояние участков текста, измененных до и после
перемещения по отдельности.
Up Курсор на одну строку вверх.
Down Курсор на одну строку вниз.
Left Курсор на одну строку влево.
Right Курсор на одну строку вправо.
Shift+Left, Курсор на одно слово назад.
Ctrl+Left
Shift+Right, Курсор на одно слово вперед.
Ctrl+Right
Home Курсор в начало строки.
End Курсор в конец строки.
Ctrl+Home Курсор в начало файла.
Ctrl+End Курсор в конец файла.
LeftMouse Курсор в позицию курсора мыши.
Текстовый редактор Vi 161

Shift+Up,
PageUp Ha одну страницу вверх.
Shift+Down,
PageDown На одну страницу вниз.
Ctrl+O команда Выполнить команду нормального режима.

3.5.5.3. Опции, управляющие вводом текста


Если при вводе текста вы выходите за границу экрана, Vi по умолчанию продол­
жает добавлять вводимые символы к той же строке. Чтобы автоматически пере­
ходить на следующую строку, как, например, в редакторе pico, можно установить
одну из следующих опций.
Опция textw idth указывает максимальную разрешенную длину строки, и оп­
ция wrapmargin - за какое число символов, не доходя до края экрана, Vi не дол­
жен заходить при вводе текста.
Уже существующие строки, выходящие за эти ограничения, переформатируют­
ся только при добавлении к ним текста.
При вводе символа табуляции Vim может заменять его несколькими пробела­
ми, если установлена опция expandtab. При этом число пробелов по умолчанию
равно значению tabstop. Если установлена опция smarttab, клавиша табуляции
будет вставлять shiftwidth пробелов в начале строки и tabstop пробелов в других
местах, что удобно при вводе программных текстов.
Опция softtabstops включает режим, в котором клавиша Backspace удаляет со­
ответствующее число последовательных пробелов за один раз, так что режим
с softtabstops и expandtab внешне неотличим от обычного.
Если предыдущая строка имела отступ, то при установленной опции autoindent
он автоматически переносится в начало следующей строки. Опции sm artindent
и cindent динамически модифицируют величину отступа в соответствии с прави­
лами для программ на языке С, опция lisp - для программ на языке lisp.

3.5.5.4. Режим замены


В режим замены можно перейти, воспользовавшись командой R в нормальном
или клавишей Ins в обычном режиме ввода. В режиме замены каждый вводимый
символ, даже перевода строки, замещает один уже существующий символ, так что
их число не изменяется. При достижении конца строки дальнейший набор текста
приводит к добавлению символов как в обычном режиме ввода.
Клавиши удаления (Backspace, Ctrl+W, Ctrl+U) в этом режиме переводят кур­
сор назад и восстанавливают символ, находившийся в этой позиции ранее, вы­
полняя операцию, аналогичную Undo. Единственная клавиша, изменяющая чис­
ло символов - клавиша Tab при включенной опции expandtab, так как она вместо
одного символа вставляет сразу несколько пробелов.
Помимо обычного режима замены, в Vim поддерживается виртуальный режим
замены, включающийся командой gR из нормального режима. В этом случае
заменяются не реальные символы из файла, а буквы, находящиеся на экране. Так,
162 Базовые понятия о UNIX-системах

табуляция заменит собой несколько символов, а буква, введенная поверх табуля­


ции, может ничего не заменить. Нажатие на Enter удаляет содержимое строки до
ее конца (то есть помещает вместо остатка строки символ конца). Как и в обыч­
ном режиме замены, нажатие клавиши Backspace восстанавливает предыдущий
текст. Виртуальный режим удобен для редактирования текстовых таблиц и дру­
гих частей текста, отформатированных символами табуляции и пробелами.

3.5.5.5. Автозамена и сокращения


В режимах ввода, замены и командной строки в Vim есть возможность автомати­
ческой замены уже набранных слов на другие. Она используется чаще всего для
исправления распространенных опечаток (teh вместо the) или для быстрого вво­
да текста с использованием сокращенных форм (ms вместо Microsoft):
:iab ms Microsoft
:iab teh the
Замена сокращения выполняется в тот момент, когда вы вводите символ, кото­
рый не являестся буквой и не входит в список символов опции iskeyword, напри­
мер нажимаете Space, Tab, Esc, клавишу управления курсором. Кроме того, спе­
циальный символ Ctrl+] выполняет замену только что набранного сокращения
в любом случае, не приводя ни к каким другим изменениям.
Чтобы избегнуть автозамены набираемого сокращения, перед его концом вый­
дите из режима ввода, нажав Esc, вернитесь, нажав а, и продолжайте набор тек­
ста. Или же можно ввести Ctrl+V перед нажатием Space или Tab, которое приве­
ло бы к замене. Обработкой сокращений управляют следующие команды режима
двоеточия:
:ab (: abbreviate). Перечислить все сокращения. Символ
в первом столбце указывает, в каком режиме работает
данное сокращение - і для режима ввода, с для режима
командной строки,! для обоих. По умолчанию никаких
сокращений нет.
: ab текст за м е н а Создать сокращение.
:una текст (: unabbreviate). Отменить сокращение.
: погеа текст за м е н а (: noreabbrev). То же, что и : ab, но на выражение для за­
мены не распространяется действие команды : тар.
:abc (: abcleaг). Удалить все сокращения.
: ia текст за м е н а (: iabbrev). То же, что и : ab, но только для режима ввода.
: iuna текст (: iunabbrev). То же, что и : una, но только для режима
ввода.
: inorea текст за м е н а (: inoreabbrev). То же, что и : погеа, но только для режи­
ма ввода.
: iabc (: iabclea г). Удалить все сокращения для режима ввода.
: са текст за м е н а (: cabbrev). То же, что и : ab, но только для режима двое­
точия.
: сипа текст (: cunabbrev). То же, что и : una, но только для режима
двоеточия.
Текстовый редактор Vi 163

: cnorea текст замена (: cnoreabbrev). То же, что и : no rea, но только для режи­
ма двоеточия.
: cabc (: cabclea г). Удалить все сокращения для режима двое­
точия.

3.5.5.6. Другие способы ввода


Для ввода текста в текущий буфер можно воспользоваться командой : read. Эта
команда позволяет вставить содержимое файла (: г файл) или стандартный вывод
команды shell (: г ! команда) начиная со строки непосредственно под курсором.
Можно изменить номер строки, указав его перед командой: :Nг файл. Чтобы
вставить текст над первой строкой файла, используйте команду : Or.
В зависимости от значения опции fileformat («dos», «unix» или «mac») распо­
знаются символы конца строки (отличающиеся для этих трех систем). Если при
чтении файла вы увидите, что каждая строка заканчивается символом АМ, значит
файл был в формате dos. Можно выполнить Undo (команда и), изменить опцию
(:set fileformat dos) и еще раз прочитать файл.

3.5.5.7. Форматирование текста


В процессе ввода текста редактор Vim может выполнять довольно сложные опе­
рации автоматического форматирования. Стратегия форматирования задается це­
лым набором опций Vim. Наиболее важная из них - formatoptions, значение кото­
рой представляет собой набор однобуквенных флагов. Например, значение по
умолчанию - «tcq». Флаги formatoptions имеют следующий смысл:
t Перенос строк, длина которых превышает textwidth.
с Перенос комментариев, длина которых превышает textwidth, с автоматичес­
кой вставкой текущего символа комментария в начале создаваемой строки,
г Автоматически вставлять символ комментария при нажатии Enter в режи­
ме ввода.
0 Автоматически вставлять символ комментария при нажатии клавиш о или
О в нормальном режиме.
q Разрешить форматирование комментариев командой gq.
2 Использовать для всего абзаца сдвиг второй строки, а не первой, как обычно
(если установлена опция autoindent),
у Перенос строк, совместимый с Vi: строки разрываются только на пробелах,
которые были введены в текущей команде ввода,
b Аналогичен флагу у, но разрыв строки производится только если пробел
был введен на или до ее правой границы.
1 Если строка была длиннее textw idth в момент входа в режим ввода, Vim не
форматирует ее.
Для программ на С подходит строка : set f о=с roq, для редактирования почты -
: set fo=tcrq. Под символами комментария в автоматическом форматировании
понимаются те, которые перечислены в опции comments. Vim может распознавать
комментарии трех видов:
164 Базовые понятия о UNIX-системах

□ комментарий, повторяющийся в начале каждой строки, например, символ #


в сценариях shell;
□ комментарий, указываемый только в начале первой строки и не повторя­
ющийся;
□ трехчастный комментарий, включающий в себя открывающую и закрыва­
ющую строки и необязательную промежуточную строку. Например, коммен­
тарии в С считаются состоящими из частей /*, *, */, так что шапки в начале
функции или файла, оформленные в таком стиле:
Л
* комментарий
*/
сохраняют свою структуру при переформатировании.
Опция comment - это разделенная запятыми строка последовательностей, опи­
сывающих комментарии. Каждый из них задается двумя последовательностями
символов, разделенными двоеточием: флаги и строка. По умолчанию эта опция
имеет следующий вид:
s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,η:>,fb:-
В описании каждого символа комментария строка - та же самая, что встречает­
ся в тексте и обозначает комментарий, а флаги - это набор следующих знаков:
η Вложенный комментарий. Например, для π:>, п:) комментарием бу­
дет и >)>.
b Пустой символ (пробел, табуляция, конец строки), требуется после
строки.
f Комментарий только на первой строке, на остальные строки распро­
страняется только отступ (как для ненумерованных списков),
s Начало трехчастного комментария,
m Середина трехчастного комментария,
е Конец трехчастного комментария.
1 Выравнивать среднюю часть влево на один уровень с s или е (исполь­
зуется только с s или е).
г Выравнивать среднюю часть вправо на один уровень с s или е (ис­
пользуется только с s или е).
X Автоматически завершать трехчастный комментарий после ввода толь­
ко одного последнего символа его конечной части на новой строке.
число Добавлять указанное число пробелов перед каждой строкой, начи­
нающейся со средней части комментария (используется только
с s или е).
-число Аналогично предыдущему, но пробелы не добавляются к отступу,
а по возможности удаляются.
Если один комментарий совпадает с началом другого - указывайте больший из
них первым: : set comments=f : ->, f : -
Текстовый редактор Vi 165

Трехчастный комментарий должен даваться в форме: начало, середина, конец, -


без других комментариев между ними.
При вводе программы на языке С редактор Vim может выполнять более слож­
ное форматирование, чем оформление комментариев. В Vim есть несколько сис­
тем автоматических отступов для строк, включаемых следующими опциями:
autoindent Использовать отступ предыдущей строки.
sm artindent Аналогична опции autoindent, но увеличивает/уменьшает от­
ступ, распознавая часть синтаксиса С-программы.
cindent Более сложная система, которая может быть перенастроена под
ваш стиль программирования.
Сценарий форм атирования в режиме cindent контролируется еще тремя
опциями:
cinkeys Вводимые символы, которые приводят к переформатированию
в режиме ввода.
cinoptions Флаги, задающие стиль форматирования.
cinwords Ключевые слова, которые приводят к увеличению отступа на
следующей строке.
Рассмотрим эти три опции по порядку.
В строке cinkeys через запятую перечисляются клавиши, нажатие которых из­
меняет отступ. Перед каждой из них может указываться специальный флаг из сле­
дующего набора:
! Символ не будет введен, а просто вызовет переформатирование теку­
щей строки (по умолчанию так описана клавиша Ctrl+F).
* Строка будет переформатирована перед другой реакцией на ввод ука­
занного символа (по умолчанию так описан Enter - строка перефор­
матируется, и только затем создается новая).
О Строка будет переформатирована, только если вводимый символ -
первый в строке (по умолчанию используются символы {,} и #).
Кроме того, при указании клавиш и могут применяться специальные сим ­
волы:
<...> Специальная клавиша, например Up (стрелка вверх) или Ins.
А Клавиша, соответствующая букве, перед которой указан этот символ,
должна быть нажата вместе с клавишей Ctrl, так фрагмент !AF опи­
сывает комбинацию Ctrl+F, которая как таковая не вводится, но при­
водит к переформатированию.
о Переформатировать строку при использовании команды о в нор­
мальном режиме и Enter в режиме ввода.
О Переформатировать строку при использовании команды О в нор­
мальном режиме.
е Переформатировать строку, начинающуюся со слова else, в момент
ввода второй буквы е.
166 Базовые понятия о UNIX-системах

Если вы измените отступ на автоматически отформатированной строке вруч­


ную, Vim не будет пытаться снова переформатировать эту строку.
Строка cinoptions описывает ваши личные предпочтения в расстановке отсту­
пов в программных текстах. В этой строке через запятую указываются относитель­
ные изменения отступов, которые Vim производит в каждой из следующих ситу­
аций. N может означать как количество пробелов (со знаком), так и число, на
которое надо умножить значение переменной shiftwidth. Во втором случае после
числа следует указывать букву s, например: >-0. 5s (обычный сдвиг влево на поло­
вину значения shiftwidth).
>N Обычный сдвиг. Используется после строки, которая увеличивает
отступ (открывающая фигурная скобка, оператор if() и т.д.). По умол­
чанию равен Is.
eN Дополнительный сдвиг после строки, которая оканчивается на от­
крывающуюся фигурную скобку. По умолчанию равен нулю.
ηN Дополнительный сдвиг после if, while и т.п. перед строкой, которая
не помещена в фигурные скобки. По умолчанию равен нулю.
ΐΝ Сдвиг для открывающейся фигурной скобки, которая начинает но­
вую функцию (то есть не находится внутри какого-либо набора фи­
гурных скобок). По умолчанию равен нулю.
{N Дополнительный сдвиг для открывающих фигурных скобок, кроме
начинающей функцию. По умолчанию равен нулю.
}N Сдвиг для закрывающихся фигурных скобок относительно парных
к ним открывающихся. По умолчанию равен нулю (парные скобки
всегда располагаются друг под другом).
ΛΝ Дополнительный сдвиг для всех строк внутри функции. По умолча­
нию равен нулю.
:Ν Сдвиг для меток case: относительно сдвига оператора switch(). По
умолчанию равен Is.
=N Сдвиг для операторов, перечисляемых после метки case: относитель­
но ее собственного сдвига. По умолчанию равен Is.
gN Сдвиг для меток public:, private: и protected: в C++, относительно
сдвига блока, в котором они описаны. По умолчанию равен Is.
hN Сдвиг для операторов, следующих после меток public:, private:
и protected: относительно сдвига этих меток. По умолчанию равен Is.
рN Сдвиг для объявления параметров в стиле K&R С. По умолчанию
равен Is.
tN Сдвиг для объявления типа, возвращаемого функцией. По умолча­
нию равен Is.
+N Сдвиг для продолжения строки, то есть если предыдущая строка не
была завершена точкой с запятой или закрывающейся фигурной
скобкой. По умолчанию равен Is.
cN Сдвиг внутри многострочного комментария относительно столбца,
в котором находились символы, открывающие комментарий (/*). По
умолчанию равен 3s.
Текстовый редактор Vi 167

(N Дополнительный сдвиг для строк, находящихся внутри незакрытых


круглых скобок. По умолчанию равен 2s.
uN Дополнительный сдвиг для строк, находящихся внутри вложенных
незакрытых круглых скобок. По умолчанию равен Is.
)N Это не сдвиг, а число строк, которые просматриваются вверх в поис­
ках фигурных скобок. По умолчанию - 20 строк.
*N Число строк, которые просматриваются вверх в поисках начала ком­
ментария. По умолчанию - 30 строк.
Кроме того, Vim автоматически устанавливает нулевой отступ для строк, на­
чинающихся с символа # (директива препроцессора в С), а также меток (слов
с двоеточием в конце). Кроме того, естественно, нулевой отступ получает лю ­
бая строка, суммарный отступ которой согласно cinoptions равен или меньше
нуля.

3.5.6. Режим двоеточия


Переход в этот режим осущ ествляется при вводе символа : (двоеточие) в нор­
мальном режиме. После этого курсор перемещается на нижнюю строку экрана,
в которую можно вводить команду. Нажатие Enter завершает ввод, Esc отме­
няет.
Многие команды этого режима мы уже упомянули в предыдущих разделах.
: ст роки^ регист р (: delete). Удалить строки (по умолчанию текущую стро­
ку) и поместить их в регистр.
: ст рокиб р е ги с т р N (: delete). Удалить N строк, начиная с указанных.
: ст рокиi N (: j oin). Объединить строки аналогично тому, как это де­
лается при помощи команды J. Команда : j ! действует
аналогично команде gj. Если указано число N, дополни­
тельно объединяется N строк.
: ст рокис Заменить указанные строки (по умолчанию текущую)
другим текстом. Ввод текста осуществляется как для ко­
манды : і - построчно, последняя строка состоит из од­
ной точки.
: строки< N Сдвинуть строки влево на N значений shiftwidth.
: строки> N Сдвинуть строки вправо на N значений shiftwidth.
: ст роки 1е N (: le ft) . Выровнять строки по левому краю с отступом N.
: с т р о к и ! фильтр ! ар г Обработать строки программой фильтр. После дополни­
тельного восклицательного знака можно указать аргу­
менты для команды.
:с т р о к и э /м а с к а /с т р о к а /ф л а г и N
(: su b stitu te ). Для каждой из строк найти маску, заме­
нить ее строкой и повторить команду N раз. С этой ко­
мандой могут использоваться следующие флаги:
с Подтверждать каждую замену,
е Не выдавать сообщение, если маска не найдена.
168 Базовые понятия о UNIX-системах

g Заменять все случаи (по умолчанию только первый).


і Игнорировать регистр букв в маске.
I Учитывать регистр букв (иначе используется зна­
чение опции ignorecase).
р Вывести строку с последней заменой,
г Если маска не указана - использовать ее из послед­
ней команды : g, : s или команды поиска (/, ?). Без
этого флага используется маска из последней ко­
манды : s или : д.
Вместо символа / для разделения маски, строки и фла­
гов можно использовать любой символ кроме букв,
цифр, \, Iи Например, чтобы заменить во всем тексте
символ / на последовательность / / , можно набрать ко­
манду
:%s+/+//+g
Описание синтаксиса маски и строки приводится
в разделе 2.5.7.
ст рокиБ ф л а ги N Повторить предыдущую команду :s с другими флага­
ми и другим числом повторений.
ст р о к и & ф ла ги N То же самое.
с т р о к и ~ ф ла ги N Повторить предыдущую команду :s с маской, приме­
нявшейся последний раз для обычного поиска. Это
аналог команды :&г.
:ст р о к и sno... (: snomagic). То же, что и команда : s, но для регуляр­
ных выражений всегда используется вариант nomagic.
: crpoKHsm... (: smagic). То же, что и :s, но для регулярных выраже­
ний всегда используется вариант magic.
:ст рокид/м аска/ком анд а (: global). Выполнить указанную команду режима
двоеточия для всех строк, для которых сработает мас­
ка. По умолчанию строки - это весь буфер (1,$). Ко­
манда : g переопределяет и последнюю использован­
ную маску и последнее выражение для замены. Так,
используя команды : g и : s, можно выполнить замену
по всему тексту:
:g/ м а с к а / s/ / з а м е н а / д.
Хотя этого же можно достичь, выполнив одну коман­
ду :%s/м а с к а / з а м е н а / д.
:строкиg! /маска/команда Выполнить указанную команду режима двоеточия для
или : ст р о к и у / всех строк, для которых не сработает маска.
м а с к а /к о м а н д а (: retab). Заменить все последовательности пробелов
:с т р о к и г е t А/ и табуляций новыми. Одновременно можно изменить
число пробелов в табуляции (опцию tabstop), указав
число N. Старое значение tabstop все равно потребу­
ется для расчета прежней длины табуляций.
Текстовый редактор Vi 169

Вариант команды : ret ! также заменяет и все последо­


вательности обычных пробелов на табуляции. Если
установлена опция expandtab, наоборот, все табуля­
ции будут заменены на пробелы.
ст роки со а д р е с (:сору). Скопировать строки в позицию сразу после
указанного адреса.
Синоним команды : сору.
ст р о к и m а д р е с (: move). Перенести строки в позицию сразу после ука­
занного адреса.
с т р о к и с е ш ирина (: center). Центрировать строки (по умолчанию теку­
щую строку), считая ширину экрана равной задан­
ной, значению опции textwidth, если она установлена,
или 80.
:ст роки г і ш ирина (: right). Выровнять по правому краю строки, считая
ширину экрана равной заданной, значению опции
textwidth, если она установлена, или 80.
:ст роки 1е ш ирина (: left). Выровнять по левому краю строки, оставляя
отступ равным значению indent.
:с т р о к и р /V (: print). Вывести строки на экран или N строк, начи­
или :с т р о к и Р /V ная с последней указанной в поле строки.
: ст рокиї N (: list). То же, что и команда : print, но непечатные
символы выводятся в виде знака А.
:ст р о к и # /V (: number). То же, что и команда :print, но перед каждой
или :стро/сипи А/ строкой выводится ее номер.
Вывести номер строки в позиции курсора.
: c t p o k h z DN Вывести N строк.

3.5.7. Регулярные выражения в Vim


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

3.5.7.1. Выражение для поиска


Выражение для поиска (маска) состоит из одной или нескольких ветвей, раз­
деленных парой символов \ | . М аска срабатывает, если срабатывает одна из
ветвей: маска foo\| beep найдет как строки, содержащие «foo», так и содержа­
щие «Ьеер».
Ветвь состоит из частей, следующих одна за другой. Ветвь срабатывает, если
срабатывает каждая из ее частей, последовательно: foo[0-9]bar соответствует
«foolbar», «foo5bar» и т.д.
Часть состоит из атомарного выражения (атома), за которым может следовать
модификатор, в качестве которого используется одна из следующих последова­
тельностей:
170 Базовые понятия о UNIX-системах

0 или больше предшествующих атомов (\* в варианте nomagic).


1 или больше предшествующих атомов.
V 0 или 1 предшествующий атом.
V n,m} От η до m предшествующих атомов.
\ η} Строго η предшествующих атомов.
\ η,} По крайней мере η предшествующих атомов.
\ ,m} От 0 до m предшествующих атомов.
\ } 0 или больше (то же, что и *).
\ -n,m} Наименьшее число атомов из интервала от η до т .
\ -n} В т о ч н о с т и η атомов.
\ -n,} Минимальное число атомов, большее или равное п.
\ -,m} Наименьшее возможное число атомов из интервала от 0 до т .
\ -} Минимальное число атомов, большее или равное нулю.
Примеры:
* Все, что угодно, включая пустую строку.
л.\+$ Любая непустая строка,
foo\= fo или foo.
ab\{2,3}c abbc или abbbc.
a\{5} Только ааааа.
ab\{2,}c abbc, abbbc, abbbbc и т.д.
ab\{,3}c Только ас, abc, abbc и abbbc.
a[bc]\{3}d abbbd, abbcd, acdcd, acccd и т.д.
a\(b c\)\{l,2 } d Только abed или abebed.
a[bc]\{-}[cd] abc в строке abed (а не вся строка).
a[bc]*[cd] abed в строке abed.
В качестве атомарного выражения (атома) используется строка, содержащая
следующие элементы:
А В начале атома или после \ ( означает начало строки.
\А В любой позиции означает обычный символ А.
$ В конце атома или перед \ ) означает конец строки.
\$ В любой позиции означает символ $.
Любой символ.
\< Начало слова.
\> Конец слова.
\i Символ, который может входить в идентификатор (опция
isident).
\1 То же, но кроме цифр.
\к Символ, который может входить в ключевое слово (опция
iskeyword).
\К То же, но кроме цифр.
\f Символ, который может входить в имя файла (опция isfname).
\F То же, но кроме цифр.
\р Печатный символ (опция isprint).
Текстовый редактор Vi 171

\р To же, но кроме цифр.


\s Пустое место (пробел или табуляция).
\S Непустой символ.
\d Цифра, синоним [0-9].
\D Не цифра, синоним [А0-9].
\χ Шестнадцатеричная цифра, синоним [0—9а—fA—F ].
\x Не шестнадцатеричная цифра, синоним [A0 -9 a -fA -F ],
\o Восьмеричная цифра, синоним [0-7].
\o Не восьмеричная цифра, синоним [А0-7].
\w Часть слова, синоним [0 -9 A -Z a-z_ ],
\W Не часть слова, синоним [A0 -9 A -Z a-z_ ],
\h Первый символ в слове, синоним [A -Z a-z_],
\H Не первый символ слова, синоним [AA -Z a-z_ ],
\a Буква, синоним [A -Z a-z],
\A Не буква, синоним [AA -Z a-z],
V Строчная буква, синоним [a-z].
\L Не строчная буква, синоним [Aa-z],
\u Заглавная буква, синоним [A-Z],
\u Не заглавная буква, синоним [AA -Z],
\e Символ <Esc>.
\t Символ <ТаЬ>.
\r Символ <CR>.
\b Символ <BS>.
- Последняя использованная для замены строка.
\( - \) Скобки для введения подвыражения для поиска.
\1 Строка, с которой совпало первое подвыражение.
\2 Строка, с которой совпало второе подвыражение.

\9 Строка, с которой совпало девятое подвыражение.


X Любой символ без специального значения - просто символ.
[···] Любой символ из перечисленных между квадратными скобка­
ми. При этом используются следующие расширения:
- если первый символ - А, атом срабатывает на любой символ,
кроме перечисленных;
- символ - используется для задания наборов символов, так,
[0-9] - синоним [0123456789];
- отдельные символьные классы можно указывать, используя
следующие имена:
[:alnum:] Цифра и буква.
[:alpha:] Буква.
[:ascii:] ASCII-символ.
[:blank:] Пробел или табуляция.
[:cntrl:] Управляющий символ.
[:digit:] Десятичная цифра.
[:graph:] Печатный символ, но не пробел.
172 Базовые понятия о UNIX-системах

:lower:] Строчная буква.


:print:] Печатный символ, включая пробел.
:punct:] Знак пунктуации.
:space:] Пробел.
:upper:] Заглавная буква.
:xdigit:] Шестнадцатеричная цифра.
:return:] Символ <CR>.
:tab:] Символ <Tab>.
:escape:] Символ <Esc>.
[:backspace:] Символ <Backspace>.
Квадратные скобки вокруг символьного класса являются допол­
нительными к квадратным скобкам вокруг всего набора сим­
волов. Так, например, задать имя файла можно следующим ато­
мом: [ - ./[ : alnum: ]_! ]\+. Это означает один или больше символов,
каждый из которых - минус, точка, дробь, буква, цифра, под­
черкивание или восклицательный знак.
Чтобы включить в последовательность символ ], А, - или \, пе­
ред ним добавляется обратная дробь.
Обратная дробь перед некоторыми буквами имеет специальное
значение:
\е Символ <Esc>.
\t Символ <Tab>.
\г Символ <CR>.
\b Символ <Backspace>.
Примеры:
ЛЬеер( Слово Ьеер( в начале строки.
[a-zA-Z]$ Любая буква в конце строки.
\< \I \i* или \< \h \w * Идентификатор (например, в программе).
\ ( \ .$ \ |\ . \ ) Точка, после которой идет конец строки или пробел.
[,!?][])”/] * \( $ \|[ ] \) Конец предложения.

3.5.7.2. Выражение для замены


Строка для замены в команде : s также может содержать специальные управля­
ющие последовательности.
& Вся найденная строка (\& в варианте nomagic).
\& Символ & (& в варианте nomagic).
\0 Вся найденная строка.
\1 Часть найденной строки, соответствующая первой паре скобок.
\2 Часть найденной строки, соответствующая второй паре скобок.

\9 Часть найденной строки, соответствующая девятой паре скобок.


Текстовый редактор Vi 173

Строка для замены из предыдущей команды :s (\~ в варианте


nomagic).
\~ Символ ~ (~ в варианте nomagic).
\u Следующая буква делается заглавной.
\U Следующие буквы делаются заглавными.
\1 Следующая буква делается строчной.
\L Следующие буквы делаются строчными.
\е, \Е Конец действия \u , \U , \1, \L .
<CR> Ввести конец строки.
\г Символы \г.
Ctrl+V <CR> Ввести символ CR (Ctrl+M ).
\п Символ <NL> (не разрывает строку).
\Ь Символ <Backspace>.
\t Символ <Tab>.
Например:
:s/a\ IЬ/ххх\Оххх/д Заменяет а b на хххаххх xxxbxxx.
:s/\([abc]\)\([efg]\)/\2\1/g Заменяет af fabg на fa fa gb.
:s/a bed e/a be "Mde/ Заменяет abede на две строки: abe и de.
:s/$/"V"M/ Заменяет abede на abcdeAM.

3.5.8. Файлы сценариев Vim


Файл . vim re, а также любой другой файл сценария для Vim, может содержать аб­
солютно все, что можно ввести в режиме командной строки Vim. Принято запи­
сывать в этот файл команды без начального символа двоеточия, хотя на самом
деле это не играет роли:
number on
:syntax on
Длинные строки можно разбивать на несколько, заканчивая неполную строку
символом \
iabbr PCMCIA People Can’t Memorize\
Computer Industry Acronyms
Пустые символы (пробелы и табуляции) в начале любой строки всегда игнори­
руются. Символ " начинает комментарий - все, что записано между ним и концом
строки, игнорируется.
" вставить #include
map <F3> o#include

Поместить этот комментарий в конце строки нельзя, так как команда : тар сде­
лает так, что при нажании F3 будет вводиться весь текст, включая комментарий.
Это можно обойти, воспользовавшись символом I , который применяется для от­
деления команд, находящихся на одной строке.
map <M-b> o<BR>| " вставить <BR> по alt-В
174 Базовые понятия о UNIX-системах

Можно разместить в . vimrc и команды нормального режима, при помощи спе­


циальной команды : execute "normal команды".
exe "normal mxGOA test.\<Esc>'x"
Эта команда добавит строку «А test» после последней строки файла и вернет
курсор на место (выполняются команды: т х - установить метку х, G - перейти
в конец файла, О - перейти в режим ввода, <Esc> - выйти из режима ввода, 'х -
перейти к метке х).
В .vimrc допускаются определенные конструкции, типичные для языков про­
граммирования, - условные переходы и циклы.
Обычное условное выполнение:
if version >= 500
" сюда можно поместить команды, специфичные для версии 5.0
echo "версия Vim (" &version ") больше 5.0"
endif

Условное выполнение с IF-ELSE-END-IF:


if &tabstop != 8
echo "tabstop равен " . &tabstop
else
echo "tabstop в порядке"
endif

Цикл W HILE-END-W HILE:


let і = 1
while і < 10
echo і
let і = і +1
endwhile

Здесь внутренней переменной і присваивается значение 1 командой : let, а за­


тем в цикле из команд : while и : endwhile это значение выводится и увеличивается
на единицу, пока оно не окажется равным 10.
Строки version >= 500,&tabstop != 8, "tabstop равен ". &tabstop, і < 10,і + 1 -
это выражения. В Vim поддерживается достаточно сложная структура выраже­
ний, не уступающая многим языкам программирования и даже превосходящая их
возможности.
Выражения оперируют над переменными двух типов: строка и число. Типы
трансформируются друг в друга автоматически, в зависимости от того, как вы
их собираетесь использовать. При преобразовании строки в число учитываются
все символы плоть до первого, не допустимого в числе. Кроме того, число, начи­
нающееся с Ох, считается шестнадцатеричным, а начинающееся с нуля - восьме­
ричным. Так, 6Ь преобразуется в 6, а 0100 - в 64. В ситуациях, когда значение вы­
ражения используется как булево (например, в командах : if или : while), ноль
Текстовый редактор Vi 175

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


вы и не содержащие строчных букв, сохраняются в файле . viminfo, если значение
опции viminfo содержит символ !. Переменные, начинающиеся с заглавной буквы
и не содержащие других заглавных букв, сохраняются в файле сессии, если значе­
ние опции sessionoptions содержит слово global.
Допустимы следующие записи выражений и операторов.
Выражение-1 (минимальный приоритет):
Логическое И ЛИ выражение-2 || выражение-2
Выражение-2:
Логическое И выражение-3 && выражение-3
Выражение-3:
Равно выражение-4 == выражение-4
Н еравно выражение-4 != выражение-4
Больше выражение-4 > выражение-4
Больше или равно выражение-4 >= выражение-4
Меньше выражение-4 < выражение-4
Меньше или равно выражение-4 <= выражение-4
Регулярное выражение найдено выражение-4 =~ выражение-4
Регулярное выражение не найдено выражение-4 !~ выражение-4
Для всех операторов сравнения (от == до ! ~) допустимы формы с игнорирова­
нием регистра букв (==?, !=?, >?, и т.д.) и с учетом регистра (==#, ! =#, >#, и т.д.).
Если символ ? или # не указан, используется значение опции ignorecase. Для опе­
раторов =~ и !~ выражение справа является регулярным выражением, которое
должно найтись или не найтись в выражении слева.
Выражение-4:
Сложение чисел выражение-5 + выражение-5
Вычитание чисел выражение-5 - выражение-5
Слияние строк выражение-5 . выражение-5
Выражение-5:
Умножение чисел выражение-6 * выражение-6
Деление чисел выражение-6 / выражение-6
Остаток от деления чисел выражение-6 % выражение-6
Операция деления на ноль дает в качестве результата Oxffffffff и в качестве ос­
татка 0.
Выражение-6:
Логическое НЕ ! выражение-6
Унарный минус - выражение-6
Унарный плюс + выражение-7
Выражение-7:
Элемент строки выражение-8 [выражение 1].
176 Базовые понятия о UNIX-системах

Нумерация элементов начинается с нуля. Если же нумерация столбцов начина­


ется, например, с единицы, то, чтобы присвоить переменной значение символа
в позиции курсора, выполняется команда:
:let с = getline(line("."))[col(".") - 1]

Выражение-8:
Числовая константа число
Строковая константа "строка"
Литеральная строковая константа 'строка'
Отличие последней от обычной строковой константы в том, что здесь не обра­
батываются специальные последовательности, начинающиеся с обратной косой
черты, такие как \п , \ t и т.д.
Значение опции &опция
Выражение в скобках (выражение-1)
Внутренняя переменная переменная
Переменная среды $П ЕРЕМ ЕН Н АЯ
Содержимое регистра г @г
Можно использовать все регистры, кроме =. Для чтения содержимого неиме­
нованного регистра используется @@.
Встроенная функция функция(выражение-1, ...)
Число после слова «выражение» показывает уровень приоритета: 8 - макси­
мальный приоритет, 1 - минимальный. Выражения одного типа вычисляются сле­
ва направо.
Рассмотрим в качестве примера те, которые нам уже встречались.
version >= 500
Сначала вычисляются выражения-8: version - внутренняя переменная, име­
ющая значение, например, 504, и 500 - численная константа. Затем вычисляется
выражениеЗ 504 > 500, значение которого - истина, то есть единица.
"tabstop равен " . &tabstop

Выражение-8 здесь - строковая константа «tabstop равен» и значение опции


tabstop, которое является числом. Следующее действие - оператор слияния строк,
который одновременно преобразует число, полученное из &tabstop, в строку. Ре­
зультат этого действия - строка «tabstop равен 8», если значением опции tabstop
было число 8. Эта строка и становится значением всего выражения.
Внутренние переменные, такие как version, - самые обычные, вы можете ими
оперировать. Их имена состоят из букв, цифр и символов подчеркивания.
Переменная создается командой:
:let [т ип:]перем енная = выражение
и уничтожается командой
:uniet переменная
При создании переменной можно указать ее тип в виде префикса к ее имени.
Текстовый редактор Vi 177

Существует четыре типа переменных:


1. Локальные для данного буфера (Ь: переменная).
2. Локальные для данного окна (w: переменная).
3. Глобальные (д : переменная) - этот тип используется по умолчанию.
4. Встроенные (v: переменная).
Встроенные переменные Vim:
v:count, count Число повторов, переданное последней выпол­
ненной команде нормального режима. Его мож­
но брать и из собственной команды, построен­
ной при помощи команды : тар.
v:countl То же, что и count, но равно 1, если никакое чис­
ло повторов не было указано.
v:errmsg, errmsg Последнее сообщение об ошибке (эту перемен­
ную можно изменять).
v: warningmsg Последнее предупреждение.
v:statusmsg Последнее сообщение об изменении состояния.
v: shell-error, shell-error Результат последней выполненной команды
shell (число, которое возвратила программа).
Обычно равно нулю, если не было ошибок. Н а­
пример:
:!mv foo bar
:if v:shell_error
:echo ‘ошибка при перемещении foo в bar’
:endif
v: this_session, this_session Полное имя последнего сохраненного или за­
груженного файла сессии.
v:version, version Номер версии Vim в виде числа. Число форми­
руется как старший номер* 100 + младший но­
мер. То есть версия 5.4 возвращает 504.
Число встроенных функций, которые можно выполнять из выражений в Vim,
заметно больше и включает в себя не только функции для работы с текстом, но
и функцию libcall(), позволяющую вызывать функции из внешних библиотек.
Рассмотрим все функции кратко, так как для любой из них можно прочитать
справку, подав команду : help функция.
append {число,ст рока) Вставить строку после строки с таким номером.
agrc() Число аргументов в командной строке,
agrу (ч и с л о ) Элемент с таким номером в списке аргументов.
h ro w se (3 a n u сь,заголов ок,ка т а ло г,им я)
Вывести диалоговое окно для выбора файла
(только в gvim).
h u iex its(e b ip a M e n u e ) Существует ли буфер с таким именем/номером?
bufloaded(eMjоаж ение) Загружен ли буфер с таким именем/номером?
bufnam ^{вы раж ение) Имя буфера с таким номером,
bufnr {вы раж ение) Номер буфера с таким именем.
178 Базовые понятия о UNIX-системах

bufwinnr (чи сло ) Номер окна буфера число.


byte2lin е (ч и сл о ) Номер строки, содержащий байт номер число.
char2nr (вы р а ж ен и е) ASCII-код первого символа в вы раж ении.
col (вы р а ж ени е) Номер текущего столбца или столбца с меткой.
сот п\гт (сообщ ение,вы боры ,у м о лч а н и е,т и п )
Получить от пользователя номер сделанного им
выбора.
deiete(cm poK a) Удалить файл с именем ст рока.
did filetype() Была ли выполнена автоматическая команда?
esca.pe(cmpoKa.,символы) Проставить символ \ перед сим волам и в строке.
exi ^(п ер ем ен н а я ) Существует ли п е р е м е н н а я ?
expand (выражение) Подставить специальные ключевые слова.
filereadable(^GM^) Можно ли читать файл?
fnamemodify (ф а й л,и зм е н е н и е) Изменить имя ф айла.
getcwd() Текущий каталог.
getftim е (ф а й л ) Время последнего изменения файла.
getlin е(ч и сло ) Строка с таким номером из текущего буфера.
getwinposx() Х-координата графического окна.
getwinposy() Υ-координата графического окна.
glob (вы раж ение,ф лаги) Обработать маску типа glob.
has ( возмож ност ь) Поддерживается ли возможность?
hisiz([A (ucm opufi,элем ен т ) Добавить элем ент в ист орию .
Ы ^ е \( и с т о р и я ,э л е м е н т ) Удалить элем ент из ист ории.
histget (и ст о р и я ,н о м ер ) Прочитать элем ент из ист ории.
histni'(и с т о р и я ) Число элем ент ов в ист ории.
h lex ists(z/^) Существует ли группа расцветки?
hi \Т )(и м я ) Синтаксический ID группы расцветки.
hostname() Имя компьютера.
input (п о д ск а зк а ) Получить строку от пользователя.
isdirectorj '(ка т а ло г) Существует ли каталог?
И Ъ ся\\(б и бли о т ека ,ф ункц и я,а р гум ент ы )
Вызов внешней функции.
lin е ( вы раж ение ) Прочитать строку.
line2byt е (н о м е р ) Номер байта для указанной строки.
localtime() Текущее время.
т щ >ж §(имя,реж им) Значение команды, присвоенной : тар.
mapcheck (и м я,р еж и м ) Существуют ли присвоенные команды с им енем ?
т эХ с\\(вы раж ение,м аска) Позиция, в которой м аска совпала с выраж ением.
matchend (вы раж ение,м аска) Конец м а ски в вы раж ении.
m a tc h s tr (вы р а ж е н и е ,ла с к а ) Только часть строки, соответствующая м аске.
nr2char (вы р а ж ен и е) Символ, соответствующий данному ASCII-коду.
?>ейте(номер,ст рока) Записать ст року.
strftim е(ф о р м а т ,вр е м я ) В р е м я в заданном ф орм ат е.
strlen (вы раж ение) Длина строки.
str р a r t( ст р о ка ,нач ал о, дл и н а ) Выделить подстроку.
Текстовый редактор Vi 179

strtrans(eupaMeHue) Преобразовать строку к печатному виду.


suhstitute(ebipaMeHue,маска,подстановка,флаги)
Замена маски на подстановку.
synYD(cmpo ка,столбец,прозрачность)
Синтаксический ID позиции.
synID attr(ZD атрибут,1режим) Значение атрибута для данного ID.
synlD trans(ID) Синтаксис данного ID.
system (выражение) Запуск команды shell.
tempname() Имя временного файла,
virtcol(выражение) Экранный столбец.
visualmode() Последний использованный визуальный режим.
winbufnr(wctfo) Номер буфера в окне число.
winheight(4Mc^o) Высота окна.
w innr() Номер текущего окна.
При помощи функций можно выполнять практически любые действия. Напри­
мер, команда
:call append(0, hostname() . " - " . strftime("%Y %b %d"))
запишет имя компьютера и текущее время в начало буфера. Как видно из приме­
ра, функции можно вызывать не только в качестве выражений, но и непосред­
ственно командой :са11.
Более того, вы можете создавать новые функции самостоятельно, используя
команду : function. При этом имя функции должно начинаться с заглавной бук­
вы. Вот пример:
function Divide(n1,n2, divname)
if a:n2 == О
return "fail"
endif
exe "let " . a: divname . " = " . a :n1 / a:n2
return "ok"
endfunction

Функция Divide() выполняет деление первого аргумента на второй и возвра­


щает результат в глобальную переменную, переданную в качестве третьего аргу­
мента. Плюс к тому, эта функция возвращает строку "ok", если деление произо­
шло, и "fail", если второй аргумент был равен нулю. Вызов этой функции может
быть оформлен таким образом:
let success = Divide(12,1345,"div")
if success == "ok"
echo div
endif

Подав команду : help eval-examples, в Vim можно увидеть примеры достаточно


больших и интересных функций - преобразование десятичных чисел в шестнад­
цатеричные и сортировку строк.
180 Базовые понятия о UNIX-системах

В Vim существует возможность запуска различных команд автоматически при


наступлении различных ситуаций. Например, если включена опция filetype (ко­
мандой : filetype on), будет действовать следующая команда, устанавливающая
размер табуляции в четыре пробела (вместо восьми по умолчанию) для файлов
на языке С.
:autocmd Filetype с set tabstop=4
Здесь Filetype - тип события, для которого запускается указанная команда
(:set). Чтобы выполнить несколько команд, можно указать их список, разделен­
ный символами I, но удобнее оформить эту процедуру в виде функции:
au bufnewfile,but read *.html call Map_HTML()
В Vim можно использовать следующие события (заглавные и строчные буквы
не различаются):
BufNewFile Начало редактирования нового файла.
BufReadPre Начало редактирования нового буфера перед чтени­
ем в него файла.
BufRead, BufReadPost После загрузки файла в новый буфер.
BufFilePre Перед изменением имени текущего буфера командой
:file.
BufFilePost После изменения имени текущего буфера командой
:file.
FileReadPre Перед чтением файла командой : read.
FileReadPost После чтения файла командой : read.
FilterReadPre Перед чтением файла от команды-фильтра.
FilterReadPost После чтения файла от команды-фильтра.
FileType Когда была установлена опция filetype.
Syntax Когда была установлена опция syntax.
StdinReadPre Перед чтением данных из stdin (если Vim был запу­
щен как Vi -).
StdinReadPost После чтения данных из stdin.
BufWrite, BufW ritePre Перед записью всего буфера в файл.
BufW ritePost После записи всего буфера в файл.
FileW ritePre Перед записью части буфера в файл.
FileW ritePost После записи части буфера в файл.
FileAppendPre Перед дописыванием к файлу.
FileAppendPost После дописывания к файлу.
FilterW ritePre Перед записью файла для программы-фильтра.
FilterW ritePost После записи файла для программы-фильтра.
FileChangedShell Если файл был изменен после выхода в shell.
FocusGained Когда Vim получает фокус (в графической версии).
FocusLost Когда Vim теряет фокус (в графической версии).
CursorHold По прошествии updatetime миллисекунд после нажа­
тия клавиши.
BufEnter При входе в буфер.
Текстовый редактор Vi 181

BufLeave При покидании буфера.


BufUnload Перед выгрузкой буфера.
BufHidden После сокрытия буфера.
BufCreate Сразу после открытия нового буфера.
BufDelete Перед удалением буфера из списка.
W inEnter При входе в окно.
WinLeave При покидании окна.
G U IEnter После запуска в графическом режиме и открытия
окна.
VimEnter После запуска Vim, обработки всех сценариев и за­
грузки файлов.
VimLeavePre Перед выходом из Vim, сразу перед записью . viminf о.
VimLeave Перед выходом из Vim, сразу после записи . viminf о.
FileEncoding При изменении кодировки (: set filencoding).
Term Changed При изменении терминала (: set term).
User Не вызывается автоматически, только командой
:doautocmd.

Второй параметр в команде : autocommand - маска для имени файла или имени
буфера. Например, следующая команда дает Vim возможность открывать файлы,
упакованные архиватором gzip, определяя их по расширению . gz:
au ButEnter *.gz %!gunzip
Однако в этом случае при записи файла будет сохранен текстовый файл
с расширением . gz. Полный список автокоманд, которые необходимо определить
для работы с запакованными файлами, можно прочитать, воспользовавшись ко­
мандой : help gzip-example.

3.5.9. Опции командной строки


Команда для вызова Vim в самом общем случае имеет следующий вид:
имя [опции] [файл.. .]
При установке Vim создает несколько символических ссылок на себя под раз­
ными именами, которые можно использовать для его вызова в различных режи­
мах. Эффекты, к которым приводит использование нестандартных имен, всегда
дублируются соответствующими опциями:
-t тэг Считывается файл tags, из которого определяется, какой файл
открыть, чтобы установить курсор на указанный тэг.
-q файл Считывается файл со списком ошибок, аналогичный тому, ко­
торый используется командой : make (но не совпадающий
с ним).
-h, --help Вывести подсказку и выйти.
-version Вывести информацию о версии (аналогично команде : version).
+N Установить курсор на строку N.
+ / выражение Найти в тексте выражение и установить на него курсор.
+команда Выполнить команду.
182 Базовые понятия о UNIX-системах

-с команда Выполнить команду.


-г, -L Режим восстановления после аварийного выхода из Vim.
-R Эквивалентно вызову по имени view. Запуск Vi в режиме толь­
ко для чтения. В этом режиме нельзя изменить редактируемый
файл обычными командами записи, но можно сделать это при
помощи команды : w! или отключив этот режим командой : set
noro.
-m Полностью отключить возможность записи файлов командой
:write.
-Z Эквивалентно вызову по имени rvim. Запуск в режиме с огра­
ничениями. В этом режиме пользователь не может запустить
никаких внешних программ или выйти в shell.
-g Эквивалентно вызову по имени gvim. Запуск в графическом
режиме для X Window (аналогично команде : gui).
-V Эквивалентно вызову по имени vi или vim. Запуск в режиме vi
(имеет смысл, если имя программы - ех или gvim).
-е Эквивалентно вызову по имени ex. Запуск Vi в режиме эмуля­
ции построчного редактора ех, который понимает только ко­
манды, начинающиеся с двоеточия (находится в режиме ко­
мандной строки).
-s Вызов в batch-режиме, с отключенными сообщениями (кроме
сообщений об ошибках). Используется для запуска Vi из фай­
лов сценариев. Работает только если Vi запускается в режиме ех.
-s файл Выполнить содержимое файла, как если бы все, что он содер­
жит, было введено с клавиатуры. Работает, только если Vi за­
пускается в режиме ех.
-w файл Сохраняет все символы, которые вводятся с клавиатуры в ука­
занном файле. Затем эти команды можно будет исполнить при
помощи команды : source! или опции -s.
-W файл Аналог -w, но если файл уже существует, он предварительно
очищается (-w дописывает в конец файла).
-Ь Режим редактирования бинарного файла. При включении этой
опции Vim не будет заменять символ NL на CR NL или как-
либо иначе модифицировать файл без вашего ведома.
-1 Режим редактирования программы на языке lisp.
-F Режим ввода текста на фарси.
-Н Режим ввода текста на иврите.
-V/7 Вывод дополнительных сообщений. Число п указывает уро­
вень подробности (по умолчанию п = 10).
-С Режим совместимости с Vi (по умолчанию включен, если в до­
машнем или текущем каталоге нет файла . vimrc).
-N Режим несовместимости с Vi.
-η Не создавать swap-файл. При этом будет невозможно восста­
новление после аварийного завершения работы.
Текстовый редактор Vi 183

-on Открыть п окон.


-Т терминал Изменить эмуляцию терминала, которую будет использовать
Vim, переопределяя переменную среды TERM.
-и файл Использовать файл как сценарий инициализации и не обраба­
тывать никакие другие такие сценарии (локальные и глобаль­
ные vimrc, gvimrc и т.п.), - эта опция может быть полезна для
запуска Vim в каком-то особом режиме с отличающимися на­
стройками.
-U файл Использовать файл как сценарий инициализации при запуске
графического интерфейса к Vim (то есть при запуске gvim или
выполнении команды :gui). Все остальные файлы инициали­
зации графики пропускаются, кроме файла глобальной конфи­
гурации меню.
- і файл Использовать файл как файл viminfo.
-X Сохранять файлы на диске в зашифрованном виде (ключ для
шифрования будет запрошен при запуске). Эта опция не нуж­
на для чтения зашифрованного файла, так как Vim определяет
такие файлы автоматически.
Для некоторых комбинаций опций существуют свои эквиваленты в виде отли­
чающихся имен для запуска Vim:
дех эквивалентно vim -eg;
gview эквивалентно vim -rg;
rview эквивалентно vim -RZ;
rgvim эквивалентно vim -gz;
rgview эквивалентно vim -Rgz.

При запуске Vim устанавливает опции shell и term в соответствии со значения­


ми переменных среды SHELL и TERM.
Затем он выполняет команды, содержащиеся в файле инициализации .vimrc,
который находится в системном каталоге, указанном в переменной среды VIM.
Каждая строка этого файла рассматривается как команда для режима командной
строки, но без двоеточий в начале. Затем выполняется первый из четырех возмож­
ных локальных сценариев инициализации: содержимое переменной V IM IN IT
(команды разделяются символами | или NL), файл .vimrc в домашнем каталоге,
содержимое переменной EXINIT, файл . ехгс в домашнем каталоге. После выпол­
нения первого из найденных сценариев остальные игнорируются.
После этого загружаются описания типов файлов из $VIM/filetype. vim, если
Vim был скомпилирован с опцией --enable-autocmd.
Определяются остальные опции, зависящие от параметров командной строки
или определенных до этого момента настроек - shellpipe, shellredir, updateconf,
binary.
Если при запуске был затребован графический режим, происходит его инициа­
лизация: загружаются и выполняются файлы $VIM/menu.vim, $VIM/gvimrc, содер­
жимое переменной GVIM INIT или, если она не установлена, файл $Н0МЕ/. gvimrc.
184 Базовые понятия о UNIX-системах

Загружаются сохраненные значения файла . viminfo, если опция viminfo уста­


новлена, открываются окна и выполняются команды, заданные из командной
строки (-t и -с).
Теперь Vim готов к работе.

3.5.10. Синтаксическая подсветка


Еще одна замечательная особенность редактора Vim - синтаксическая подсветка.
Вместе с дистрибутивом поставляются файлы, описывающие синтаксис более ста
различных форматов, - программ на разных языках программирования, конфи­
гурационных файлов различных программ, почтовых форматов и т.д. Подсветка
выделяет различные участки цветом или изменением шрифта, так что становится
значительно удобнее читать и редактировать. В файлах, представляющих собой
программы, написанные на различных языках, зачастую удается даже отслежи­
вать небольшие ошибки - неправильно расположенные символы комментария,
несбалансированные скобки и кавычки, забытые закрывающие или открывающие
тэги в языках разметки и т.п. Синтаксическая подсветка отсутствует в классичес­
ком Vi.
Подсветка включается командой : sy on (полная форма - : syntax on). При вы­
полнении этой команды анализируется расширение редактируемого в настоящий
момент файла и (иногда) текст в его начале, после чего, если Vim определил фор­
мат этого файла, загружается соответствующий файл команд подсветки. Открой­
те какую-нибудь программу на С в Vim (а лучше - в его графической версии gvim)
и выполните эту команду.
Фактически эта команда выполняется как : so $VIM/syntax/syntax. vim, то есть
просто использует файл syntax, vim как обычный сценарий.
Команда : sy off отключает подсветку.
Сценарий syntax, vim загружает цвета по умолчанию и устанавливает автома­
тическую загрузку нужного файла синтаксиса (из того же самого каталога $VIM/
syntax) в зависимости от расширения редактируемого файла. Файлы синтаксиса
обычно имеют имя, соответствующее языку, для которого описана подсветка,
и расширение . vim; так, для программ на языке С загружается с. vim, для сценари­
ев shell - s h .vim, для H TM L-страниц - html.vim. Загрузка осуществляется при по­
мощи механизма автокоманд. Например, следующая команда устанавливает вы­
полнение с. vim для файлов с расширениями .с и . h:
:au BufNewFile,BufReadPost *.с ,*.h source $VIM/syntax/c.vim
Стандартный сценарий syntax, vim предусматривает загрузку пользователь­
ского файла синтаксиса. Имя этого файла с путем к нему должно быть заранее
(до выполнения команды : sy on) помещено в переменную mysyntaxfile, напри­
мер так:
:let mysyntaxfile = "~/vim/cubbi.vim"
Внутри этого файла можно размещать указания по модификации автокоманд
и стилей синтаксиса, например:
Текстовый редактор Vi 185

aug roup syntax


au! BufNewFile,BufReadPost *.z
au BufNewFile,BufReadPost *.z so ~/vim/cubbi_z.vim
augroup END
hi Comment gui=bold

Обратите внимание на то, что автокоманды должны принадлежать группе


syntax и что на всякий случай следует выполнять снятие автокоманды (: а и!) для
используемого вами расширения. Этот файл выполняется в самом конце стандар­
тного сценария syntax, vim, когда полный набор автокоманд и все установки сти­
лей по умолчанию уже есть.
Если ваш тип файла можно отличить не по расширению, а только по особенно­
стям содержимого, запишите сценарий, выполняющий такое определение, в файл,
имя которого укажите в переменной myscriptsfile. Этот сценарий будет выполнен
в самом начале $VIM /syntax/scripts. vim, так что стандартные сценарии определе­
ния файла по содержимому не успеют отработать.
Различные стили подсветки (цвета и вариации шрифтов) соотносятся с груп­
пами подсветки, логические имена которых соответствуют типичным синтакси­
ческим категориям в редактируемых файлах. Для использования предлагаются
следующие имена:
1. Comment: любой комментарий.
2. Constant: любая константа.
- String: строковая константа;
- Character: символьная константа;
- Number: числовая константа;
- Boolean: логическая константа;
- Float: вещественная константа.
3. Identifier: любое имя переменной.
- Function: имя функции (метода, процедуры).
4. Statement: любой оператор.
- Conditional: условный оператор (if, then, else, switch);
- Repeat: оператор повтора (for, while);
- Label: оператор-метка (case, default);
- Operator: оператор, используемый в выражениях (+, - , *, sizeof);
- Keyword: любой другой оператор;
- Exception: исключение (catch, throw).
5. PreProc: любая команда препроцессора.
- Include: команда препроцессора типа #include;
- Define: команда препроцессора типа #define;
- Macro: то же, что и Define;
- PreCondit: условная команда препроцессора (#if, #ifdef).
186 Базовые понятия о UNIX-системах

6. Туре: любой тип (int, long, float).


- StorageClass: модификатор типа (register, volatile, static);
- Structure: контейнерный тип (struct, union, enum);
- Typedef: определение типа (typedef).
7. Special: любой спецсимвол.
- SpecialChar: спецсимвол в константе;
- Tag: символ, на который есть запись в файле tags;
- Delimiter: разделитель;
- SpecialComment: особый элемент внутри комментария;
- Debug: отладочный оператор.
8. Ignore: участок файла, который будет скрыт.
9. Error: синтаксическая ошибка.
10. Todo: комментарий, требующий специального внимания.
Для пронумерованных групп в файле syntax, vim указаны различные стили вы­
деления, группы второго уровня по умолчанию не описаны и наследуют выделе­
ние порождающей группы, но вы можете их изменять при помощи команды : hi
после загрузки syntax, vim. Обратите внимание, что String и string - разные имена.
Вы можете использовать в качестве имен любые собственные слова, кроме NONE,
ALL, ALLBUT, contains и contained, но при этом вы должны будете сами позабо­
титься о выборе стиля подсветки ваших групп.
Редактор Vim работает с тремя понятиями на уровне задания синтаксиса. Это
ключевое слово, совпадение и регион. Каждый такой элемент сам по себе исполь­
зуется только как синтаксическая единица. Чтобы определить его представление
на экране, нужно поместить его в одну из вышеописанных групп подсветки.
Первая команда задания синтаксиса - выбор режима:
:sy case режим
Поле режим может иметь одно из двух значений: match и ignore. Все следующие
команды задания синтаксиса будут работать в указанном режиме до следующей
команды : sy case. Режим match означает, что элемент срабатывает, если текст
попадает в выражение для поиска, режим ignore - если не попадает.
Ключевое слово - это слово, содержащее только символы, разрешенные опцией
iskeyword и никакие другие синтаксические понятия. Оно будет распознано, только
если непосредственно до или после него нет других символов, которые могут входить
в ключевые слова. Для описания ключевого слова служит следующая команда:
:sy keyword группа опции ключевые_слова...
Здесь группа - это имя одной из групп подсветки, например Comment; к л ю -
ч е в ы е _ с л о в а - это список слов, которые будут включаться в указанную группу;
о п ц и и - общие опции определения синтаксиса, которые будут рассмотрены ниже.
Для ключевого слова, которое может иметь необязательное продолжение, скажем,
для команды редактора Vim, это продолжение указывают в квадратных скобках,
например:
:sy keyword VimCommand abbreviate] n[ext]
Текстовый редактор Vi 187

Одно и то же ключевое слово можно описать несколько раз, если с разными


опциями оно должно попадать в разные группы.
Совпадение - это участок файла, совпадающий с заданным регулярным выра­
жением. Все совпадение должно умещаться в одной строке.
:sy match группа опции выражение
Оно действует аналогично ключевому слову, но разрешается указывать только
одно выражение, которое и будет соответствовать данному элементу синтаксиса.
Для выражения используется специальный синтаксис, который будет рассмотрен
чуть позже. Например, следующая команда описывает символьную константу
в языке С:
:sy match Character ’/s+1е-1
Регион - это участок файла, начинающийся с совпадения с регулярным выра­
жением для начала и завершающийся совпадением с регулярным выражением для
конца. Может также использоваться выражение для пропуска, чтобы проигнори­
ровать совпадение с преждевременно встретившимся выражением для конца.
:sy region группа
опции
matchgroup=rpynna
keepend
s t a r t = выражение
5кір=вьіражение
еп6=выражение

Здесь группа - это группа подсветки, в которую попадает регион. Необязатель­


ный параметр matchgroup указывает дополнительную группу, в которую попадут
совпадения начала и конца. Keepend - специальная опция, запрещающая вложен­
ным элементам продолжаться после конца данного региона. Выражение после
опции start описывает начало региона, выражение после end - его конец, а выра­
жение после skip - участок региона, в котором не нужно искать выражение для
конца. Например, следующая команда описывает строку, заключенную в кавыч­
ки, причем внутри строки может находиться последовательность символов \ ”,
которая не будет считаться ее концом:
:sy region String start=+"+ skip=+\\"+ end=+"+
Единственные обязательные параметры - группа, start- и skip-выражения (причем
их может быть по нескольку, - в этом случае регион считается начавшимся/закон­
чившимся, если хотя бы одно start/end-выражение совпало). Если вы указали опцию
matchgroup, она будет использоваться для всех последующих : sy region, пока не
встретится команда с параметром matchgroup=NONE.
Все три типа команд, задающих синтаксис, позволяют указывать необязатель­
ные опции, которые могут находиться сразу после имени группы и на любой по­
зиции до конца команды. Допустимы следующие опции:
contained Элемент распознается, только если его группа указана
в опции contains внешнего элемента.
188 Базовые понятия о UNIX-системах

contains=rpynnbi Используется как парная к опции contained. Можно ука­


зать группу, список групп через запятую или выражение
для нескольких групп, а также специальную группу ALL,
тогда все вложенные элементы с опцией contained будут
распознаваться. Если указать ALLBUT группа, то будут
подсвечиваться все вложенные contained-элементы, кро­
ме принадлежащих указанной группе,
transparent Элемент не будет подсвечен сам по себе и будет исполь­
зовать стиль элемента, в котором он содержится,
oneline Регион заканчивается с первым же концом строки (кро­
ме случая, когда в него вложен другой регион, для кото­
рого не задана такая опция).
nextgroup=rpynnbi Когда данный регион закончится, будет проверено, не
начинается ли одна из указанных в этой опции групп
сразу за ним, и если это так, она будет использоваться,
даже если ее нет в опции contains внешнего элемента.
skipwhite Группа из nextgroup может начинаться не сразу после те­
кущего элемента, а и после некоторого количества про­
белов и символов табуляции.
skipnl Группа из nextgroup может быть отделена от текущего
элемента символом конца строки.
skipempty Группа из nextgroup может быть отделена от текущего
элемента пустыми строками.
Например, следующие две команды высвечивают слово T0D0, если оно встреча­
ется в комментарии, начинающемся со строки / / :
:sy keyword Todo TODO contained
:sy match Comment "//.*" contains=Todo

Выражения для поиска, используемые в синтаксической подсветке, имеют не­


которые особенности. Во-первых, выражение должно начинаться и заканчивать­
ся одним и тем же символом, как в команде : s. Между ними находится регулярное
выражение Vim, рассматриваемое так, как если бы опция magic была установлена
и флаг 1 не был включен в опцию compartible. После выражения и символа, иден­
тичному самому первому символу, указываются специальные сдвиги разметки,
имеющие вид тип=сдвиг. Тип может быть одним из следующих:
ms Сдвиг начала совпавшего выражения.
me Сдвиг конца совпавшего выражения.
hs Сдвиг начала выделения.
he Сдвиг конца выделения.
rs Сдвиг начала региона.
re Сдвиг конца региона.
lc Сдвиг контекста.
Текстовый редактор Vi 189

В поле сдвига может быть указано:


s К началу совпавшего выражения.
s +N К началу выражения и на N символов вправо.
S-/V К началу выражения и на N символов влево.
е К концу совпавшего выражения.
е+Л/ К концу выражения и на N символов вправо.
е—Л/ К концу выражения и на N символов влево.
N Начать поиск совпадения на N символов влево (только для 1с).
Несколько сдвигов можно указать через запятую, например, следующее выра­
жение высветит строку, заключенную в кавычки, но не высветит сами кавычки:
:sy match String /". *"/hs=s+1,he=e-1
Сдвиг типа lc=iV используется для того, чтобы Vim отступил на N символов
влево и проверил эти символы на совпадение с данным выражением, несмотря на
то, что они были проверены и, возможно, принадлежат другим элементам.
Если несколько элементов подходят к одному и тому же участку текста, выиг­
рывает тот, который определен последним. Но ключевое слово имеет преимуще­
ство, а если оно определено в режиме match, то имеет преимущество над опреде­
ленным в режиме ignore.
Несколько синтаксических групп можно объединять в кластер или список
групп при помощи специальной команды:
:sy cluster имя contains= группы add=группы remove=группы
Эта команда создает или модифицирует кластер, состоящий из групп contains,
в который добавляются группы add и удаляются группы remove. В поле contains
можно сослаться на другой кластер, указав его имя после символа @.
Чтобы отобразить синтаксическую подсветку на экране, Vim должен знать
в точности, с какого элемента начинается изображенный на экране участок тек­
ста. Для этого он должен синхронизироваться, что проще всего сделать, начав син­
таксический разбор на некотором расстоянии до начала текущего участка. Кроме
того, можно выполнить обратный поиск конкретной группы или (для файлов на
языке С) воспользоваться специальным вариантом синхронизации при помощи
комментариев - ccomment. Общий вид команды таков:
:sy sync ccomment группа minlines=N maxlines=N
Необязательная опция ccomment включает режим синхронизации по С-коммен-
тариям, необязательное имя группы включает синхронизацию по конкретной груп­
пе, числа строк minlines и maxlines определяют минимальное и максимальное число
строк перед изображенным участком текста, которые будут отсканированы.
Наконец, собственно присвоение визуальных стилей различным группам вы­
полняется при помощи команды : highlight (сокращается до : hi).
: hi Показать список всех групп, для которых описаны
стили.
: hi группа Показать стили одной группы.
190 Базовые понятия о UNIX-системах

hi clear группа Снять подсветку группы,


hi группа NONE Снять подсветку группы,
hi группа ключ=аргумент Создать или модифицировать группу.
С точки зрения этих стилей может существовать три типа терминала - нор­
мальный (term), цветной (cterm) и графический (gui). Способ выделения текста
допустимо задать для каждого типа терминала в отдельности.
Аргументы для нормальных терминалов:
term =список - список, в любом порядке, из следующих визуальных проявлений
подсветки:
bold - жирный;
underline - подчеркнутый;
reverse - инвертированный;
inverse - то же, что и reverse;
italic - наклонный;
standout - выделенный;
NONE - без особенностей.
Аргументы для цветных терминалов:
cterm =список список, аналогичный term;
cte rmf д =номер цвета номер цвета для переднего плана, от нуля до числа, огра­
ниченного возможностями терминала (обычно 16);
ctermbg=HOMep цвета номер цвета для фона.
Аргументы для графических терминалов:
gui =список список, аналогичный term;
font -имя шрифта имя шрифта;
guif g =имя цвета имя цвета для переднего плана. Можно использовать ло­
гические имена, известные системе, например W hite или
DarkMagenta, или номер в формате #RRBBGG, где RR,
ВВ и GG - шестнадцатеричные значения для красного,
синего и зеленого компонента цвета;
guibg =имя цвета имя цвета для фона.
Например, цвета группы Comment можно задать такой командой:
:hi Comment guifg=#11fОсЗ guibg=#ff00ff

При помощи команды : hi можно переносить все атрибуты, описанные для од­
ной группы, на другую. Для этого используется специальная форма этой коман­
ды, : hi link:
:hi link группа-ист очник группа-прием ник
Глава IV
Базовы е понятия
об администрировании

□ Разграничение прав пользователей


□ Настройка среды для пользователей
□ Управление файловыми системами
□ Установка пакетов
□ Установка программ из исходных текстов

В отличие от систем, изначально предназначенных для персонального пользова­


ния - MS Windows или IBM O S/2, - UNIX-системы рассчитаны на установку,
настройку и поддержку системным администратором. Пользователь UNIX дол­
жен получить в свое распоряжение полностью работоспособную систему с краси­
вым графическим интерфейсом, настроенными программами, в которой он не
сможет сделать ничего опасного для системы в целом.
Это справедливо и для Linux. Однако если вы ставите его сами, вы становитесь
системным администратором и встречаетесь лицом к лицу со всеми сложностями,
которые могут встретиться в ненастроенной системе. С другой стороны, это позво­
ляет переделывать ее по своему желанию настолько, что персональные Linux-сис-
темы, настроенные разными людьми, могут оказаться совершенно несовмести­
мыми.

4.1. Разграничение прав пользователей


Любая U N IX -система поддерживает одновременную работу большого числа
пользователей. Естественно, что один пользователь не имеет права подсматривать
192 Базовые понятия об администрировании

за другим и ни один из них (кроме системного администратора) не имеет права


изменять что-то в самой системе. Это достигается двумя основными мерами:
□ каждый пользователь может работать только с теми файлами, каталогами
и файловыми системами, к которым он имеет права доступа;
□ пользователь root с идентификатором ноль может делать абсолютно все.
Каждый пользователь регистрируется в системе под своим уникальным номе­
ром (UID, идентификатор пользователя). Обращение к любому файлу и каталогу
контролируется их атрибутами (см. описание команды Is -1 в разделе 3.3.2) и оп­
циями, использованными при монтировании файловой системы. Обычный
пользователь, как правило, имеет право записи только в свой домашний каталог
(со всеми подкаталогами), в /tmp и в /var/tmp. Кроме того, если устройство /dev/
fdO прописано в /etc/fstab с опцией user, пользователь может монтировать и про­
изводить запись на дискету.
Системный администратор - любой пользователь с UID, равным нулю (по тра­
диции имеющий имя root). Он может делать все: вносить, удалять и изменять
информацию о пользователях, как угодно переделывать систему, может сделать
что угодно с любым файлом. Пароль root - самая охраняемая тайна любой систе­
мы. Власть root - самая желанная цель каждого хакера. Root не имеет права на
ошибку. Достаточно вместо команды
gummadoon:"# rm -rf /usr/local/src/doctools-1.2/
написать по ошибке (с пробелом после первого символа / )
gummadoon:"# rm -rf / us r/local/s rc/doctools-1.2/
чтобы полностью и безвозвратно (с точностью до последней резервной копии)
уничтожить всю систему.
Поэтому даже на своей личной системе:
□ никогда не делайте под именем пользователя root то, что может сделать
обычный пользователь;
□ не пользуйтесь, зарегистрировавшись под именем root, командой rm -f , уда­
ляющей файлы без подтверждения;
□ впишите в файл /root/, profile строки:
alias rm = 'rm -і'
alias ср = 'cp -i'
alias mv = 'mv -i'

Как удобно бы ни казалось находиться в собственной системе постоянно под


именем root, обязательно надо завести хотя бы одного обычного пользователя
и становиться системным администратором только тогда, когда без этого нельзя
обойтись. Кроме того, это полезный опыт работы с системой.
Чтобы не заходить в систему каждый раз заново для незначительного измене­
ния конфигурации какой-нибудь системной программы, существует команда su
(от superuser - суперпользователь):
su [-] [use rn a m e ]
Разграничение прав пользователей 193

Эта команда превратит вас в пользователя с указанным именем username, ра­


зумеется, после ввода его пароля. Если параметр username опущен, подразумева­
ется root. Если указать дополнительно параметр -, запускаемый su командный ин­
терпретатор будет активизирован как login shell, то есть будут выполнены все
команды, содержащиеся в файлах типа “/. profile нового пользователя, и вы ока­
жетесь в его домашнем каталоге. Без этого минуса вы просто получаете права ука­
занного пользователя, оставаясь в текущем каталоге.
Пользователь root может использовать команду su для превращения в любого
другого пользователя, не вводя никакого пароля. Все попытки использования su,
удачные или нет, записываются в журнальный файл /var/log/sulog (который, ес­
тественно, доступен для чтения только администратору).
Чтобы не забыть, в роли какого пользователя вы находитесь, всегда можно
воспользоваться командой whoami (W ho am I? - Кто я?) или более информатив­
ной - id.
gummadoon:~$ whoami
cubbi
gummadoon:~$ id
uid=1112(cubbi) gid=100(users) groups=100(users)

Команда id выдает идентификаторы и имена текущего пользователя и групп,


в которые он входит.
Кроме того, последний символ подсказки bash традиционно устанавливается
в виде знака $ для обычного пользователя и знака # для администратора.
gummadoon:~$ su
Password:
gummadoon:/home/cu bbi#

Использование команды su можно ограничить, создав файл /etc/suauth, в ко­


тором указывается, каким пользователям в каких превращаться нельзя, каким
можно, а какие пользователи могут стать, например, системным администрато­
ром, введя только свой собственный пароль.
Каждая строка этого файла, кроме строк комментариев (первый символ - #),
содержат три поля, разделенных двоеточиями, следующего вида:
к у д а :откуда: возможность
В поле куда указывается одно из трех:
□ слово ALL (все);
□ имя пользователя или список имен через запятую;
□ слова ALL EXCEPT (все кр ом е) и затем и м я пользователя и л и с п и с о к имен.

В поле откуда указывается аналогичная информация, но возможны и следу­


ющие два варианта:
□ слово GROUP (группа) и имя группы или список групп через запятую;
□ слова ALL EXCEPT GROUP (все к р о м е г р у п п ы ) и затем группа и л и список.
194 Базовые понятия об администрировании

В поле возможность указано действие команды su для случая, когда пользователь,


поименованный в поле откуда, пытается превратиться в пользователя, поименован­
ного в поле куда. Возможны три варианта действия:
□ DENY - su прекращает работу еще до того, как спросить пароль.
□ NOPASS - su немедленно выполняется, не спрашивая никакого пароля.
□ 0WNPASS - su выполняется, но просит пользователя ввести собственный
пароль для подтверждения личности.
Например, следующая строка в /etc/suauth разрешает превращаться в систем­
ного администратора только пользователям группы wheel, как это сделано по
умолчанию в другой популярной бесплатной операционной системе FreeBSD:
root:ALL EXCEPT GROUP wheel:DENY

Кроме этой стандартной версии команды su, в Linux может встречаться GNU
su, которую легко отличить, как и все GNU программы, по реакции на опцию
— version. Обычный su предложит ввести пароль для пользователя с таким име­
нем, a GNU su сообщит номер версии.
Версия GNU поддерживает дополнительный набор опций:
-с команда, Выполнить команду после изменения идентификатора
--соттапс1=команда пользователя и немедленно вернуться к прежнему иденти­
фикатору.
-f, --fast Передает опцию - f запускаемому командному интерпрета­
тору. В случае c s h n t c s h это приводит к тому, что не выпол­
няется сценарий . cshrc.
-1, - -login Синонимы стандартной опции - (знак минус). Такая опция
приводит к тому, что все переменные среды кроме TERM,
НОМ Е и SHELL удаляются и запускаемый интерпретатор
выполняет свои загрузочные файлы сценариев (/etc/
profile, “/. profile, “/. bashrc и т.д.).
--preserve-environment,
-m, -p Не изменять переменные среды HOME, USER, LOGNAME
и SHELL. При этом запускаемый командный интерпрета­
тор выбирается не из /etc/passwd, а из текущего значения
переменной SHELL.
-s, --shell sh ell Воспользоваться указанным в параметре shell командным
интерпретатором вместо того, который записан в /etc/
passwd.
--version и --help Стандартные для всех GNU-программ опции. Вывод номе­
ра версии и подсказки.
Кроме того, если в системе установлена Linux-PAM, логика работы команды su
определяется РАМ-файлом /etc/pam. d/s u . Подсистема РАМ рассматривается
в разделе 4.2.3.
Настройка среды для пользователей 195

4.2. Настройка среды для пользователей


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

4.2.1. Файлы /etc/passwd и /etc/group


Вся основная информация о пользователях хранится в файле /etc/passwd. Этот
файл доступен для чтения всем, чтобы можно было определять имена пользовате­
лей по их UID. Для примера попробуйте защитить его от чтения и оценить ре­
зультат, подав команду Is - 1. Однако оставлять систему в таком виде не стоит,
и лучше после теста вернуть ее в исходное состояние.
gummadoon:~# Is -1 .profile
-rw-r-r- 1 cubbi users 152 Jan 31 1999 .profile
gummadoon:"# chmod o-r /etc/passwd
gummadoon:-# Is -1 .profile
-rw-r-r- 1 1112 users 152 Jan 31 1999 .profile

Рассмотрим содержимое файла /etc/passwd. Каждая строка содержит инфор­


мацию об одном конкретном пользователе в формате:
username:password: UID: GID: GECOS: homedir:shell
например:
cubbi:x:1112:100:Sergei Zubkov,329,18-66,:/home/cubbi:/bin/bash

username Имя пользователя, используемое для входа в систему, может


содержать до восьми символов, среди которых не должно быть
заглавных букв.
password Закодированный пароль, звездочка, или буква х. Пароль коди­
руется так, что расшифровать его напрямую невозможно. Од­
нако если пользователь взял в качестве пароля обычное слово,
легко можно зашифровать по очереди каждое слово из словаря
и сравнить его с кодом. Поэтому файл /etc/passwd с чужой сис­
темы всегда был желанной добычей для любого хакера. Сейчас
практически всюду применяется система теневых паролей
(shadow passwords), когда закодированные пароли хранятся
в файле /etc/shadow, недоступном для чтения обычным пользо­
вателям, а в соотвествующем поле в /etc/passwd стоит буква х.
Если вместо пароля записан символ *, данному пользователю
запрещено входить в систему.
UID Число-идентификатор пользователя.
GID Число-идентификатор основной группы, в которую входит пользо­
ватель.
196 Базовые понятия об администрировании

GEC0S Разнообразная информация о пользователе. В первой версии


UNIX для печати использовался принтер, присоединенный
к компьютеру под управлением операционной системы GECOS,
и в это поле помещали информацию, которая распечатывалась
там как информация о пользователе. Сейчас это поле иногда ос­
тавляют пустым, иногда помещают сюда полное имя пользова­
теля, а чаще - полное имя, расположение офиса, рабочий те­
лефон, домашний телефон (через запятые). В таком формате
информацию о пользователе воспринимает команда finger.
homedi г Домашний каталог пользователя.
sh ell Командный интерпретатор, который запускается для пользо­
вателя при его входе в систему. Вообще говоря, здесь может
быть указана любая программа, присутствующая также в фай­
ле /etc/shells. В частности, для тех, кому запрещено заходить
в систему, но можно пользоваться FTP или PO P (то есть у него
должен быть действительный пароль), в качестве shell запи­
сывают программу /bin/false, которая просто немедленно за­
вершается. Если это поле пусто, используется /bin/sh.
Второй файл, в котором содержится важная для нас информация, - /etc/g roup.
Здесь перечислены группы пользователей, их идентификационные номера и их
состав:
дгоирпате: passwd: GID: u serlist
дгоирпате Имя группы. Ограничения те же, что и на имя пользователя.
passwd Закодированный пароль.
GID Число, идентификатор группы.
u s e r lis t Список пользователей, входящих в группу, разделенных запя­
тыми. Первый пользователь в списке называется администра­
тором группы.
Пользователь может входить в несколько групп одновременно, тогда основной
является та, которая указана в /etc/passwd.
Чтобы сменить свой текущий идентификатор группы (показываемый коман­
дой id), вы можете применить команду newgrp или sg. Newgrp изменяет текущий
GID, sg запускает новый командный интерпретатор с измененным GID, так что
по выходе из него пользователь возвращается в свою группу по умолчанию.
Чтобы добавить в систему нового пользователя, нужно создать новую запись
в файле /etc/passwd и включить этого пользователя в одну из групп в файле /etc/
group. При этом имя и идентификатор (UID) должны быть уникальными и не при­
надлежать никому больше. Например, чтобы создать пользователя sunni с UID=1200,
надо выполнить следующие команды (находясь в системе под именем root):
echo "sunni:*:1200:100:Sunni Gummi:/home/sunni:/bin/bash" » /etc/passwd
Настройка среды для пользователей 197

При этом в файл /etc/passwd добавляется запись об этом пользователе.


passwd sunni
Эта программа служит для замены пароля пользователя. Обычно она сначала
спрашивает старый пароль, но для системного администратора и это ограничение
снимается. Зашифрованный пароль будет автоматически внесен в файл /etc/
shadow, если поддержка таких теневых паролей включена.
mkdir -m 2700 /home/sunni
chown sunni:users /home/sunni
Теперь создается домашний каталог, принадлежащий пользователю sunni, ука­
занный в новой записи в /etc/passwd с подходящими правами доступа (права 700
соответствуют rwx— : сам пользователь может делать все, все остальные - ничего):
ер /etc/skel/* /home/sunni/
ср /etc/skel/.* /home/sunni/
В каталоге /etc/skel хранится набор файлов, которые надо поместить в домаш­
ний каталог каждого нового пользователя. Здесь обычно находится сценарий
shell, исполняемый при входе в систему (. profile), файл . inputrc с настройками
для bash, позволяющими работать с русскими буквами, файлы конфигурации
.less и . less го и т.д. Многие (если не все) эти файлы начинаются с точки, поэто­
му требуется вторая из приведенных команд ср, так как первая пропустит эти фай­
лы как «скрытые».
Последнее действие - редактирование файла /etc/group с целью внести имя но­
вого пользователя в список членов группы номер 100 (этот GID обычно получает
группа users, в которую входят все реальные пользователи).
Для того чтобы удалить пользователя из системы, следует удалить соответству­
ющую строку из /etc/passwd, а также все упоминания о нем из /etc/group и его
домашний каталог (вместе с подкаталогами, командой rm -rf). Но обычно встре­
чаются ситуации, когда пользователя надо только временно лишить доступа, а для
этого проще всего изменить его пароль, например, приписав лишнюю букву к за­
кодированному паролю в /etc/shadow.

4.2.2. Программы для управления пользователями


Все операции по добавлению и удалению пользователей достаточно просты, но при
многократном их выполнении вручную легко что-то испортить, например создать
двух пользователей с одинаковым UID (с точки зрения системы это будет один
пользователь - тот, который указан в /etc/passwd первым). Поэтому все дистрибу­
тивы предлагают специальные программы для автоматизации этих действий.
Программа для добавления пользователя в систему может называться useradd,
adduser или mkuser, программа для удаления - userdel, а для изменения его опи­
сания - usermod. Используя эти программы, можно, кроме того, регулировать до­
полнительные расширения системы управления пользователями, например, вы­
давать временные пароли.
useradd [ -А { DEFAULT | m ethod [,...] } ]
[ -с comment ]
198 Базовые понятия об администрировании

[ -d hom e_dir ]
[ -е e x p i r e _ d a t e ]
[ -f i n a c t i v e _ t i m e ]
[ -g i n i t i a l _ g r o u p ]
[ -G g r o u p [,...]]
[ -m [ -к s k e l e t o n _ d i r ] | -M ]
[ -s s h e l l ]
[ -u u i d [ -o ]] l o g i n
[ -r ]
[ -n ]

Эта команда создает нового пользователя, применяя параметры, заданные в ко­


мандной строке, а также используемые по умолчанию, и если что-то не определе­
но, они могут запрашиваться в интерактивном режиме.
-А { DEFAULT | m e t h o d [,...] }
Имя программы (или список имен программ через за­
пятую), проверяющий пароль пользователя, если ис­
пользуется что-то отличное от стандартного системно­
го пароля (на который указывает строка DEFAULT).
-с com m ent Поле GECOS для создаваемого пользователя.
-d h o m e _ d i r Домашний каталог создаваемого пользователя.
-e e x p i r e _ d a t e Дата, при наступлении которой доступ пользователю
будет закрыт в формате М М /ДД/ГГ.
-f in a c tiv e _ tim e Число дней между истечением срока действия паро­
ля и закрытием доступа (за это время пользователь
должен зайти в систему и изменить пароль). Число О
означает, что доступ закрывается немедленно по ис­
течении срока; для отключения этой возможности
(и по умолчанию) используйте -1 .
-g i n i t i a l _ g r o u p Имя основной группы пользователя. Она должна су­
ществовать в файле /etc/group.
-G g r o u p [,...] Список (через запятую без пробелов) имен дополни­
тельных групп, в которые входит пользователь.
-m Домашний каталог пользователя будет создан, если
к этому моменту он не существует, и в него скопи-
руются все файлы и подкаталоги из каталога /etc/
skel.
-k s k e l e t o n _ d i r Имя каталога, используемого вместо /etc/skel. Эта
опция имеет смысл только одновременно с опцией -т.
-M Домашний каталог не создается, несмотря ни на что
(только в Red Hat).
-s s h e l l Имя программы, указываемой в /etc/passwd в поле
login shell.
Настройка среды для пользователей 199

-и иid Идентификатор пользователя. Должен быть числом


больше нуля, не используемым никем другим. По умол­
чанию будет выбрано первое незанятое число, боль­
шее 99.
-о Разрешает использовать в -и идентификатор, принад­
лежащий другому пользователю.
-г Создает системного пользователя с UID меньше 100.
При этом домашний каталог не создается (только
в Red Hat).
-η Отключить особенность Red Hat, благодаря которой
для каждого нового пользователя регистрируется
новая группа, названная его именем (только в Red
H at).
Значения различных параметров по умолчанию могут храниться в файлах
/etc/login.defs и /etc/defaults/useradd. Текущие установки для useradd можно
прочитать, подав команду useradd -D:
gummadoon:~$ useradd -D
GR0UP=100
H0ME=/home
INACTIVE=-1
EXPIRE=
SH ELL=
SKEL=/etc/skel
gummadoon:“$

Д л я м о д и ф и к а ц и и этих ус тановок т а к ж е м о ж н о использовать useradd с к л ю ­


ч о м -D.

useradd -D -b каталог Изменить префикс домашних каталогов


(НОМЕ).
useradd -D -е срок_действия Изменить срок действия пароля (EXPIRE),
useradd -D -f дней_до_закрытия Изменить число дней между истечением
срока д е йс тв ия п а р о л я и з а к р ы т и е м до ст у­
па (INACTIVE).
useradd -D -g группа Изменить основную группу (GROUP),
useradd -D -s интепретатор Изменить login-shell (SHELL).
В Linux существует команда usermod с такими же опциями, что и useradd, кро­
ме -D. С ее помощью можно изменить установки любого из уже созданных пользо­
вателей.
Для полного автоматического удаления пользователя из системы применяется
команда userdel:
userdel имя
200 Базовые понятия об администрировании

Если пользователь с указанным именем существует и при этом не находится


в системе, userdel удаляет его домашний каталог со всеми подкаталогами, удаля­
ет записи об этом пользователе из /etc/passwd и /etc/shadow и все упоминания
о нем из /etc/group. После этого в системе не останется никаких следов этого
пользователя, кроме, возможно, забытых временных файлов в /tmp.
Чтобы насильственно выпроводить пользователя из системы, достаточно по­
слать сигнал SIGHUP его командному интерпретатору. Но так как пользователь мог
запустить процессы, выполняющиеся в фоновом режиме, полная последователь­
ность команд на удаление пользователя sunni будет выглядеть так:
echo "logins disabled for 10 seconds" > /etc/nologin
kill -HUP sunni
sleep 5
kill -TERM sunni
sleep 5
kill -KILL sunni
userdel sunni
rm -f /etc/nologin

Здесь, кроме посылки сигналов пользовательским процессам и удаления поль­


зователя, запрещается вход в систему путем создания файла /etc/nologin. Тексто­
вое сообщение, находящееся в этом файле, будет выдано любому пользователю
(кроме root), пытающемуся войти в систему в этот момент. Пользователь sunni
покинет систему после того, как его login shell получит сигнал SIGHUP, а запись
о нем в /etc/passwd будет существовать еще по крайней мере десять секунд, в те­
чение которых он может попытаться зайти в систему повторно.
Действия команд useradd и userdel при необходимости можно воспроизвести
вручную, как было показано в предыдущей главе. Но существует команда, кото­
рой приходится пользоваться в любом случае, - команда passwd.
Дело в том, что пароли в Linux хранятся зашифрованными и восстановить па­
роль по шифру нельзя. Для проверки введенного пользователем пароля его ш иф­
руют и сравнивают полученную строку с записанной в файле /etc/shadow (или
/etc/passwd, если скрытые пароли не используются).
В большинстве дистрибутивов команда passwd используется также и для обслу­
живания системы безопасности при помощи большого числа дополнительных
опций. Но в Red H at и родственных дистрибутивах используется система разгра­
ничения и учета доступа Linux-PAM, поэтому здесь устанавливается собственная
версия команды passwd. Она допускает всего один параметр - имя пользователя,
и одну опцию —и, использование которой приводит к тому, что пароль будет из­
менен, только если истек его срок действия.
Рассмотрим сначала стандартную версию этой команды:
passwd [-fI-s] [имя]
Команда passwd позволяет пользователю изменить свой пароль. Администра­
тор может изменить пароль любого другого пользователя, указав его имя. Сначала
Настройка среды для пользователей 201

программа предлагает ввести старый пароль тому, кто ее вызвал (кроме админист­
ратора), а затем (дважды) новый. Passwd откажется изменить пароль, если пользо­
вателю запрещено это делать, и не позволит ввести пароль, который теоретически
несложно подобрать (являющийся словарным словом или слишком короткий).
При помощи той же команды passwd в Linux можно изменить другие поля
в файле /etc/passwd. Команда passwd -f позволяет пользователю модифицировать
свое GECOS-поле в формате, используемом командой finger. Запрашивается пол­
ное имя пользователя, номер его офиса, рабочий и домашний телефоны. Все поля
можно при желании оставить пустыми, но полное имя используется во многих
программах. Например, почтовые программы могут проставлять его в заголовках
писем.
Команда passwd -s позволяет изменить login shell, интерпретатор, вызываемый
при входе пользователя в систему:
passwd [-д] [-г|R] группа
При использовании опции - g команда passwd переключается в режим работы
с паролями групп. Изменить пароль группы может только системный админист­
ратор или администратор данной группы (пользователь, указанный в файле /etc/
group первым в списке членов группы). Команда passwd -g -г удаляет групповой
пароль, passwd -g -R закрывает доступ к группе для всех пользователей.
passwd [-X max] [-n m in ] [-w w a r n ] [-i i n a c t ] имя
Эта же команда используется и для обслуживания системы старения паролей.
Для любого пользователя можно указать четыре параметра - max, min, warn
и inact после опций -х, -n, -w, и -і соответственно. Параметр max - это максималь­
ное число дней, в течение которых пароль действителен. После этого времени па­
роль должен быть изменен. Параметр min указывает, в течение скольких дней
пользователь не может изменять собственный пароль. Параметр warn показыва­
ет, за сколько дней до истечения срока действия пароля, указанного в max, пользо­
вателю выдается напоминание о том, что пароль устарел и его пора изменить
и сколько еще дней он может заходить в систему под старым паролем. Параметр
inact - это время (в днях) после истечения срока действия пароля, в течение кото­
рого пользователь обязательно должен изменить пароль, иначе его вход будет заб­
локирован до вмешательства администратора.
passwd {-11-uI-dI-S} имя
И наконец, при помощи команды passwd -1 можно временно запретить пользо­
вателю доступ в систему. При этом его зашифрованный пароль обратимо моди­
фицируется. Команда passwd -и восстанавливает его и вновь разрешает вход
в систему. Разумеется, эта защита распространяется только на протоколы, прове­
ряющие системный пароль пользователя. Соединения, устанавливаемые в обход
этого, например rlogin, по-прежнему работают.
Опция -S позволяет получить информацию о состоянии пароля указанного
пользователя. При этом выводится строка, состоящая из семи полей: имя поль­
зователя, состояние пароля (Р - действующий, L - временно заблокированный,
202 Базовые понятия об администрировании

ΝΡ - пароля нет), дата последней смены пароля, параметры min, max, warn и inact.
Например, в обычном случае (пароли имеют неограниченный срок действия), ре­
зультат работы этой команды может выглядеть так:
gummadoon:~$ passwd -S
cubbi Р 12/20/98 0 99999 7 -1
Ввод опции -d приводит к удалению пароля данного пользователя, разрешая
ему вход без какого-либо пароля вообще.
В современных версиях дистрибутива Red H at и построенных на его основе
используется универсальная система доступа Linux-PAM. В этом случае весь ал­
горитм работы команды passwd описывается в файле /etc/pam. d/passwd. В нем ука­
зываются последовательно вызываемые модули РАМ и аргументы к ним. Подроб­
нее на Linux-PAM мы остановимся в следующей главе.
Существуют еще две команды, имеющие отношение к модификации информа­
ции о пользователе, но их действие мы уже рассмотрели. Команда chfn (change
finger information - изменить информацию для программы finger) в точности сов­
падает с действием passwd -f.
Команда chsh (change shell - сменить интерпретатор) совпадает с passwd -s.
В Red H at Linux действие этих двух команд, равно как и passwd, регулируется
РАМ. Файлами конфигурации служат, соответственно, /etc/pam. d/chfn и /etc/
pam.d/chsh.

4.2.3. Система доступа Linux-PAM


Система РАМ (Pluggable Authentication Modules - заменяемые модули иденти­
фикации), разработанная OSF (Open Software Foundation - фонд открытого про­
граммного обеспечения) для всех UNIX-систем в 1995 году, получает широкое
распространение в Linux только в настоящее время. До введения этой системы
приходилось переделывать все программы, имеющие дело с паролями пользова­
телей - login, su, ftp, rsh, rlogin, dtlogin, telnet, как только вводилась другая схема
работы с паролями. Например, много времени потребовалось для того, чтобы все
программы, созданные разными авторами, стали поддерживать теневые пароли
в файле /etc/shadow вместо обычных в /etc/passwd.
Система РАМ была введена для того, чтобы создать дополнительный уровень меж­
ду приложениями и различными протоколами и способами идентификации и разре­
шения доступа. Все приложения используют универсальный интерфейс, РАМ API,
а уже модули РАМ выбирают стратегию поведения и протоколы согласно либо фай­
лу /etc/pam. conf, либо набору файлов конфигурации из каталога /etc/pam. d.
Модули РАМ - это динамически загружаемые библиотеки, находящиеся в ка­
талоге /lib/security или /usr/lib/security, например /lib/security/pam_pwdb. so,
или /lib/secu rity/pam_nologin.so. Модули подразделяются на четыре основных
типа, или компонента, системы РАМ - auth, account, session и password.
auth Выполняют аутентификацию, то есть подтверждают, что пользо­
ватель является именно тем, кем он представился системе. Кроме
того, модули этого типа могут обслуживать дополнительные пра­
ва, так называемые credentials.
Настройка среды для пользователей 203

account Разрешают или запрещают конкретному пользователю вход в сис­


тему. Это решение может зависеть от даты или времени суток, сис­
темных ресурсов, способа, которым пользователь пытается войти
в систему и т.д.
session Осуществляют действия, которые должны быть выполнены до или
после входа пользователя, - занесение информации в журнальные
файлы, монтирование каталогов и т.п.
password Изменяют пароль пользователя.
Для каждой программы, использующей РАМ, в специальном файле конфигу­
рации указывается, какие РАМ-модули будут обрабатывать операции, относящи­
еся к каждому из этих четырех типов.
Например, на рис. 4.1 показан случай, когда приложение А требует аутентифи­
кации пользователя (что чаще всего сводится к запросу пароля тем или иным спо­
собом). Оно сообщает об этом системе Linux-PAM, которая определяет по конфи­
гурационным файлам, что для этого приложения запросы типа auth обрабатывает
модуль b. so. После этого b. so загружается, выполняет все необходимые действия
(например, запрашивает пароль и сверяет его с хранящимся в системе) и возвра­
щает управление приложению А.

Прилож ение А /etc/pam .d/A


Linux
П ользователь \ РАМ auth b.so

a.so b.so с .so auth


b.so e.so a cc o u n t
b.so c.so session
a.so f.so passw ord

Рис. 4.1. Логическая структура системы Linux-PAM

Файл конфигурации Linux-PAM для приложения abc называется /etc/pam.d/


abc. То есть для su это /etc/pam. d/su, для passwd -/etc/pam. d/passwd и т.д. Файл
состоит из строк, содержащих следующие поля:
тип_модуля управляющий_флаг имя_модуля аргументы

В старых версиях Linux-PAM (до 0.56) использовался общий файл /etc/


pam. conf, в котором в каждой строке было дополнительное поле перед указанием
типа модуля - имя приложения, для которого данная строка предназначена.
тип_модуля Это один из четырех вышеописанных типов: auth, account,
session, passwd.
управляющий_флаг Флаг, контролирующий поведение Linux-PAM в случае
успешного или безуспешного результата работы модуля
204 Базовые понятия об администрировании

РАМ позволяет выполнять последовательно несколько


модулей для обработки одного и того же запроса, при­
чем приложение получает только результат выполнения
запроса. Этот флаг может иметь одно из следующих че­
тырех значений:
requi red Успешное завершение работы данного моду­
ля необходимо для успеха всего запроса. Об
ошибочном завершении приложению не бу­
дет сообщено до тех пор, пока все модули
данного типа не отработают,
requisite У спешное завершение работы данного модуля
необходимо для успеха всего запроса. Ошибоч­
ное завершение приводит к немедленному пре­
кращению обработки запроса и возвращению
управления приложению,
sufficient В случае успешного завершения работы, если
все предыдущие модули типа required также
отработали успешно, управление немедленно
возвращается приложению. Ошибочное за­
вершение работы этого модуля не учитывает­
ся и выполнение модулей продолжается,
optional Результат работы этого модуля не учитывает­
ся, кроме, конечно, случая, когда модули дру­
гих типов не описаны.
Начиная с версии Linux-PAM 0.6 возможен также дру­
гой, более сложный синтаксис этого параметра, который
пока почти не применяется. В качестве управляющего
флага используется набор равенств типа значение=дей-
ствие, разделенных пробелами и заключенных в квадрат­
ные скобки. Значение - это возможный результат работы
данного модуля, а действие - действие, которое должна
предпринять Linux-PAM.
Значение может иметь вид: success, open_err, symbol_err,
service_err, system_err, buf_err, perm_denied, auth_err,
cred_insufficient, authinfo_unavail, user_unknown, maxtries,
new_authok_reqd, acct_expired, session_err, cred_unavail,
cred_expired, cred_err, no_module_data, conv_err, authok_err,
authok_recover_err, authok_lock_busy, authok_disable_aging,
try_again, ignore, abort, authok_expired, module_unknown,
bad_item, default.
Действие может иметь вид положительного целого чис­
ла или ok, done, bad, die, reset. Число указывает, сколько
следующих модулей надо пропустить.
Настройка среды для пользователей 205

имя_модуля Имя файла, которое может быть указано с полным пу­


тем к нему (/usr/local/lib/security/special.so) или
без него ( n о_1 og i η .so). Во втором случае считается,
что модули расположены в /lib/secu rity или / u s г/lib/
security, в зависимости от дистрибутива.
аргументы Командная строка, передаваемая модулю.
Описание каждого модуля и его аргументов можно найти в The Linux-PAM
System A dm inistrators’ Guide: h ttp ://parc.pow er.net/m organ/L inux-PA M /Linux-
PAM -html /pam .html. Копия этого описания поставляется с системой Linux-PAM
(например в /usr/doc/pam).
Для примера рассмотрим файл конфигурации /etc/pam. d/su, описывающий
логику работы команды su b дистрибутиве Red Hat.
#%РАМ-1.0
auth sufficient /lib/security/pam_rootok. so
auth required /lib/security/pam_pwdb.so shadow nullok
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow nullok
use_authtok
session required /lib/security/pam_pwdb.so

Модуль pam_rootok. so успешно срабатывает, если его вызвал пользователь root.


Так как для этого модуля указан ключ sufficient, другие модули типа auth в этом
случае уже не вызываются. Для обычных пользователей вызывается модуль
pam_pwdb.so с типом запроса auth, выполняющий проверку пароля. Аргумент
shadow заставляет его использовать файл /etc/shadow, аргумент nullok разрешает
пустые пароли (по умолчанию в pam_pdwb вход пользователя с пустым паролем
запрещен).
После того как личность пользователя, вызвавшего su, подтверждена, выпол­
няется последовательность модулей, отвечающих за вход пользователя в систе­
му. Запрос типа account, обрабатываемый модулем pam_pwdb, позволяет опреде­
лить, существует ли указанный пользователь и является ли его пароль активным
в настоящий момент. Если оказывается, что срок действия пароля истек и его
нужно изменить, посылается запрос типа password, который обслуживают моду­
ли pam_cracklib и pam_pwdb. В этом случае pam_cracklib запрашивает новый па­
роль, проверяет, легко ли его взломать потенциальному хакеру, и повторяет
запрос, если новый пароль не удовлетворяет требованиям безопасности. Затем
модуль pam_pwdb изменяет пароль. Аргумент use_authtok означает, что модуль
pam_pwdb должен воспользоваться паролем, предоставленным предыдущим мо­
дулем типа passwd, то есть pam_cracklib. И наконец, запрос типа session, обслу­
живаемый все тем же универсальным pam_pwdb, записывает имя пользователя,
выполнившего (или попытавшегося выполнить) команду su, в системный
журнальный файл /var/log/syslog.
20ό Базовые понятия об администрировании

4.2.4. Программы для получения информации


о пользователях
Информация о пользователе, как определенная в файлах /etc/passwd и /etc/g roup,
так и описывающая его текущее состояние, может быть получена при помощи
различных команд, например, следующей:
id [опции] [ п о л ь з о в а т е л ь ]
В версии GNU эта команда выводит реальный UID, реальный GID, эффектив­
ный UID, если он отличается от реального, эффективный GID, если он отличает­
ся от реального, а также имена и идентификаторы всех групп, в которые входит
указанный пользователь. Если он не указан, команда id выводит информацию
о текущем пользователе. Различные опции используются для того, чтобы ограни­
чить количество выводимой информации:
-g, --group Выводить только GID.
-G, --groups Выводить только список групп.
-η, --name Вывести имя пользователя или группы вместо ID, действу­
ет совместно с -u, -g или -G.
- г, --real Вывести реальные, а не эффективные ID, действует совмест­
но с -u, -g или -G.
-и, --user Вывести только UID.
-help, --version Стандарнтые GNU-опции, подсказка и номер версии про­
граммы.
Обычная Linux-версия id, встречающаяся, например, в Slackware, может рабо­
тать только с текущим пользователем и допускает всего одну опцию - а . Эта оп­
ция выводит набор текущих групп в системах, разрешающих пользователю быть
одновременно активным членом более чем одной группы. Тем не менее, в самом
распространенном случае использования - вызове без параметров, результат дей­
ствия обеих версий команды в точности совпадает:
gummadoon:~$ id
uid=1112(cubbi) gid=100(users) groups=100(users)
Гораздо более мощная программа для получения информации о пользователе,
настолько мощная, что ее использование часто запрещают из соображений безо­
пасности, - это программа finger.
finger [-lmsp] [user ...] [user@host ...]
Команда finger -s (short) выводит информацию о пользователе в краткой фор­
ме, вся информация в одной строке:
gummadoon:~$ finger -s cubbi
Login Name Tty Idle Login Time Office Office Phone
cubbi Sergei Zubkov pO Aug 31 11:07 (localhost)

Выводится системное имя пользователя (в примере cubbi), полное имя пользо­


вателя (Sergei Zubkov), имя терминала (/dev/ttypO), если после имени терминала
стоит звездочка, это значит, что пользователь выполнил команду mesg η, и с ним
Настройка среды для пользователей 207

нельзя связаться при помощи write и talk. Затем выводится время, в течение ко­
торого пользователь бездействовал (в примере отсутствует), время входа в систе­
му (11:07 31 августа) и (вопреки тому, что в заголовке написано Office Office
Phone) имя компьютера, с которого пользователь зашел или последний раз захо­
дил в систему (в примере localhost). При отображении времени захода в систему
указывается месяц, день, час и минута, кроме случая, когда вход произошел более
полугода назад. В этом случае вместо часа и минуты выводится год.
Команда finger -1 (long) выводит информацию о пользователе в ином форма­
те (несколько строк):
gummadoon:~$ finger -1 cubbi
Login: cubbi Name: Sergei Zubkov
Directory: /home/cubbi Shell: /bin/bash
Office: 329, 939-xxxx Home Phone: 358-xxxx
On since Tue Aug 31 11:07 (MSD) on ttypO from localhost
Mail last read Tue Aug 24 16:56 1999 (MSD)
Plan:
To write that book
В этом случае выводится вся информация, выводимая finger -s, а также до­
машний каталог пользователя (/home/cubbi), домашний телефон (358-хххх), ис­
пользуемый командный интерпретатор (/bin/bash), информация о почте (была ли
прочитана, есть ли новая почта, есть ли почта вообще) и содержимое файлов до­
машнего каталога . forward, . project и . plan. При этом только файл . forward име­
ет назначение, - в нем указывается адрес, на который автоматически пересылает­
ся вся почта, приходящая пользователю. Файлы . project и . plan существуют
только для добавления лишней информации в команду finger. Опция -р отменя­
ет показ файлов . plan и . project в длинном формате вывода.
По умолчанию используется длинный формат, если команда выводит инфор­
мацию только об одном пользователе, и короткий - в случае нескольких.
Опция -m (matching) отменяет возможность указывать в качестве аргумента
полные имена пользователей. Без этой опции команда finger Zubkov срабатывала
бы точно так же, как и finger cubbi.
Кроме локальных пользователей, при помощи этой команды можно получить
информацию о пользователях на другой UNIX-системе в Internet (если админис­
тратор не запретил там заходы на 79-й порт, который используется именно для
этого). Достаточно вместо имени пользователя указать имя@адрес, где адрес - это
имя удаленного компьютера в сети.
Команда finger без параметров выводит информацию обо всех пользователях,
находящихся в системе в настоящий момент (в коротком формате). Для вывода
информации обо всех пользователях, находящихся в удаленной системе, исполь­
зуется форма записи finger @адрвс.
Обычно командой finger пользуются для уточнения информации о конкрет­
ном пользователе. Чтобы увидеть, кто находится и что делает в системе в насто­
ящий момент, используются команды who и w.
who [опции] [файл] [am і]
208 Базовые понятия об администрировании

Команда who без параметров выводит список пользователей, находящихся в дан­


ный момент в системе, указывая имя, терминал, время входа в систему и адрес уда­
ленного компьютера или Х-дисплея, с которого зашел пользователь, например:
gummadoon:~$ who
root ttypO Aug 31 13:08 (localhost:10.0)
cubbi ttyp2 Aug 31 13:10 (gummadoon.gummi.net)

Если указать один аргумент, он рассматривается как имя файла, который ис­
пользуется вместо /etc/utmp, например, /etc/wtmp для списка всех пользователей,
заходивших в систему. Если указать два аргумента, команда who выводит инфор­
мацию только о текущем пользователе. Традиционно этими аргументами являю т­
ся am I, чтобы получилась фраза who am I (кто я), но в GNU версии who это могут
быть любые два слова.
Допустимы следующие опции:
-т Тож е, что и who am I.
-q, --count Вывести только имена пользователей и их число.
-і, -и, --idle Вывести дополнительно время бездействия пользова­
теля в часах и минутах. Точка означает, что пользова­
тель был активен в течение последней минуты, слово
old означает, что пользователь бездействовал более 24-х
часов.
-И, --heading Распечатать дополнительную строку с заголовками,
поясняющими смысл полей.
-w, -Т, --mesgpe После имени выводится один символ, показывающий,
--message, --writable принимает ли пользователь сообщения. В случае поло­
жительного ответа выводится символ + , - в случае от­
рицательного и ?, если не удается определить, через ка­
кой терминал вошел пользователь.
-help, --version Стандартные GNU-опции, подсказка и номер версии.
Существует также команда rwho, выдающая список пользователей аналогично
команде who, но на всех удаленных системах в локальной сети. Для ее работы
в Linux необходимо, чтобы и на вашей машине, и на всех остальных, установлен­
ных в этой сети, был запущен демон rwhod. Эти демоны регулярно обмениваются
списками пользователей, так что команда rwho выдает такой список немедленно,
пользуясь локальной копией.
Последняя и, возможно, самая полезная команда для получения информации
о других пользователях в системе - команда w. С ее помощью узнают, кто нахо­
дится в системе, кто чем занят, а также какова общая загрузка системы.
w [опции] [ п о л ь з о в а т е л ь ]
Команда w выводит информацию следующего вида:
gummadoon:~$ w
1:54pm up 19:08, 1 user, load average: 0.00, 0.00, 0.00
Управление файловыми системами 209

USER π Υ FROM L0GIN@ IDLE UCPU PCPU WHAT


cubbi ttypO localhost 1:05pm 0.00s 0.25s 0.05s w

В первой строке указываются по очереди: текущее время (1:54рт), время, в те­


чение которого система работала без перезагрузки (19:08), сколько пользователей
находятся в системе в данный момент (1 user), средняя загрузка системы за пос­
ледние 1 (0.00), 5 (0.00) и 15 (0.00) минут.
Если этот параметр не был указан, для указанного или для каждого пользова­
теля в системе выводится строка со следующей информацией: имя (cubbi), тер­
минал (/dev/ttypO), удаленный компьютер (localhost), время входа в систему
(1:05рт), время бездействия (0.00s), суммарное процессорное время, которое зат­
ратили процессы этого пользователя, выполнявшиеся на переднем плане (0.25s),
процессорное время, затраченное к настоящему моменту процессом, с которым
работает пользователь (0.05s), и имя процесса, с которым работает пользова­
тель (w).
Допускаются несколько опций для модификации формата:
-h Не выводить заголовок.
-и Игнорировать смены имени пользователя (выполненную команду su) при
расчете J CPU.
-s Короткий формат, - не выводятся J CPU и PCPU.
-f Не выводить поле FROM, если оно выводилось по умолчанию, и наоборот.
-V Вывести номер версии.

4.3. Управление файловыми системами


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

4.3.1. Файловые системы UNIX


Согласно идеологии UNIX, все доступные файлы считаются находящимися в еди­
ной системе каталогов и пути доступа к ним записываются одинаково, без указа­
ния какого бы то ни было имени дискового или сетевого устройства. Чтобы это
осуществить, используется механизм монтирования (mounting) файловых систем.
Чтобы содержимое другого раздела, диска, сетевого диска было доступным для
системы, его монтируют в пустой каталог, который называется в этом случае точ­
кой монтирования (mount point). После этого файлы, записанные на смонтиро­
ванном диске, считаются находящимися в этом каталоге. Каталоги, находившие­
ся на этом диске, становятся подкаталогами в точке монтирования и т.д.
Например, если раздел с системой Windows смонтирован в каталог /mnt/c,
файл C:\AUT0EXEC.BAT становится доступен как / m nt /c /a ut oe xec.bat. Каталог
С: \WIND0WS\SYSTEM становится каталогом /mnt/c/windows/system/ и т.д. После того
как этот раздел будет демонтирован, /mnt/c/ станет обычным каталогом. Если
/mnt/c/ содержал какие-то файлы, они будут недоступными все время, пока в этом
210 Базовые понятия об администрировании

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


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

4.3.2. Монтирование и демонтирование


Монтирование файловой системы выполняется командой mount:
mount -t тип устройство каталог
Здесь каталог - это точка монтирования, в которую будет помещена файловая
система. Параметр устройство - это обычно блочное устройство типа /dev/hdal,
на котором физически расположена монтируемая система. Параметр тип опреде­
ляет тип системы, так как в UNIX практически всегда поддерживается большое
количество различных систем (для сравнения - в MS DOS поддерживаются сис­
темы лишь одного типа, fat, в Windows NT - двух типов, vfat и ntfs).
Информация о каждом смонтированном устройстве заносится в файл /etc/mtab
и может быть выведена командой mount в формате
устройство on каталог type тип (опции)
Можно воспользоваться командой mount -t тип, чтобы вывести список смон­
тированных файловых систем только одного указанного типа.
В самом файле /etc/mtab информация хранится в том же формате, что и в важ­
ном конфигурационном файле /etc/fstab, который имеет непосредственное от­
ношение к команде mount. В /etc/fstab описываются файловые системы, которые
монтируются при старте Linux, а также те, которые часто монтируются и демон­
тируются (например, CD-ROM и дискеты), что позволяет сократить число опций,
задаваемых в команде mount.
Каждая строка в /etc/fstab имеет следующий вид:
устройство каталог тип опции fs_f req fs_passno

Например:
/dev/hda3 / ext2 defaults 1 1
/dev/hda2 /proc swap defaults 02
/dev/hdal /dosc vfat noauto,user 02
none /proc proc defaults 0 0
/dev/hdc /cdrom iso9660 user, noauto, ro 0 0
/dev/fdOhl440 /mnt/a msdos user,noauto 00
/dev/fdOh1440 /mnt/la ext2 user,noauto 00

Здесь устройство, каталог, тип и опции соответствуют параметрам, передаваемым


команде mount при монтировании данной файловой системы. Число fs_freq опреде­
ляет, должна ли создаваться резервная копия этого раздела при помощи команды
dump (которая, вообще говоря, используется крайне редко). Присвоение этой пере­
менной значения 0 отменяет действие dump для данного раздела. Число fs_passno
указывает, в какую очередь данная файловая система проверяется на целостность
при запуске Linux. Корневая система должна иметь очередность 1, другие разделы,
в целостности которых нужно убедиться, получают очередность 2; для разделов,
которые вообще не требуется проверять, устанавливается очередность 0.
Управление файловыми системами 211

Наличие в этом файле записи о файловой системе облегчает использование ко­


манды mount. Так, команда mount -а монтирует сразу все системы, указанные
в /etc/f stab, кроме помеченных как noauto. Именно эта команда выполняется при
загрузке Linux.
Для монтирования любой системы, указанной в этом файле, в качестве един­
ственного аргумента к команде mount либо достаточно указать каталог, либо уст­
ройство, которое нужно смонтировать. Так, используя вышеупомянутый файл
/etc/fstab, можно смонтировать вставленную дискету командой
mount /mnt/a
Приведем полный список опций, которые допускает команда mount в системе
Linux:
-V Вывести номер версии.
-h Вывести подсказку.
-V Выводить подробные сообщения.
-а Смонтировать все файловые системы из /etc/fstab, кроме име­
ющих опцию noauto. Число монтируемых систем можно ограни­
чить опцией -t.
-F Монтировать файловые системы параллельно (используется с оп­
цией -а). При этом нарушается их последовательность, так что это­
го делать нельзя, если вы должны смонтировать одновременно, на­
пример, /var и /var/spool. Эта опция полезна при монтировании
сетевых систем.
-f Команда mount выполняет все действия кроме фактического мон­
тирования. Используется для отладки и для добавления строк
в /etc/mtab для систем, смонтированных с опцией -п.
-η Монтировать без добавления записи в /etc/mtab. Например, в том
случае, если каталог /etc защищен от записи.
-s Игнорировать опции, не подходящие к данной файловой системе.
-г Монтировать систему только для чтения (синоним -о го).
-w Монтировать систему для чтения и записи (синоним -о rw).
-L метка Монтировать раздел с указанной меткой тома.
-U uuid Монтировать раздел с указанным uuid.
-t тип Тип файловой системы, которую требуется смонтировать. Linux
в настоящее время поддерживает следующие файловые системы:
mi nix Файловая система Minix, предка Linux. Иногда исполь­
зуется на дискетах из-за большей вместимости,
ext2 Вторая расширенная файловая система - основная сис­
тема для Linux,
hpfs Файловая система OS/2,
msdos Файловая система MS DOS.
um s d о s Расширенная система MSDOS, позволяющая эмулировать
длинные имена и атрибуты файлов, как принято в UNIX,
vf at Файловая система Windows 95 (msdos с длинными име­
нами).
212 Базовые понятия об администрировании

ntfs Файловая система Windows NT.


ргос Виртуальная файловая система в Linux, предоставля­
ющая доступ к некоторым системным сервисам как
к обычным файлам,
nf s Сетевая файловая система, позволяет монтировать ката­
логи с N FS-сервера (Novell),
sinbf s Сетевая файловая система, позволяет монтировать ката­
логи с SMB-сервера (Windows, Windows NT),
ncpf s Сетевая файловая система Novell, аналог NFS, но рабо­
тающая поверх IPX, а не T C P/IP.
iso9660 Файловая система, используемая на CD.
af fs Файловая система AmigaOS.
ufs Ф айловая система BSD, SunOS, Solaris, NeXTStep
и OpenStep.
sysv Файловая система SysV UNIX,
xenix Файловая система Xenix,
coherent Файловая система Coherent.

До версии 2.1.21 поддерживались также устаревшие системы ext


и xiafs. Поддержка Xenix и Coherent будет удалена в скором буду­
щем, так как эти системы монтируются как тип sysv. Если опция
- t не указана или указан тип auto, выполняется автоматическое оп­
ределение типа, но есть вероятность ошибки.
-о о п ц и и Опции файловой системы. Часть этих опций имеет смысл только
в файле /etc/fstab, часть специфична для конкретных файловых
систем. Можно указывать список опций, разделяя их запятыми.
Возможны следующие опции:
async Весь ввод/вывод осуществляется асинхронно.
sync Весь ввод/вывод осуществляется синхронно.
atime Обновлять времена обращения (по умолчанию).
noatime Времена обращения не обновляются.
auto Система может быть смонтирована с опцией -a (/etc/
fstab).
noauto Система не может быть смонтирована с опцией -a (/etc/
fstab).
defaults Аналог rw, suid, dev, exec, auto, nouser, async.
dev Ф айлы устройств на системе интерпретирую тся как
устройства,
nodev Файлы устройств запрещены,
ехес Право на запуск исполняемых файлов,
поехес Запуск исполняемых файлов запрещен,
suid Биты SUID и SGID действуют,
nosuid Биты SUID и SGID не действуют.
Управление файловыми системами 213

user Обычный пользователь может смонтировать систему.


Подразумевает опции noexec, nosuid, nodev.
ηо use г T олько пользователь root может монтировать систему,
remount Перемонтировать уже смонтированную систему. И с­
пользуется для изменения опций файловой системы, на­
пример, mount -о remount, rw для отмены режима только
для чтения.
го Смонтировать систему только для чтения,
rw Смонтировать систему для чтения и записи.
Опции, действительные только для системы ext2fs (основная сис­
тема Linux):
bsddf Обрабатывать системный вызов stat() в BSD-сти-
ле (по умолчанию),
minixdf Обрабатывать системный вызов stat() в MINIX-
стиле.
nocheck или Отмена проверки системы при монтировании.
check=none
check или Обычная проверка целостности системы при мон­
check=normal тировании (по умолчанию).
check=strict Тщательная (и длительная по времени) проверка
целостности при монтировании.
errors=continue Продолжать работу, если на файловой системе
есть ошибки.
errors=remount-ro
Перемонтировать систему с опцией го (только для
чтения).
errors=panic Остановить Linux в случае обнаружения ошибки.
Значение по умолчанию устанавливается при
форматировании и может быть изменено коман­
дой tune2fs.
grpid или Новый файл получает GID каталога.
bsggroups
nogrpif или Новый файл получает GID текущего процесса кроме
sysvgroups ситуаций, когда каталог имеет установленный бит
SGID (по умолчанию).
resuid=n UID и GID пользователя или группы, которые могут
и resgid=n обращаться к зарезервированному участку файло­
вой системы (по умолчанию 0,0).
sb=n Номер блока, из которого будет считываться су­
перблок, если блок 1 был поврежден. Обычно
суперблок копируется в каждый 8192-й блок
(1,8193, 16385 и т. д.).
214 Базовые понятия об администрировании

Опции, действительные только для системы fat (общая часть msdos


и umsdos):
blocksize=512 Размер блока - 512 байт.
blocksize=1024 Размер блока - 1024 байта (по умолчанию).
uid=n и gid=n Считать все файлы принадлежащими данному
пользователю и группе (по умолчанию использу­
ется GID и U ID того пользователя, который за­
пустил mount).
umask=n Восьмеричное значение маски доступа. По умол­
чанию используется текущая маска пользователя.
check=r[elaxed] Для имен файлов можно использовать все симво­
лы включая пробелы; длинные имена автомати­
чески сокращаются до формата DOS.
check=n[ormal] Символы, не позволяющие DOS работать с фай­
лом (*, ?, <, пробел и т.п.), запрещены (по умолча­
нию).
check=s[trict] Попытка создать файл с длинным именем приво­
дит к ошибке.
conv=b[inary] Преобразования файлов не происходит (по умол­
чанию).
conv=t[ext] Для всех файлов выполняются преобразования
символов конца строки между форматами DOS
и UNIX.
conv=a[uto] Преобразование производится для всех файлов,
кроме имеющих расширения, перечисленные в на­
чале /usr/src/linux/fs/fat/misc. с.
codepage=xxx Выбрать кодовую страницу (например, 866) для
перекодировки символов в именах файлов на сто­
роне DOS/W indows.
debug Отладочная информация при монтировании.
fat=nn Тип файловой системы (12,16 или 32). Определя­
ется автоматически.
quiet Попытки изменять U N IX -атрибуты файлов не
возвращают ошибок, хотя и не срабатывают.
cvf_format=xxx Выбрать один из модулей, поддерживающих сжа­
тые D O S-диски, в обход автодетектирования.
cvf_option=xxx Опции, передаваемые CVF-модулю.
Опции, действительные только для vfat (Windows 95; все опции
для fat также поддерживаются):
uni_xlate Заменять Unicode-символы, которые нельзя пре­
образовать в обычные, специальными последова­
тельностями. В этом случае можно скопировать
Управление файловыми системами 215

такой файл на UNIX-систему и затем обратно, не


изменив его названия. При отсутствии этой опции
непреобразуемые символы заменяются вопроси­
тельными знаками.
iocharset=xxx Кодировка символов в Linux (например, KOI8-R),
в /и з которой происходит преобразование при ко­
пировании файлов.
utf 8 Если не указано значение uni_xlate, Unicode-сим-
волы в именах файлов Windows так и остаются
Unicode-символами.
posix Разрешает создание двух файлов с именами, отли­
чающимися только регистром букв. С точки зре­
ния Windows такие имена неотличимы.
nonumtail Создавать короткое имя файла без окончания ~1.
Опции, действительные только для ntfs (Windows NT):
iocharset=xxx Кодировка, в которой возвращаются имена ф ай­
лов при чтении их с ntfs (например, KOI8-R).
utf8 Переносить имена файлов как есть, в Unicode.
uni xlate=n Значения п=0 (или по или false) и п=1 (или yes
или true) совпадают по действию с аналогичной
опцией для vfat. Значение п=2 отменяет специаль­
ные последовательности для неперекодируемых
символов.
posix=n Если выбрано значение n=l, Linux может создавать
разные файлы, имена которых отличаются только
регистром букв, а сокращенные имена (в D O S-
формате) изображаются как жесткие ссылки.
uid=n, gid=n, Установить владельца и права доступа ко всем
umask=nnn файлам в системе (по умолчанию владельцем яв­
ляется root, и никто другой не может даже читать
файлы).
Опции, действительные только для iso9660 (CD-ROM ):
norock Отключить расширение Rock Ridge. Если диск
был записан с этим расширением, его файловая
система неотличима от обычной системы UNIX.
Без него она построена как msdos (имена файлов
длиной 8 символов, отсутствуют владельцы и пра­
ва и т.д.).
map=n[ormal], При отключенном Rock Ridge выполнять (normal,
map=o[ff] по умолчанию) или не выполнять (off) преобра­
зование имен к строчным буквам с отбрасывани­
ем суффикса “1.
216 Базовые понятия об администрировании

check=r[elaxed] При отключенном Rock Ridge и map=n преобразо-


check=s[trict] вывать имя файла к строчным буквам до (relaxed)
или после (по умолчанию strict) чтения диска.
uid=n и gid=n Использовать эти ID владельца и группы для всех
файлов, даже если включено расширение Rock
Ridge.
mode=n При отключенном Rock Ridge использовать дан­
ные права доступа для всех файлов (по умолчанию
чтение разрешено всем),
unhide Показывать скрытые и ассоциированные файлы.
block=n Установить размер блока (512, 1024 (по умолча­
нию) или 2048 байт),
с ruf t Не учитывать старший байт длины файла, если он
содержит неверное значение. При этом ни один
файл не может быть длиннее 16 Мб. Устанавлива­
ется автоматически, если объем CD оказывается
отрицательным или большим 800 Мб.
Опции, действительные только для nfs (сетевой файловой системы).
Здесь можно задавать множество опций, подробно описанных
в man 5 nfs. Рассмотрим наиболее полезные:
rsize=8192, Число байт, пересылаемых за один раз при чтении
wsize=8192 и записи соответственно. По умолчанию исполь­
зуется 1024, но при 8192 значительно ускоряется
работа.
hard При потере связи с N F S -сервером программы
будут находиться в состоянии непрерываемого
ожидания, пока связь не восстановится, после
чего их работа продолжится как обычно (по умол­
чанию).
int г Разрешить прерывание файловых операций с NFS-
системой, смонтированной с опцией hard,
soft Если NFS-сервер не отвечает, соединения с ним
разрываются при наступлении большого тайм-аута.
timeo=n Период, в десятых долях секунды, через который
наступает малый тайм-аут (по умолчанию п=7).
retrans=n Число малых тайм-аутов и пересылок, составля­
ющих большой тайм-аут (по умолчанию п=3).
nolock Не использовать блокировку.
При монтировании некоторых файловых систем команда mount может исполь­
зовать специальные формы аргументов. Например, для сетевой файловой систе­
мы NFS вместо имени устройства записывается адрес сервера и каталог на нем,
разделенные двоеточием:
Управление файловыми системами 217

mount server:/usr/local/pub /pub \


-t nfs -o rsize=8192,wsize=8192,timeo=14,intr
a для системы SMB перед именем сервера указывают двойную обратную дробь:
mount //windows-server/c /mnt/win -t smbfs
Еще один способ использования команды mount - монтирование файловой сис­
темы, образ которой находится в файле. Для этого используется специальная оп­
ция loop:
mount /tmp/fdimage /mnt -t msdos \
-o loop=/dev/loop3,blocksize=1024
Здесь устройство /dev/loop3 - любое незанятое устройство типа /dev/loop*,
предназначенное именно для такой операции.
Если команда mount в вашей системе не поддерживает что-то из перечисленно­
го (например, FAT32 или NTFS), возьмите более новую версию этой и других сис­
темных утилит (от fdisk и mkfs до hexdump), например, для Linux - по адресу ftp:I I
ftp.w in.tue.nl/pub /lin u x / u tils/ util-linux. Существует также большое количест­
во отдельных модулей, позволяющих монтировать другие файловые системы
(см. http://freshm eat.net/appindex/console/filesystem s.htm ly
Для обратной операции - демонтирования любой файловой системы исполь­
зуется команда umount.
umount [-nrv] устройство \ каталог [..]
Все указанные устройства или каталоги демонтируются. При этом будет выда­
на ошибка (device busy), если существует какой-то процесс, который держит от­
крытым хотя бы один файл в этой системе. В частности, если у какого-нибудь
пользователя текущим в данный момент является один из каталогов на демонти­
руемой системе.
Допустимые опции:
-V Подробный вывод.
-п Не вносить изменения в /etc/mtab.
- г Если не удается демонтировать файловую систему, попытаться перемонти­
ровать ее в режим только для чтения.
Можно также вызвать команду umount сразу для нескольких систем из /etc/
mtab:
umount -а [-nrv] [-t тип ]
Опция -а приводит к тому, что umount пытается демонтировать по очереди все
системы из /etc/mtab, кроме /ргос. Дополнительная опция -t с указанием типа
позволяет ограничиться только файловыми системами указанного типа (или ти­
пов, так как можно через запятую указать несколько).

4.3.3. Автоматическое монтирование


Чтобы воспользоваться дискетой или компакт-диском, в системе Linux (в ее стан­
дартном варианте) требуется каждый раз набирать команду вида:
218 Базовые понятия об администрировании

mount -t vfat /dev/fdO /mnt/a


mount -t iso9660 /dev/cdrom /cdrom
или просто
mount /mnt/a
mount /cdrom
если соответствующие строки были прописаны в файле /etc/fstab. Кроме того,
надо обязательно выполнять команду umount перед тем, как вынуть дискету. Из-за
того, что все файловые операции буферизируются, вынув дискету преждевремен­
но, можно разрушить файловую систему. CD -диск в большинстве дисководов CD-
ROM блокируется, так что команду umount в любом случае придется выполнить.
Решения этой проблемы существуют в виде большого числа автомонтировщи­
ков (automounter), которые позволяют, в первую очередь, монтировать и демонти­
ровать CD. Наиболее продвинутая система автоматического монтирования, соз­
данная специально для Linux (хотя и в подражание существующей системе,
принятой в SunOS), - это autofs, поддержка которой частично включена в ядро.
Если в ваш дистрибутив не входит autofs, его исходные тексты можно найти на
ftp://ftp.ru.kern el.o rg /p u b /lin u x /d aem o n s/au to fs/· С помощью autofs мгновенно
выполняется монтирование таких систем, как дискеты, CD, сетевые диски при по­
пытке обращения к ним и автоматическое демонтирование при отсутствии обра­
щений в течение заданного времени.
Чтобы установить autofs, распакуйте дистрибутив, например, командой
tar zxvf autofs-3.1.3.tar.gz
перейдите в его каталог и выполните автоматическую конфигурацию и компиляцию:
cd autofs-3.1.З
./configure
make
make install

Кроме этого, необходимо включить поддержку autofs в ядре, если это не было
сделано при последней конфигурации ядра. Выполните команды
cd /usr/src/linux
make menuconfig
Отметьте пункт Filesystems => Kernel automounter support, после чего собери­
те и установите ядро как обычно (см. раздел 5.1).
Файл samples/rc. autofs можно поместить в подходящий каталог и вызывать
с параметром start из одного из сценариев при загрузке системы. В дистрибути­
вах типа Red H at это достигается просто помещением rc. autofs в /etc/init. d/.
После того как autofs установлен, надо создать главный файл конфигурации,
/etc/auto.maste г, в котором перечисляются точки монтирования и файлы, в кото­
рых описывается файловая система для каждой точки. Например:
/mnt /etc/auto.misc
Каждое обращ ение к /mnt приведет к срабаты ванию системы autofs
с конфигурационным файлом /etc/auto. misc. Его содержимое имеет вид:
подкаталог опции : устройство
Управление файловыми системами 219

где подкаталог (в нашем примере /mnt) станет точкой монтирования. Опции пере­
даются команде mount (кроме типа файловой системы, для которого требуется ука­
зание f stype,) устройство именуется так, как его использует mount, с дополнитель­
ным двоеточием в начале, например:
cd -fstype=iso9660, го :/dev/cdrom
a -fstype=auto :/dev/fdO
win -fstype=smbfs ://win/с

С таким файлом конфигурации компакт-диск будет автоматически монтиро­


ваться в каталог /mnt/cd, дискета - в /mnt/a, а диск С с компьютера под управле­
нием Windows в локальной сети - в каталог /mnt/win.
Существует множество других программ с аналогичными целями - например,
auto run (http://w w w .delix.de/~harald/index.htm l#autorun). автоматически монти­
рующий и демонтирующий CD или lasteject (http://hom e.pages.de/~stesch/stuff/
lasteject /lasteject.h tm h . демонтирующий все CD при выключении системы, но
практически все их возможности - лишь часть возможностей программы autofs.
Единственная программа, которая по своим возможностям обходит autofs, и на­
много, - это amd (теперь am-utils), система автоматического монтирования из BSD,
которая была перенесена на огромное число систем включая все модификации
Linux. Возможно, ее функциональность намного превосходит то, что вам потребу­
ется, - автор занимался исследованиями вариантов управления файловыми сис­
темами для своей диссертации и перегрузил amd огромным количеством редко
используемых возможностей. Впрочем, они могут быть удалены из программы
в будущих версиях.
Домашняя страница am-utils - http://w w w .cs.Columbia. edu/~ ezk /am -utils. Для
его компиляции и установки достаточно выполнить команды
CFLAGS=-02 ./configure
make
make install

В первую очередь программа amd ориентирована на большие гетерогенные ком­


пьютерные сети, где она может предложить унифицированный межплатформен-
ный механизм доступа к совершенно разным файловым системам, расположен­
ным на разных компьютерах. На любой UNIX-системе amd предоставляет один
и тот же интерфейс, и где бы в сети ни находились файловые системы, в простран­
стве имен данного компьютера файлы будут видны под одними и теми же имена­
ми. В простых случаях для Linux на единственном компьютере лучше подходит
autofs. В частности, при работе с дискетами amd может использовать только фор­
мат файловой системы msdos.

4.3.4. Создание и настройка файловых систем


Для создания файловой системы на разделе диска (или на любом другом блочном
устройстве) используется команда форматирования mkfs.
mkfs [-V] [-t тип] [опции] система [размер]
220 Базовые понятия об администрировании

Система задается именем устройства или каталога, в который смонтирована


форматируемая система. При запуске mkfs в Linux управление фактически пере­
дается одной из программ типа mkfs . тип, то есть, например, mkfs . ext2 для системы
типа ext2fs и mkfs. msdos для типа msdos. При этом все указанные опции и аргу­
менты после задания типа передаются этой программе непосредственно. Аргумент
размер в блоках используется некоторыми из таких программ mkfs. тип, которые
не способны определить размер автоматически.
Опции для системы типа msdos (то есть для программы mkfs. msdos):
-с Проверять систему по ходу создания.
-f η Число копий FAT (от 1 до 4).
-F η Размер FAT (12, 16 или 32).
-і η Идентификатор диска в виде шестнадцатеричного числа.
-1 файл Имя файла со списком блоков, которые надо отметить как плохие.
-m файл Имя файла с текстом, который будет выдаваться в момент за­
грузки.
-η X X X Название диска (метка тома).
-г η Число элементов в корневом каталоге (только для FAT 12
и FAT 16).
-s η Число секторов в кластере (2, 4, 8, 16, 32, 64 или 128).
-v Подробный вывод.
Опции для системы типа ext2fs (то есть для программы mke2fs (ftp ://tsx -
11 ■m it.edu/pub/linux/packages/ext2fsl которая и помещается в файл /s b in /
mkfs. ext2 в Linux)

-b число Размер блока в байтах.


-f число Размер фрагмента в байтах.
-с Выполнять проверку на сбойные блоки.
-і число Число байт на один Inode. По умолчанию 4096, не может быть
меньше 1024.
-1 файл Прочитать список сбойных блоков из указанного файла.
-m число Размер зарезервированной области в процентах (по умолча­
нию 5%).
-о система Изменить содержимое поля Creator OS (операционная систе­
ма создания).
-q Не выводить информации на экран (например, для запуска из
файла сценария).
-v Выводить дополнительную информацию на экран.
-s 0 1 1 Установить (1) или отменить (0) режим sparse superblock (раз­
реженный суперблок) для хранения на файловой системе
меньшего числа копий суперблока. Поддерживается правиль­
но только начиная с версии ядра Linux 2.2.
-F Выполнять форматирование, даже если в качестве аргумента
указано не блочное устройство.
-L слово Установить название системы (метку тома) - не больше 16 сим­
волов.
Управление файловыми системами 221

ка тало г У становить каталог, в котором последний раз монтировали сис­


тему, что может быть полезно для утилит, которые используют
это поле.
-г ч и с л о Установить номер модификации системы (ядра серии 1.2 под­
держивают только номер модификации 0).
-R о п ц и и Установить дополнительные опции для RAID-массивов.
-S Выполнить инициализацию суперблока и дескрипторов групп,
не затрагивая остальную информацию. Это можно использо­
вать для восстановления системы, в которой поврежден супер­
блок и все его копии, если сразу после mke2fs -S выполнить
e2fsck.
-V Вывести номер версии и завершить работу.
В файловой системе ext2fs существует определенное количество параметров,
которые можно изменить в любое время при помощи утилиты tune2fs:
tune2fs опции устройство
В качестве параметра устройство может быть указан только файл блочного
устройства, содержащий файловую систему. Более того, модифицировать на­
стройки файловой системы, если она в настоящий момент смонтирована, нельзя.
Допустимые опции:
-1 Вывести содержимое суперблока и завершить работу.
-с число Число монтирований между автоматическими проверками
файловой системы.
-С число Изменить значение счетчика числа монтирований системы.
-і число [d|m|w] Максимальное время между автоматическими проверками
файловой системы. Единицы измерения: d - дни, m - месяцы,
w - недели.
-е continue Продолжить работу при обнаружении ошибок.
-е remount-ro Перемонтировать систему в режим только для чтения.
-е panic Немедленно остановить Linux при обнаружении ошибок.
-пн число Объем зарезервированной области файловой системы в про­
центах.
-г число Объем зарезервированной области файловой системы в блоках.
-д группа Идентификатор группы, которая может пользоваться зарезер­
вированной областью.
-и имя Имя или идентификатор пользователя, который может пользо­
ваться зарезервированной областью.
-S 1 или -s 0 Установить или отменить режим sparse superblock.
-L метка Установить имя системы (метку тома). В ext2fs длина метки
тома не может превышать 16 символов.
-и UUID Изменить поле UUID для системы. Можно использовать сло­
во null для создания пустого UUID, слово random для случайного
или указать конкретное значение, например, сгенерированное
утилитой uuidgen.
222 Базовые понятия об администрировании

-М каталог Изменить имя каталога, в который система была смонтирована


последний раз.
Последняя важная утилита для работы с файловыми системами - fsck (file­
system check - проверка файловой системы). Ее назначение аналогично програм­
мам CHKDISK или SCANDISK в D OS/W indows - проверка целостности и ис­
правление ошибок, обнаруженных в файловой системе.
fsck [опцииі] [ - t тип ] [опции2] система ...
Файловая система указывается либо как блочное устройство, которое ее содер­
жит, либо как каталог, в который она смонтирована. Так же, как и mkfs, эта про­
грамма запускает специализированную программу с именем fsck. тип, располо­
женную обычно в каталоге /sbin. Опции из группы опции2 будут переданы этой
специализированной программе, в то время как опции из первой группы относят­
ся к самой fsck и могут быть следующими:
-А Выполнить проверку сразу всех систем, присутствующих
в /e tc /fs ta b .
-R Работая в режиме -А, не проверять корневую файловую систему.
-Р Работая в режиме -А, проверять корневую файловую систему.
-Т Не выводить заголовок при запуске.
-V Подробно описывать все выполняемые действия.
-N Не выполнять реальной проверки, только показать, что будет
сделано. Имеет смысл в первую очередь с опцией -V.
-s Выполнять проверки файловых систем последовательно (по
умолчанию они выполняются параллельно, так как это приво­
дит к заметным выигрышам во времени, если системы распо­
лагаются на разных дисках).
Опции, специфичные для файловой системы ext2fs (то есть программы e2fsck):
-р Автоматически исправлять найденные ошибки.
-а То же, что и -р , для совместимости.
-Ь блок Использовать копию суперблока, расположенную в блоке
с указанным образом. Обычно суперблок копируется в каждый
8192-й блок: 1, 8193, 16385 и т.д.
-В число Число байт в блоке, обычно определяется автоматически.
-с Выполнять проверку на сбойные блоки.
-1 файл Добавить список сбойных блоков к уже существующему в фай­
ловой системе, прочитав его из указанного файла.
-L файл Очистить список сбойных блоков, полностью заменив его
списком из файла.
-С число Выводить информацию в указанный файловый дескриптор.
Имеет смысл для программ, вызывающих fsck, хотя если ука­
зать опцию - С 0, в ходе работы будет изображаться вращ а­
ющийся символ.
-d Отладочная информация.
Управление файловыми системами 223

-f Выполнять проверку, даже если система помечена как несодер­


жащая ошибок.
-F Сбросить файловые буферы перед началом работы, имеет
смысл только для опции -t.
-t Выполнить замеры временных характеристик системы. О п­
ция - t t увеличивает количество тестов.
-п Открыть файловую систему только для чтения и считать, что
на все вопросы пользователь вводит ответ по.
-у Считать, что на все вопросы пользователь вводит ответ y e s .
-s Изменение порядка байтов в файловой системе из big-endian
(использующегося на H e-Intel платформах) в little-en d ian (ис­
пользующегося на In tel), но не наоборот.
-S Изменение порядка байтов в файловой системе.
-V Более подробный вывод.

4.3.4. Получение информации о файловых системах


Помимо mount без параметров, предоставляющих список смонтированных в на­
стоящий момент файловых систем, в любой UNIX-системе есть команда df (disk
free - свободный диск), которая выводит не только список систем, но и статисти­
ку по занятому и свободному месту на них.
Так, команда df без параметров выводит информацию следующего вида: имя
устройства, размер файловой системы в блоках, число занятых блоков, число сво­
бодных блоков, занятая область в процентах, точка монтирования. Например:
gummadoon:“$ df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/hda4 2051167 353914 1591224 18% /

Размер одного блока - 1024 байта, если не установлена переменная среды


POSIXLY_CORRECT. При обнаружении такой переменной размер блока -
512 байт, хотя его все равно можно изменить на более удобные 1024 при помощи
опции -к.
Полная форма этой команды позволяет указывать множество опций и одно или
несколько имен файлов. В этом случае df выведет информацию только о разде­
лах, в которых расположены указанные файлы. Версия GNU-df, используемая
в Linux, допускает следующие опции:
-k, --kilobytes Использовать блоки размером 1024 байта.
-m, --megabytes Использовать блоки размером 1 048 576 байт.
-Р, --portability Использовать формат вывода, оформленный
в стиле POSIX: только одна строка на файловую
систему.
-a, --all Включать в вывод файловые системы, имеющие
нулевой размер (пропускаются по умолчанию).
-h, --human-readable Выводить размер в более удобном формате, на­
пример 1.5G для 1,5 Гб или 789М для 789 Мб.
224 Базовые понятия об администрировании

-i, --inodes Выводить статистику по свободным/занятым уз­


лам inode, а не по блокам.
-no-sync Не выполнять системный вызов sync() перед сбо­
ром статистики.
-sync Выполнять системный вызов syncQ перед сбо­
ром статистики.
-t тип, --Їуре=ти/7 Ограничить перечисление только файловыми сис­
темами указанного типа.
-X тип, --exclude-typ е=тип Не рассматривать файловые системы указанного
типа.
-Т, --print-type Выводить тип каждой файловой системы.
Существуют и другие аналоги программы df, например pydf (h ttp ://m e lk o r.
dnp.fmph.uniba.sk/~garabik/pydf/ ). выводящая эту же информацию в более удоб­
ном цветном формате, или различные графические утилиты.

4.3.5. Дисковые квоты


Во всех многопользовательских системах (да и в персональных тоже) рано или
поздно может случиться, что какой-то пользователь занял все место в файловой
системе и другие не в состоянии нормально работать. Более того, если перепол­
нить файловую систему, в которой находится каталог /tmp, очень многие програм­
мы не смогут создавать свои временные файлы и остановятся, а если на этом же
разделе находился каталог /var, система станет практически недееспособной. И с­
править ситуацию сможет только системный администратор, потому что в фай­
ловой системе ext2fs по умолчанию имеется 5% места, которое доступно только
пользователю root. Поэтому, во-первых, на многопользовательских системах сле­
дует размещать /var, /tmp и /home в разных разделах и, во-вторых, часто имеет
смысл ограничить объем дискового пространства, которое имеет право занять каж­
дый конкретный пользователь. Для этого существует механизм дисковых квот.
Квоты являются частью ядра Linux, поэтому если они не были включены в ва­
шем дистрибутиве, выполните команды
cd /usr/src/linux
make menuconfig
Отметьте пункт Filesystem s => Quota support, после чего соберите и установи­
те ядро как обычно (см раздел 5.1). Проверить, включены ли квоты в ядро, можно
при помощи команды quotastats, - в системе без поддержки квот она ничего не
выводит.
Чтобы включить квоты для файловой системы, необходимо создать файл
quota, user (для персональных) или quota, group (для групповых квот) и поместить
его в корневой каталог этой системы. Для первоначального создания этих файлов
предназначена утилита quotacheck. Эта программа сканирует указанную файло­
вую систему (или все, в случае опции -а) и создает файлы quota, user и quota, group
для всех пользователей и групп. Допускаются следующие опции:
quotacheck [-g] [-u] [-v] (раздел | -a)
Управление файловыми системами 225

-V Выводить дополнительную информацию в ходе работы.


-d Выводить отладочную информацию.
-и Сканировать диск и подсчитывать файлы и каталоги, используемые каж­
дым пользователем.
-д Сканировать диск и подсчитывать файлы и каталоги, используемые каж­
дой группой.
-а Сканировать все файловые системы, указанные в /etc/fstab.
-R Добавление к -а; в этом случае проверяются все файловые системы, кроме
корневой.
Выбор типа квот, которые будут создаваться, определяется опциями grpquota
(групповые), usrquota (пользовательские), noquota (без квот), указанными в фай­
ле /etc/fstab для сканируемой файловой системы. Опция defaults подразумева­
ет noquota.
Файлы квот являются бинарными, и для их редактирования используется дру­
гая программа - edquota:
edquota [-р прототип] [ -ug] (-t | имя...)
-и Редактировать пользовательские квоты (по умолчанию).
-д Редактировать групповые квоты.
-р Взять образец квот от пользователя с именем прототип.
-t Редактировать разрешенные времена превышения квот. Можно использо­
вать слова sec (секунда), min (минута), hour (час), day (день), week (неде­
ля), month (месяц).
В качестве редактора вызывается /us r/bin/vi или редактор, который вы укаже­
те в переменной среды EDITOR. Вы можете изменять слабые (soft) и сильные
(hard) квоты на размер занятой области в килобайтах (blocks) и на число файлов
(inodes). Пользователь может превысить слабую квоту на время, устанавливаемое
командой edquota -t (по умолчанию - 7 дней).
После того как все необходимые квоты настроены, можно выполнить команду
quotaon для активизации этих настроек. Обычно используется вариант этой ко­
манды - quotaon -а, помещаемый в стартовые сценарии системы в паре с коман­
дой quotaoff -а в сценарии остановки системы.
quotaon [-vug] (-а | система...)
quotaoff [-vug] (-а | система...)
Возможны следующие опции:
-а Квоты для всех файловых систем из /etc/fstab будут включены или вык­
лючены.
-V Выводить сообщение для каждой обрабатываемой файловой системы.
-и Работать с пользовательскими квотами (по умолчанию).
-а Работать с групповыми квотами.

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


команды quota, например:
226 Базовые понятия об администрировании

gummadoon:“$ quota
Disk quotas for user cubbi (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 4546* 4000 10000 7days 202 0 0

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


время, указанное в поле grace. Число в поле limit превысить нельзя. Число бло­
ков (занятое пользователем дисковое пространство) в этом примере превышает
квоту и поэтому отмечено звездочкой.
Только системный администратор может проверять квоты, установленные для
других пользователей.

4.4. Установка пакетов


Все основные дистрибутивы Linux используют идею пакетов (packages). Пакет
содержит набор файлов, комментарии, файлы сценариев, информацию о том, ка­
кие дополнительные пакеты необходимы для нормальной работы (зависимос­
ти), и т.п. Если интересующая вас программа доступна в виде пакета в формате,
поддерживаемом вашим дистрибутивом, достаточно одной команды для уста­
новки этой программы в систему. При этом, вероятно, не потребуется дополни­
тельного конфигурирования, чтобы приспособить программу к тонкостям на­
стройки вашей системы. Кроме того, программы, инсталлированные подобным
образом, можно и удалить одной командой, не оставив в системе ни одного лиш ­
него файла.

4.4.1. Пакеты RedHat


Red H at Linux и все дистрибутивы на его основе используют систему управле­
ния пакетами RPM (Red H at Package Manager), http://w w w .rpm .org. Это самая
продвинутая на сегодняшний день система управления пакетами в Linux, так что
многие устанавливаю т ее и на другие дистрибутивы. RPM позволяет легко
устанавливать и удалять пакеты, выполнять поиск различного вида по своей
базе данных - например, чтобы определить, к какому пакету относится конкрет­
ный файл или чтобы восстановить файл, который был ошибочно удален. При
переинсталляции и обновлении пакетов можно сохранять конфигурационные
файлы, так что в дальнейшем пользователь оказывается в знакомом окружении.
Систему, основанную на RPM целиком, никогда не придется переустанавливать,
так как все переходы от версии к версии можно осуществить с помощью про­
стых обновлений.
Работать с RPM можно как и из командной строки, используя команду rpm, так
и при помощи Х-программы GLINT (GnoRPM начиная с RedHAT 6.0), предос­
тавляющей удобный графический интерфейс. Программа GnoRPM является при­
ложением для рабочего стола GNOME, на который делает ставку Red Hat, в отли­
чие от KDE, используемого в большинстве других дистрибутивов.
Команду rpm можно вызвать в одном из десяти режимов: инсталляция, запрос,
проверка, проверка подписи, деинсталляция, создание, перестройка базы данных,
Установка пакетов 227

исправление прав доступа, исправление владельцев и групп, вывод используемого


RC-файла. Мы рассмотрим подробно только три режима - удаление пакета из си­
стемы (деинсталляцию), установку в систему (инсталляцию) и создание, так
как они поддерживаются другими рассматриваемыми системами, возможности
которых гораздо более ограничены.
Для всех рассматриваемых режимов работы программы rpm действительны
следующие опции:
-v Вывод дополнительной информации.
-W Вывод дополнительной и отладочной информации.
-keep-temps Не удалять временные файлы из /tmp (требуется только при
отладке RPM ).
-quiet Не выводить ничего, кроме сообщений об ошибках.
-rcfile файл Использовать указанный файл вместо /etc/rpmrc.
- root каталог Использовать файловую систему, смонтированную в указан­
ном каталоге для всех операций.
-dbpath путь Использовать базу данных RPM, расположенную по указан­
ному пути.
-help, --version Стандартные GNU-опции, подсказка и номер версии.
Принятый формат имени пакета в RPM имеет вид:
им я-версия-м одиф икация, архитектура, rpm

Например, koules-1.2-2. І386. rpm - это пакет koules версии 1.2, номер модифи­
кации 2. Он скомпилирован для архитектуры І386 (то есть для всех Intel-систем,
на которых работает Linux). Под номером модификации обычно имеется в виду
число изменений (patch-файлов), добавленных к оригинальным исходным тек­
стам koules 1.2 для того, чтобы создать этот пакет. Вместо указания конкретной
архитектуры может быть использовано слово noarch, означающее, что пакет не
привязан к какой-либо архитектуре (данные, документация и т.п.), и слово src,
означающее, что данный пакет содержит исходные тексты.
Пакеты с исходными текстами, так называемые SRPM (source RPM ), особенно
интересны. Согласно концепции, принятой в Red Hat, все исходные тексты поме­
щаются в пакет без малейших модификаций, в точности в том виде, в котором их
распространяет автор (концепция «pristine source» - нетронутый исходный
текст). Дополнительные изменения, которые пришлось сделать в Red H at для
того, чтобы программа успешно компилировалась, оформляются в виде patch-
файлов. Они вместе с исходными текстами помещаются в пакет, содержащий так­
же инструкции для RPM по инсталляции (какие patch-файлы использовать на
данной системе, какие команды вызывать для компиляции и т.д.). Таким образом,
если выходит новая версия программы, не нужно ждать создания RPM и включения
его в дистрибутив: в большинстве случаев patch-файлы старой версии будут дей­
ствительны для новой и все конфигурационные настройки по-прежнему будут
правильно подобраны.
228 Базовые понятия об администрировании

4.4.1.1. Удаление пакетов


Для удаления пакета или нескольких пакетов в системе RPM используется оп­
ция -е:
грпл -е [опции] пакет ...
При этом не удаляются файлы, используемые другими установленными паке­
тами, и все файлы, отмеченные в пакете как конфигурационные, переименовыва­
ются, получая окончание . rpmsave.
Существуют специализированные опции, действующие только в режиме деин­
сталляции:
-allmatches Удалить все версии пакета.
-noscripts Не выполнять сценарии preuninstall и postuninstall.
-notriggers Не запускать программы, которые пытается запустить этот па­
кет при удалении.
-nodeps Не проверять зависимости перед удалением пакета.
-test Ничего реально не делать, только показать, что будет сделано
данной командой.

4.4.1.2. Установка пакетов


Инсталляция пакета (или пакетов) производится при помощи опции - і :
rpm -і [опции] пакет .. .
Для обновления уже установленного R PM -пакета используется команда ана­
логичной записи, но вместо опции - і указывается -U:
rpm -U [опции] пакет .. .
Специальные опции, действующие только в режиме инсталляции:
-oldpackage Позволить замену более нового пакета на более старый (для -U).
-replacefiles Инсталлировать пакет, даже если это действие уничтожает фай­
лы, установленные другими пакетами.
-replacepkgs Устанавливать пакет, даже если он уже присутствует в системе.
-nodeps Не проверять зависимости перед установкой нового пакета.
-force То же, что -replacepkgs, -replacefiles и -oldpackage одновре­
менно.
-h, -hash Выводить отметки по ходу инсталляции каждые два процента
от общего размера устанавливаемого пакета. Хорошо сочетает­
ся с опцией - V .
-percent Выводить проценты по ходу распаковки файлов из архива.
-allfiles Устанавливать (или обновлять) все файлы, отмеченные в паке­
те как missingok (то есть файлы, которые могут отсутствовать),
не обращая внимание на то, существуют ли они в действитель­
ности.
-noscripts Не выполнять сценарии preinstall и postinstall.
Установка пакетов 229

-notriggers Не запускать программы, которые пакет пытается запустить


автоматически после инсталляции.
-excludedocs Не устанавливать файлы документации (включая даже т а п -
страницы).
-includedocs Устанавливать файлы документации (если режим excludedocs
включен в файле /etc/гpm гс).
- te s t Не устанавливать пакет, только проверить на возникновение кон­
фликтов, возможных в случае его инсталляции.
-р refix путь Указывает инсталляционный путь для перемещаемых пакетов,
-ignorearch Выполнять инсталляцию или обновление, даже если пакет со­
бран в системе с другой архитектурой.
-ignoreos Выполнять инсталляцию или обновление, даже если пакет со­
бран в другой операционной системе.
Очень важно, что в качестве имени пакета можно указать не только файл, до­
ступный в файловой системе:
rpm -i foobar-1.0-1.І386.rpm

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


протоколу FTP:
rpm -і ftp://bar.com/pub/redhat/RPMS/foobar-1.0-1.i386.rpm

Для работы с FTP существуют еще две дополнительные опции:


-ftpproxy прокси Имя компьютера в сети, который служит в качестве
ргоху-сервера.
-ftpport порт Использовать указанный порт вместо стандартного (21).

4.4.1.3. Создание пакетов


Чтобы создать RPM, требуются исходные тексты пакета в том виде, в котором они
распространяются автором. Все изменения, которые вы вносили, следует офор­
мить в виде patch-файлов при помощи команды diff . После этого надо построить
spec-файл, специфицирующий процесс компиляции и установки пакета для RPM.
Однако в первую очередь следует построить файл /etc/rpm гс так, чтобы он пра­
вильно описывал вашу систему. Команда rpm --showrc покажет, какие дескрипто­
ры могут в него входить и какие значения они имеют сейчас.
Файл /etc/rpm гс может иметь такой вид:
require_vendor: 1
vendor: Cubbisoft
packager: Cubbi <cubbi@comp.chem.msu.su>
require_distribution: 1
distribution: Cubbi’s own
topdir: /usr/src/me
230 Базовые понятия об администрировании

Строки vendor, packager и distribution могут содержать что угодно и использу­


ются только для организации дистрибутива.
optflags: І386 -02 -m486
optflags: alpha -02

Здесь указываются флаги, с которыми вызывается компилятор дсс при созда­


нии пакета для разных архитектур (І386 и alpha в примере)
signature: pgp
pgp_name: Cubbi
pgp_path: /home/cubbi/.pgp

Электронная подпись позволит удостовериться, что пакет не был модифици­


рован после того, как вы его выпустили.
Второй необходимый файл - это spec-файл. Он содержит подробные инструк­
ции по компиляции и список создаваемых файлов. Название spec-файла похоже
на название rpm -пакета: название-версия-модификация. spec. Рассмотрим для при­
мера файл eject-1.4-3. spec:
Summary: ejects ejectable media and controls auto ejection
Краткое (одна строка) описание пакета.
Name: eject
Имя пакета (первая часть названия файла).
Version: 1.4
Версия (вторая часть названия файла).
Release: 3
Номер модификации (третья часть названия файла).
Copyright: GPL
Права, на которых распространяется пакет (GPL, BSD, MIT, Artistic License,
public domain, commercial и т.д.).
Group: Utilities/System
Группа, к которой относится пакет. Список групп можно увидеть, запустив
программу glint (gnorpm).
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
Адрес в интернете, по которому можно найти используемые в пакете ис­
ходные тексты в оригинальном формате. Имя файла в конце этой строки
обязательно должно совпадать с именем файла на диске в подкатало­
ге SOURCES. Можно указать несколько адресов, используя строки SourceO,
Sou reel и т.д.

Icon: eject.gif
Иконка для программ управления пакетами (например, glint). Должна быть
файлом в формате GIF и располагаться в подкаталоге SOURCES.
Установка пакетов 231

Patch: eject-1.4-make.patch
Patchl: eject-1.4-jaz.patch
Имена файлов с внесенными вами модификациями, расположенных в под­
каталоге SOURCES.
Buildroot: /tmp/rpm-testing
Корневой каталог для установки - его можно использовать для тестиро­
вания.
На этом заканчивается заголовок spec-файла. Следующая его часть разделена
на секции. Начало каждой секции отмечается знаком %.
%description
Секция %description содержит полное описание назначения пакета.
This program allows the user to eject media that is autoejecting like CD-ROMs,
Jaz and Zip drives, and floppy drives on SPARC machines.
%prep
Секция эта содержит сценарии и макросы, описывающие подготовку исход­
ных текстов к компиляции. Здесь можно вписать обычный сценарий для
shell, но в большинстве случаев удается обойтись встроенными макроопре­
делениями, как в этом примере.
%setup
Макроопределение, распаковывающее исходные тексты и выполняющее ко­
манду cd, чтобы перейти в тот каталог, куда они попадают.
Если имя этого каталога (вписанное автором исходных текстов в ta r-файл),
отличается от формата пакет-версия, его надо явно задать с помощью оп­
ц и и -n(%setup -n eject).
Если файлы были включены в архив без создания отдельного каталога для
них, команда setup с заданной опцией -с создаст каталог в формате пакет-
версия, выполнит cd в этот каталог и уже там распакует архив.
При задании опции -b N будет распакован архив, описанный в строке Source,
и выполнен переход в созданный каталог (аналогично -п).
При задании опции -а N будет создан каталог и выполнен переход в него; пос­
ле этого будет распакован архив, указанный в строке Sou гее (аналогично -с).
Опция -Т также используется в случае нескольких исходных архивов. Она
отменяет распаковку первого архива по умолчанию, так что для проведения
последней потребуется задать опцию -Ь 0 или -а 0.
Задание опции -D отменяет удаление каталога (если он существует) перед
распаковкой.
%patch -р1
%patch1 -р1
Макроопределение %patch автоматизирует процесс применения patch-фай -
лов к распакованным исходным текстам. Число сразу после слова patch
232 Базовые понятия об администрировании

у к а з ы в а е т н о м е р ф а й л а (то есть %patch у с т а н а в л и в а е т ф а й л из с т р о к и


Patch:, %patch1 - из Patch 1: и т.д.). Э т о ч и с л о м о ж н о указать и по сл е п р о б е ­
ла (%patch 1).
Опция -pN передается команде patch и указывает, сколько элементов пути
к файлу следует пропустить.
%build
Это секция компиляции пакета. Здесь нет специальных макроопределений,
так что нужно просто указать команды, необходимые для выполнения ком­
пиляции. Обычно это make, make all, make everything и т.п.
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"

%install
Данная секция содержит команды, устанавливающие скомпилированные
файлы в соответствующие места в файловой системе. Это может быть
make install или, как в этом примере, обычный сценарий shell.

install -s -m 755 -о 0 -g 0 eject /usr/bin/eject


install -m 644 -о 0 -g 0 eject.1 /usr/man/man1

Здесь можно описать еще до четырех секций, содержащих сценарии shell,


выполняющиеся автоматически при инсталляции и деинсталляции пакета:
- %р ге содержит сценарий, выполняющийся сразу перед инсталляцией (на­
пример, командой rpm -і);
- %post содержит сценарий, выполняющийся сразу после инсталляции (на­
пример, команда ldconf ig после установки новых библиотек);
- %ргеип содержит сценарий, выполняющийся сразу перед удалением пакета;
- %postun содержит сценарий, выполняющийся сразу после удаления пакета.

%files
Секция, содержащая список файлов, которые были установлены в секции
%install, так как RPM никак не может проследить за этим. В этот список
нельзя включать каталоги.
/usr/bin/eject
/us r/man/man1/ej eet.1

Кроме этого списка здесь указываются некоторые дополнительные макросы:


%doc README COPYING ChangeLog
После слова %doc перечисляются файлы, относящиеся к документации. При уста­
новке пакета они будут помещены в каталог /usr/doc/пакет-версия-модификация.
- макроопределение %conf ig перечисляет файлы конфигурации. Они будут
сохранены при деинсталляции пакета, если в них были произведены из­
менения.
- макроопределение %di г позволяет указать имя каталога входящим в спи­
сок файлов. Если включить каталог в список файлов напрямую, все его
содержимое будет считаться частью пакета.
Установка пакетов 233

- макроопределение %f iles - f файл позволяет включить список установ­


ленных файлов, перечисленный в отдельном внешнем файле.

В каталоге, описанном как topdir:, в /etc/rpm гс надо создать следующие подка­


талоги:
BUILD/ В этом каталоге RPM будет осуществлять компиляцию.
SOURCES/ Здесь вы должны поместить архивы, исходные тексты и свои
модификации к ним.
SPECS/ Предназначен для размещения всех spec-файлов.
RPMS/ В этом каталоге RPM будет помещать готовые бинарные пакеты.
SRPMS/ Здесь RPM будет хранить готовые пакеты исходных текстов.
Чтобы правильно построить patch-файлы, рекомендуется проводить компиля­
цию следующим образом:
1. Распакуйте исходные тексты.
2. Переименуйте каталог с ними в каталог . о rig.
3. Распакуйте исходные тексты еще раз.
4. Перейдите в каталог и выполните все необходимые действия по конфигура­
ции и компиляции, внося любые необходимые изменения (см. раздел 4.5).
5. После успешной компиляции выполните команды make clean, make dist-
clean и дополнительно проверьте, что все файлы, созданные при компиля­
ции, удалены.
6. Вернитесь в вышележащий каталог и выполните следующую команду:
diff -uNr ка т а ло г .о rig каталог > ../SOURCES/катало г - п р и чина. patch

Это создаст patch-файл, который можно будет использовать в пакете. Имя ка­
талога-причины принято выбирать так, чтобы кратко объяснить суть модифика­
ции, например linux, если исходная программа была создана для другой операци­
онной системы, или make, если вы вносили коррективы в Makefile.
Чтобы создать R PM -пакеты, после того как проделано все вышеописанное, дос­
таточно выполнить команду
rpm -ba ф а й л .s p e c

Вместо -Ь можно использовать опцию -t, если spec-файлы хранятся в архиве


типа . ta г.gz или . ta г.Z.
Вместо второй буквы в этой опции (в данном случае а) могут быть указаны сле­
дующие:
1 Проверить, существуют ли файлы из секции %f iles.
р Выполнить только секцию % р rep.
с Выполнить секции %ргер и %build.
і Выполнить секции % р rep, %build и %install.
b Выполнить все секции и построить бинарный пакет.
а Выполнить все секции и построить бинарный пакет и пакет исходных текстов.
234 Базовые понятия об администрировании

Кроме того, можно задать дополнительные опции:


-short-circuit В случае -Ьс и -bi выполнять %build и %install соответственно,
пропуская предыдущие секции.
-timecheck Установить максимальный возраст пакуемых файлов в секун­
дах (это значение можно указать и в rpmrc).
-clean Очистить каталог BUILD после работы.
-rmsource Удалить исходные тексты и spec-файл.
-test Ничего реально не выполнять, полезно для проверки работо­
способности spec-файла.
-sign Подписать пакеты PGP (вам надо будет ввести парольную фра­
зу, которой зашифрован ваш ключ).
Если никто еще не создавал R PM -пакет для этой программы и если она разре­
шена для свободного распространения, вы можете поместить созданные пакеты
(после их тестирования) в каталог /incoming на сервере ftp://ftp.redhat.com .

4.4.1.4. Установка пакетов обычными средствами


Файл с пакетом RPM содержит заголовок с информацией, после которого все вхо­
дящие в пакет файлы записаны в виде архива cpio, упакованного при помощи gzip.
Заголовок имеет переменную длину, поэтому для того, чтобы выделить архив
вручную, надо найти байты OxlF 0x8В (начало gzip-архива) и сохранить остаток
файла (включая эти два байта). Полученный файл можно распаковать и разархи­
вировать с помощью cpio:
gzcat foobar.cpio.gz | cpio -i -d
Такой метод, очевидно, неудобен, поэтому существуют утилиты, преобразу­
ющие R PM -пакеты в другие форматы.
Вместе с самим RPM распространяется программа rpm2cpio, которая преобра­
зует rpm -пакет в неупакованный сріо-архив. Единственным аргументом является
имя файла, а сріо-архив выводится на stdout. Если никаких аргументов не указа­
но, rpm-пакет считывается со стандартного ввода. Таким образом, распаковать rpm
можно при помощи следующей команды:
rpm2cpio foobar-1.0-1.І386.rpm | cpio -i -d
В дистрибутив Slackware, использующий архиватор tar, входит другая утили­
та, rpm2tgz, которая преобразует R PM -пакет в tgz-архив, совместимый с форма­
том пакетов Slackware и обычными программами gzip и tar.
Фактически rpm2tgz - это сценарий для shell, который определяет размер заго­
ловка R PM -файла при помощи специальной программы rpmoffset, распаковыва­
ет получающийся сріо-архив и одновременно запаковывает его tar и сжимает gzip.
В результате создается файл с расширением . tgz в текущем каталоге. Если пере­
именовать rpm2tgz в rpm2targz (в Slackware этот сценарий устанавливается как
жесткая связь), то имя создаваемого архива будет заканчиваться на .tar. gz.
Эту утилиту можно установить, переписав из дистрибутива Slackware два файла:
ftp://ftp.cdrom .eom /pub/linux/slackw are-4.0/source/a/bin/rpm 2targz
и ftp://ftp.cdrom .eom /pub/linux/slackw are-4.0/source/a/bin/rpm offset.c·
Установка пакетов 235

Затем нужно скомпилировать rpmof fset:


gcc -о rpmoffset rpmoffset.с
установить права на исполнение сценария rpm2targz:
chmod 755 rpm2targz
и установить программы в систему:
op rpmoffset /usr/local/bin/
cp rpm2targz /usr/local/bin/
ln /usr/local/bin/rpm2targz /usr/local/bin/rpm2tgz

4.4.2. Пакеты Slackware


Пакет в дистритубиве Slackware представляет собой самый обычный сжатый tar-
архив с расширением . tgz, содержащий все файлы, входящие в пакет с полными
путями к ним (от корневого каталога) и сценарий /install/doinst.sh. Этот сцена­
рий выполняется сразу после распаковки архива и затем переносится в каталог
/var/adm/scripts. Обычно его роль сводится к созданию разного рода ссылок
и связей для установленных файлов и каталогов.
Кроме того, пакет может включать конфигурационный сценарий, имя которого
начинается со слова setup и который располагается в каталоге /var/adm/setup,
например, сценарий /var/adm/setup/setup. timeconfig, который устанавливает
местный часовой пояс. Этот сценарий будет запускаться программой setup при
конфигурации системы. Пакет может включать и одноразовый конфигурацион­
ный сценарий, также размещающийся в каталоге /var/adm/setup и начинающийся
со слова setup, но еще и содержащий в имени строку onlyonce, например, /var/
adm/setup/setup. onlyonce. testscript. Такой сценарий будет запущен после уста­
новки пакета и затем удален.
Файлы с описаниями установленных пакетов помещаются программой pkgtool
в каталог /var/adm/packages. Соответственно, все программы управления пакета­
ми проверяют содержимое этого каталога.

4.4.2.1. Удаление пакетов


Программа, удаляющая установленный пакет в Slackware, - removepkg. Достаточ­
но указать ей имя пакета (совпадающее с именем одного из файлов в /var/adm/
packages), чтобы все файлы и каталоги, входящие в этот пакет и не входящие ни
в один другой (из перечисленных в /var/adm/packages), были удалены. Список
файлов пакета будет перемещен в каталог /var/adm/removed_packages, а инсталля­
ционный сценарий - в /var/adm/removed_scripts.
В полной записи эта команда имеет следующий вид
removepkg [ -сору ] [ -keep ] [ -preserve ] [ -warn ] имя
Опция -warn запускает removepkg в таком режиме, в котором реально ничего не
удаляется, только имена файлов и ссылок, которые были бы удалены, выводятся
на экран.
Опция -preserve приводит к тому, что одновременно с удалением из системы весь
пакет вместе со всеми каталогами переносится в каталог /tmp/p rese rved_packages/^M«.
236 Базовые понятия об администрировании

Одновременное использование -preserve и -warn приводит просто к копированию


всего пакета в этот каталог, а для этого существует опция -сору.
Для отладочных целей сохранена также опция -keep, которая сохраняет все вре­
менные файлы, создаваемые и удаляемые по ходу работы removepkg: delete_list,
required_files,uniq_list, del_link_list, required_links, required_list.
Программа removepkg учитывает переменную среды ROOT, устанавливающую
имя каталога, который будет считаться корневым. С ее помощью можно удалить
пакет с другой файловой системы. Например, если система смонтирована в ката­
логе /mnt, команда removepkg может выглядеть так:
ROOT=/mnt removepkg пакет

Помимо removepkg можно также воспользоваться интерактивной программой


pkgtool, в которой для операций с пакетами используется система меню.

4.4.2.2. Установка пакетов


Установка пакета в Slackware Linux может быть осуществлена двумя путями - при
помощи специально предназначенной для этого утилиты installpkg или более об­
щей программы pkgtool.
Для инсталляции пакета или пакетов при помощи installpkg достаточно просто
указать их названия:
installpkg package.tgz
Будет установлен пакет, а также выполненые сценарии и созданы соответствую­
щие файлы в каталогах /var/adm/packages и /var/adm/scripts.
Кроме этого, используя опцию - г, можно установить дерево каталогов со всем
содержимым как один пакет. То есть, если вы распаковали какой-то пакет (не обя­
зательно из дистрибутива Slackware) не в корневой каталог, а в какой-нибудь спе­
циальный, команда installpkg -г пакет, вызванная из этого каталога, скопирует
все его содержимое в корневой и создаст список файлов в каталоге /var/adm/
packages /пакет.
Установка опции -warn, как и в случае программы removepkg, приводит к тому,
что никаких реальных действий не совершается, а на экран выводится список всех
файлов и каталогов, которые будут стерты при установке этого пакета.
Другая программа, pkgtool, вызывается при начальной инсталляции Slackware
для установки всех пакетов, входящих в дистрибутив. Она позволяет инсталли­
ровать, просматривать и удалять все существующие в системе пакеты при помо­
щи системы интерактивных меню (рис. 4.2).
Обычным пользователям не требуется передавать pkgtool какие-либо опции
в командной строке. Все они предназначены в первую очередь для программы
setup. Тем не менее, пользуясь ими, можно вызвать pkgtool в режиме, аналогич­
ном setup, для установки пакетов из дистрибутива Slackware напрямую.
-source_dir каталог Инсталлировать пакеты, находящиеся в подкаталогах
указанного каталога (не указывается при установке
с дискет).
Установка пакетов 237

rxvt

Welcome to the S l a c k w a r e p a c k a g e tool.

W h i c h o p t i o n w o u l d you l i k e ?

Curr e n t ^ I n s t all p a c k a g e s from the c u r r e n t d i r e c t o r y


I n s t a l l p a c k a g e s from so m e o t h e r d i r e c t o r y
I n s t a l l p a c k a g e s from f l o p p y di s k s
R e m o v e p a c k a g e s t h a t are c u r r e n t l y i n s t a l l e d
Vieui the li s t of f i l e s c o n t a i n e d in a p a c k a g e
Ex i t P k g t o o l

КCancel)

Рис. 4.2. Программа pkgtool

-targ et_ d ir каталог Устанавливать пакеты, считая корневым каталогом ука­


занный. Здесь указывается / при установке на ту же сис­
тему, с которой запущен pkgtool, и, например, /mnt при
установке пакетов на какую-то другую файловую систему.
-sets #A#B#C# Установить дисковые наборы Д В, С. Буквенные имена
наборов разделяются символами й.
-source mounted Не пытаться перемонтировать устройство, на котором
находится дистрибутив. Нужно использовать во всех
случаях, кроме установки с дискет.
-source_device файл Устройство, с которого выполняется установка, обычно
дисковод (/dev/fdO). Используется, только если не ука­
зана опция -sou rce_mounted.
-ig n o re_ tag files Игнорировать файлы tagfile (см. раздел 2.2.8) в катало­
гах с пакетами и устанавливать все файлы с расширени­
ем tgz без исключения.
-tag file файл Использовать указанный файл как tagfile для инсталляции.
В интерактивном режиме можно воспользоваться различными пунктами меню,
показанного на рис. 4.2.
Remove packages that are currently installed (Удаление уже установленных па­
кетов).
При выборе этого пункта pkgtool сканирует систему, составляя список установ­
ленных пакетов, и предлагает вам выбрать те, которые следует удалить. После
нажатия Ok выделенные пакеты удаляются с сохранением файлов, задействован­
ных хотя бы в одном из остающихся пакетов. Ф айлы из каталогов /var/adm /
238 Базовые понятия об администрировании

packages и /var/adm/scripts переносятся в каталоги /var/adm/removed_packages


и /var/adm/removed_scripts.
Install packages from floppy disks (Установка пакетов с дискет).
Здесь предлагается выбрать дисковод (1.44 Мб или 1.2 Мб, fdO или fd l) и ввес­
ти имена устанавливаемых дисковых наборов (или нажать Enter для установки
всех пакетов, находящихся на дискете). Программа будет автоматически демон­
тировать дискету по окончании установки и запрашивать новую.
Install packages from the current directory (Установка пакетов из текущего ка­
талога).
Устанавливаются пакеты из подкаталогов (с именами А1, А РІ, Б і й т.п.), кото­
рые должны содержать наборы файлов, аналогичные дисковым наборам из дист­
рибутива Slackware.
Install packages from some other directory (Установка пакетов из другого ката­
лога).
В этом пункте меню требуется ввести имя каталога на уже смонтированной
файловой системе, а в остальном его действие совпадает с предыдущим.
В ходе установки отслеживаются не упомянутые в файлах с перечнями пакетов
tgz-архивы и упомянутые, но в действительности отсутствующие, отслеживаются
испорченные пакеты и т.д., - все точно так же, как и при начальной инсталляции.
В Slackware 4.0 появилась отдельная утилита для обновления пакета -
upgradepkg. При ее вызове фактически происходит инсталлирование нового паке­
та, а затем удаление тех файлов из старого пакета, которые отсутствуют в новом.
Если имена старого и нового пакетов совпадают, все, что требуется утилите, - имя
этого пакета в командной строке. Если имена различаются, их следует разделить
символом %без дополнительных пробелов:
upgradepkg п а к ет . tgz%д ругой_пакет . tgz
Обратите внимание, что в отличие от ситуации с RPM, конфигурационные фай­
лы могут быть уничтожены, так что имеет смысл их предварительно сохранить.

4.4.2.3. Создание пакетов


Основная утилита для создания пакета Slackware - makepkg. Она конструирует
пакет из содержимого текущего каталога и всех его подкаталогов. Если при этом
встречаются файлы, являющиеся символическими ссылками, к install/doinst. sh
будут добавлены команды, создающие эти ссылки после распаковки. Соотвествен-
но, если этот файл отсутствовал, он будет создан. В качестве единственного аргу­
мента к команде makepkg должно выступать полное имя файла с расширением, под
которым и будет записан готовый архив.
Кроме команды makepkg, можно воспользоваться командой installpkg со спе­
циальной опцией -т. Ее действие в точности соответствует действию makepkg,
только в качестве аргумента надо указывать имя пакета без расширения tgz - про­
грамма добавит его сама.

4.4.2.4. Установка пакетов обычными средствами


Так как пакеты Slackware являются самыми обычными архивами, их легко
устанавливать на любой системе Linux. Чтобы инсталлировать пакет package tgz,
Установка пакетов 239

достаточно его разархивировать из корневого каталога и выполнить сценарий


do і ηst. sh, если он входит в пакет.

gummadoon:~# cd /
gummadoon:/# tar zxvf /root/package.tgz
gummadoon:/# install/doinst.sh
gummadoon:/# rm -rf install

Если вы хотите поддерживать базу пакетов в /var/adm/packages, сохраните вы­


вод команды tar в соответствующем файле, заменив команду tar zxvf, например,
на такие две команды:
echo "FILE LIST:" > /var/adm/packages/package
tar zxvf /root/package.tgz » /var/adm/packages/package

4.4.3. Пакеты Debian


Дистрибутив Debian использует собственный формат пакетов и набор разнооб­
разных средств для работы с ними. С одним из них, dselect, вы встречались, если
хоть раз устанавливали Debian. Однако это только графический интерфейс, кото­
рый подготавливает запросы к собственно менеджеру пакетов dp kg. Часто (при
работе с одним или несколькими известными пакетами) оказывается более удоб­
ным ввести просто команду dpkg, чем запускать dselect.

4.4.3.1. Удаление пакетов


Самый простой способ удалить пакет, например nethack_3. 3.0-7. deb, - вызвать
команду dpkg -г (сокращение от dpkg -remove):
dpkg -г nethack
Обратите внимание, что здесь указывается только базовое имя пакета, без но­
мера версии или расширения. Эта команда удалит пакет, но сохранит файлы
конфигурации, которые к нему относятся. Таким образом, если вы установите
этот пакет снова, его не придется перенастраивать. При необходимости изба­
виться вообще от всех файлов, принадлежащих данному пакету, вызовите dpkg
с другой опцией:
dpkg -purge nethack
Будут удалены все файлы, имеющие какое-либо отношение к пакету nethack.
В программе dselect для удаления пакета с сохранением конфигурационных
файлов надо выбрать его и нажать клавишу —. Для полного удаления использует­
ся клавиша _.

4.4.3.2. Установка пакетов


Установка откомпилированного пакета программ, который вы уже поместили на
свой компьютер, осуществляется командой dpkg -і (сокращение от dpkg -install):
dpkg -і nethack_3.3.0-7.deb
Если при этом будет обнаружена предыдущая версия пакета, dpkg автоматичес­
ки выполнит обновление, а не повторную установку.
240 Базовые понятия об администрировании

Пакеты программ в исходных текстах распространяются Debian в виде трех


файлов с окончаниями . ta r .g z (оригинальные авторские исходные тексты),
. dif f . gz (изменения, внесенные в них для интеграции в Debian) и . dsc (формали­
зованное описание для dpkg). Для того чтобы распаковать такой пакет, использу­
ется следующая команда:
dpkg-souгее -х <nethack_3.3.0-7.dsc
При этом в текущем каталоге создается подкаталог с именем пакет-версия,
в котором строится дерево исходных текстов со всеми служебными файлами
Debian и, если нужно, пакет-версия. о rig.
В программе dselect для установки пакета надо выбрать этот пакет и нажать
клавишу +. Однако после того, как вы нажмете Enter, чтобы завершить выбор па­
кетов, dselect проанализирует зависимости и конфликты, к которым приводит
устанавливаемый пакет. Если требуется что-то изменить, dselect выведет список
зависимостей и пометит их как выбранные для установки. В этот момент можно
нажать клавишу R, что отменит все автоматически выбранные пакеты и тот, кото­
рый вы собирались установить (Enter затем вернет вас к обычному выбору паке­
тов). Клавиша D отменяет только пакеты, которые предлагаются программой
dselect (после этого вы можете выбрать действительно необходимые вам, исполь­
зуя клавишу +). Клавиша U восстанавливает предложение dselect.

4.4.3.3. Создание пакетов


Чтобы создать готовый к использованию пакет откомпилированных программ, вы
должны разместить все файлы и каталоги, которые будут устанавливаться в сис­
теме, в каком-нибудь каталоге, обычно в debian/tmp относительно корневого ката­
лога исходных текстов пакета. Всем файлам и каталогам должны быть присвоены
необходимые права доступа и имена владельцев. В корневом каталоге создавае­
мой миниатюрной файловой системы нужно создать специальный каталог DEBIAN,
в который будут помещены управляющие файлы. Этот каталог не будет создан
в реальной системе в ходе установки пакета, файлы из него будут использоваться
программой dpkg для различных служебных целей. Служебными являются сле­
дующие файлы:
cont rol Текстовый файл, содержащий имя, версию и описание пакета, его за­
висимости и взаимоотношения с другими пакетами и т.д. Его можно
создать автоматически при помощи утилит dpkg-gencontrol и dpkg-
shlibdeps.
preinst Исполнимый файл (обычно сценарий), выполняемый dpkg сразу пе­
ред установкой пакета.
post i nst Исполнимый файл (обычно сценарий), выполняемый dpkg сразу пос­
ле установки пакета.
р re rm Исполнимый файл (обычно сценарий), выполняемый dpkg сразу пе­
ред удалением пакета.
post rm Исполнимый файл (обычно сценарий), выполняемый dpkg сразу пос­
ле удаления пакета.
Установка пакетов 241

co n ffiles Список файлов пакета, которые являются файлами конфигурации


и не будут удаляться с помощью команды dpkg -г, если пользователь
их изменял.
sh lib s Текстовый файл, перечисляющий разделяемые библиотеки, устанав­
ливаемые с пакетом, и их зависимости. Он используется командой
dpkg-shlibdeps при создании зависимостей для файла control.
После того как все файлы подготовлены, можно создать пакет, подав следу­
ющую команду:
dpkg --build каталог
где каталог - это имя каталога, который содержит подкаталог debian/tmp, в кото­
ром, в свою очередь, находится устанавливаемый откомпилированный пакет.
Чтобы убедиться, что все получилось правильно, можно проверить содержи­
мое вновь созданного пакета следующими командами:
dpkg-deb --info nethack_3.3.0-7.deb
dpkg-deb --contents nethack_3.3.0-7.deb
dpkg --contents nethack_3.3.0-7.deb

Полное построение пакета для Debian требует наличия исходных текстов и раз­
личных дополнительных файлов, размещаемых в подкаталоге debian.
Наиболее важный из этих файлов —debian/rules, который является сценарием
для программы make и содержит инструкции для выполнения таке-целей clean,
binary, binary_arch и build. Build должна выполнять всю неинтерактивную кон­
фигурацию и компиляцию пакета, binary - процедуру создания бинарного паке­
та. Она должна включать подцели binary-arch и binary-indep для построения час­
тей пакета, зависящих и не зависящих от архитектуры компьютера. Цель clean
восстанавливает ситуацию, предшествующую выполнению build и binary. Кроме
того, может присутствовать необязательная цель get-orig-source для получения
последней версии авторских исходных с FTP- или W W W -серверов и преобразо­
вания в . t a r . gz-файл.
Следующий по важности файл - debian/cont rol, содержащий информацию
о пакете. Это текстовый файл с записями, отделенными друг от друга одной или
несколькими пустыми строками. В него входят строки Source, Maintainer, Section,
Priority, Build-Depends (зависимости для компиляции), Depends (зависимости
для работы), Standards-Version, Package, Architecture, Description, Essential. Эти
поля используются программами dpkg-gencontrol при генерации служебного фай­
ла в бинарном пакете, dpkg-genchanges служит для создания файла .changes
и dpkg-source - для создания . dsc-файла.
Кроме того, должен присутствовать файл debian/changelog, содержащий опи­
сание изменений, сделанных при интеграции этого пакета в Debian.
Готовое дерево исходных текстов можно свернуть в пакет при помощи команды
dpkg-source -b п а к ет -версия
При этом в текущем каталоге будут созданы три стандарных файла - . ta r. gz,
. d if f .g z (если нужен) и . dsc. Можно также выполнить полное построение
242 Базовые понятия об администрировании

бинарного пакета и пакета исходных текстов, готовых для помещения в архив


Debian, при помощи команды dpkg-build package. Она вызовет dpkg-source, debian/
rules цель clean, debian/rules цель build, debian/rules цель binary, dpkg-genchanges
и pgp.

4.4.3.4. Установка пакетов обычными средствами


Пакет Debian является на самом деле архивом аг, в чем легко убедиться, восполь­
зовавшись командой file:
gummadoon:~$ file nethack_3.3.0-7.deb
nethack_3.3.0-7.deb: current ar archive
Распаковать такой архив можно при помощи системной команды а г. Перенеси­
те пакет в отдельный каталог и распакуйте его:
ar X nethack_3.З .0-7.deb
Вы получите как минимум два файла: control.t a r .gz и data. tar. gz. Наиболее
важный файл - это data. tar. gz, обычный tar.gz-архив всего устанавливаемого
пакета, запакованный из корневого каталога, как и в Slackware. Просмотрите его
содержимое и распакуйте - либо в текущий каталог, либо сразу в корневой, если
вы согласны с тем, в какие каталоги будут помещены файлы пакета. Архив
control, tar. gz содержит вспомогательные файлы. Это control, содержащий опи­
сание пакета, файлы сценариев preinst, postinst, prerm и postrm, которые инстал­
лятор Debian запускает перед установкой, после нее, перед удалением и после уда­
ления пакета соответственно, а также другие вспомогательные файлы (conffiles
и shlibs).

4.5. Установка программ из исходных текстов


Несмотря на то, что авторы дистрибутивов, особенно Debian и Red Hat, готовят
пакеты для всех основных программ, которые можно затем быстро установить при
помощи rpm или dselect, часто приходится устанавливать программы из исход­
ных текстов. Это требуется для многочисленных программ, не поставляющихся
с дистрибутивами, для новых версий, пока не вошедших в дистрибутивы, а также
в ситуациях, когда требуется внести какие-то изменения в исходные тексты.
Последнее случается достаточно часто, даже если вы не являетесь программис­
том, - небольшие модификации программ часто распространяются в виде так на­
зываемых patch-файлов, содержащих только произошедшие изменения в специ­
альном формате. В частности, так распространяются новые версии ядра Linux -
либо в виде patch-файла с изменениями относительно предыдущей версии, редко
превышающего 100 Кб, либо в виде полных исходных текстов новой версии раз­
мером более 10 Мб в архиве (больше 30 Мб в распакованном виде). Естественно,
если у вас есть старая версия, быстрее и удобнее скачать patch, чем полные исход­
ные тексты или даже скомпилированную программу.
Рассмотрим типичные ситуации, с которыми приходится сталкиваться при уста­
новке программы.
Установка программ из исходных текстов 243

4.5.1. Подготовка к компилированию


Прежде всего исходные тексты программы надо найти и получить. С некоторыми
дистрибутивами Linux поставляются исходные тексты всех вошедших в него па­
кетов программ, но обычно вся ценность этих текстов в том, что для них выполне­
но все предварительное конфигурирование, необходимое для успешной компи­
ляции. Обычно к моменту использования дистрибутива программы устаревают
настолько, что легче скачать исходные тексты последней версии, чем десяток
patch-файлов, которые потом надо будет по очереди установить.
Поэтому полезно завести для себя файл с Internet-адресами домашних страниц
или основных серверов, содержащих те программы, с которыми вы наиболее ак­
тивно работаете и за развитием которых следите. Часто такой адрес приводится
в сопровождающей программу документации - в файле README, INSTALL или
CREDITS в файле с расширением Ism или где-то еще. Например, в рассматриваемом
ниже пакете PINE адрес находится в файле doc/brochure, txt. На наиболее попу­
лярной в настоящий момент базе данных о программах для Linux, http://w w w .
freshmeat.net. адреса домашней страницы и F T P -сервера специально приведены
для каждой программы, так что если интересующая вас программа в него внесена,
найти адрес там можно быстрее всего.

4.5.2. Программы с автоматической конфигурацией


Среди программ, создаваемых в рамках проекта GNU, да и среди многих независи­
мых программ, все чаще используется система GNU autoconf, выполняющая авто­
матическую конфигурацию под особенности вашей конкретной системы. В исход­
ные тексты всех таких программ входит исполнимый файл configure в основном
каталоге. Прежде всего (но после прочтения инструкций по установке, если тако­
вые прилагаются) следует запустить этот файл с опцией --help:
./configure --help
На экран будут выведены все дополнительные опции, которые применимы
к данному пакету. Особое внимание следует обратить на опцию --prefix, опреде­
ляющую, в какой каталог будет установлена программа. Обычно по умолчанию
используется --prefix=/usr/local. Это означает, что исполняемые файлы будут
установлены в /usr/local/bin, библиотеки - в /usr/local/lib, тап -стр ан и ц ы -
в /usr/local/man и т.д. Соответственно, если вы устанавливаете программу, чтобы
заменить старую, установленную в /usr/bin, нужно будет вызвать сценарий
configure с опцией --prefix=/usr.
Кроме того, внимательно рассмотрите дополнительные возможности пакета
в конце списка опций, выдаваемого configure --help. Здесь перечисляются до­
полнительные опции, которые могут начинаться с префиксов --with, --without,
--enable, --disable. По умолчанию они обычно установлены на стандартные зна­
чения, так чтобы выполнение configure без дополнительных опций приводило
к созданию работоспособной конфигурации в максимально возможном числе
случаев. Из-за этого различные дополнительные возможности, доступные не на
всех системах, по умолчанию отключены.
244 Базовые понятия об администрировании

Выбрав необходимые опции, запустите сценарий configure. В ходе его работы


выводятся сообщения о том, какие необходимые для компиляции программы,
функции, включаемые файлы и другие компоненты системы найдены. Соответ­
ственно, если что-то нужное не будет найдено, выполнение сценария закончится
и вы увидите сообщение об ошибке. Такое случается достаточно часто, если про­
грамма использует какие-то нестандартные библиотеки, которые должны быть
установлены заранее. Так, например, для компиляции графического редактора GIMP
(h ttp :/ /www. gimp.or g или ftp:/ /ftp .gimp.or g /pub / gimp / v 1.0 /cu rren t) требуются
библиотеки glib, gtk+, libj peg, libpng, mpeg_lib, libtiff, xdelta, zlib, aalib, VFlib,
не считая обычных библиотек, входящих в состав системы X Window. При этом
первые две библиотеки необходимы, а отсутствие любой из остальных приводит
только к тому, что сценарий configure выводит сообщение типа:
warning: *** JPEG plug-in will not be built (JPEG header file not found) ***
после чего продолжает работу. Поэтому следите за тем, что выводит на экран
configure. Исходные тексты библиотек, необходимых для компиляции GIMP, до­
ступны на основном F T P -сервере программы (ftp:/ /ftp .gimp.org / pub /glib. ftp: / /
ftp.gimp.org / pub / gtk. ftp:/ / ftp.gimp .or g /pub /gimp /libs ). но в большинстве случаев
адреса требующихся вашей программе библиотек либо упоминаются где-то в до­
кументации, либо не упоминаются вообще. Обычно это подразумевает, что биб­
лиотека достаточно известна и присутствует в основных коллекциях программ
для Linux в Internet.
В последних строках, выводимых программой configure на экран, перечисля­
ются файлы, которые были созданы в ходе автоматической конфигурации. Обыч­
но это файл Makefile (возможно и несколько таких файлов в каждом подкатало­
ге), а также файл conf і д .h. Эти файлы обычно бывают снабжены комментариями,
так что достаточно полезно просмотреть их в текстовом редакторе, поправляя ка-
кие-то отдельные установки. Более того, некоторые программы требуют такого
редактирования, например ircll и другие IR C -клиенты, построенные на ее осно­
ве. В этих программах имеются десятки различных настроек по умолчанию, и все
они описаны в файле include/config.h, который необходимо отредактировать пе­
ред компиляцией.
Следующее действие после того, как вся предварительная настройка выполне­
на, - компиляция, запускаемая командой make. Иногда требуется дополнительный
аргумент: make all, make World или make everything. Список аргументов к make
в таких случаях приводится в файле Makefile с пояснениями в комментариях.
После завершения компиляции установка всех файлов в соответствующие ка­
талоги (/usr/local/bin и т.д.) выполняется командой make install (хотя и здесь
возможны варианты). Такое разделение на компиляцию и установку произведено
для того, чтобы свести к минимуму вмешательство системного администратора.
Обычный пользователь может скомпилировать программу, проверить ее работо­
способность, а затем администратор выполнит make install.
В качестве типичного примера рассмотрим компиляцию программы TIN
(threaded internet news), наиболее совершенной из текстовых систем для работы
с группами новостей USENET. Последняя версия исходных текстов доступна
Установка программ из исходных текстов 245

в Internet по адресу ftp://ftp.tin.org/tin/current/tin-current.tar.gz· Распакуйте ар­


хив командой
tar zxvf tin-current.tar.gz
и перейдите в появившийся каталог. Для версии tin, рассматриваемой в нашем
примере, это каталог tin-19990805.
cd tin-19990805
is
В данном каталоге присутствует исполнимый файл configure, а значит, можно
пользоваться описываемой здесь схемой действий. Но в любом случае следует
прочитать файл README:
less README
и только затем, убедившись, что ничего необычного здесь нет, перейти к конфигу­
рированию пакета.
./configure --help
Эта команда выведет достаточно большой список возможных опций, так что,
скорее всего, вам придется перенаправить ее вывод в файл. Настроек, которые
может модифицировать пользователь (с префиксами --with, --without, --enable
и --disable), здесь больше пятидесяти. Выберем три из них. Опция --with-ncurses
задействует библиотеку ncurses, которая есть во всех дистрибутивах Linux (хотя
в большинстве из них предлагаются очень старые версии этой программы; послед­
няя версия доступна в Internet по адресу h ttp ://w w w .clark .n et/p u b /d ick ey /
ncurses/ncurses.htm l). Вторая опция, --disable-etiquette, отменяет напоминания
о традиционных правилах, которых следует придерживаться при написании со­
общения в группы новостей. Третья, --enable-nntp, позволит работать с серверами
новостей. Полное описание всех опций конфигуратора, а также всего процесса ин­
сталляции находится в этом пакете в файле doc/INSTALL, о чем написано в нача­
ле файла README.
./configure --with-ncurses --disable-etiquette --enable-nntp
В процессе работы configure выведет серию сообщений, начинающихся
creating cache ./config.cache
checking host system type... i686-pc-linux-gnulibc1
configuring for linux-gnulibcl
checking for gcc... gcc
checking whether the С compiler (gcc ) works... yes

и заканчивающихся строками:
creating ./config.status
creating makefile
creating pcre/Makefile
creating src/Makefile
creating include/autoconf.h

Отсюда видно, что имеет смысл проверить и, если нужно, внести изменения
в файлы makefile, src/Makefile, pcre/Makefile и include/autoconf. h. В этом случае
246 Базовые понятия об администрировании

в файле makefile и src/Makefile нет ничего, связанного с конфигурацией, кроме


еще одного напоминания о том, что нужно прочитать doc/INSTALL. В файле реге
/Makefile есть некоторые указания, относящиеся к операционной системе SunOS 4.
В файле autoconf.h перечислены только настройки, изменяемые через различные
опции для conf igu ге. Что-либо изменять здесь вручную может понадобиться толь­
ко на необычно сконфигурированных системах, где алгоритмы автоматического
конфигурирования не срабатывают.
Следующая команда, выполняющая собственно компиляцию, - make build,
о чем написано в README, в doc/INSTALL и о чем сообщит сама команда make, запу­
щенная без параметров. Если библиотека ncurses, выбранная нами при конфигу­
рировании, присутствует, компиляция должна пройти успешно. TIN - не очень
большая программа, и процесс компиляции занимает меньше минуты даже на не
очень быстром компьютере.
Теперь можно войти в систему под именем пользователя root или выполнить
команду su, после чего скомпилированный TIN устанавливается в систему коман­
дой make install.
Еще одна полезная операция - сокращение размера программы при помощи
команды strip. Она удаляет отладочную информацию, которая может вам потре­
боваться только в том случае, если вы один из разработчиков этой программы.
Команда strip /usr/local/bi n/t in (если TIN был инсталлирован в /usr/local/bin)
уменьшает размер бинарного файла tin с 454 до 386 Кб.
Это был довольно сложный пример. Обычно для быстрой компиляции и уста­
новки программы, использующей GNU autoconfig, достаточно всего трех команд:
./configure
make
make install

Если программа компилируется с флагом -g, передаваемым компилятору, би­


нарные файлы будут содержать отладочную информацию, из-за которой их раз­
мер может увеличиться (иногда в 10 раз). Этого можно избежать, вызывая про­
грамму configure с установленной переменной CFLAGS:
CFLAGS=-02 ./configure

4.5.3. Программы, использующие xmkmf


Многие программы для графической системы X Window используют еще один
способ автоматической конфигурации, программу xmkmf (X Make Makefile - соз­
дать Makefile для Х-приложения). Просмотрев содержимое каталога с исходны­
ми текстами такой программы, вы не увидите обычных файлов Makefile или
configure. Вместо этого будет присутствовать файл Imakefile. Там может оказать­
ся и обычный Makefile наряду с Imakefile. В этом случае подразумевается, что
если у вас нет программы xmkmf, вы можете выполнить конфигурацию вручную,
редактируя Makefile. Во все дистрибутивы Linux программа xmkmf входит.
В качестве примера рассмотрим популярнейший просмотрщик графических
файлов для X Window, xv. Домашняя страница xv - h ttp :/ / www.trilon.com /x v /
index.html. Несмотря на то что xv входит в любой дистрибутив и новые версии не
Установка программ из исходных текстов 247

выходят, эту страницу имеет смысл посетить, так как исправляются ошибки
и появляются дополнения (в виде p atch-файлов), например, обеспечивающие
работу с PNG- или P D F -файлами. На F T P -сервере ftp ://ftp .trilo n .co m /p u b/xv
patches/ есть все patch-файлы, кроме xv-3.10a-png-1.2 d .tar. gz, который находит­
ся в вышележащем каталоге. Исходный текст xv в виде архива xv-3.10а. tar. gz
можно найти и на многих других сайтах.
Распакуем архив с исходными текстами и применим все необходимые patch-
файлы.
tar zxvf xv-3.10а.tar.gz
cd xv-3.10a
tar zxvf ../xv-3.10a-png-1.2d.tar.gz
patch -p1 < xvpng.diff
patch -p1 < xvjpeg.diff
patch -p1 < xvtiff.diff
patch -p1 < ../xvpng-fix2.patch
patch -p1 < ../croppad.patch
patch -p1 < ../deepcolor.patch
patch -p1 < ../gifpatch
patch -p1 < ../grabpatch
patch -p1 < ../longname.patch
patch -pi < ../pdf.patch
patch -p1 < .,/vispatch

В файле INSTALL, содержащем инструкции по компиляции xv, написано, что


пользоваться x m k m f не рекомендуется и желательно просто отредактировать
Makefile вручную. На самом деле это важно только в том случае, если вы собира­
етесь использовать библиотеки libtiff и libj peg, поставляемые вместе с xv. По­
чти наверняка они есть в вашем дистрибутиве, и намного более новых версий.
Кроме того, среди patch-файлов были те, которые подключали поддержку форма­
та PNG, для которого также нужна библиотека - libpng.
Если в вашем дистрибутиве нет этих библиотек или если они устарели, вот их
адреса в Internet:
PNG и ZLIB: http://w w w .cdrom .com /pub/png/pngcode.htm l
JPEG: http://w w w .ijg.org/
TIFF: http ://www. libtiff.or g /
Все они компилируются с использованием configure.
Итак, если в вашей системе присутствуют эти три библиотеки, можно удалить
упоминание подкаталога с исходными текстами libtiff из файла Imakefile. Для
этого надо загрузить его в текстовый редактор, найти строки
SUBDIRS = tiff
SYS_LIBRARIES = -lm

и заменить их на
SUBDIRS =
SYS_LIBRARIES = -lm -ltiff -lj peg -lpng -lz
248 Базовые понятия об администрировании

Кроме того, надо удалить строки


JPEGDIR = jpeg
LIBJPEG = $(JPEGDIR)/libj peg.а
TIFFDIR = tiff
LIBTIFF = $(TIFFDIR/iibtiff.a

И добавить после -DDOJPEG или после -DDOPNG


-DDOPNG
и после xvfits. о
xvpng.о
потому что patch-файл xvpng. diff вносил изменения не в Imakefile, а в Makefile;
рассчитывалось на то, что его целиком будут редактировать вручную.
Теперь, наконец, можно выполнить конфигурирование xv для компиляции од­
ной командой
xmkmf
после чего выполняются
make depend
make
make install

Мы рассмотрели достаточно сложный пример, потребовавший редактирования


файла Imakefile. В подавляющем большинстве ситуаций, как и в случае с GNU
autoconf ig, достаточно выполнить всего три команды - xmkmf, make, и make install.

4.5.4. Программы без автоматической конфигурации


Если в программе не предусмотрена автоматическая конфигурация, возможны
различные варианты. Чаще всего все сводится к редактированию файла Makefile,
контролирующего ход компиляции. Мы рассмотрим два крайних случая - почто­
вую программу PINE, с которой поставляются (в настоящий момент) 48 готовых
вариантов Makefile для самых разных UNIX-систем и где сложно внести какие-ни­
будь изменения в процесс конфигурации и интерпретатор языка программирования
форт This Forth, в котором конфигурация сводится к редактированию Makefile
вручную.
Последняя версия программы PINE (Program for Internet News and E-mail - програм­
ма для Internet-новостей и почты) доступна по адресу ftp://ftp.cac.washington.edu/
pine/pine.tar.gz (домашнаяя страничка - http://w w w.w ashington.edu/piney Следует
заметить, что одновременно с pine из этого же пакета исходных текстов компили­
руется популярный из-за своей простоты текстовый редактор pico, так что если
на вашей системе его нет, имеет смысл скомпилировать этот пакет, даже если вы
не намерены использовать pine.
Распаковав архив, мы можем убедиться, что никакой программы configure здесь нет.
tar zxvf pine.tar.gz
cd pine4.10
Is
Установка программ из исходных текстов 249

Вместо этого присутствует makefile и исполнимый файл build. Запустив build


без параметров, выполнив команду make или прочитав содержимое файла makefile,
мы узнаем, что build надо вызывать следующим образом:
./build help
В тексте, который выдает эта команда, говорится, что для компиляции пакета
PINE надо вызвать сценарий build с трехбуквенным аргументом, обозначающим
используемую операционную систему. Список этих аргументов приведен в файле
doc/pine-ports.
Выполнив команду less doc/pine-ports, мы обнаружим, что для Linux указано
целых пять таких кодов:
1пх Система Linux с функцией crypt() в библиотеке libe без поддержки
shadow.
1ηр Система Linux, использующая Linux-PAM (см. раздел 4.2.3).
six Система Linux с функцией crypt() в библиотеке libcrypt.
sl4 Система Linux с функцией cryptQ в библиотеке libshadow.
si5 Система Linux с функцией crypt() в библиотеке libe с поддержкой
shadow.
Как всегда при конфигурировании программ вручную, здесь требуются неко­
торые знания о своей системе. При условии, что у вас их нет, придется сделать
в точности то, что сделал бы сценарий configure, если бы он использовался авто­
рами PINE. Создадим программу на С под названием conftest.с (например, мож­
но набрать ее в Vi и сохранить на диске):
int main() {exit(0);}
t() {cryptO;}
Попытаемся ее скомпилировать:
дсс -о conftest conftest.с
дсс -о conftest conftest.с -lerypt
дсс -о conftest conftest.с -lshadow

Если не будет сообщения об ошибке в первом случае, функция c r y p t O присут­


ствует в libe (вариант 1пх или sl5). Второй случай соответствует использованию
libcrypt (вариант six), третий - libshadow (sl4). Отличить варианты 1пх и sl5 мож­
но по содержимому файла /etc/passwd. Если пароли пользователей заменены на
символы X , используется вариант si5 с поддержкой скрытых паролей (shadow).
Использование Linux-PAM (Inр) определяется сразу по наличию библиотеки libpam
и файлов конфигурации /ete/pam. d/* или /ete/pam. conf.
Дальнейшая компиляция выполняется одной командой, например, при ис­
пользовании варианта six это делается следующим образом:
./build six
На компиляцию всех программ, входящих в пакет PINE (pine, pico, pilot, imapd,
mtest), уходит около трех минут на машине среднего быстродействия. При этом
в создаваемые бинарные файлы включается довольно большой объем отладочной
250 Базовые понятия об администрировании

информации. При помощи strip bin/pine его размер сокращается с 4 до 2 Мб.


Команда инсталляции отсутствует, и вы должны вручную скопировать файлы, ко­
торые вам потребуются, в соответствующие каталоги:
ср bin/pine /usr/bin/
ср bin/pico /usr/bin/
ср bin/pilot /usr/bin/
cp doc/pico.1 /usr/man/man1/
cp doc/pine.1 /usr/man/man1/
cp doc/pilot.1 /usr/man/man1/
cp doc/mime.types /etc/mime.types

Рассмотрим теперь более сложный (и более типичный) случай - программу,


которая требует прямого редактирования файла Makefile. Попробуем скомпили­
ровать интерпретатор языка форт This Forth (ftp ://ftp .tay g eta.co m /p u b /fo rth /
com pilers/unix/ this4th.ta.gz). Распаковав архив, мы найдем файл README. Инструк­
ции по компиляции, содержащиеся в нем, крайне лаконичны; чтобы построить
ядро форта, скомпилируйте вместе файлы a f o r th .c n k e rn e l.c каким угодно обра­
зом. Отредактируем файл src/M akefile: удалим строку MACHINE = MIPS (она позже
подставляется в командную строку компилятора как -DMIPS). Заменим М4 = /u s r /
5bin/m4 на М4 = /usr/bin/m 4 (если на вашей системе т4 находится именно там; если
не уверены, выполните команду which ш4). Изменим строку CFLAGS на CFLAGS = -02
(включить оптимизацию). Укажем в строке BIN каталог, в который вы хотите
установить исполнимые файлы.
При попытке компиляции будут выведены три сообщения об ошибках initializer
element is not constant, относящиеся к строкам, в которых выполняется присваи­
вание stdin и stdout другим указателям в момент инициализации. Обратите вни­
мание на то, что fo. с генерируется автоматически из fo. m4, так что исправления
надо будет вносить там. Заменим строку 1599
FILE * usrin = stdin, * usrout = stdout;

FILE * usrin, *usrout;


и строку 1621
FILE * device = stdin;

FILE * device;
Затем перейдем на строку 1670 и добавим перед ней следующую строку:
usrin = stdin; usrout = stdout; device = stdin;
На самом деле это не вполне корректно, но теперь компиляция выполняется
без ошибок. Следующая проблема - невозможность найти файл f о, если отсут­
ствует каталог . в переменной PATH. Это можно исправить, заменив строки
fo rth path $(ELECTIVES) $(EXTRA) $(STARTUP) save-4th

aforth tests
Установка программ из исходных текстов 251

./fо rth path $(ELECTIVES) $(EXTRA) $(STARTUP) save-4th

,/aforth tests
соответственно.
Если вы выбрали -DFLOATING в опциях в Makefile, при компиляции появятся
сообщения об отсутствии функций sin, cos, tan и т.д. Это исправляется добавле­
нием -1т в строку CFLAGS в Makefile.

4.5.5. Программы, которые не компилируются


Может случиться так, что какая-то программа не будет компилироваться под
Linux вообще. Такое происходит, например, с программами для других UNIX-сис­
тем, которые еще не были адаптированы (портированы) для компиляции в Linux,
или с программами, которые разрабатываются на немного отличающихся от ва­
шей Linux-системах. Предыдущий пример и был такой программой, разработан­
ной на совершенно другой UNIX-системе.
Программа может не компилироваться по многим причинам. Рассмотрим наи­
более часто встречающиеся.

4.5.5.1. Отсутствующие программы


Процедура компиляции может требовать наличия различных программ помимо
собственно С-компилятора. Например, эмулятор Windows W INE требует нали­
чия программ flex и bison, причем не GNU-эквиваленты, lex и уасс, не подходят.
Обычно такие требования перечислены в документации, хотя бывают ситуации,
когда требования не специфицируются. Может также оказаться, что используют­
ся особенности программ, отсутствующих в Linux.
Например, программы, созданные для других UNIX-систем, часто используют
сценарии для интерпретатора ksh (Korn shell - оболочка Корна). Если ваши по­
знания в языке программирования shell недостаточны для того, чтобы модифи­
цировать эти сценарии для интерпретации bash, воспользуйтесь бесплатно рас­
пространяемой версией Korn shell, pdksh (b ttp : //www.cs.mun.ca/~michael/pdksh/V
Иногда при компиляции задействуются awk-сценарии, использующие особен­
ности awk, которые отличаются от его GNU-версии в Linux. В этом случае может
помочь опция —compat, при задействовании которой GNU awk функционирует так
же, как стандартный UNIX awk.
Может статься, что у вас нет утилиты install или (это случается чаще) что она
не поддерживает опции, которые указаны в Makefile (если они рассчитаны на
BSD-версию, а у вас под именем install вызывается GNU-версия).

4.5.5.2. Отсутствующие библиотеки


Это самая частая причина, по которой не компилируются программы. Любая про­
грамма в Linux (кроме нескольких специальных системных утилит) использует ди­
намически загружаемые библиотеки. При помощи команды ldd можно в этом убе­
диться: выполните ее, указав первую попавшуюся программу в качестве аргумента:
252 Базовые понятия об администрировании

gummadoon:~$ ldd /usr/X11R6/bin/xpdf


libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x4000a000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40019000)
liblCE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40021000)
libX11.so.6 => /usГ/Х11R6/lib/libX11.so.6 (0x40035000)
libstdc++.so.2.8 => /usr/lib/libstdc++.so.2.8 (0x400c7000)
libm.so.5 => /lib/libm.so.5 (0x4010a000)
libc.so.5 => /lib/libc.so.5 (0x40113000)

Все перечисленные библиотеки должны были находиться в системе в момент


компиляции; они должны оставаться в ней все время для того, чтобы программа
могла выполняться. В данном случае все библиотеки достаточно стандартны, - libe
и libm присутствуют в любом дистрибутиве, так как они необходимы подавляюще­
му большинству программ, libstdc++ устанавливается для поддержки программ, на­
писанных на C++, lib X ll, libSM, и liblCE устанавливаются вместе с X Window,
a libXpm, хоть и является дополнением к X, все равно распространяется с ним
в одном дистрибутиве. Очень часто оказывается, что программа требует каких-то
необычных библиотек, но чем более экзотичная библиотека требуется, тем больше
вероятность, что авторы указали ее в каком-то из файлов документации.
Тем не менее, если при компиляции на стадии компоновки будет неожиданно
выдан поток сообщений вида:
undefined reference to 'XtStrings'
undefined reference to 'XtVaGetVaiues'
undefined reference to 'XawTextGetlnsertionPoint'
undefined reference to 'XawTextSourceScan'

значит, при компиляции не удалось найти библиотеку, содержащую все перечис­


ленные функции. В нашем примере это libXt и libXaw, присутствующие в системе,
но на которые не было ссылки в Makefile. Соответственно, чтобы скомпилировать
данную программу (xip, h ttp ://w w w .capm edia.fr/m gall/xip/xip-1.3.2.tar.gz - про­
грамма для изучения и модификации ІР-пакетов в локальной сети), потребует­
ся дописать опции —L/us r/X11R6/1 i b —lXf -IXaw в файле xip/Makefile в строке
LOCAL_LDFLAGS. Программа xip использует также одну редко встречающуюся библио­
теку - libpcap, о чем сказано в первой же строке файла INSTALL.

4.5.5.3. Отсутствующие библиотечные функции


Бывает и так, что библиотека, требуемая программой, вроде бы присутствует, но
ошибки типа undefined reference все равно выдаются. Дело в том, что на разных
системах одинаково названные библиотеки могут различаться. Даже в Linux сис­
темная функция crypt() может быть, а может и не быть включена в стандартную
библиотеку libe. Если она в нее не входит, а программа пытается ее использовать,
придется указать в нужном месте Makefile опции -lerypt или -lshadow, в зависи­
мости от того, в какой библиотеке находится crypt().
Бывает и еще худшая ситуация: программа, разработанная для другой систе­
мы, использует системные функции, которых в Linux нет. Так, например, програм­
мы для BSD-систем могут читать каталоги при помощи функции getdirentriesQ,
Установка программ из исходных текстов 253

в то время как в Linux почти аналогичная функция называется getdirent().


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

4.5.5.4. Отсутствующие включаемые файлы


Может оказаться, что программа обращается к функциям из библиотек, име­
ющимся в вашей системе, но компилятор не может найти их описания, которые
должны находиться в файлах-заголовках. Чаще всего это происходит, когда поль­
зователь системы типа Red H at установил пакет «библиотека», но проигнориро­
вал пакет «библиотека-devel». В этом случае он может использовать программы,
требующие эту библиотеку, но ему не удается скомпилировать ни одну из них.
Решение очевидно: установить недостающий пакет (или найти исходные тексты
библиотеки и инсталлировать ее самостоятельно). Особым случаем являются
включаемые файлы, распространяемые с ядром Linux (пакет kernel-devel). Его
часто не замечают при первой установке системы, в то время как без него нельзя
скомпилировать практически ничего.
Другая возможная причина отсутствия файла заголовка - компилятор не мо­
жет его обнаружить. Например, разные версии lib jpeg устанавливали свой файл
j p e g .h в разные каталоги - /usr/include/jpeg.h и /usr/include/jpeg/libjpeg.h.
Соответственно, программа, указывающая #include <j peg.h>, не может быть ском­
пилирована во втором случае, а указывающая #include <j peg/libj peg.h> - в пер­
вом. Иногда, чтобы указать компилятору расположение файла, достаточно вос­
пользоваться опцией -1/путь/к/файлу, а иной раз, как в случае с libjpeg, нужно
изменить имя файла прямо в исходном тексте.

4.5.5.5. Пример
В качестве примера попробуем скомпилировать утилиту PAX (public archiver), по­
зволяющую работать одинаково как с tar-, так и с сріо-архивами. Исходные тек­
сты этой программы можно найти, к примеру, на ftp:/ /ft р .cs.uni -sb.d е /pub /и tils /
pax.tgz. Эта программа была написана в 1989 году и компилировалась на 20 раз­
личных UNIX-системах, от UNICOS на Cray 2 до BSD 4.3 на VAX 780, но не на
Linux.
В файле README сказано, что для компиляции надо самостоятельно отредакти­
ровать Makefile и config.h.
Будем пытаться выполнить команду make, исправляя возникающие ошибки.
Первая ошибка, приводящая к появлению сообщения о том, что файл config.h
не отредактирован, появляется, если мы в начале config.h не сделали выбор меж­
ду тем, к какому из двух основных типов относится наша система - System V или
BSD. В случае Linux это неоднозначно, так как в него входят элементы обеих вет­
вей. Выберем System V, изменив строку
#define BSD

#undef BSD
254 Базовые понятия об администрировании

Теперь make выводит ошибку conflicting types for 'signal' (различные типы для
signal). Для этого также есть настройка в config. h. Надо изменить фрагмент:
/* #define SIG_T void */
#define SIG_T int

#define SIG_T void


/* #define SIG_T int */
так как в Linux функция signal() опеределена как void (*signal()), о чем можно
узнать, прочитав man 2 signal.
Теперь make выведет одно предупреждение comparison between pointer and
integer (сравнение между указателем и целым) в файле buffer, с и сообщение
о новой ошибке, conflicting types for 'mkdir' (конфликт типов для mkdir). От это­
го предупреждения в данном случае легко избавиться, изменив строку 188 в фай­
ле buffer. с
if (oops == NULL) {

if (oops == 0) {
но вот упоминаний о функции mkdir в файле config.h нет. Посмотрим, в чем дело.
В файле port.с, при компиляции которого проявилась ошибка, содержатся функ­
ции m kdir() и rmdir(), которые не были имплементированы в некоторых UNIX-
системах, когда создаваласть программа. Там же, в комментариях, сказано, что
если система содержит эти функции, нужно добавить ее к списку систем в строке,
начинающейся с #if ! defined. Допишем к этой строке Linux
#if !defined(тсЗОО) && !defined(тс500) && !defined(mc700) \
&& !defined(BSD) && !defined(LINUX)
и внесем определение -DLINUX в Makefile:
CFLAGS = -02 $(P0SIX) -DLINUX
Теперь, наконец, команда make сработает и программа pax будет успешно ском­
пилирована.

4.5.6. Учет установленных программ


Самая большой недостаток инсталляций программ из исходных текстов по срав­
нению с использованием любой системы управления пакетами - от pkgtool из
Slackware до RPM из Red H at - это потеря возможности быстро удалить уста­
новленную программу. После того как файлы помещены в общие каталоги (/us г/
local/bin, и т.п.), нет никакой возможности определить, какие еще файлы вхо­
дят в этот же пакет и какие из них не требуются для функционирования других
пакетов.
Существуют различные способы преодоления этой ситуации. Можно исполь­
зовать модифицированную версию команды install, которая будет сохранять ин­
формацию о том, какие программы и каталоги были созданы.
Хорошим примером такой программы служит installwatch (http://w w w . data-
nord.it/~ pdem au ro /in stallw atcli/V Обычно такие программы являю тся просто
Установка программ из исходных текстов 255

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


вручную все файлы Makefile для того, чтобы make install пользовался именно этой
программой, а не штатным install или просто ср. В installwatch используется дру­
гой подход. Он загружает дополнительную библиотеку, перехватывающую обра­
щения к тем системным функциям, которые модифицируют файловую систему,
и позволяет записывать каждую вызванную функцию в указанный файл или в /var/
log/syslog. Кроме того, к этой программе прилагается сценарий inst2rpm, поз­
воляющий превратить файл с протоколом установки, созданный installwatch,
в R PM -файл и занести его в базу данных RPM. Используя этот сценарий, можно
удалить установленный пакет при помощи команды rpm -е пакет.
Для компиляции программы installwatch надо изменить строку PREFIX=/home/
pdm в начале файла Makefile например, на PREFIX=/usr/local, после чего подать
команды make и make install.
Другой способ отслеживания установленных программ - следить за всеми фай­
лами самостоятельно. Это не так сложно, как может показаться. Достаточно заве­
сти каталог, например /var/adm/packages (как в Slackware), и вместо команды
make install при установке любого пакета подавать три команды:

touch /tmp/install
make install
find / -newer /tmp/install > /var/adm/packages/nazcer

где пакет - имя устанавливаемого пакета.


В большинстве случаев, если пакет устанавливается в /usr/local, в качестве
первого аргумента в команде find можно будет использовать не /, a /usr/local,
что намного ускорит ее работу. Соответственно, при установке в /us г поиск допу­
стимо ограничить этим каталогом.
В результате будут создаваться файлы для каждого установленного пакета
со списками созданных или измененных файлов или каталогов. Чтобы удалить
такой пакет, можно просмотреть этот список и удалить все перечисленное, кроме
того, что входит в другие пакеты. Если вы используете дистрибутив Slackware,
такие списки файлов легко преобразовать к формату, используемому программой
pkgtool. Достаточно посмотреть на любой из файлов в каталоге /var/adm/packages
и заметить, что они представляют собой точно такой же список, только с до­
полнительным комментарием вначале. Добавьте заголовок FILE LIST, и можно
удалить установленную программу автоматически, не отслеживая вручную, ис­
пользуются ли отдельные файлы в других пакетах:
touch /tmp/install
make install
echo "FILE LIST:" > /var/adm/packages/na^er
find / -newer /tmp/install » /var/adm/packages/na^er

Удаление производится при помощи команды removepkg пакет (см. раздел 4.4.2).
Вообще говоря, файлы, которые используются одновременно в разных пакетах, -
это, в первую очередь, библиотеки и включаемые файлы, а также файлы из каталога
/usr/share. Даже если вы никак не отслеживали установку пакета, в большинстве
256 Базовые понятия об администрировании

случаев можно удалить его бинарные файлы, тап -стран иц ы и каталог, в ко­
тором размещены соответствующие данные - чаще всего это /usr/local/lib/
п а к е т /.

4.5.7. Коллекции программ в Internet


Число программ для Linux уже сейчас составляет многие тысячи и постоянно про­
должает расти. Для того чтобы сориентироваться и найти нужную программу,
в сети Internet появилось несколько баз данных.
Freshmeat, http://w w w.freslim eat.net·
На сегодняшний день самая удобная и хорошо организованная база программ
для Linux в Internet. Здесь для каждой программы указывается W W W -страница,
F T P -адрес с исходными текстами, список изменений по версиям и т.д.
LSM, http://w w w .linux.org/apps/lsm .htm l·
Еще одна, более старая и поэтому более объемная база - Linux Software Map
(LSM). Часто вместе с исходными текстами программ здесь встречаются файлы
с расширением . Ism. В них находятся данные для этой базы - краткое описание
программы и адрес ее домашней страницы или F T P -сайта.
Linuxberg, http://www.linuxberg.com.
Третья огромная база данных, также включающая описания, адреса, а также
новые версии всех программ. Linuxberg имеет зеркало в России по адресу h ttp ://
imet.linuxberg.com.
GNU, ftp ://ftp .gnu.o rg /p u b /g n u .
Все программы проекта GNU - компиляторы, средства разработки, утилиты,
UNIX-команды, системные библиотеки и многое другое, что составляет основу
системы Linux.
TSX-11, ftp: //ts x - 11 .mit.edu /pub /linux.
Еще один важный FTP-сервер. Здесь, помимо различных пакетов в каталоге /pub/
linux/packages и исходных текстов большого количества программ в /pub/linux/
sources, имеются проекты, находящиеся в состояниях бета- и альфа-версий (ката­
логи /p ub /l in ux /BЕТА и /pub/linux/ALPHA соответственно). В частности, здесь
в подкаталоге BETA расположен эмулятор SCO, Wyse и SVr4 UNIX (BETA/
ibcs2). В подкаталоге ALPHA находится, например, эмулятор DOS Dosemu, эму­
лятор Windows W INE и проигрыватель МРЗ-файлов amp (на котором были осно­
ваны Winamp для Windows и xmms для Linux).
Sunsite (теперь Metalab), ftp://m etalab.unc.edu/pub/L inux·
Возможно, самый знаменитый из архивов программ для Linux. Здесь собрано
огромное количество различных программ, включая даже около двух десятков
различных полных дистрибутивов Linux (в подкаталоге distributions). Структу­
ра каталогов может показаться запутанной, но очень полезно ее изучить, просмат­
ривая заодно файлы README, - наверняка вы найдете немало полезного. Этот F T P -
сайт полностью доступен через H TTP как http://m etalab.unc.edu/pub/L inux·
Глава V
Настройка системы

□ Перекомпиляция ядра
□ Установка X Window
□ Настройка графической среды
□ Подключение шрифтов TrueType
□ Установка эмуляторов

5.1. Перекомпиляция ядра


Предварительно откомпилированные ядра Linux, поставляемые на дискетах или
CD-ROM , подойдут для большинства пользовательских приложений. Однако
в ряде случаев, в частности, при нестандартной аппаратной конфигурации, добав­
лении нового устройства, устранения конфликтов или тонкой оптимизации рабо­
ты системы может потребоваться полная перекомпиляция всего ядра.

5.1.1. Конфигурация драйверов и модулей ядра


Все взаимодействие между операционной системой и аппаратным обеспечением
происходит через драйверы. В Linux они могут быть либо частью ядра, либо за­
гружаться как внешний модуль. Не имеет смысла добавлять слишком много драй­
веров непосредственно в ядро - во время работы оно всегда находится в опе­
ративной памяти и неиспользуемые фрагменты будут просто лежать мертвым
грузом. Кроме того, тесты, проводимые многими драйверами при старте, могут
конфликтовать и вызывать проблемы вплоть до зависания при загрузке. Как пра­
вило имеет смысл переконфигурировать поставляемое по умолчанию ядро систе­
мы. Удаление неиспользуемых фрагментов кода увеличит объем свободной памяти,
258 Настройка системы

a настройка опций и устранение конфликтов повысит быстродействие и надеж­


ность.
Чтобы сконфигурировать ядро, надо перейти в каталог, содержащий его исход­
ные тексты (обычно /usr/src/linux) и выполнить одну из трех команд: make config,
make menuconfig или make xconfig.
В первом случае (рис 5.1) вам будет последовательно задано множество вопро­
сов в текстовом режиме, на каждый из которых надо ответить у (да), η (нет) или
ввести число. Вариант ответа, обозначенный заглавной буквой, сконфигурирован
в настоящий момент и будет принят при нажатии Enter. Можно также ввести знак ?
и получить описание данного пункта. Интерфейс конфигурации в режиме make
config не очень удобен, потому что он не дает возможности вернуться и ответить
на какой-нибудь вопрос по-другому. Обычно этот вариант имеет смысл только
в тех случаях, когда другие способы недоступны.

[РРго/6х86НХ]
defined C0NFIG_M686
M a t h e m u l a t i o n ( C O N F I G _ M A T H _ E M U L A T I O N ) [N /y /? ]
MT R R (Mem or y Type R a n g e R e g i s t e r ) s u p p o r t ( C Q N F I G _ M T R R ) LY /n / ? ]
S y m m e t r i c m u l t i - p r o c e s s i n g s u p p o r t ( C O N F I G _ S M P ) CN /y/?]

H Loadable module support

E n a b l e l o a d a b l e m o d u l e s u p p o r t ( C O N F I G _ M 0 D U L E S ) CY /n/?]
Set v e r s i o n i n f o r m a t i o n on all s y m b o l s for m o d u l e s ( C 0 N F I G _ M 0 D V E R S I O N S ) [Y /n/?]
K e r n e l m o d u l e l o a d e r (C 0 N F I G _ K M 0 D > [Y/n /? ]

* General setup

N e t w o r k i n g s u p p o r t ( C O N F I G _ N E T ) [Y /n/?]
PCI s u p p o r t ( C O N F I G _ P C I ) [Y /n/?]
PCI a c c e s s mo d e (B-IOS, D i r e c t , Any) [ Any ]
defined CONFIG_PCI_GOANY
PCI q u i r k s ( C O N F I G _ P C I _ Q U I R K S ) [ Y / n / ? ]

I
PCI b r i d g e o p t i m i z a t i o n ( e x p e r i m e n t a l ) ( C Q N F I G _ P C I _ Q P T I M I Z E ) [Y / n / ? ]
B a c k w a r d - c o m p a t i b l e / p r o c / p c i ( C O N F I G _ P C I _ 0 L D _ P R 0 C ) [Y /n/?]

MCA s u p p o r t (C O N F I G _ M C A ) CN /y/?]
SGI V i s u a l H o r k s t a t i o n s u p p o r t ( C Q N F I G _ V I S W S ) [N / y /?]
S y s t e m V IPC ( C OРис.
N F I G _5.1.
S Y S YКонфигурация
I P C ) [ Y / n / ? ] | ядра в текстовом режиме

Более удобный и чаще всего используемый способ конфигурации ядра -


make menuconfig. На экран выводится меню, содержащее основные группы кон­
фигурационных параметров. По их списку можно перемещаться клавишами уп­
равления курсором. Нажатие клавиши Enter или пробела выводит подменю, со­
держащее собственно вопросы конфигуратора (рис. 5.2). Каждый пункт можно
отметить клавишей Y, снять метку клавишей N, или сконфигурировать в каче­
стве модуля клавишей М. Пробел переключает текущий пункт между двумя или
тремя возможными состояниями. Краткая справка о том, что делает данный
пункт, выдается при нажатии ?. Возврат в главное меню осуществляется клави­
шей Esc. Для завершения конфигурации можно либо нажать Esc из главного
меню, либо выбрать в нем пункт Exit.
Перекомпиляция ядра 259

L i n u x K e r n e l v 2 .2 -5 C o n f i g u r a t i o n

Arroui ke y s n a v i g a t e the menu. <Enter> selects s u b m e n u s >_


H i g h l i g h t e d l e t t e r s are h o t k e y s - P r e s s i n g <Y> i n c l u d e s , <N> excl ud es ,
<M> m o d u l a r i z e s f e a t u r e s · P r e s s < E s c X E s c > to exit, <?> for Help.
Lege nd : LH 1 b u i l t - i n [ 1 excluded <M> m o d u l e < > module capable

[*1 uo t a s u p p o r t
<M> K e r n e l a u t o m o u n t e r s u p p o r t
< > DFS f i l e s y s t e m s u p p o r t (read only) ( E X P E R I M E N T A L )
< > mi g a FFS f i l e s y s t e m s u p p o r t
< > pp l e M a c i n t o s h f i l e s y s t e m s u p p o r t ( e x p e r i m e n t a l )
o > OS FAT fs s u p p o r t
<*> M DOS fs s u p p o r t
<> M S D O S = U n i x - l i k e f i l e s y s t e m on top of s t a n d a r d M S D O S f i l e s y s t e
<*> FAT (H i n d o u s - 9 5 ) fs s u p p o r t
<*> SO 96 6 0 C D R O M f i l e s y s t e m s u p p o r t
v( + )

aselect) 1 < Exit > < He l p >

Рис. 5.2. Конфигурация ядра при помощи make menuconfig

Третий способ установки - make xconfig (рис 5.3). Он может использоваться


только из графической среды, например из окна xterm, rxvt или других терминалов.
Фактически это та же система меню, что и во втором способе, но выполненная
в графике на языке tcl/tk . Для ответа на вопросы конфигуратора используются
кнопки с подписями Y, N, М , подсказка выводится при нажатии кнопки Help.

Code m aturity level options IrDA subsystem support Partition Types

Processor type and features Infrared -port device drivers Native Language Support

Loadable module support ISDN subsystem Console drivers

General setu|

Plug and Play


Filesystems
Block device:

Networking о
♦ У V “ V n Quota support Help

QoS and/or f:
♦ У V m V n Kernel ajutomounter support Help

SCSI support
Q У Y m ♦ n ADFS filesystem support (read only) (EXPERIMENTAL) Help

SCSI lo w -lev
V У X m ♦ n Amiga FFS filesystem support. Help

ne tw o rk dev
V У V m ♦ n Apple Macintosh filesystem support (experim ental) Help

Amateur Rad
♦ У 4 m X n DOS FAT fs support Help

♦ У N m > n MSDOS fs support Help

V У ^ m + n UM SDOS: Unix-like filesystem on top of standard MSDOS filesystem Help

♦ У X m \ n VFAT (Windows- 3 5 ) fs support Help

♦ У 4 m \ n ISO 9Є60 CDROM filesystem support Help

Main Menu Next Prev

Рис. 5.3. Конфигурация ядра при помощи make xconfig


260 Настройка системы

Рассмотрим наиболее важные пункты конфигурации:


1. Code maturity level options (Уровень завершенности кода).
В этом подменю есть всего один пункт: Prompt for development and/or
incomplete code/drivers. Его выбор означает, что в других меню будут вклю­
чены вопросы о конфигурации драйверов и фрагментов кода ядра, которые
не были проверены временем, так называемые “альфа-версии”. Обычно этот
пункт указывают, так как драйвера для всех новых устройств попадают в ка­
тегорию development.
2. Processor type and features (Тип и особенности процессора).
Processor family (Тип процессора). Здесь можно выбрать тип процессора,
для которого будет оптимизировано ядро. Скорее всего, такое ядро не будет
работать на процессорах младших версий.
Math emulation (Эмуляция математики). Имеет смысл только для процес­
соров 386 и 486sx без математического сопроцессора, однако выбор этого
пункта не предотвратит работу ядра и на всех остальных процессорах, толь­
ко увеличит его размер на 45 Кб без пользы.
MTRR support (Поддержка регистров управления памятью). Включает под­
держку специальных регистров, встречающихся в Pentium Pro, Pentium II,
и т.д. Их использование ускоряет некоторые операции работы с памятью,
в частности вывод на экран. Нет ничего страшного в выборе этого пункта,
если в вашем процессоре нет регистров MTRR.
SMP support (Поддержка нескольких процессоров). Если выбрать этот
пункт, ядро будет работать на многопроцессорных компьютерах, используя
все процессоры системы одновременно. В частности, поддержку SMP про­
токола нужно включать на двухпроцессорных машинах, иначе система бу­
дет детектировать только один из них.
3. Loadable module support (Поддержка загружаемых модулей).
Enable loadable module support (Разрешить загружаемые модули). Выбор
этого пункта конфигурации разрешает компиляцию отдельных драйверов
как модулей, то есть в виде самостоятельных программ, загружаемых ядром
при необходимости и выгружаемых, если они больше не используются. Как
правило, этой возможностью лучше воспользоваться.
Set version information on all symbols for modules (Указывать номер версии
для всех символов в модуле). Этот пункт разрешает пользоваться старыми
модулями после перекомпиляции ядра, что необходимо, если вы пользуе­
тесь каким-либо фирменным драйвером, поставляемым без исходных тек­
стов. Для работы требуется пакет modutils.
Kernel module loader (Загрузчик модулей в ядре). Его включение позволяет
ядру загружать необходимый модуль автоматически при попытке какой-
либо программы обратиться к обслуживаемому модулем устройству. Если
загрузка внешних модулей разрешена, имеет смысл воспользоваться этой
опцией.
Перекомпиляция ядра 261

4. General setup (Общие параметры).


Networking support (Поддержка сети). Обязательно выбирайте этот пункт,
даже если компьютер не подключен к сети - многие программы (например,
вся графическая система) открывают локальные сетевые соединения.
PCI support (Поддержка PCI). Необходимо для поддержки РСІ-устройств
(то есть, на современных компьютерах практически всегда).
PCI access mode (Режим доступа к PCI). Выбирает доступ ядра к PCI через
BIOS, напрямую (Direct), или любым способом (Any).
PCI quirks (Недоработки PCI). Необходимо для BIOS, которые возвращают
неправильную информацию о P C I-устройствах. Если есть уверенность, что
установленный на вашей материнской плате BIOS работает корректно, эту
опцию можно отключить, что немного уменьшит размер ядра.
PCI bridge optimization (Оптимизация РСІ-моста). Может ускорить доступ
в некоторых случаях с плохим BIOS, но может и привести к проблемам.
Backward-compatible /p roc/pci (Обратно-совместимый / р roc/pci). Новые
ядра используют / р roc/bus/pci, но для некоторых старых программ может
дополнительно потребоваться файл /proc/pci, поддержку которого включа­
ет этот пункт.
MCA support (Поддержка MCA). Поддержка шины MicroChannel, которая
может встречаться на некоторых машинах IBM P S /2 и laptop-компьютерах.
SGI Visual Workstation support (Поддержка графической станции SGI).
Включайте этот пункт только для рабочих станций типа SGI 320 или 540,
построенных на базе процессоров Intel. Ядро, собранное с этим пунктом, не
будет работать на обычных компьютерах.
System V IPC (Поддержка механизма взаимодействия и обмена информа­
цией между процессами). Необходима для большого количества программ.
BSD Process Accounting (Учет процессов в стиле BSD). Этот пункт позво­
ляет специальным программам отслеживать процессы, запускаемые в сис­
теме и записывать информацию о них (время, пользователь, команда, раз­
мер в памяти, и т.д.) в журнальные файлы. Имеет смысл включить эту опцию.
Sysctl support. Этот пункт включает механизм динамического изменения
некоторых параметров ядра, перечисленных в /proc/sys/, без перезагрузки.
Например, можно изменить максимальное число открытых файлов или стра­
тегию работы виртуальной памяти. Данная возможность может оказаться
полезной впоследствии.
Kernel support for a.out binaries (Поддержка ядром формата a.out). Позво­
ляет запускать на выполнение бинарные файлы в формате a.out, который
использовался в ранних версиях Linux. В настоящее время такие програм­
мы практически не встречаются.
Kernel support for ELF binaries (Поддержка ядром формата ELF). Позволя­
ет запускать на выполнение бинарные файлы в формате ELF. Этот пункт
обязателен.
Kernel support for MISC binaries (Поддержка ядром различных форматов).
Позволяет устанавливать модули, дающие ядру возможность выполнять
262 Настройка системы

из командной строки самые разные бинарные файлы - программы на Java,


D O S-приложения и т.п.
Kernel support for JAVA binaries (Поддержка ядром Java-nporpaM M ).
П озволяет запускать на выполнение бинарные файлы в формате J a v a
bytecode. Требует для работы установленный пакет J D K для Linux. Этот
пункт считается устаревшим, так как предыдущий (M ISC b inaries) вклю­
чает в себя все его возможности.
Parallel port support (Поддержка параллельного порта). Включает в ядро
драйвер для параллельного порта - это необходимо, если у вас есть принтер
или другое устройство, подключенное к этому порту.
PC-style hardware (Порт PC типа). Отметьте этот пункт, если вы в боль­
шинстве случаев собираетесь пользоваться параллельным портом на PC.
Support foreign hardware (Порт не PC типа). Этот пункт включает поддерж­
ку нестандартных для PC параллельных портов. Его использование приво­
дит к потере скорости, так что на обычных персональных компьютерах сле­
дует отвечать N.
Advanced Power Management BIOS support (Поддержка А РМ -BIOS).
Включает поддержку АРМ - системы управления питанием и энергосбере­
жением BIOS.
Ignore USER SUSPEND (Игнорировать сигнал USER SUSPEND). В боль­
шинстве случаев лучший ответ - N.
Enable АРМ at boot time (Включать АРМ при старте). С этой опцией будут
задействованы различные автоматические механизмы управления питани­
ем, указанные в настройках BIOS. Это может приводить к проблемам, так
что обычный ответ здесь - N.
Make CPU Idle calls when idle (Выполнять вызовы CPU Idle, когда процес­
сор не загружен). Вместо цикла бездействия в ядре будет выполняться сис­
темный вызов CPU Idle, по которому BIOS (если был выбран предыдущий
пункт) может притормозить процессор, уменьшая энергопотребление. На
некоторых системах это способно вызвать зависание.
Enable console blanking using АРМ (Гасить консоль используя АРМ). Оп­
ция для компьютеров laptop, при которой одновременно с гашением тексто­
вой консоли Linux будет выключаться и сам LCD-монитор.
Power off on shutdown (Автоматически выключать питание). Команда halt
или halt -р не только остановит систему, но и выключит питание компью­
тера (если BIOS это позволяет).
Ignore multiple suspend (Игнорировать последовательные сигналы suspend).
Эта опция необходима для некоторых laptop-компьютеров и не причинит
вреда остальным - она включает игнорирование новых сигналов suspend
в то время, пока первый поступивший сигнал еще обрабатывается.
Ignore multiple suspend/resum e cycles (Игнорировать последовательные
циклы suspend/resume). Аналогично предыдущему.
RTC stores time in GMT (Аппаратные часы установлены на GMT). Отметь­
те этот пункт, если часы в BIOS установлены на гринвичское время (GM T).
Перекомпиляция ядра 263

В Linux это обычно так, кроме случаев, когда на том же самом компьютере
используется Windows.
Allow interrupts during АРМ BIOS calls (Разрешать внешние прерывания
во время вызовов АРМ BIOS). Иногда следует отметить этот пункт, если
laptop зависает после сигнала suspend.
5. Plug and Play support (Поддержка устройств типа Plug and Play).
Plug and Play support. Дает ядру возможность автоматически обнаруживать
и конфигурировать Ρ η Ρ -устройства. Часто выбирают Y.
Auto-probe for parallel devices (Сканировать устройства на параллельных
портах). Обнаруживает Ρ η Ρ -устройства, подключаемые к параллельным
портам.
6. Block devices (Блочные устройства).
Normal PC floppy disk support (Обычный PC дисковод). Включите, если вы
собираетесь пользоваться дискетами.
Enhanced IDE/M FM /RLL disk/cdrom /tape/floppy support (Улучшенная
поддержка жестких дисков/С О /лент/дисководов). Этот пункт подключает
полноценный ID E -драйвер. Имеет смысл отвечать N, если у вас система, ис­
пользующая только шину SCSI.
U se old disk-only driver on primary interface (Использовать старый драйвер
на первичном интерфейсе). Первый ID E -интерфейс будет обслуживаться
старым драйвером, который не поддерживает CD и другие устройства. От­
вечайте
Include IDE/ATA-2 DISK support (Включить поддержку АТА-2 жестких
дисков). Данная опция включает современный драйвер жестких дисков. Не
создавайте этот драйвер в виде модуля, если ваша корневая файловая систе­
ма расположена на ID E -диске.
Include IDE/ATAPI CD-ROM support (Включить поддержку ATAPI CD-
ROM). Активизирует драйвер устройств CD-ROM, необходимый для боль­
шинства современных устройств данного стандарта. Без него будут работать
только некоторые одно- и двухскоростные устаревшие модели, требующие
собственных драйверов.
Include IDE/ATAPI ТАРЕ support (Включить поддержку ATAPI ленточных
устройств). Активизирует драйвер для стриммеров, подключаемых к ID E -
интерфейсу.
Include IDE/ATAPI FLOPPY support (Включить поддержку АТАРІ-диско-
водов). Этот драйвер используется для дисководов, подключаемых к ID E -
интерфейсу (обычно с дискетами большой емкости), например, IDE Iomega
ZIP drive.
SCSI emulation support (Поддержка эмуляции SCSI). Нужен для ATAPI-
устройств, для которых в Linux есть только SC S I-драйвер. Включение
эмуляции и поддержки SCSI позволяет пользоваться такими устройст­
вами.
Generic PCI IDE chipset support (Общая поддержка PCI IDE). Эта опция
помогает ID E -драйверу автоматически обнаружить и сконфигурировать
264 Настройка системы

PCI IDE устройства. Если в системе присутствуют только устройства SCSI,


нужно выбрать N, в противном случае Y.
Generic PCI bus-master DMA support (Общая поддержка режима bus-master
DMA). Делает возможным использование DMA для работы с диском. Что­
бы его использовать, нужно будет воспользоваться программой hdparm или
соответствующим пунктом конфигурации.
Boot off-board chipsets first support (Поддержка загрузки с внешних IDE).
Включение этого пункта делает ID E -интерфейсы, встроенные в материн­
скую плату ide2 и ide3, в противоположность обычным ideO и idel.
U se DMA by default when available (Использовать DMA по умолчанию).
Включает bus-master DMA, если он был разрешен соответствующим пунк­
том конфигурации. На некоторых чипсетах из-за ошибок реализации это
может привести к уничтожению данных на дисках, поэтому по умолчанию
DMA отменен. Если чипсет на вашей материнской плате полностью соот­
ветствует общепринятому стандарту, использование режима DMA позволит
значительно увеличить скорость обмена данными с жесткими дисками.
Следующие несколько пунктов - поддержка особенностей (обычно - оши­
бок реализации) конкретных моделей ID E -чипсетов. Сверьтесь с докумен­
тацией на вашу материнскую плату.
Loopback device support (Поддержка устройства обратной связи). Этот
драйвер делает возможным смонтировать файл как файловую систему. Н а­
пример, вы сможете монтировать образ CD-ROM и работать с его содержи­
мым, не записывая его на реальный CD. Этот механизм также используется
для шифрованных файловых систем cfs и tcfs.
Network block device support (Поддержка сетевого блочного устройства).
Специальное устройство, которое позволяет обращаться через сеть к фай­
ловой системе, находящейся на другом компьютере. Фактически это особый
протокол обмена файлами, который используется крайне редко, чаще при­
меняют NFS.
Multiple devices driver support (Поддержка драйвера множественных
устройств). Этот драйвер позволяет объединять несколько дисковых разде­
лов в логическое блочное устройство. Он может использоваться просто для
объединения нескольких разделов или для создания программного RAID-
массива.
RAM disk support (Поддержка виртуального диска). Позволяет использо­
вать часть оперативной памяти в качестве блочного устройства - в нем
можно создать файловую систему, записывать и считывать файлы. Этот
драйвер используется, например, на инсталляционных дискетах: содержи­
мое дискеты копируется на виртуальный диск, и дальнейшая работа ведет­
ся с него.
Initial RAM disk (initrd) support (Поддержка загрузочного виртуального
диска). Виртуальный диск загружается LILO и монтируется в качестве кор­
невой файловой системы до начала обычной процедуры загрузки. Это может
потребоваться в редких случаях, например, если для доступа к настоящей
Перекомпиляция ядра 265

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


модуля.
XT hard disk support (Поддержка XT-дисков). Поддерживает очень старые
и уже давно вышедшие из употребления 8-битные жесткие диски, исполь­
зовавшиеся на IBM XT.
Parallel port IDE device support (Поддержка ID E -устройств на параллель­
ном порту). Драйвер для подключения внешних CD-ROM и жестких дис­
ков, которые используют параллельный порт (порт принтера).
7. Networking options (Сетевые опции).
Packet socket (Протокол AF_PACKET). Этот протокол используется при­
ложениями, которые взаимодействуют с сетевыми устройствами напрямую,
например программа tcpdump.
Kernel/User netlink socket (Протокол обмена между ядром и программами).
Ядро позволяет пользовательским программам получать различную инфор­
мацию о состоянии сети (например, сообщения об отбитых системным firewall
атаках) путем чтения из специального устройства. Лучше ответить Y.
Routing messages (Сообщения маршрутизации). Программы смогут полу­
чать информацию об изменениях маршрутизации при помощи механизма
netlink, если он разрешен в предыдущем пункте.
Network firewalls (Сетевой firewall). Firewall - это компьютер, регулирую­
щий обмен пакетами между локальной сетью и остальным миром, очень ча­
сто с защитными целями: все соединения между компьютерами из локальной
сети и извне проверяются системой firewall, которая может их заблокировать
или изменить. Этот пункт конфигурации включает firewall класса «фильтр
пакетов», встроенный в ядро Linux.
Socket filtering (Ф ильтр для сокетов). Пользовательские программы могут
сообщать ядру, что на данный сокет должен быть установлен фильтр, разре­
шающий или запрещающий те или иные типы соединений. Используется
редко.
Unix domain sockets (UN IX -сокеты). Эти сокеты являются стандартным ме­
ханизмом для создания и использования сетевых соединений. Отдельные
программы (в частности X Window и syslog) используют сокеты, даже если
компьютер не поключен к сети. Ответ Y практически обязателен.
TC P/IP networking (Поддержка ТСР/1Р-сетей). T C P /IP - это набор сете­
вых протоколов, использующихся в Internet и локальных E thernet-сетях.
Поскольку некоторые программы (X Window) используют локальные T C P /
ІР-соединения, даже если компьютер не подключен к сети, эту опцию лучше
выбрать.
IP multicasting. С этим драйвером ядро сможет адресоваться к нескольким
сетевым компьютерам сразу. Используется редко.
IP advanced router. Открывает следующий набор вопросов для более под­
робного конфигурирования механизмов маршрутизации.
IP policy routing. Для определения действий машрутизатора будет исполь­
зоваться не только целевой адрес пакета, но и адрес источника.
266 Настройка системы

IP equal cost multipath. Для конкретного типа пакетов можно указывать не­
сколько альтернативных действий (маршрутов), которые будут выбираться
случайно.
IP use TOS value as routing key. Для определения действий маршрутизато­
ра будет также использоваться тип данного 1Р-пакета.
IP verbose routing monitoring. Ядро будет сообщать о подозрительных па­
кетах и других важных ситуациях.
IP large routing tables. Используются таблицы маршрутизации с более чем
64 записями.
IP fast network address translation. Маршрутизатор может изменять адреса
источника и цели в пакетах, проходящих сквозь него так, как вы установите.
IP kernel level autoconfiguration. Использовать ВООТР или RARP-конфи-
гурацию в ядре, что необходимо для бездисковых станций.
IP firewalling. Настройка Linux-системы как firewall класса «фильтр пакетов».
Для работы требуется включенный IP forwarding и полезен IP always
defragment, для управления - программа ipchains.
IP firewall packet netlink device. Система firewall будет сообщать о происхо­
дящем, используя механизм netlink.
IP always defragment. Все приходящие фрагментированные IP -пакеты бу­
дут собраны (дефрагментированы) перед дальнейшей обработкой. Нужно
только для firewall или masquerading-серверов, не включайте дефрагмента­
цию на обычных компьютерах.
IP use FWMARK value as routing key. Поддержка возможности указания
различных маршрутов для пакетов с разным полем FWMARK.
IP transparent proxy support. Ваш firewall будет незаметно для компьюте­
ров из локальной сети перенаправлять все их пакеты, адресованные удален­
ным компьютерам, на локальный ргоху-сервер.
IP masquerading. Эта опция делает возможным особый режим - IP
masquerading. Единственным компьютером в локальной сети, видимым из­
вне, является сервер Linux. Когда другие компьютеры из локальной сети
устанавливают соединения наружу, Linux отслеживает их и устанавливает
эти соединения от своего имени, пересылая затем получаемые пакеты в ло­
кальную сеть как бы от имени удаленного компьютера. В результате целая
сеть может быть видимой из Internet как один единственный IP -адрес. Все
остальные компьютеры сети невидимы, но могут устанавливать соединения
и получать на них ответы.
IP ICMP masquerading. Основной модуль поддержки IP masquerading об­
рабатывает только TCP и U D P -пакеты, а также IC M P -пакеты, содержащие
сообщения об ошибках. Эта опция добавляет обслуживание остальных
ІСМР-пакетов, так что из локальной сети можно будет пользоваться про­
граммами ping и traceroute.
IP masquerading special modules support. Эта опция позволяет использовать
дополнительные модули для управления IP masquerading, дающие возмож­
ность работы с нестандартными протоколами или делающими отдельный
указанный порт локального компьютера видимым из внешней сети.
Перекомпиляция ядра 267

IP optimize as router not host (Оптимизировать как маршрутизатор, а не


конечный хост). Настраивает ядро на более быструю маршрутизацию паке­
тов в ущерб скорости приема.
IP tunneling (Туннелирование IP). Туннелирование - это инкапсуляция од­
ного протокола в другом, который затем можно передать через среду, пони­
мающую только протокол-носитель.
IP GRE tunnels over IP. Это альтернативный драйвер для туннелирования
(GRE означает Generic Routing Encapsulation, обобщенная инкапсуляция
маршрутной информации). Он лучше подходит, если целевой системой яв­
ляется маршрутизатор Cisco.
Broadcast GRE over IP. Одна из особенностей GRE - возможность посыл­
ки широковещательных пакетов. Таким образом можно построить подобие
локальной Ethernet-ceTH, отдельные участки которой могут связываться че­
рез Internet, используя инкапсуляцию (туннелирование).
IP multicast routing. Необходимо, если ваш компьютер будет использовать­
ся как маршрутизатор для пакетов, имеющих несколько целевых адресов.
IP PIM-SM support. Поддержка протокола широковещательной маршрути­
зации SM PIM (Sparse Mode Protocol Independent Multicast). Поддержка мо­
дификации Dense Mode включена в ядро.
IP aliasing support. Этот пункт конфигурации дает возможность присвое­
ния одному и тому же физическому сетевому интерфейсу нескольких IP-
адресов. Например это используется в виртуальном хостинге, когда компь­
ютер имеет несколько разных имен и в зависимости от того, под каким
именем к нему обратились, Web-сервер покажет различные странички.
IP ARP daemon support. Эта опция запрещает рост таблицы МАС-адресов
различных компьютеров локальной сети, ограничивая его 256, и передове­
ряет поддержку таблиц этих адресов программе arpd, что может сократить
расход памяти ядра, если ваша система состоит в очень большой локальной
сети.
IP TCP syncookie support. Это механизм защиты против атаки на ТСР-про-
токол, известной как SYN flooding, позволяющий «честным» удаленным
компьютерам устанавливать соединение с вашей системой, даже когда ваш
компьютер атакуют.
IP Reverse ARP. Поддержка протокола RARP, который позволяет бездис­
ковой станции определить свой 1Р-адрес.
IP Allow large windows. Если у вас достаточно много оперативной памяти,
можно воспользоваться этой опцией для того, чтобы увеличить буфер, в ко­
тором накапливаются принятые, но не подтвержденные пакеты. Имеет
смысл для медленных линий с трафиком более 2M bit/sec.
The IPv6 protocol (Протокол IPv6). Экспериментальная поддержка новой
версии протокола IP. Ее можно использовать совместно со старой версией
(IPv4).
The IPX protocol (Протокол IPX). Поддержка протокола IPX, используемо­
го серверами Novell NetWare, локальными сетями Windows и в некоторых
268 Настройка системы

других случаях. Включив этот драйвер в ядро или в качестве модуля, вы смо­
жете обращаться к NetW are-файловыми серверам и серверам печати, или
даже превратить Linux в файловый сервер, используя программу mars_new.
Appletalk DDP. Поддержка сетевого протокола, используемого компьюте­
рами Apple.
ССІТ Х.25 Packet Layer. Поддержка высокоуровневой части системы про­
токолов Х.25.
LAPB Data Link Driver. Поддержка низкоуровневой части системы прото­
колов Х.25.
Bridging. Включает ваш Linux в Ethernet-ceTb как мост - различные сегмен­
ты, подключенные к такой системе, будут выглядеть для сети как один.
802.2 LLC. Поддержка низкоуровневой части системы протоколов Х.25, по­
зволяющая устанавливать Х.25-соединения через обычные E thernet-карты.
Acorn Econet/AUN protocols. Поддержка сетевого протокола, используемо­
го компьютерами Acorn.
WAN router. Использование Linux в качестве WAN-маршрутизатора.
Fast switching. Экспериментальный драйвер для прямой передачи данных
между сетевыми интерфейсами. Несовместим со многими другими сетевы­
ми опциями.
Forwarding between high speed interfaces. Другой драйвер для быстрой пе­
ресылки пакетов между интерфейсами, работает всего с одним типом сете­
вых карт.
CPU is too slow to handle full bandwidth (Процессор слишком медленный
для обработки всего трафика). Эта опция немного разгружает процессор за
счет замедления работы с сетью.
8. QoS and/or fair queueing (Правила для очередности пакетов).
QoS and/or fair queueing. Когда система должна послать несколько сетевых
пакетов одновременно, ядро должно сделать выбор очередности. Существу­
ют несколько различных алгоритмов того, как это сделать наиболее правиль­
ным образом. Ответив Y на этот пункт, вы сможете поэкспериментировать
с большим набором таких алгоритмов, N оставляет очередность по умол­
чанию.
9. SCSI support (Поддержка SCSI-устройств).
SCSI support. Общий драйвер SCSI.
SCSI disk support. Поддержка SCSI-жестких дисков.
SCSI tape support. Поддержка SCSI-ленточных устройств (стриммеров).
SCSI CD-ROM support. Поддержка SCSI CD-ROM.
Enable vendor-specific extensions. Включает поддержку расширений прото­
кола, необходимых для работы с некоторыми многосессионными дисками.
SCSI generic support. Поддержка других SCSI-устройств.
Probe all LUNs on each SCSI device. Поддежка SCSI-устройств, имеющих
несколько логических номеров (с точки зрения Linux они будут выглядеть
как несколько разных устройств).
Перекомпиляция ядра 269

Verbose SCSI error reporting. Вывод более подробных сообщений об ошиб­


ках при работе со SCSI-устройствами.
SCSI logging facility. Включение возможности ведения журнала работы со
SCSI, как правило в отладочных целях.
10. SCSI low-level drivers (Низкоуровневые SCSI-драйверы).
В случае необходимости в этом меню нужно выбрать драйвер для вашего
SCSI-адаптера и в некоторых случаях ответить на дополнительные вопросы.
11. Network device support (Поддержка сетевых устройств).
Network device support (Общая поддержка сетевых устройств). Здесь мож­
но ответить N, если вы не собираетесь подключать компьютер к какой бы то
ни было сети.
ARCnet support. Поддержка сетевый карт ARCnet.
Dummy net driver support (Поддержка пустого устройства). Устройство
/dev/dummy - сетевое устройство, которое никуда не ведет, как /dev/null. Его
поддержка может быть полезна при работе со SLIP или Р Р Р
EQL support. Если у вас есть два РРР- или SLIP-соединения, запущенных
одновременно (для чего обычно требуется две телефонные линии), этот
драйвер позволит их использовать как одно соединение удвоенной пропуск­
ной способности.
Ethertap network tap. Этот драйвер поддерживает специальное устройство,
/dev/tapO, использующее механизм прямой связи с ядром netlink. Его допус­
тимо сконфигурировать как любое другое сетевое устройство, и затем пользо­
вательская программа сможет записывать в него E th ern et-пакеты. Ядро
будет считать, что они пришли из сегмента сети, соединенного с этим уст­
ройством. Пакеты, которые ядро будет посылать в этот виртуальный сег­
мент, должны быть считаны программой.
Ethernet (10 or 100Mbit). Поддержка сетевых карт для Ethernet. Если вы
отмечаете этот пункт, из следующего списка драйверов необходимо выбрать
тот (или те), которые соответствует присутствующим сетевым платам. Сна­
чала перечисляются ISA-карты, затем EISA, VLB и PCI, затем сетевые адап­
теры, подключаемые к параллельному порту (Pocket and portable adaptors).
FDDI driver support. Драйвера для F D D I-адаптеров.
HIPPI driver support. Драйвера для НІРРІ-адаптеров.
Frame Relay DLCI support. Поддержка механизма инкапсуляции Frame
Relay.
PLIP (parallel port) support. Поддержка протокола РРР по параллельному
порту.
РРР (point-to-point) support. Поддержка обычного протокола РРР.
SLIP (serial line) support. Поддержка протокола SLIP (старый аналог
Р Р Р ).
CSLIP compressed headers. Поддержка протокола SLIP со сжатыми заго­
ловками пакетов (должен поддерживаться и у провайдера, и у вас).
Keepalive and linefill. Поддержка SLIP-соединения в активном состоянии.
270 Настройка системы

Six bit SLIP encapsulation. Поддержка 6-битного SLIP, что бывает необхо­
димо для связи через устройство или сеть, которая не пропускает управля­
ющие символы.
W ireless LAN (non-hamradio). Поддержка безпроводных локальных сетей,
которые не используют любительское радио (а именно Starmode radio IP
и WaveLAN).
Token Ring driver support. Драйвер для локальных сетей, построенных по
технологии Token Ring.
Traffic Shaper. Это виртуальное сетевое устройство, которое пересылает за­
писываемые в него данные в реальное сетевое устройство, но накладывает
ограничение на пропускную способность. Например, если провайдер повы­
шает цену при потоке данных от вас выше некоторого значения.
Control H ostess SV-11 support. Поддержка адаптера Hostess SV-11.
COSA/SRP sync serial boards support. Поддержка карт синхронных после­
довательных плат COSA и SRP (что позволяет подключать любые устрой­
ства с интерфейсами Х.12, V.24, V.35 или V.36 к вашему компьютеру).
Red Creek Hardware VPN. Поддержка виртуальной частной сети Red Creek.
WAN drivers. Поддержка WAN-адаптеров (если ваш компьютер будет ис­
пользоваться как WAN-маршрутизатор).
LAPB over Ethernet driver. Поддержка LAPB-соединения с другим компь­
ютером в сети.
Х.25 async driver. Драйвер для низкоуровневой части группы протоколов
Х.25, работающий по асинхронной последовательно линии (например, по
модему).
12. Amateur Radio support (Поддержка любительского радио).
Amateur Radio support. Этот пункт включает всю группу пунктов конфигу­
рации, имеющих отношение к подключению Linux к любительскому радио.
Amateur Radio ΑΧ.25 Level 2 protocol. Это основной протокол, используе­
мый для взаимодействия компьютеров между собой по радио. Он может
применяться и сам по себе, и для переноса T C P /IP -пакетов. Выбрав под­
держку этого протокола, вы должны будете также выбрать драйвер, соответ­
ствующий используемому вами способу соединения компьютера и радио­
станции.
13. IrDA subsystem support (Поддержка подсистемы IrDA).
IrDA subsystem support. IrDA - это группа протоколов для осуществления
безпроводных соединений при помощи инфракрасного излучения, часто ис­
пользуемых в laptop-компьютерах.
IrLAN protocol. Поддержка протокола IrLAN - эмуляции Ethernet посред­
ством передачи данных по инфракрасному лучу.
IrOBEX protocol. Поддержка протокола IrOBEX.
IrCOMM protocol. Поддержка протокола IrCOM M - эмуляции последова­
тельного интерфейса по инфракрасному лучу.
IrLPT protocol. Поддержка протокола IrLPT, используемого принтерами,
управляемым IrDA.
Перекомпиляция ядра 271

IrDA protocol options. Различные тонкие настройки IrDA.


IrDA compression. Сжатие данных, передаваемых по IrDA, аналогичное
используемому в РРР.
14. Infrared-port device drivers (Драйверы инфракрасных устройств).
В этом меню можно выбрать конкретное устройство, используемое в вашем
компьютере для соединений по IrDA.
15. ISDN subsystem (Подсистема ISDN).
В этом меню выбирается драйвер для системы ISDN - полностью цифровой
телефонной связи по специально выделенной линии.
16. Old CD-ROM drivers (not SCSI, not IDE). Драйверы для старых CD-ROM.
До принятия стандартов ID E/A TA PI выпускались устройства CD-ROM
(обычно одно- и двухскоростные), которые использовали свои собственные
протоколы и в этом меню собраны драйверы для таких устройств. Это обо­
рудование давно устарело, и вероятность его использования на современ­
ных компьютерах очень низка. Не пользуйтесь этими драйверами, если ваш
CD-ROM подключен стандартным IDE- или SCSI-кабелем.
17. Character devices (Символьные устройства).
Virtual terminal (Виртуальный терминал). Включает поддержку виртуаль­
ных текстовых терминалов, между которыми вы можете переключаться
клавишами A lt+Fl - Alt+F12 и некоторыми другими способами. Если вы
ответите N, не будет создано ни одного терминала, то есть пользоваться кла­
виатурой и монитором на этом компьютере будет нельзя (но можно захо­
дить в систему по сети или последовательному соединению).
Support for console on virtual terminal (Поддержка консоли на виртуаль­
ном терминале). В данном случае под консолью понимается устройство,
на которое ядром Linux выводятся сообщения об ошибках. Ответ Y в этом
поле даст возможность использовать один из виртуальных терминалов
в качестве такой консоли. По умолчанию будет применен видимый в на­
стоящий момент терминал, но можно указать любой другой в командной
строке ядра, например, для вывода сообщений на третий терминал, соп-
sole=tty3.
Standard/generic (dumb) serial support (Стандартный уровень поддержки
обычных последовательных портов). Ответить N здесь можно, если только
вы не собираетесь пользоваться последовательными портами вообще.
Support for console on serial port (Поддержка консоли на последовательном
порту). Разрешает применять последовательный порт в качестве системной
консоли. Чтобы этим воспользоваться, нужно указать имя порта в команд­
ной строке ядра, например console=ttyS1 (для /dev/ttySI ). Только если в си­
стеме отсутствует видеокарта, ядро автоматически будет использовать пер­
вый последовательный порт /dev/ttySO.
Extended dumb serial driver support (Расширенный уровень поддержки
обычных последовательных портов). Предлагает следующие несколько воп­
росов для особых ситуаций, связанных с последовательными портами.
272 Настройка системы

Support more than 4 serial ports (Поддержка более чем 4 портов). Использу­
ется, если у вас есть плата, ведущая себя как последовательный порт или
многопортовая плата.
Support for sharing serial interrupts (Поддержка совместно используемых
прерываний). Некоторые многопортовые платы позволяют нескольким пос­
ледовательным портам использовать одно и то же IRQ. Данный пункт вклю­
чает поддержку такой ситуации.
Autodetect IRQ on standard ports (Автоопределение номеров прерываний
для стандартных портов). Эта опция считается небезопасной, и рекоменду­
ется конфигурировать прерывания в сценариях запуска, используя команду
setserial.
Support special multiport boards (Поддержка специальных многопортовых
плат). Здесь имеются в виду платы, которые могут сигнализировать систе­
ме о том, что те или иные последовательные порты нуждаются в обслу­
живании.
Support the Bell Technologies HUB6 card (Поддержка платы HUB6).
Non-standard serial port support (Поддержка нестандартных последователь­
ных портов). Этот пункт разрешает конфигурирование драйверов для пос­
ледовательных портов, не поддерживаемых стандартным драйвером. В ос­
новном это относится к многопортовым платам типа Cyclades или Digiboards,
используемых, если к вашему компьютеру подключено большое количество
пользователей по последовательным линиям (модемам).
Unix98 PTY support (Поддержка псевдотерминалов Unix98). Включает под­
держку псевдотерминалов в соответствии со стандартом Unix98 (например,
/d e v /p ts/2 ), в дополнение к старым псевдотерминалам в BSD-стиле (напри­
мер, /d ev /tty p 2 ). Эти устройства поддерживаются системой начиная с вер­
сии библиотеки libe 6.1 (glibe 2.1).
Parallel printer support (Поддержка принтера на параллельном порту). Вклю­
чает поддержку одного принтера. Если у вас несколько параллельных пор­
тов, нужно будет указать в командной строке ядра, какой именно использо­
вать для принтера.
Support IEEE1284 status readback (Поддержка чтения состояния принтера).
Если ваш принтер удовлетворяет стандарту IEEE 1284, вы можете считывать
его состояние из параллельного порта (например, командой cat /dev/lpl).
Mouse support (not serial mice) (Поддержка мыши, не подключенной к пос­
ледовательному порту). Этот пункт разрешит группу вопросов конфигура­
ции о типе подключенной к вашему компьютеру мыши. Используйте его,
если ваша мышь подключена каким-то образом, отличным от соединения
с СОМ-портом.
QIC-02 tape support. Поддержка не-SCSI стриммера QIC-20.
Watchdog Timer Support. Эта опция включает поддержку специального
устройства, которое перезагрузит компьютер, если не сможет в течение
одной минуты открыть и произвести запись в файл. Кроме того, этот
Перекомпиляция ядра 273

драйвер может поддерживать аппаратные устройства, отслеживающие тем­


пературу в компьютере и другие ситуации, которые могут потребовать пере­
загрузки.
/dev/nvram support (Поддержка /dev/nvram). Это устройство - просто уча­
сток CM OS-памяти вашего компьютера, и включение его поддержки позво­
ляет программам выполнять чтение и запись непосредственно в CMOS.
Enhanced Real Time Clock Support (Улучшенная поддержка часов реально­
го времени). Разрешает создание устройства /dev/rtc и доступ к нему
пользовательских программ. Необходимо в многопроцессорных системах.
Tadpole ANA Н8 Support. Поддержка микроконтроллера Hitachi Н8/337.
Double Talk PC internal speech card support. Драйвер для синтезатора речи
DoubleTalk PC.
18. Mice (Мыши).
Здесь перечислены типы драйверов для мышей, не подключаемых к после­
довательному порту (в основном это busmouse и P S /2 -мыши).
19. Watchdog Cards (Карты Watchdog).
В этом меню перечислены поддерживаемые Linux аппаратные таймеры типа
watchdog, а также дается возможность выбрать программный таймер (Soft­
ware Watchdog), который в некоторых критических ситуациях может не су­
меть перезагрузить компьютер, но зато не требует никакой лишней платы.
20. Video For Linux (Видео для Linux).
Video For Linux. Поддержка устройств захвата видео и/и ли аудио, а также
ЧМ-радио карт. Из карт, не указанных в данном списке, большинство пост­
роены на чипсете Booktree и могут работать при установке ВТ848 Video For
Linux.
21. Joystick support (Поддержка джойстика).
В этом меню можно выбрать джойстик или gamepad (панелька с кнопками,
используемая в игровых приставках).
22. Ftape, the floppy tape device driver (Поддержка ленточных стриммеров).
Ftape (QIC-80/Travan) support. Основной пункт, включающий драйвер
в ядро (или подключающий в виде модуля).
Zftape, the VFS interface. Обязательно включайте этот модуль, иначе вы
просто не сможете записывать или считывать файлы со стриммера.
Enable procfs status report. Поддержка каталога / р гос/ftape, в котором на­
ходятся различные информационные файлы в текстовом формате.
Debugging output. Объем отладочной информации, которую сможет (но не
обязательно будет) производить драйвер.
Floppy tape controllers. Этим пунктом можно выбрать нестандартный кон­
троллер для стриммера. Возможно, при этом придется указать его порты
ввода-вывода, номера IRQ и DMA.
23. Filesystems (Файловые системы).
Quota support. Поддержка пользовательских квот на суммарный объем ис­
пользуемого дискового пространства и/и ли число файлов.
274 Настройка системы

Kernel automounter support. Поддержка системы автоматического монтиро­


вания съемных носителей autofs.
ADFS filesystem support (read only). Поддержка файловой системы Acorn
Disc Filing System, использующейся на ARM и Acorn Archimedes (только для
чтения). Эту и две последующие опции имеет смысл включать только при
необходимости обеспечения совместимости с перечисленными файловыми
системами.
Amiga FFS filesystem support. Поддержка файловой системы Fast File
System, использующейся на компьютерах Amiga.
Apple Macintosh filesystem support. Поддержка файловой системы HFS, ис­
пользующейся на компьютерах Apple Macintosh.
DOS FAT fs support. Поддержка файловой системы FAT, использующейся
в MS DOS и системах на ее основе (этот пункт включает только общую
часть поддержки FAT, конкретные драйвера настраиваются в следующих
трех пунктах).
MSDOS fs support. Поддержка файловой системы MS DOS.
UMSDOS: Unix-like filesystem on top of standard MSDOS. Этот драйвер
позволяет запускать Linux с файловой системы MS DOS, эмулируя все пра­
ва, ссылки и другие особенности Unix-систем. UM SDOS работает заметно
медленнее, чем обычные файловые системы.
VFAT (W indows-95) fs support. Поддержка модификации FAT, используе­
мой в Windows 95 и выше. Подключайте этот драйвер, если вы хотите иметь
возможность работать с файлами с длинными именами на W indows-разде-
лах и дискетах.
ISO 9660 CD-ROM filesystem support. Поддержка файловой системы High
Sierra Filesystem, использующейся на CD-ROM. Этот драйвер также поддер­
живает расширения Rock-Ridge, позволяющие хранить на CD файлы с длин­
ными именами и символические ссылки. Если у вас есть CD-ROM, включай­
те этот драйвер.
Microsoft Joliet CD-ROM extensions. Поддержка расширения Joliet, позво­
ляющего хранить на CD файлы с именами в кодировке UNICODE.
Minix fs support. Поддержка файловой системы Minix (предка современной
файловой системы Linux). Встречается редко, в основном на дискетах.
NTFS filesystem support (read-only). Поддержка файловой системы NTFS,
используемой в Windows NT (только для чтения).
O S/2 HPFS fielsystem support (read-only). Поддержка файловой системы
HPFS, используемой в IBM O S/2 (только для чтения).
/ргос filesystem support. Поддержка виртуальной файловой системы /ргос.
Обязательно отвечайте Y, многие программы требуют наличия этой системы,
/d e v /p ts filesystem for Unix98 PTYs. Поддержка виртуальной файловой
системы для псевдотерминалов по стандарту Unix98. Включайте эту систе­
му, если вам необходима поддержка таких псевдотерминалов.
QNX filesystem support. Поддержка файловой системы, используемой
в QNX 4.
Перекомпиляция ядра 275

ROM filesystem support. Поддержка файловой системы, создаваемой в па­


мяти, которая обычно используется на инсталляционных дискетах.
Second extended fs support. Поддержка файловой системы ext2fs, главной
файловой системы в Linux. Отвечайте Y.
System V and Coherent filesystem support. Поддержка файловой системы,
использующейся в SCO Unix, Xenix, и Coherent Unix.
UFS filesystem support. Поддержка файловой системы, использующейся
в SunOS, FreeBSD, NetBSD, OpenBSD и NeXTStep.
24. Network Filesystems (Сетевые файловые системы).
Coda filesystem support. Поддержка сетевой файловой системы Coda. Она
во многом похожа на NFS, но поддерживает больше возможностей.
NFS filesystem support. Поддержка классической сетевой файловой систе­
мы NFS.
Root file system on NFS. Отметьте этот пункт, если корневая файловая сис­
тема монтируется с удаленного компьютера по NFS. Используется для со­
здания бездисковых рабочих станций.
NFS server support. Встроенный в ядро N FS-сервер. При желании можно
эту опцию не включать и пользоваться обычными программными N FS-сер­
верами.
SMB fielsystem support. Поддержка протокола и сетевой файловой систе­
мы, использующейся в Windows for Workgroups, Windows 95, Windows NT
и O S/2 Lan Manager. Этот драйвер позволит вам монтировать диски
с Windows и свободно работать с ними из Linux.
SMB Win95 bug work-around. Отметьте этот пункт, если вы собираетесь об­
ращаться по SMB к Windows 95.
NCP filesystem support. Поддержка сетевой файловой системы, использу­
ющейся Novell NetWare.
25. Partition Types (Типы разделов).
BSD disklabel (BSD partition tables) support. Поддержка таблицы разде­
лов FreeBSD. Все пять форматов таблиц разделов, перечисленных в данной
секции меню, нужны только для работы с дисками соответствующих опера­
ционных систем и не используются в Linux.
Macintosh partition map support. Поддержка таблицы разделов MacOS.
SMD disklabel (Sun partition tables) support. Поддержка таблицы разделов
SunOS.
Solaris (x86) partition table support. Поддержка таблицы разделов Solaris
для PC.
UnixWare slices support. Поддержка таблицы разделов UnixWare.
26. Native Language Support (Поддержка кодировок для работы с разделами
DOS/W indows).
В этом меню перечислены всевозможные кодовые страницы. Скорее всего,
вам понадобятся Codepage 437 (United States, Canada), Codepage 866
(Cyrillic/Russian), NLS ISO 8859-1 (Latin 1; Western European Languages),
NLS KOI8-R (Russian) Имея поддержку этих таблиц в ядре, вы сможете
276 Настройка системы

работать на разделах MS DOS и VFAT с файлами, содержащими в именах


русские буквы (естественно, если раздел смонтирован с соответствующими
опциями).
27. Console Drivers (Драйверы консоли).
VGA text console. Драйвер обычной текстовой консоли на VGA-совмести-
мой видеокарте. Практически обязателен.
Video mode selection support. Поддержка различных текстовых видео ре­
жимов для консоли.
MDA text console (dual-headed). Поддержка старых MDA и HGC видео­
карт.
Support for frame buffer devices. Поддержка графической консоли. Графи­
ческая консоль доступна, только если видеокарта поддерживает линейный
кадровый буфер. Для запуска X Window из графической консоли потребу­
ется специальный X сервер (XF86_FBDev). Затем следует список различ­
ных видеокарт, поддержка которых включена в драйвер. Если вашей карты
в списке нет, вполне вероятно, что она будет работать с настройкой VESA
VGA graphics console. Затем можно указать шрифты, которые будут вком-
пилированы в драйвер и другие настройки.
28. Sound (Звук).
Sound card support. Поддержка звуковой платы.
Здесь перечислены звуковые платы, драйверы для которых распространя­
ются вместе с ядром. Если вашей платы здесь нет, драйвер для нее часто
можно найти у производителей или в коллекции звуковых драйверов ALSA
(http://www.alsa-project.orgV
29. Additional low level sound drivers (Дополнительные низкоуровневые звуко­
вые драйверы).
В этом меню собраны дополнительные драйверы, имеющие отношение к зву­
ковым платам.
30. Kernel hacking (Разработка ядра).
Magic SysRq key (Волшебная клавиша SysRq). Выбрав этот пункт, вы полу­
чите в свое распоряжение набор комбинаций клавиш, выполняемых непос­
редственно ядром. Эти комбинации могут позволить вам вернуть управле­
ние системой, если она зависла, или аккуратно ее перезагрузить. Например,
Alt+SysRq+k прекращает выполнение всех процессов, запущенных с теку­
щей консоли, Alt+SysRq+s синхронизирует файловые системы даже в за­
висшей системе, так что при последующей перезагрузке ничего не будет ис­
порчено, и т.д. Обратите внимание, что нажать на эти клавиши может любой,
так что из соображений безопасности эта опция никогда не должна быть за­
действована на компьютере коллективного пользования.

5.1.2. Компиляция и инсталляция ядра


После завершения конфигурации ядра Linux можно переходить непосредственно
к его компиляции и инсталляции. Загрузочный диск с новым ядром создается с по­
мощью следующих команд:
Установка X Window τη
make dep
make clean
make zdisk

Процесс компиляции ядра может занять некоторое время, а перед подачей пос­
ледней команды необходимо вставить чистый отформатированный гибкий диск
в дисковод. Если вы создаете ядро Linux впервые или не уверены в правильности
конфигурации, будет лучше для начала воспользоваться именно этой возможнос­
тью для тестирования. Чтобы избежать проблем при загрузке, инсталлировать
ядро на жесткий диск желательно только тогда, когда вы убедитесь в его полной
работоспособности.
Если вы используете LILO, создание и инсталляция ядра выполняется следу­
ющей серией команд:
make dep
make clean
make zlilo

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

Полученный образ затем можно установить вручную на различные носители.


После завершения компиляции и инсталляции ядра важным элементом является
создание модулей. Весь процесс осуществляется двумя специальными командами:
make modules
make modules_install

Если все прошло успешно, в вашем распоряжении оказывается новое полно­


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

5.2. Установка X Window


Практически во всех дистрибутивах обязательным элементом является базовая
графическая система X Window. Без нее может работать очень ограниченное чис­
ло графических программ, разработанных специально для Linux (с использова­
нием библиотеки SVGAlib), как правило, различные игры. Основная программа
в системе X Window - это Х-сервер. Сервер выполняет переключение экрана
в графический режим и удовлетворяет запросы программ (Х-приложений в об­
щепринятой терминологии) на отрисовку изображения. Такая схема необходима
потому, что в системе X Window программа может быть физически запущена на лю­
бом компьютере в Internet, а ее графический интерфейс может при этом отображать­
ся на любом другом, на котором запущен Х-сервер. Именно поэтому необходима
278 Настройка системы

поддержка T C P /IP при конфигурации ядра - графические программы, которые


вы запускаете, открывают локальное TCP соединение с Х-сервером, находящем­
ся на этом же самом компьютере. Бесплатная реализация X Window, используе­
мая в Linux, называется XFree86.

5.2.1. Компиляция XFree86


Скорее всего, вам не потребуется компилировать X Window самостоятельно, но
иногда это имеет смысл. В частности, если вам необходима XFree86 версии 3.3.3
или 4.0.0, вы можете исправить ошибки, из-за котороых в 3.3.3 нельзя установить
русскую локаль, а в 4.0.0 всякая попытка работы с русским языком приводит к кра­
ху программы. Разумеется, авторы русских дистрибутивов исправляют такие
ошибки, но ситуации бывают разные. Например, вам потребовалось перейти на
4.0.0 из-за поддержки 3D, шрифтов TrueType и других возможностей, введенных
в этой версии, но у вас нет доступа к исходным текстам версии 4.0.1. Установим
XFree86 4.0.0. На сайте ftp://ftp.xfree86.org/ в каталоге /pub/X Free86/4.0 находят­
ся три файла: X400sгс-1.tgz, X400src-2. tgz и X400src-3. tgz общим размером 47 Mb.
Первый содержит основные исходные тексты, второй - шрифты и часть докумен­
тации, третий - только документацию в формате PS, подготовленную для печати.
Распакуем файлы.
tar zxvf X400src-1.tgz
tar zxvf X400src-2.tgz
tar zxvf X400src-3.tgz
cd xc

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


(только в 4.0.0). Для этого надо открыть в любом текстовом редакторе файл lib/
X11/imConv. с и заменить строку 799
local_count += local_count;

local_count += count;
После этого можно просмотреть файлы config/cf/linux. cf и config/cf/
site, def, но обычно в их модификации не возникает необходимости. Список пе­
ременных, которые устанавливаются в site, def, приведен в conf ig/cf/README. Ком­
пиляция XFree86 осуществляется командой make World. Ее выполнение длится
достаточно долго - примерно час на компьютере среднего быстродействия. Если
все завершилось успешно, можно выполнить инсталляцию при помощи обычного
механизма make install.

5.2.2. Конфигурация XFree86


Конфигурация XFree86 полностью описывается параметрами в файле XF86Config,
который располагается в зависимости от дистрибутива либо в /etс/Х1 1, либо
в /etc. Кроме того, этот файл может быть в домашнем каталоге пользователя
и в некоторых других местах (см. man XF86Conf ig). Создавать его вручную довольно
Установка X Window 279

долго и неудобно, так что с дистрибутивом XFree86 поставляются сразу две про­
граммы для автоматического конфигурирования - xf 86conf ig и XF86Setup. Первая
- более старая программа, выполненная в виде текстового диалога, вторая - про­
грамма с графическим интерфейсом, использующая при старте минимальные на­
стройки для монитора: стандартный VGA, 16 цветов. После создания базового
файла конфигурации при помощи одной из этих программ более тонкие коррек­
тивы можно внести вручную.

5.2.2.1. Программа xf86config


Рассмотрим диалог xf 86conf ig (рис 5.4).
-- rxvt Г ■ г Г

First specify a mouse protocol type. C h o o s e one fr o m the f o l l o w i n g list:

1■ M i c r o s o f t c o m p a t i b l e (2 - b u t t o n p r o t o c o l )
2- M o u s e S y s t e m s СЗ - b u t t o n p r o t o c o l )
3_ Bus M o u s e
4. PS/2 Mo u s e
5- L o g i t e c h M o u s e (serial, old type, L o g i t e c h p r o t o c o l )
6- Logitech MouseMan (Microsoft compatible)
7. MM S e r i e s
8. MM H i t T a b l e t
9- Microsoft IntelliMouse

If you ha v e a t u o - b u t t o n mouse, it is most l i k e l y of type 1, and if you have


a t h r e e - b u t t o n mouse, it can p r o b a b l y s u p p o r t both p r o t o c o l 1 and 2 . T h e r e are
turn ma i n v a r i e t i e s of the l a t t e r type: m i c e ui t h a s w i t c h to s e l e c t the
p r o t o c o l , and mi c e th a t d e f a u l t to 1 an d r e q u i r e a b u t t o n to be held at
b o o t - t i m e to s e l e c t p r o t o c o l 2. So m e m i c e can be c o n v i n c e d to do 2 by s e n d i n g
a s p e c i a l s e q u e n c e to the s e r i a l po r t (see the C l e a r D T R / C l e a r R T S o p t i o n s ) -

Enter a protocol numb er : |

Рис 5.4. Программа конфигурации X Window xf86config

Первый вопрос (после экрана с кратким описанием программы) - тип исполь­


зуемой мыши. Наиболее часто встречающиеся варианты - двухкнопочные мыши
Microsoft (тип 1), трехкнопочные, обычно с переключателем между двух- и трех­
кнопочным режимами (тип 2), мыши Logitech MouseMan, к которым относятся
большинство трехкнопочных мышей без переключателя (тип 6), PS/2 мыши, под­
соединяемые в PS/2 разъем (тип 4). После этого программа предложит включить
режим ChordMiddle, который бывает необходим для включения средней кнопки на
некоторых Logitech-мышах и режим эмуляции средней кнопки (Emulate3Buttons,
когда одновременный щелчок правой и левой кнопкой приравнивается к щелчку
средней). Первое требуется крайне редко, второе необходимо для двухкнопочных
мышей. Следующий вопрос - имя устройства, к которому подключена мышь.
В Linux принято создавать файл /dev/mouse, являющийся символической ссыл­
кой на реальное устройство, например, /dev/ttySO для мыши на СОМ1. Нажатие
на Enter в ответ на этот вопрос будет использовать /dev/mouse.
280 Настройка системы

Следующее меню - выбор типа клавиатуры. Обычные варианты - 101-клавиш-


ная (тип 1), 104-клавишная (тип 3), Microsoft Natural (тип 8). После этого пред­
лагается выбрать раскладку клавиатуры, которая будет действовать в X Window.
Нажмите клавишу Enter, чтобы увидеть следующую страницу меню и указать тип
21 для русского языка.
Затем, после еще одного экрана с разъяснениями, вам предлагается выбрать
интервал частот горизонтальной синхронизации, поддерживаемых вашим мони­
тором. Очень важно указать этот интервал точно, так что обязательно прочтите
документацию на монитор. На экране показывается 10 типичных интервалов, но,
введя 11, можно указать собственный интервал (или даже набор интервалов, че­
рез запятую). Следующий вопрос - интервал частот вертикальной синхрониза­
ции, который также следует обязательно взять из спецификации вашего монито­
ра. После этого программа предложит ввести идентификатор монитора - можно
просто нажать клавишу Enter.
Затем нужно определить тип видеокарты. Введите у, чтобы получить список
известных системе видеокарт. При помощи клавиши Enter пролистайте список
и введите номер видеокарты, которая соответствует установленной в вашем ком­
пьютере. Затем укажите или наберите объем установленной на видеокарте памя­
ти, идентификатор видеокарты (любая строка или Enter), после чего вы получите
список видеорежимов, которые будут описаны в файле конфигурации для разных
глубин цвета (8-, 16-, 24-битный). Вы можете изменить этот набор, не бойтесь ос­
тавить указать что-то, что не поддерживается вашей видеокартой или монитором
- Х-сервер автоматически проигнорирует такие режимы. Затем следует указать,
какая глубина цвета будет использоваться по умолчанию. В работающей системе
XFree86 вы сможете переключаться между различными режимами с одной и той
же глубиной цвета, нажимая Ctrl+Alt++ и Ctrl+Alt+-, но чтобы перейти в режим
другой глубины, придется перезапускать Х-сервер с опцией -bpp.
Последний вопрос - в какой каталог записать созданный базовый файл конфи­
гурации. Если вы не выбираете стандартный /etc/X11/XF86Config, программа пред­
лагает сохранить его как XF86Conf ig в текущем каталоге. При ответе η вам дается
возможность ввести имя файла самостоятельно.
Напоследок убедитесь, что /usr/X11R6/bin/X - это символическая ссылка на
нужный вам Х-сервер, например на /usr/X11R6/bin/XF86_SVGA для большинства
неакселерированных видеокарт.

5.2.2.4. Структура файла конфигурации


Откройте вновь созданный файл конфигурации в любом текстовом редакторе
и вы увидите множество параметров. При необходимости они настраиваются вруч­
ную. Файл разделен на секции, которые могут располагаться в любом порядке.
Каждая секция начинается со слова Section и заканчивается EndSection. Подсек­
ции ограничены словами SubSection и EndSubSection. Имена секций, так же как
и другие строковые параметры в этом файле, берутся в кавычки.
Установка X Window 281

Секция "Files"
В этой секции указываю тся пути к файлам, которые могут потребоваться
серверу.
□ FontPath " п у т ь " добавляет путь к каталогу, содержащему шрифты, к спис­
ку каталогов, которые Х-сервер будет просматривать при поиске очередного
экранного шрифта. Если на вашем компьютере запущен сервер шрифтов xfs
(это весьма полезно, потому что Х-сервер будет разгружен от работы по мас­
штабированию шрифтов), можно указать в качестве пути "lo calh o st: 7100".
Соответственно, если вы используете сервер шрифтов с другого компьютера
в локальной сети, укажите его имя вместо localhost.
□ RGBPath 11п у т ь " указывает путь к базе данных цветов. При ее отсутствии
используется значение по умолчанию /usr/X11R6/lib/X11/rgb.
□ ModulePath 11п у т ь " добавляет к списку путь к каталогу, содержащему мо­
дули XFree86.
Секция 11ServerFlags11
В этой секции указываются глобальные настройки сервера. Все они являются
опциями с двумя параметрами - названием и словом "yes", "on", "true", 1 или
(в случае негатиного значения) "no", "off", "false", 0, который в дальнейшем
будет обозначен как "bool".
□ Option "NoTrapSignals" "bool" приводит к тому, что сервер будет оставлять
файл core, пригодный для обработки отладчиком. В обычной работе эта оп­
ция не нужна и даже вредна, так как сервер будет искажать видеорежим при
ошибочном выходе.
□ Option "DontZap" "bool" запрещает обработку комбинации клавиш Ctrl+
Alt+Backspace, которая приводит к немедленному выходу из X Window.
□ Option "DontZoom" "bool" запрещает обработку комбинаций клавиш Ctrl+
A lt+ - и Ctrl+Alt++, которые позволяют переключаться между сконфигури­
рованным видеорежимами с одной и той же глубиной цвета.
□ Option " DisableVidModeExtension" "bool" запрещает работу программы
xvidtune, регулирующей настройки монитора.
□ Option "DisableNonLocalXvidtune" "bool" разрешает запуск программы
xvidtune для вашего монитора с других компьютеров в сети.
□ Option "DisableModlnDev" "bool" запрещает работу расширений XFree86,
динамически модифицирующих настройки устройства ввода.
□ Option "AllowNonLocalModlnDev" "bool" разрешает запуск программ, из­
меняющих настройки устройства ввода, с других компьютеров в сети.
□ Option "AllowMouseOpenFail" "bool" разрешает запуск Х-сервера даже в том
случае, если мышь не может быть найдена/инициализирована.
□ Option "VTInit" "ко м а н д а " выполняет к о м а н д у сразу после того как вир­
туальный терминал, используемый Х-сервером, был открыт. Эта опция
нужна очень редко, когда виртуальный терминал нуждается в специальной
настройке.
282 Настройка системы

□ Option "VTSysReq" "bool" разрешает переключение виртуальных термина­


лов в стиле SYSV-систем. Для этого надо нажать Alt+SysRq, а затем нуж­
ную функциональную клавишу. При этом комбинации Ctrl+Alt+Fn освобож­
даются и могут использоваться программами (Х-клиентами).
□ Option " BlankTime " " время" устанавливает время в минутах, после которо­
го монитор гаснет, если пользователь не проявлял активности. По умолча­
нию оно составляет 10 минут.
□ Option "StandbyTime" "время" устанавливает время в минутах, после ко­
торого монитор переключается в режим Standby (по умолчанию 20 минут).
Действует только тогда, когда для монитора была указана опция DPMS (в сек­
ции M onitor).
□ Option "SuspendTime" "время" устанавливает время в минутах, после ко­
торого монитор переключается в режим Suspend (по умолчанию 30 минут).
Действует только в том случае, если для монитора была указана опция DPMS
(в секции Monitor).
□ Option " OffTime" " время" устанавливает время в минутах, после которого
монитор переключается в режим off (по умолчанию 40 минут). Действует толь­
ко тогда, когда для монитора была указана опция DPMS (в секции Monitor).
□ Option "Pixmap" " bpp" формат цвета при глубине 24 бита, разрешены зна­
чения 24 и 32, по умолчанию и чаще всего - 32.
□ Option "РС98" "bool" указывает на то, что компьютер является японским
РС98.
□ Option "NoPM" "bool" отключает все, что связано с энергосбережением.
Секция "Module"
В этой секции указывается, какие модули Х-сервера должны быть загружены.
Обычно это только модули расширений и растеризации шрифтов, так как осталь­
ные могут загружаться автоматически по мере необходимости. Имеющиеся в на­
личии модули можно посмотреть в каталогах /usr/X11R6/lib/m odules/fonts и /us г/
X11R6/lib/modules/extensions. Модуль bitmap загружается автоматически. Очень
рекомендуется указать модуль extmod, необходимый для работы многих про­
грамм.
□ Load "модуль" загружает модуль. Имя модуля не должно включать префикс
lib и суффиксы .а, .о или .so. Например, растеризатор шрифтов Typel загру­
жается строкой Load "typel".
□ SubSection "модуль" открывает подсекцию, описывающую конфигурацию
конкретного модуля. Содержимое этой подсекции - строки Option, завер­
шается она на EndSubSection. Например, чтобы отключить расширение DGA,
следует открыть SubSection " extmod " и записать в ней строку Option " omit
Xfree86-DGA" , после чего обязательно поставить EndSubSection.
Секция " InputDevice "
Здесь описывается устройство ввода. Таких секций может быть несколько, чаще
всего их как минимум две - одна для клавиатуры и одна для мыши.
Установка X Window 283

□ Identifier " и м я " задает идентификатор устройства ввода. Это любая строка,
которая не должна повторяться для других устройств ввода.
□ Driver " д р а й в е р " указывает драйвер, который будет использоваться с дан­
ным устройством. Обычно это драйверы keyboard (для клавиатуры) и mouse
(для мыши).
□ Option " CorePointer" указывает, что это и только это устройство ввода яв­
ляется основным устройством графического ввода. По умолчанию исполь­
зуется первое подходящее устройство, обычно мышь.
□ Option "CoreKeyboard" указывает, что это и только это устройство ввода
является основным устройством символьного ввода. По умолчанию исполь­
зуется первое подходящее устройство, обычно клавиатура.
□ Option "AlwaysCore" "bool" указывает, что данное дополнительное устрой­
ство ввода может действовать как основное, например перемещать основной
указатель мыши.
□ Option " HistorySize" "число" устанавливает число запоминаемых передви­
жений указателя, по умолчанию 0.
Секция "Device"
В этой секции (их может быть несколько, одна обязательно) описывается ис­
пользуемая видеокарта. Большинство строк Option, указываемых в этой секции,
может также быть указано в секции Screen.
□ Identifier " и м я " задает идентификатор видеокарты. Это любая строка, но она
не должна повторяться для других видеокарт.
□ Driver " д р а й в е р " указывает драйвер, который будет использоваться с дан­
ным устройством.
□ BusID " ID " задает идентификатор шины, к которой подключена видеокар­
та. Для PC I это "PCI: шина: устройство: функция", для AGP - "PCI: 1: 0: 0". Если
у вас только одна видеокарта, это поле обычно не требуется. Идентификато­
ры шины для используемых видеокарт можно получить при помощи коман­
ды X -scanpci.
□ Screen число используется, если данная видеокарта работает сразу с несколь­
кими мониторами. В этом случае для каждого монитора требуется своя сек­
ция Device, и номер монитора указывается в данной строке, отсчет ведется
от нуля.
□ Chipset "чипсет " указывает чипсет видеокарты. Драйверы большинства ви­
деокарт могут определять его самостоятельно.
□ Ramdac " т и п " указывает тип ЦАП, используемого в вашей видеокарте.
В подавляющем большинстве случаев эта строка не нужна.
□ DacSpeed ч а ст о т а -8 ч а с т о т а - 16 част о т а -2 4 ча ст о т а -3 2 задает скорость
работы ЦАП в мегагерцах для разных глубин цвета. В подавляющем боль­
шинстве случаев эта строка не нужна.
□ Clocks част от а задает частоту или список частот в килогерцах, на которых
работает тактовый генератор в вашей видеокарте (пиксельных частот). Эта
284 Настройка системы

строка нужна только для очень старых карт, тактовый генератор которых не
программировался и не мог быть определен драйвером. Следует использо­
вать, если этого требует документация на драйвер.
□ ClockChip " т и п " указывает тип тактового генератора для карты с програм­
мируемым генератором. Следует использовать, только если документация на
драйвер требует этого.
□ VideoRam р а зм е р указывает объем в килобайтах установленной на видео­
карте памяти. Обычно определяется автоматически.
□ BiosBase адрес указывает базовый адрес видео-BIOS. Следует использовать,
только если этого требует документация на драйвер.
□ MemBase адрес указывает базовый адрес линейного кадрового буфера ви­
деокарты. Следует использовать, только если документация на драйвер тре­
бует этого.
□ IOBase адрес указывает базовый адрес области портов ввода-вывода видео­
карты. Следует использовать, если этого требует документация на драйвер.
□ ChipID id указывает числовой идентификатор карты, взамен автоматически
определенного. Следует использовать, если документация на драйвер требу­
ет этого.
□ ChipRev н ом ер указывает номер подверсии чипсета, взамен автоматически
определенного. Следует использовать, если документация на драйвер требу­
ет этого.
□ TextClockFreq част от а задает пиксельную частоту в мегагерцах для тексто­
вого режима. Практически никогда не используется.
□ Options позволяет передать драйверу различные дополнительные опции,
специфические для данного драйвера (например, отключение аппаратного
курсора или ускорения) или общие, которые могут быть также указаны
в секции Screen.
Секция "VideoAdaptor"
Не документирована, по крайней мере в текущей версии XFree86 4.0.1.
Секция "Monitor"
Эта секция описывает настройки монитора. Таких секций может быть несколько.
□ Identifier " и м я " задает идентификатор монитора. Это любая строка, но она
не должна повторяться для других мониторов.
□ VendorName " и м я " задает имя компании, выпустившей монитор. Это про­
сто любая строка.
□ ModelName " и м я " задает название модели монитора. Это тоже любая строка.
□ HorizSync диапазон задает допустимый диапазон или список (через запятую)
диапазонов или дискретных частот горизонтальной синхронизации, на кото­
рых может функционировать данный монитор. Числа указываются в килогер­
цах (можно изменить на герцы или мегагерцы, добавив Hz или MHz в конце
строки), диапазон обозначается двумя числами, разделенными тире. Видео­
режимы, которые требуют частоту, не попадающую в указанный диапазон, иг­
норируются Х-сервером. По умолчанию используется значение 28-33.
Установка X Window 285

□ VertRefresh д и а п а зо н задает допустимый диапазон, или список диапазонов


или дискретных частот вертикальной синхронизации (через запятую), на
которых может функционировать данный монитор. Числа указываются в гер­
цах (можно заменить на килогерцы или мегагерцы, добавив kHz или MHz
в конце строки), диапазон указывается двумя числами, разделенными тире.
Видеорежимы, которые требуют частоту, не попадающую в указанный диапа­
зон, игнорируются Х-сервером. По умолчанию используется значение 43-72.
□ Gamma кр а сны й зелен ы й синий указывает значение гамма-коррекции для мо­
нитора. Можно указать одно общее значение или отдельные для каждого из
основных цветов. По умолчанию оно равняется 1.0.
□ UseM odes " и м я " включает все режимы, указанные в одной из секций Modes,
выбор между секциями производится по идентификатору.
□ Mode "и м я " описывает видеорежим. В большинстве случаев это необяза­
тельно, так как сервер использует встроенные стандартные VESA-режимы,
но с помощью этой секции можно описать любой собственный режим, что
мы рассмотрим чуть позже. Эта опция занимает несколько строк и заканчи­
вается строкой EndMode. В нее входят следующие определения:
- DotClock cl пиксельная частота данного режима (частота выдачи точек на
экран).
- HTimings hd hss hse htot перечисляет времена горизонтального скана - раз­
мер видимой области в пикселах, начало строчного синхроимпульса, ко­
нец строчного синхроимпульса, полная длина горизонтального скана в от­
счетах генератора частоты.
- VTimings vd vss vse vtot перечисляет времена вертикального скана - раз­
мер видимой области в строках, начало кадрового синхроимпульса, конец
кадрового синхроимпульса, полное время вывода кадра в полных време­
нах вывода строки.
- Flags ф лаги задает дополнительные флаги в виде отдельных строк, взятых
в кавычки. Здесь можно указать "Interlace", "D oubleScan", "+H Sync",
"-H Sync", "+VSync", "-VSync", "Composite", "+CSync", "-CSync" (флаги
будут рассмотрены ниже, при описании создания собственного режима).
- HSkew hsk указывает, на сколько следует сдвинуть сигнал начала изобра­
жения. Если последние несколько пикселов в каждой строке видны на ле­
вом краю экрана, это значение следует уменьшить. Не все драйверы под­
держивают HSkew.
- VScan vsc указывает, сколько раз повторяется вывод каждой строки. По
умолчанию 1, флаг DoubleScan удваивает значение VScan. Не все драйве­
ры поддерживают VScan.
□ Modeline " и м я " cl hd hss hse htot vd vss vse vtot ф лаги hsk vsc задает то же самое,
что и Mode, но записанное в одну строку (см. выше).
□ Option "DPMS" включает поддержку расширений для управления энерго­
потреблением монитора.
□ Option "SyncQnGreen" сообщает серверу, что монитор использует синхро­
импульсы, врезанные в канал зеленого (композитные синхроимпульсы, на не­
которых специализированных мониторах).
286 Настройка системы

Секция "Modes"
Файл конфигурации может содержать несколько, одну или ни одной секции
Modes. Такая секция, если она есть, содержит один параметр Indentifier и несколь­
ко определений режимов при помощи строк Mode или Modeline. В секции
M onitor можно включать сразу все режимы, описанные в какой-либо секции
Modes, используя описанный выше параметр UseModes.
Секция "Screen"
Таких секций может быть несколько, по крайней мере одна описывает связь
между видеокартой и монитором (то есть между какой-либо секцией Device и ка-
кой-либо секцией M onitor). Первая секция Screen, найденная в файле конфигу­
рации, считается активной (это можно изменить в секции ServerLayout или пара­
метром командной строки X -screen) и указанные в ней монитор и видеокарта
задействуются.
□ Identifier " и м я " задает идентификатор секции Screen. Любая строка.
□ D evice " и м я " определяет секцию Device, которая будет задействована, по ее
идентификатору.
□ Monitor " и м я " определяет секцию Monitor, которая будет задействована, по
ее имени.
□ VideoAdaptor "и м я " определяет необязательную секцию VideoAdaptor, ко­
торая будет задействована, по ее имени.
□ DefaultDepth bpp задает глубину цвета, по умолчанию обычно 8 (бит на пик­
сел). Может быть изменена параметром командной строки X -depth.
□ DefaultFbBpp bpp задает глубину цвета для линейного кадрового буфера.
Она совпадает с глубиной цвета всегда, кроме некоторых случаев с 24 бита
на пиксел. Тогда можно выбирать между 24- и 32-битным линейным кадро­
вым буфером.
Подсекция "Display"
Каждая секция Screen содержит одну или несколько подсекций Display В та­
кой подсекции описываются параметры, относящиеся к одной конкретной глуби­
не цвета.
□ Depth глу б и н а указывает, для какой глубины цвета будет использоваться
данная подсекция. Большинство драйверов поддерживает 8, 15, 16 и 24 бита
на пиксел. Иногда встречаются значения 1, 4, даже 30. Обратите внимание
что 32 - ошибочное значение, так как в режимах 32 бита на пиксел в линей­
ном кадровом буфере реальная глубина цвета всегда 24.
□ FbBpp глуб и н а указывает число битов на пиксел в линейном кадровом буфе­
ре. Требуется только при глубине 24, если вы указываете две подсекции
Display - для 24 и 32-битного буфера.
□ Weight кр а сн ы й зелен ы й си ни й задает веса основных цветов для 16-битных
режимов, если драйвер поддерживает такую возможность.
□ Virtual X у задает разрешение виртуального экрана. Размер по х должен быть
кратным 8 или 16 (по умолчанию размер виртуального экрана устанавлива­
ется равным размерам максимального используемого видеорежима).
Установка X Window 287

□ ViewPort X у задает начальные координаты верхнего левого угла видимой ча­


сти виртуального экрана (во время работы вы можете перемещаться по вир­
туальному экрану, двигая указатель мыши). По умолчанию видимый экран
располагается в центре виртуального.
□ Modes " и м я " задает режим или список режимов (через пробелы), которые
будут задействованы при данной глубине цвета. Имена режимов - это имена,
указанные в строках ModeLine или Mode. Удерживая Ctrl+Alt, можно пря­
мо во время работы переключаться между этими (и только этими) режима­
ми, нажимая на серый плюс или серый минус.
□ Visual "и м я " указывает базовый тип цветовой модели. Для 8-битных реж и­
мов это могут быть StaticG ray, GrayScale, StaticC olor, PseudoC olor (по
умолчанию), TrueColor, DirectColor. Для 15-, 16- и 24-битных режимов мож­
но указывать TrueColor (по умолчанию) или DirectColor. Для 4-битных
(16-цветных) режимов допустимы StaticGray, GrayScale, StaticC olor (по
умолчанию), PseudoColor. Для монохромного (1-битного) режима единст­
венная цветовая модель StaticGray.
□ Black красны й зелены й синий задает цвет «черного» для монохромных режимов.
□ White красны й зелены й синий задает цвет «белого» для монохромных режимов.
Секция "ServerLayout"
Эта секция связывает друг с другом одну или несколько секций Screen и одну
или несколько секций InputDevice, формируя полную конфигурацию Х-сервера.
Секций ServerLayout может быть несколько, в этом случае используется первая
описанная, а другие можно активизировать с командной строки, набрав X -layout. Эта
секция необязательна, в случае ее отсутствия сервер будет использовать первую
секцию Screen, первую секцию InputDevice, которая может работать как клавиа­
тура, первую секцию InputDevice, которая может работать как указатель (мышь).
□ Identifier "и м я " задает идентификатор этой секции. В качестве идентифи­
катора может использоваться любая строка, отличная от идентификаторов
других секций ServerLayout.
□ Screen "и м я " указывает секцию Screen (по ее идентификатору), которая бу­
дет задействована в данной концигурации. Если вы используете одновремен­
но несколько мониторов, здесь можно описать их все и указать, как они рас­
положены относительно друг друга .
□ InputDevice " и м я " указывает секцию InputDevice (по ее идентификатору),
которая будет задействована в данной концигурации. Должно быть указано
как минимум два устройства - клавиатура и мышь. Для точности можно до­
бавить после идентификатора слово "CoreKeyboard" и " CorePointer" соот­
ветственно.
□ Option изменяет глобальные опции сервера. Все опции из секции ServerFlags
допустимы и в ServerLayout.
Секция "DRI"
Эта секция нужна только для того, чтобы указать Х-серверу, какие пользователи
могут работать с расширением DRI, лежащем в основе поддержки 3D-ускорителей.
288 Настройка системы

□ Mode режим указывает режим доступа таким же образом, как и режим дос­
тупа к файлу. Так, разрешение всем пользователям работать с DRI выглядит
как Mode 0666. Разрешение работать с DRI только какой-то группе пользо­
вателей выглядит как Mode 0660.
□ Group " и м я" указывает имя группы, описанной в /etc/g roup, к которой дол­
жен принадлежать пользователь, если права указаны как 0660.

5.2.2.5. Настройка собственного видеорежима


Система X Window не ограничивает вас классическими VESA-видеорежимами
640x480, 800x600, 1024x768. Вы можете установить любое разрешение. Един­
ственное ограничение - число точек в строке должно делиться на 8 или большую
степень двойки (16, 32, 64), а также, во избежание искажений, относиться к числу
строк в кадре как 4 к 3.
Выполните команду
X -probeonly
В файле output найдите либо набор скоростей тактового генератора (Clocks),
либо (для программируемых генераторов) максимальную скорость (Maximum
allowed dot-clock) и запишите их. Эти числа, а также поддерживаемые монитором
частоты синхронизации, и будут реальным лимитирующим фактором.
Выбирая желаемое разрешение, обратите внимание, во-первых, на то, сколько
точек физически может вывести ваш монитор, - измерьте размеры его видимой
области и разделите на размер зерна. Например, на 15-дюймовом мониторе DTK
DA-570, на котором пишется этот текст, реальный размер видимой области -
260x195мм, размер зерна 0.28мм, и это значит, что за разрешениями выше 928x696
гнаться нет смысла. Важнее добиться максимальной частоты кадров, как мини­
мум 75Hz из соображений безопасности для глаз. Ограничением здесь, как прави­
ло, является не поддерживаемая монитором частота вертикальной синхрониза­
ции. Что же касается горизонтальной, то для показа 76 кадров в секунду по 768
строк в каждом монитор должен работать на частоте 58.4 KHz (76x768). Если при
этом в каждой строке 1024 точек, скорость вывода пикселов на экран (тактовая
частота видеокарты) должна быть 59.8 MHz. На самом деле все эти числа заметно
больше - после вывода строки или кадра видеокарта посылает синхроимпульс,
длина которого должна быть достаточной для того, чтобы монитор его обработал.
Например, в режиме, настроенном в настоящий момент на этом же мониторе
DTK, полный кадр выводится за время, достаточное для вывода 823 строк, и одна
строка выводится за время, достаточное для вывода 1360 пикселов (так что часто­
та строк - 62.5 KHz, а тактовая частота - 85 MHz).
Создавая новый видеорежим, удобно взять за основу строку ModeLine уже
существующего и работающего режима. Первое число после имени режима -
скорость тактового генератора в мегагерцах. Все следующие восемь чисел, описы­
вающие развертку, задаются в отсчетах тактового генератора (то есть в единицах
времени, достаточных для вывода одного пиксела). Рассмотрим, например, стро­
ку для типичного режима 1024x768, 16bpp:
Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823
Установка X Window 289

В данном режиме при отрисовке строки луч включается на время, достаточное


для показа 1024 пикселов, и видеокарта передает информацию. После этого он от­
ключается на 8 тактов. На отсчете 1032 карта начинает импульс синхронизации,
и в этот момент монитор начинает обратное движение луча. Этот импульс длится
120 тактов и заканчивается на отсчете 1152. После этого карта ждет, пока луч не
начнет движение от левого края экрана и не попадет в видимую область на отсче­
те 1360. Аналогично, видимая часть кадра содержит 768 строк, кадровый синхро­
импульс начинается с 784-й строки и заканчивается на 787-й, а луч попадает на
первую строку только по прошествии времени, достаточного для вывода 823
строк. Частота строк в этом примере составляет 85 M Hz/1360 = 62.5 KHz, частота
кадров 62.5 KHz/823 = 76 Hz. Все эти значения взяты явно с избытком, для того,
чтобы они работали на большинстве мониторов.
Попробуем увеличить частоту кадров. Для используемой в данном компьютере
видеокарты максимальная частота генератора при глубине цвета 16 битов на пик­
сел составляет 95 MHz. Если мы выставим это число, частота строк будет равна
95 M Hz/1360 = 69.9 KHz. По документации на монитор, он должен поддерживать
частоты горизонтальной синхронизации до 70 KHz, так что мы сразу пришли
к максимальному значению. Если бы эта частота оказалась выше, мы могли бы
уменьшить размер строки (за счет пауз и импульса синхронизации) или тактовую
частоту. Цель - максимальная или чуть ниже максимальной частота строк, так как
это позволит добиться и большей частоты кадров. На свой страх и риск можно по­
пробовать и немного большую частоту, однако на не качественных мониторах это
может повредить блок развертки. Попробуем стартовать Х-сервер с новой строкой:
Modeline "1024x768" 95 1024 1032 1152 1360 768 784 787 823
Все работает, и частота кадров - 84.8 Hz, что намного лучше. При настройке
режима удобно его проверять, запуская только сервер командой X, или, в данном
случае, X —Ьрр 16, так как мы отлаживаем именно эту глубину цвета, и выходить
обратно комбинацией клавиш Ctrl+Alt+Backspace. Однако в документации на мо­
нитор говорится, что он может работать и на 100 Hz, так что мы можем продолжить
увеличение частоты. Так как мы уже вышли на максимальную частоту генератора
и строчной развертки, единственное, что может дополнительно улучшить кадро­
вую развертку - это сокращение размера кадра. Действительно, большинство со­
временных мониторов без проблем обрабатывают кадровый синхроимпульс, при­
ходящий сразу после вывода кадра и длящийся всего одну строку. Пауза для
обратного хода луча тоже может быть значительно сокращена. Попробуем выста­
вить такой минимальный синхроимпульс и суммарную длину кадра из расчета
90 Hz кадровой развертки:
Modeline "1024x768" 95 1024 1032 1152 1360 768 769 770 776
Оказывается, несколько строк вверху экрана теряется (при запуске Х-сервера
для тестирования обязательно проверяйте, как далеко заходит указатель мыши за
края экрана). Изменение полярности синхроимпульса (добавление флага +vsync
или -vsync) не изменяет картины, так что придется увеличить время для обрат­
ного хода луча:
Modeline "1024x768" 95 1024 1032 1152 1360 768 769 770 788
290 Настройка системы

Такая строка на данной конфигурации описывает полноценный рабочий режим


1024x768 с частотой кадров 88.6 Hz. Теперь можно обратить внимание на расчет,
приведенный выше, который показывает, что на данном мониторе физически
достижимое разрешение - 928x696 (и даже на несколько процентов хуже, за счет
расстояния между зернами на экране). Сократим кадр еще немного. Высота кадра
в 700 строк означает, что длина строки должна быть равна 933.3 пиксела (соот­
ношение сторон экрана - 4x3). Но из-за особенностей работы видеокарт число
пикселов в видимой части строки обязательно должно делиться на 8, а лучше на
более высокие степени двойки. Следующее подходящее значение - 960 (делит­
ся на 16), ему соответствует 720 строк в кадре. Внесем эти изменения в нашу
строку:
Modeline "1024x768" 95 960 1032 1152 1360 720 769 770 788
Имя для режима пока оставим прежним, чтобы не исправлять его каждый раз
в строке Modes секции Display. Монитор успешно выводит этот режим, и мы мо­
жем снова уменьшить кадр:
Modeline "1024x768" 95 960 1032 1152 1360 720 721 722 740
Частота кадров в этом режиме - 94.4 Hz, уменьшение последнего параметра
до 736 (что соответствует 95.0 Hz) снова приводит к потере нескольких строк,
так как луч не успевает переместиться в начало экрана. Со старыми монитора­
ми пришлось бы изменять положение и длину горизонтального синхроимпуль­
са и, возможно, паузу после него, для того чтобы изображение было отцент­
рировано и помещалось на экране, но большинство современных мониторов
имеют достаточно возможностей для регулировки без изменения параметров
режима.
Борьба за вертикальную развертку оправдана - несколько герц могут заметно
уменьшить нагрузку на глаза, так как люминофор в паузах между кадрами гас­
нет по спадающей экспоненте (быстрее всего - в первые мгновения).
После параметров развертки можно указывать дополнительные флаги, которые
в данном примере не понадобились. Это doublescan, который выводит каждую
строку дважды, что бывает нужно, если вы работаете с режимами типа 320x200
на больших экранах. Флаг interlace включает чересстрочный режим, в котором
в одном кадре выводятся все четные строки, а в следующем - все нечетные. Флаги
изменения полярности синхроимнульсов +hsync, -hsync, +vsync, -vsync исполь­
зуются при тонкой настройке синхронизации - они определяют, какой уровень
в канале синхронизации активный - низкий (менее 0,8 В) или высокий (более 1.2 В).
Если ваш монитор подключается по BNC-разъему, скорее всего он использует дру­
гую схему синхронизации, в которой синхроимпульсы вставляются в канал зеле­
ного. Тогда нужно указать флаг composite и выбрать полярность синхроимпульсов
при помощи +csync или -csync.
Существует программа xvidtune, поставляемая с дистрибутивом XFree86, кото­
рая позволяет интерактивно изменять некоторые из этих настроек, но ее приме­
нение часто затрудняет понимание взаимосвязи параметров, поэтому намного по­
лезнее просчитать все частоты самостоятельно.
Настройка гграфической среды 291

5.3. Настройка графической среды


Сама система X Window - это только базовая графическая среда, ответственная
за работу с аппаратным обеспечением; вся работа по управлению программами
ложится на специальную программу - диспетчер экрана (window manager). Эта
программа выводит вокруг каждого окна рамку со своими органами управления -
обычно кнопками на верхней части. Окна можно растягивать и перемещать, сво­
рачивать и прятать, используя ее отдельные участки рамки. Кроме того, window
manager обеспечивает возможность запуска новых программ (обычно из меню или
при нажатии на иконки), выхода из системы без помощи Ctrl+A lt+Backspace,
и общую рабочую среду - фоны, палитры, звуковые схемы и т.д. Диспетчеров экра­
нов для Linux существуют десятки, от внешне аскетичных fvwm или icewm до ра­
зукрашенного Enlightenment, обладающего совершенно необычными возможнос­
тями, вроде прозрачных окон или окон любой формы. Трудно сказать, что более
популярно. Практически любой диспетчер можно настроить так, что его будет
трудно отличить от другого - существуют конфигурации, изображающие вне­
шний вид и стиль работы Windows95, O S/2, Plan9, SGI 4Dwm, NextStep, и мно­
гих других популярных графических систем. В большинстве дистрибутивов
Linux можно найти несколько на выбор диспетчеров экрана.
Следует особо отметить интегрированные графические среды KDE и GNOME,
которые возникли в Linux как аналог CDE, применяемой в коммерческих UN IX -
системах, и отчасти как аналог среды графических систем типа Windows. Здесь
одновременно использую тся диспетчер экрана и больш ое количество про­
грамм, написанных в едином стиле и тесно связанных друг с другом. Между
такими программами может действовать механизм drag& drop и взаимосвязь с
целью выполнения различных задач. Системы KDE и GNOM E, действитель­
но, создают впечатление единой операционной системы, но пока они получа­
ют распространение в основном только среди новых пользователей Linux.
Б ольш инство специальны х программ, написанны х для этих сред, ду б л и р у ­
ют уже сущ ествующие, а сама среда занимает много памяти и процессорного
времени.

5.4. Подключение шрифтов TrueType


Формат TrueType Font (TTF) был разработан Apple и позже лицензирован Mic­
rosoft для использования в их операционных системах. Благодаря популярности
Microsoft появилось множество русских шрифтов в этом формате. Версии XFree86
3.3.x не поддерживает TTF шрифты, но эта поддержка появилась в текущих вер­
сиях 4.0.x. Новые версии еще недостаточно стабильны, так что большинство
пользователей работает с версиями 3.3.x, для которых необходим специальный
сервер TrueType шрифтов.
Существует по крайней мере три бесплатно распространяемых сервера, но са­
мым качественным из них является xfsft, доступный по адресу h ttp ://w w w -
dcs.ed.ac.uk/hom e/jec/program s/xfsft/. К нему также полезно добавить утилиту
292 Настройка системы

ttm kfdir с http://w w w .darm stadt.gm d.de/~pom m nitz/xfsft.htm l для создания ф ай­
лов описаний шрифтов. Чтобы скомпилировать xftfs, нужны исходные тексты
XFree86 (ftp:/ / ftp.xfree.org/pub /current /sourсе). потому что в них вносятся опре­
деленные изменения. Даже минимальный архив (без документации) имеет раз­
мер около 17Мб, так что имеет смысл воспользоваться готовыми программами
с любого из указанных сайтов. Тем не менее на настоящий момент R PM -пакеты
для Linux, находящиеся там, содержат XFree86 версии 3.3.2, а на ftp. xfree. org
версии 4.0.1.
Пакет xfsft содержит три архива: mkfontdir. ta r, encodings, ta r и lib f o n t. ta r. Для
его установки надо разархивировать исходные тексты XFree, например X334src-
1. tgz для версии 4.0.1. Будет создан каталог хс, содержащий большое количество
подкаталогов. Надо выполнить следующие шаги:
1. Перейти в xc/lib и разархивировать первый архив, libfont. tar.
cd /usr/srx/xc/lib
tar xvf /usr/src/xfsft-1.1.6/libfont.tar

2. Применить patch-файл libfont. patch в этом же каталоге.


patch -рО < /usr/src/xfsft-1.1.6/libfont.patch

3. Перейти в хс/р год rams и применить mkfontdir. patch (в новых версиях XFree
будут сообщения об ошибках, но их можно игнорировать, так как получен­
ный на следующей стадии mkfontdir использоваться не будет).
cd ../programs
patch -рО -f 7 < /usr/src/xfsft-1.1.6/mkfontdiг.patch

4. Выполнить компиляцию Х-сервера и сервера шрифтов. Или всей системы,


если вы заодно ставите более новую версию X Window.
cd ..
make World

5. Распаковать второй архив, mkfontdir. tar, в каталоге хс/р год rams.


cd programs
rm -rf mkfontdir
tar xvf /usr/src/xfsft-1.1.6/mkfontdir.tar

6. Собрать новый mkfontdir и установить все вновь скомпилированные про­


граммы.
make Makefiles
make
cd ..
make install

7. Перейти в п о д х о д я щ и й каталог, например /usr/X11 R6/lib/fonts, и распако­


вать третий архив, encodings, tar.
Подключение шрифтов True Type 293

cd /usr/X11R6/lib/fonts
tar xvf /usr/src/xfsft-1.1.6/encodings.tar

После этого можно запустить Х-сервер или сервер шрифтов /usr/X11R6/bin/xfs,


и они уже будут поддерживать ТгиеТуре-шрифты. Однако, прежде чем загрузить
хоть один такой шрифт, надо выполнить еще ряд операций.
Кроме самого xfsft, который теперь стал частью системы X Window, нам потре­
буется улитита ttm kfdir с http://w w w .darm stadt.gm d.de/~pom m nitz/xfsft.htm l.
а для ее компиляции - библиотека freetype с http://www.freetype.org. Последова­
тельность шагов следующая:
1. Распаковать исходные тексты freetype в подходящий каталог.
tar zxvf freetype-1 .2.tar.gz

2. Выполнить автоматическую конфигурацию и скомпилировать библиотеку.


cd freetype-1.2
./configure
make
make install

Если make прерывается с ошибкой о том, что функция gettext() или ей подобная
не найдена, повторите . /configure с опцией -disable-nls и снова выполните make.
3. Разархивировать и скомпилировать ttmkfdir.
mkdir ttmkfdir
cd ttmkfdir
tar zxvf ../ttmkfdir.tar.gz
make
cp ttmkfdir /usr/X11R6/bin

После того как все это проделано, для подключения к X Window любого TrueType-
шрифта надо произвести следующие действия:
1. Создать каталог для ТгиеТуре-шрифтов (если он еще не создан).
2. Выполнить команду makefontdi г -е /us r/X11 R6/lib/f onts/encodings (если это
еще ни разу не было сделано).
3. Поместить шрифт в каталог.
4. Выполнить ttmkfdir > fonts, scale и ср fonts, scale fonts, dir.
5. Послать сигнал SIGHUP серверу шрифтов.
После этого шрифт будет доступен во всех вновь запущенных Х-приложениях.
Вообще, в случае использования xfsft при загрузке нового шрифта, лучше полно­
стью перезапускать Х-сервер. Доступность нового шрифта можно проверить при
помощи программ xlsfonts (показать список всех доступных шрифтов), xfontsel
(интерактивный выбор шрифта), xfd (показ всех символов, входящих в указан­
ный шрифт). Имена, которые получил ваш T T F -шрифт в UNIX, можно прочи­
тать (и изменить) в файле fonts, dir.
294 Настройка системы

5.5. Установка эмуляторов


Следует обратить внимание на используемые повсеместно на Linux-системах эму­
ляторы DOS и Windows (рис 5.5).

Ί Calculator
Help
J
Lndous #
I(j)Peg QRad к
Lndous#
ClDCel]C5£±)C □ Hyp

Г^(^ГГ)ГГ)[^)ГПГ8ІГ^)
VMware: /VMWARE/Windows-NT^4.0/nt4.cfg (John Root)
^Ave)fdmi)(EHp)fliT R m H I#
File Power Settings View Help (Sii _ Untitled - Notepad ^j nj xj
ПІе Search Help
Full Screen Suspend Help
Undo Ctrl+Z 3
W Microsoft W ord - linrus_5
Cut Ctrl+K
'Z j File Edit View Insert Format Tools Table Window Help Copy Ctrl+C

a & a s q i ? 11 %m ^ « - г -,. &у l i 4; Faste


Delete
Ctrl+V
Del
Normal ^ Times New Roman 10 в і и m DOS in a BOX
! U A M N T SD Select All
Na Time/Date F5
4. -»Выполнить-ttmkf dir ■>■fonts ■вса іе и ср ■for dbuieu
5. Поспатъ■ сигнал SIGHUP cерверу шрифтовТІ lZ3uieu drau2u
Word WVap

ТІ После- чего- этот- шрифт- будет- доступен- ВО- Е


437Zans і
8502ans і
dru2umf[
eg іleye
U
bootlog іtxt fossil
приложениях,-Вообще-говоря,- в-случае 8632ans і faces bootoff con іо
сервер-при-загрузке-нового- шрифта,- Доступность-новог 865Zans і f ish booton con isenu
при помощи программ K lsfonts (показать список 866Zansі flip cdron sys jar16
xf ont.se 1(интерактивныйвыборшрифта),-}££4- (показ ansi2437 ico2dib cndline exe 1r e d іг
указэнныйшрифт, рисб. 1). Имена, которые-получилваш ansi2850 nouse command con mgarrot
прочитатъ■(иизменитъ) в файле fonts ■d ir .Ц ansi2863 nsp2dib conf ig sys nsdos
1ί ansi2865
ansi2866
nc dosdbg exe
dunpconf sys
speed
subst
" 5.5.Устаноєка-злЇулятороєЦ arcuieu ecpuoff con systen
Следуетобратить-вниманиена- один-важный-класс-nporf bitnap ecpuon con uchdir
повсеместно-на-Linux-системах,-и-которьтг уделяется-и bug eject con ugetcud
DOS и Window^lf bungee ico ncpscrip ens sys unix
Эмулятор- DOS, ■
4ееени±,-уже- практически- вьш c lp Z d ib ini ncsf enufs sys ggaoff
можетиспользоватъся-для-зanyскапрактически всех приг copyof~l emunouse exe ugaon

ЖеШШЫИ""" 1-01-98 3:00a


Раде 37 Sec 1 37/44 At 23j3cm Ln 43 Col 14

Іj f l Start I j ftp7Microsoft - linru... U:SMMTSPBSCSMOfl


1ТТЭГН27SjI!H3

Рис 5.5. Эмуляторы D O S и Windows: vmware (внизу слева),


W IN E (вверху справа) и Dosemu (внизу справа)

Эмулятор DOS Dosemu уже практически вышел из стадии разработки и мо­


жет использоваться для запуска подавляющего большинства соответствующих
приложений. Эмулятор Windows W IN E пока далек от совершенства и многие
программы в нем не запускаются. Существует еще довольно много проектов, спи­
сок которых приведен на http: / / www.winehq.com/others.html. но Dosemu и W INE -
самые известные и распространенные.
Кроме эмуляторов, предназначенных для запуска отдельных программ из одной
операционной системы под управлением другой, относительно недавно появилась
vmware, система виртуальной машины, эмулирующая компьютер полностью, что
позволяет без каких-либо ограничений запускать программы, ориентированные
под любую версию Windows. Так как эмулируется компьютер полностью, от BIOS
до жестких дисков, то кроме дискет и CD единственным способом общения вир­
туальной системы с реальной является сеть: FTP, NFS, SMB, и другие протоколы,
позволяющее передавать файлы. Этот эмулятор коммерческий, но доступен по
Установка эмуляторов 295

адресу http: / / www.vmware.com с ограниченной по времени лицензией. Для его ра­


боты потребуется XFree86 3.3.4 или более новой версии с расширением DGA. Его
успех приводит к появлению аналогичных бесплатных проектов, так что недо­
статка в эмуляторах не предвидится.

5.5.1. Эмулятор DOS: Dosemu


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

5.5.1.1. Компиляция и настройка


Исходные тексты этого эмулятора доступны на http: / / www.dosemu.org. Dosemu
позволяет запускать DOS в виртуальной текстовой консоли Linux (команда dos),
причем программы все равно могут использовать графические режимы. DOS мож­
но запустить также в окне X Window (что обеспечивает большую стабильность)
при помощи команды xdos, отдельные программы - прямо из командной строки
Linux, используя модуль binfmt_mz.
На момент написания книги последняя стабильная версия - 0.98.8.
tar zxvf dosemu-0.98.8.tgz
cd dosemu-0.98.8
less QuickStart

В файле Q uickStart приведена необходимая информация о том, как скомпили­


ровать и установить Dosemu. Можно сразу же выполнить make и make install, или
же изменить предварительную конфирурацию, хотя обычно такой необходимос­
ти нет. Для этого прочитайте файл compiletime-settings. help и отредактируйте
compiletime-settings в соответствии с вашими желаниями. Существует также гра­
фическая T cl/Tk-программа setup-dosemu, но на настоящий момент она нерабо­
тоспособна. После изменения конфигурации надо выполнить сценарий default-
configure, после чего можно будет вернуться к компиляции:
make
make install

Можно тут же проверить работоспособность Dosemu, запустив из этого катало­


га сценарий first-test (выход из запущенного DOS - команда exitemu) или перей­
ти к стадии конфигурирования.
Скопируйте образец списка пользователей, которым разрешено 3anycKaTbDosemu:
ср etc/dosemu.users.easy /etc/dosemu.users
и измените его в соответствии с вашими требованиями. Каждая строка этого фай­
ла начинается с имени пользователя и содержит одно или несколько ключевых
слов, например:
root c_all # пользователь root может делать все
cubbi c_all unrestricted private_setup # пользователь cubbi тоже
296 Настройка системы

guest nosuidroot guest # пользователь guest может запускать


# только DEXE
all nosuidroot restricted # все остальные пользователи имеют
# минимальные права

Ключевые слова guest и restricted отключают всякую возможность наруше­


ний прав доступа для указанных пользователей. Слово nosuidroot запрещает
даже вызывать программу Dosemu, если она установлена с битом SUID root.
Кроме того, при наличии указания private_setup, пользователь может создать
в каталоге “/. dosemu/lib копию /var/lib/dosemu с измененным по своему усмот­
рению содержимым. Однако из-за того что пользователь, который может запус­
кать DOS со своим глобальным файлом конфигурации и со своим образом диска
получает так много прав, Dosemu требует дополнительного слова unrestricred,
чтобы запуститься как SUID root. Вариант по умолчанию, d o s e m u .use rs.easy, раз­
решает делать абсолютно все абсолютно всем пользователям.
Дополнительные строки, размещенные в dosemu. users - это default_lib_dir=,
переопределяющая расположение каталога /var/lib/dosemu, и log_level=, изменя­
ющая уровень подробности журнального файла.
Теперь скопируйте образец конфигурационного файла в каталог /etc:
ср etc/dosemu.conf /etc/
Это довольно большой файл, содержащий множество настроек в форме
$_ххх = (п)
для параметра, являющегося числом или
$_zzz = "s"
для параметра, являющегося текстовой строкой.
Подробное описание значения каждого параметра можно прочитать в файле
doc/README, txt в каталоге, в который были распакованы исходные тексты. О пи­
шем наиболее важные конфигурационные параметры, хотя для первого запуска,
скорее всего, не потребуется ничего изменять.
$_сри = (80586)
Это тип эмулируемого процессора. Он может быть 80386, 80486 или 80586, при
этом не должен превышать тип реального процессора, на котором вы работаете.
$_xms = (1024)
$_ems = (1024)
$_dpmi = (4096)
$_dosmem = (640)

Это параметры, определяющие эмулируемые объемы памяти. $_xms и $_ems - это


объем в килобайтах XMS и EMS памяти, выделяемой D O S-сессии. $_dosmem -
объем D O S-памяти, не превышающий 640 Кб. Параметр $_dpmi включает эмуля­
цию интерфейса DPM I, который нужен для программ, использующих расшири­
тели DOS. По умолчанию он отключен (значение off), так как разрешение работы
с ним для простых пользователей представляет собой угрозу безопасности. Раз­
решать его безопасно только в том случае, если все пользователи описаны в файле
Установка эмуляторов 297

с ключем restricted. Для подключения EMS надо будет позже указать


d o s e m u .use rs
драйвер e m u .sys в файле aut o e x e c .bat.
Пользователь может вносить собственные модификации, используя файл
.dosemu гс в своем домашнем каталоге.

$_irqpassing = "З 8 10"


$_ports = "0x1ce 0x1cf 0x238"

Для работы с устройствами, которые не поддерживаются Linux, но для кото­


рых есть драйверы в DOS, можно указать список IRQ этих устройств и портов
в этих параметрах.
$_ rawkeyboa rd = (1)
$_keybint = (on)

Этот параметр разрешает D O S-программам использовать клавиатуру напря­


мую, что необходимо для многих компьютерных игр. При этом для переключения
в другую консоль применяются сочетания клавиш Ctrl+Alt+Fn. Параметр keybint
включает эмуляцию прерывания клавиатуры, в результате чего в эмулированной
сессии она функционирует практически неотличимо от реальной. Однако при
этом легко может оказаться, что неправильно работающая программа зависнет,
и вы не сможете выйти из консоли, в которой был запущен dosemu. В таком случае
может помочь специальная настройка ядра, позволяющая освободить консоль при
помощи команды Alt+SysRq К, или настройка драйвера мыши gpm, который по­
зволяет выполнять заданные команды, набрав определенные комбинации клавиш.
$_д raphics = (1)
$_ch ipset = "s3"

Если установить параметр graphics равным 1 и определить chipset как один из


поддерживаемых Dosemu чипсетов видеокарт (на настоящий момент это - plainvga,
trident, et4000, diamond, s3, avance, cirrus, matrox, wdvga, paradise, ati), то в эмуля­
ции будет напрямую использоваться видеокарта. Это дает больше возможностей
для программ, использующих различные графические видеорежимы (в основном
для игр), но несколько снижает стабильность системы. В большинстве случаев до­
статочно определить chipset как plainvga (обычный V G A ) и использовать Dosemu
в X Window (команда xdos) для более сложных графических режимов.
$_hd image = "hdimage.first"
Имя файла в каталоге /var/lib/dosemu содержит образ загрузочного D OS-диска.
Файл hdimage. first попадает в этот каталог при установке командой make install.
Начиная с версии 0.99.8 есть более удобный способ загрузки. Создайте подкаталог,
например /var/lib/dosemu/bootdir, и поместите в него все необходимые для загруз­
ки DOS файлы (msdos.sys, i o .sys, command.com, autoexec.bat, config.sys, и т.д.). Если
теперь в параметре hdimage указать только имя этого каталога, DOS загрузится
с виртуального диска, содержимое которого будет совпадать с содержимым этого ка­
талога. Затем надо будет поместить соответствующие команды 1 redi г в autoexec, bat
для доступа к другим дискам из Dosemu. Более того, в этом каталоге необязательно
размещать сами файлы, достаточно создать символьные ссылки на файлы с DOS-раз­
дела, если он доступен из-под Linux.
298 Настройка системы

Содержимое этого каталога становится диском С: в эмуляции. Можно создать


сразу несколько дисков, указав несколько их образов или каталогов в параметре
hdimage. Например, если в /var/lib/dosemu созданы подкаталоги drives/C, drives/
D и d rives/E (которые могут быть просто символическим ссылками на любые дру­
гие каталоги в файловой системе), настройка
$_hdimage = "drives/*"
сделает их все видимыми в эмуляции без дополнительных команд в autoexec.bat.
В параметре hdimage можно указывать и разделы, так что, например, следующая
настройка:
$_hdimage = "/dev/hda1 /dev/hda2:го hdimage.first"
загрузит DOS напрямую с диска /d e v /h d a 1, и будет обращаться к нему как
к С:. Однако при этом вы не сможете смонтировать этот D O S-раздел в Linux. Раз­
дел /dev/hda2 можно будет использовать из Linux, но в Dosemu он будет доступен
только для чтения. Кроме того, такие настройки опять таки снижают устойчи­
вость системы в случае ошибок в работе D O S-программ.
$_сот1 = ""
$_mouse = "microsoft"
$_mouse_dev = "/dev/mouse"

Dosemu содержит встроенный драйвер мыши, поэтому если вы хотите им


пользоваться, определите соответствующий порт (в данном примере СОМ 1) как
пустой и параметр mouse_dev как имя устройства (/dev/mouse). Если вы хотите
использовать какой-то другой драйвер мыши в DOS, измените эти настройки так:
$_com1 = "/dev/mouse"
$_mouse_dev = "comi"
Чтобы в D O S-сессии сделать видимым модем, например на COM2, добавьте
аналогичную строку $_com2 = "/dev/modem".
$_sound = (on)
$_sb_base = (0x220)
$_sb_irq = (5)
$_sb_dma = (1)
$_sb_dsp = "/dev/dsp"
$_sb_mixer = "/dev/mixer"
$_mpu_base = "0x330"

Если в Linux настроена работа со звуковой картой, можно включить в Dosemu


эмуляцию карты типа Sound Blaster, которая будет имитировать ее для D O S-при­
ложений с параметрами, указанными в sbjbase, sb_irq и sb_dma.
Находясь в D O S-сессии, можно подключать различные каталоги файловой си­
стемы Linux как дополнительные диски в DOS. Для этого используется команда
1 redi г, входящая в образ диска hdimage.f i rst. Чтобы, например, смонтировать ка­
талог /home/ftp/pub как диск Р:, выполните в эмуляторе команду
1 redi r р: iinux\fs/home/ftp/pub
Установка эмуляторов 299

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


1rediг del р:
Ее можно поместить в autoexec, bat и даже в config. sys, используя команду
install:
install=c:\1redi г.exe с: linux\fs\dosc
Такая операция (изменение диска С: в ходе загрузки) - не ошибка, она вполне
осуществима. Важно только помнить, что DOS будет выполнять config. sys или
autoexec.bat на новом диске не с начала, а начиная с байта с тем номером, на кото­
ром произошло переключение дисков. Поэтому такой файл должен в точности
совпадать по длине, по крайней мере до начала следующей после 1 red і г команды.
Еще одно замечание: если вы загружаете MS DOS 7 (Windows 95), отключите
загрузку графической части системы, отредактировав файл msdos.sys. Замените
строку
[Options] BootGUI=1

[Options] Logo=0 BootGUI=0

5.5.1.2. DOS in a Box


Самый удобный способ работы с Dosemu - это запуск D O S-окна в графической
X Window. При этом никакая программа не сможет заблокировать вашу клавиату­
ру или заморозить экран, и в то же время D OS-программы получат достаточно мно­
го возможностей для работы с различными видеорежимами, включая даже нестан­
дартные, так называемые Х-режимы, которыми пользуются некоторые игры.
Чтобы Dosemu запустился в окне X Window, вызовите его как dos -X или как
xdos (файл xdos определен как символическая ссылка на dos). Кроме того, если
у вас нет шрифтов vga, скопируйте etc/vga. pcf и etc/vga. bdf в соответствующий
каталог:
ср etc/vga.* /usг/Х11R6/lib/X11/fonts/misc/
cd /us r/X11R6/lib/X11/fonts/misc
mkfontdir

Или же можно выполнить сценарий xinstallvgaf o n t .sh в подкаталоге etc. Если


этот шрифт кажется слишком маленьким, распакуйте шрифты vgal 1x19. pcf
и vg а11х19. bdf из архива ftp ://ftp .d o sem u .o rg /d o sem u /co n trib /v g allx l9 .tar.gz
и установите их аналогично обычным шрифтам.
Иконка для xdos находится в файле etc/dosemu.xpm, но способ ее подключения
зависит от используемого менеджера окон. В любом случае его следует скопиро­
вать в каталог для цветных иконок, обычно в /usr/include/X11/pixmaps. Напри­
мер, в популярном менеджере fvwm для подключения иконки надо в файле кон­
фигурации “/. fvwm гс вписать следующую команду:
Icon "xdos" dosemu.xpm
Русификация Dosemu описана в разделе 6.2.10.
300 Настройка системы

5.5.2. Эмулятор Windows: WINE


Этот эмулятор хорошо известен тем, как медленно он разрабатывается - уже
шесть лет в состоянии альфа-версии. Тем не менее с каждым месяцем с его помо­
щью можно запускать все больше программ. W INE позволяет выполнять в среде
Linux программы для DOS, Windows 3.x и Win32. В настоящее время реализовано
более 90% всех системных функций Windows, включая даже частичную реализа­
цию DirectX.
Исходные тексты доступны по адресу http://www.wineIiq.coni.
tar zxvf Wine-990815.tar.gz
cd wine-990815
less README

Для успешной компиляции требуются библиотека libXpm, программы flex


и bison, расширение XF86DGA (необязательно, для поддержки DirectX) и подси­
стема Open Sound System (необязательно, для поддержки звука).
./configure -help
Так как нам не будет нужно компилировать и запускать под Linux Windows-
приложения, а только потребуется эмулятор, воспользуемся опцией -disable-lib.
./configure -disable-debug -disable-lib
make depend
make
make install

Осталось только создать файл /usr/local/etc/wine. conf или ~/. winerc из фай­
ла wine, ini, поставляемого с дистрибутивом, исправив в нем шрифты и пути
к файловым системам, к которым будут иметь доступ запускаемые из W INE про­
граммы. После этого можно запускать почти любую программу для Windows 3.1,
95, 98, например wine so l.exe.
Однако в более сложных случаях для запуска программ, требующих Windows NT,
или имитации полноценной среды Windows придется воспользоваться vmware.
Глава VI
Русиф икация Linux

□ Русский язык в текстовой консоли


□ Русификация консольных программ
□ Локаль
□ NLS и gettext
□ Русификация системы X Window
□ Русификация системы печати
□ Русификация офисных пакетов

6.1. Русский язык в текстовой консоли


Настроить текстовый режим в Linux для работы с русским языком несложно. Для
этого потребуется только выбрать подходящий шрифт и раскладку клавиатуры
при помощи утилит setfont и loadkeys, входящих в пакет kbd. Этот пакет входит
во все основные дистрибутивы, но если он отсутствует, его всегда можно найти на
ftp://ftp.w in.tue.nl/pub/linux/utils/kbd либо на ftp.kernel.org или одном из его зер­
кал, например, ftp://ftp .ru .kernel, or g /pub /linux / utils /k b d .
Загруженный пакет вида kb d- ?.? .?. t a r .gz надо распаковать (командой tar
zxvf), выполнить команды make и make install.
В современных версиях Linux существует возможность использования универ­
сальной таблицы символов Unicode в текстовой консоли. Для полноценной работы
в таком режиме используется другой пакет - console-tools (ftp://lct.sourceforge.net/
p u b /let/ У Ш рифт в этом случае загружается утилитой consolechars.
302 Русификация Linux

6.1.1. Выбор шрифта в kbd


После установки kbd шрифты по умолчанию оказываются в директории /usr/lib/
kbd/consolef onts, хотя в некоторых дистрибутивах путь может быть иным, напри­
мер, /usr/local/lib/kbd/consolefonts или /usr/share/kdb/consolefonts.
Ш рифт загружается командой setfont. Если шрифты находятся в директории
по умолчанию, достаточно написать имя шрифта:
setfont Суг_а8х16
Загрузить шрифт из другой директории можно, указав полный путь:
setfont /usr/lib/kbd/consolefonts/koi8-8x16
Здесь нам придется сделать важный выбор - какую кодировку использовать
в системе для русского языка. Вместе с дистрибутивом kbd поставляются ш риф­
ты для русских кодировок alt (СР866), KOI8-R, и IS08859-5. Среди пользователей
как Linux, так и других Unix-совместимых систем принято использовать KOI8-R,
но в текстовом режиме многие программы используют символы псевдографики
для изображения окон (например, файловый менеджер т с или конфигуратор ядра,
вызывающийся по команде make menuconfig в директории, содержащей исходный
текст ядра Linux). Из всех русских кодировок только в СР866 символы пседогра-
фики совпадают с их расположением в нерусифицированных наборах символов.
Для того чтобы решить эту проблему, используется следующий трюк: командой
setfont загружают шрифт с кодировкой СР866 (обычно Суг_а8х16 или alt-8xl6),
а затем при помощи команды mapscrn загружают специальную таблицу преобра­
зования, koi2alt, которая приводит к тому, что при выводе текста на экран симво­
лы, соответствующие русским буквам в KOI8-R, преобразуются в соответствующие
из СР866 и отображаются на экране правильно. Символы псевдографики и другие
этой таблицей не затрагиваются и показываются на экране как есть, опять таки
правильно. Необходимая для этого команда:
mapscrn koi2alt
Если у вас достаточно новое ядро Linux (серии 2.1 или старше), после этих двух
команд при попытке посмотреть файл с русским текстом при помощи, например,
cat, на экран все равно будут выводиться нечитаемые символы. Для того чтобы
выбранные символы отображались правильно, надо ввести магическую комбина­
цию символов ESC ( К, которая описана в файле /usr/src/linux/Documentation/
Unicode.txt:
echo -ne "\033(K"
Причем эта команда должна быть выдана на каждую виртуальную консоль, так
что ее бессмысленно помещать в сценарии, исполняемые при загрузке (в /etc/
rc. d). Наиболее оптимальный вариант - расположить ее в /etc/profile. Или же
можно поместить последовательность \033(К в файле /etc/issue, который выво­
дится на каждую виртуальную консоль перед строкой Login:.
Существует еще один вариант, более правильный с идеологической точки зре­
ния, но менее практичный - загрузить шрифт KOI8-R (например, командой setfont
koi8-8x16), без какой-либо перекодировки (если она уже есть, можно ее отменить
Русский язык в текстовой консоли 303

при помощи mapscrn trivial), и выполнить перекодировку символов псевдогра­


фики прямо в описании текущего терминала. Если с дистрибутивом Linux уже
поставляется терминал linux-koi8, то достаточно выполнить команду
export TERM=linux-koi8

или вообще переименовать /usr/share/terminfo/1/linux и установить на его мес­


то ссылку на linux-koi8:
cd /usr/share/terminfо
mv linux linux.original
In -s linux-koi8 linux

Если же такого терминала нет, или он ничем кроме названия не отличается от


linux, надо создать его самостоятельно, использовав стандартное описание терми­
нала linux. Для этого придется декомпилировать его при помощи команды in f остр:
infocmp linux > linux.source
Затем любым текстовым редактором заменить строку, начинающуюся с acsc=, на
acsc=’\004a\201f\270g\243h\200j\251k\217l\252m\220n\225o~q\224r\262s_t\223u\204v\221w\
222x\203y\240z\212{\2731\274}\275~\276.\031-\030\054\021+"Р0\253,

(все это должно быть набрано как одна строка) и


linuxIlinux console
на, например,
linux-koi8Ilinux console with koi8
Теперь можно скомпилировать новый терминал, набрав команду tic:
tic linux.source
Для совместимости с программами, использующими termcap, надо выполнить
точно такую же замену в текстовом файле /etc/termcap, только название строки
будет не acsc=, a as=.
Проблема с этим вариантом русификации в том, что символы псевдографики
не будут смыкаться по горизонтали - сплошные горизонтальные линии будут
разорваны на каждом девятом пикселе.
После настройки любым из вышеперечисленных способов русский текст дол­
жен отображаться правильно в большинстве программ, работающих в текстовой
консоли. Но ввести по-русски пока ничего нельзя - сначала необходимо наладить
переключение раскладки клавиатуры.

6.1.2. Выбор раскладки клавиатуры в kbd


Изменение раскладки клавиатуры выполняет программа loadkeys из все того же
пакета kbd.
loadkeys ru.map
где ru. map - один из файлов с описаниями раскладок, находящийся по умолча­
нию в /usr/lib/kbd/keytables.
304 Русификация Linux

Вариантов с русской раскладкой клавиатуры, поставляемых с пакетом kbd, три:


ru.map Раскладка KOI8-R, переключение происходит, если нажать и отпустить
правую клавишу Ctrl; ввести одну букву можно, используя левую Alt.
Это самая первая из появившихся в Linux раскладок, написаная Ев­
гением Черкашиным, автором такой известной программы как ifmail
(пакет для работы с сетью FidoNet из UNIX-систем),
r u l.шар Раскладка KOI8-R, переключение происходит, если нажать и отпустить
правую клавишу Alt; кроме того, отсутствуют буквы ё, Ё и Ъ (полу­
чена модификацией ru.map).
ru2.map Раскладка СР866 (она же ALT, она же MS DOS). Переключение вы­
полняется правой клавишей Alt.
В различных дистрибутивах Linux встречаются дополнительные раскладки:
russian.map То же, что и rul.map.
ru-cp 1251.map Модификация ru.map, использующая кодировку CP 1251, ко­
торая применяется в MS Windows. Переключение осуществля­
ет правая клавиша Ctrl,
ua.map Украинская раскладка из дистрибутива KSI Linux. При ее ис­
пользовании правая Ctrl включает/выключает русский язык,
а правая Alt - украинский. Переключатели независимы, то есть,
работая с русским языком, можно включить украинский и затем
вернуться обратно к русскому.
Разумеется, никто не мешает изменить эти файлы, например, разрешить гене­
рацию пропущенных букв в ru2.map или переставить переключение раскладок,
скажем, на клавишу Caps Lock (многие программисты никогда не пользуются
этой клавишей по назначению), или даже написать раскладку клавиатуры для
другой кодировки. Описание структуры этого файла подробно документировано
в man keytables. Например, чтобы установить в качестве переключателя Caps Lock,
надо заменить строку
keycode 58 = Caps_Lock

keycode 58 = AltG r_Lock


а также найти строку, присваивающую функцию AltGr_Lock старому переключа­
телю (keycode 100 = AltGr_Lock в rul.m ap), и восстановить для этой клавиши ее
обычное значение (в данном случае keycode 100 = AltG г).

6.1.3. Настройка пакета console-tools


Пакет console-tools был основан на исходных текстах kbd версии 0.94, но в него
было введено большое количество изменений и новшеств, главным из которых
является полная поддержка Unicode, введенная в драйвер экрана Linux еще в ав­
густе 1998 года. Выбор раскладки клавиатуры в console-tools не отличается от kbd
и выполняется той же командой load keys.
Русский язык в текстовой консоли 305

С пакетом console-tools поставляется достаточно большое число раскладок,


поддерживающих русский язык. Все они расположены в каталоге /usr/share/
keymaps/i386/qwerty:

ru.kmap.gz Классическая раскладка ru, использующая кодировку


KOI8-R. Переключение осуществляется правой клавишей
Ctrl.
rul.kmap.gz Модификация ru, в которой отсутствуют буквы ё, Ё и Ъ,
для переключения нужно нажать и отпустить правую кла­
вишу Alt.
ru2.kmap.gz Модификация ru i, использующая кодировку СР866. Пе­
реключение выполняется правой клавишей Alt.
ru3.kmap.gz Модификация ru i для 102-клавишной клавиатуры. Для
переключения используется клавиша Caps Lock (а обыч­
ная функция CapsLock перенесена на Shift+Caps Lock).
ru4.kmap.gz М одификация ru i для 105-клавишной W indows-клави­
атуры. Для переключения используется клавиш а Caps
Lock (обычная функция Caps Lock перенесена на Shift+
Caps Lock).
ru -ср 12 51 .kmap .gz М одификация ru, использую щ ая кодировку W indows
СР1251, переключение осуществляется правой клавишей
Ctrl, отсутствуют буквы ё и Ё.
ru-ms.kmap.gz М одификация ru i, использующая кодировку W indows
СР1251, переключение выполняется правой клавишей
Ctrl.
ru-yawerty.kmap.gz Модификация ru i, использующая старую фонетическую
раскладку «ЯВЕРТЫ».
ru_win.kmap.gz М одификация ru, использующ ая кодировку W indows
СР1251, переключение осуществляется правой клавишей
Ctrl (в отличие от раскладок на основе ru i и от ru-cpl251,
включает все буквы).
В то время как настройка клавиатуры в пакете console-tools практически не от­
личается от ситуации с kdb, настройка экранного шрифта в console-tools сделана
совершенно по-другому. Для задания шрифта обычно требуются три файла:
□ шрифт, файл с расширением .psf.gz (PSF - Pixel Screen Font, пиксельный
экранный шрифт) из каталога /usr/share/consolefonts, содержащий соб­
ственно бинарные образы символов, которые смогут отображаться на эк­
ране;
□ таблица соответствия с Unicode, либо отдельный файл с расширением . sfm. gz
(SFM - Screen Font Map, карта экранного шрифта) либо часть psf-файла,
содержащего шрифт. Ставит в соответствие каждому символу из шрифта
номер в таблице символов Unicode;
30ό Русификация Linux

□ таблица преобразования, отдельный файл с расширением acm (ACM -


Application Charset Мар, карта кодировки приложения). Каждый символ, ко­
торый приложение посылает драйверу для вывода на экран, подвергается
преобразованию согласно этой таблице в код Unicode. Затем в соответствии
с действующей в настоящий момент SFM -таблицей из Unicode определяет­
ся номер символа в шрифтовом файле и отображается на экране.
Такая трехступенчатая система делает возможным легкое решение проблемы
символов превдографики в кодировке KOI8. Загружается шрифт, построенный
в кодировке СР866, в котором символы псевдографики имеют в точности те
коды, для которых VGA-совместимые адаптеры не делают вертикальных разры ­
вов между символами. Загружается SFM -таблица для СР866 и АСМ-таблица
для KOI8-R (или любой другой нужной вам кодировки). Это делается следу­
ющей командой:
consolefont -f alt-8x16 -m koi8-r
(если шрифты и таблицы находятся в нестандартных каталогах, необходимо ука­
зывать их имена полностью, например /opt/system/console-tools/consoletrans/
koi8-r. acm. gz).
Кроме того, для переключения драйвера экрана в Unicode-режим необходимо
выполнить команду
echo -п -е "\033%G"
Эти две команды, а также kbd_mode -и, выполняют сценарий unicode-start. В ка­
честве параметров ему передается имя шрифта и, если нужно, имя SFM -таблицы,
но ACM он не устанавливает . Изменение режима клавиатуры с однобайтового на
Unicode, которое выполняет kbd_mode -и, означает лишь что в файле, описываю­
щем раскладку клавиатуры, можно указывать для некоторых клавиш и их комби­
наций символы Unicode в формате UTF8. В настоящее время это нецелесо­
образно - достаточно использовать одну из обычных однобайтовых раскладок
и преобразовывать символы к Unicode только в АСМ-таблице, непосредственно
перед выводом на экран.
Для перевода драйвера экрана снова в однобайтовый режим (код байта, выво­
димого приложением, однозначно соответствует символу из шрифта) использу­
ется следующая команда:
echo -п -е "\033%@"
Определить, встроена ли SFM -таблица в файл со шрифтом, можно при помощи
команды psf gettable. Она выведет на экран либо эту таблицу, либо сообщение «font
has no character table» (шрифт не содержит таблицы символов).
В заключение следует обратить внимание на пакет console-tools-cyrillic, доступ­
ный по адресу http://w w w.ice.rU /~vitus/works/unix.htm l#linuxfontS· В него вхо­
дит качественно сделанная раскладка клавиатуры, которую можно преобразо­
вать в любую кодировку (KOI8-R, KOI8-U, Windows СР1251, СР866, IS08859-5,
MacCyrillic и т.д.). Кроме того, в этот пакет входят несколько различных комплек­
тов шрифтов, сделанных на базе кодировки СР866 (что необходимо для правильно­
го отображения псевдографики) и АСМ-файлы для всех используемых кодировок
Русификация консольных программ 307

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


полезных утилит на тот случай, если вы захотите внести изменения в ваши ш риф­
ты и таблицы перекодировки.
В заключение этого раздела приведем сводку информации по настройке рус­
ского языка в текстовой консоли для различных дистрибутивов:
Red H at Linux 6.2 Zoot Выполнено, метод: console-tools, раскладка
в / e tc / s y s c o n f ig /k ey b o ard , ш риф т и ACM
в / e tc / s y s c o n f ig /i18n.
Black Cat Linux 6.02 Foxhound Выполнено, метод: console-tools, раскладка
в /e tc /s y s c o n f ig/keyboa rd, ш рифт и ACM
в /e tc /s y sc o n fig /i1 8 n .
KSI Linux 2.0 Nostromo Выполнено, метод: kbd, раскладка клавиату­
ры указы вается в /e tc /s y s c o n f ig /k e y ta b le ,
ш рифт для setfont и таблица преобразования
для m apscrn - в /e tc /s y s c o n f ig /i 18n.
Mandrake Linux 7.1 Hydrogen Выполнено, метод: console-tools, раскладка
в /e tc /s y s c o n f ig/keyboa rd, ш рифт и ACM
в /e tc /s y s c o n fig /i1 8 n .
SuSE Linux 6.4 Выполнено только для клавиатуры , метод
kbd, раскладка, ш рифты и таблицы в / e t c /
r c . config
Slackware Linux 7.0 Не выполнено, метод kbd.
Debian GN U/Linux 2.2 Potato Выполнено только для клавиатуры , метод
console-tools, раскладка /e tc /c o n s o le - to o ls /
def a u l t . kmap. gz, ш рифт в /e tc /c o n s o le -
to o ls /c o n f i g .
Corel Linux 1.1 Не выполнено, метод kbd, конф игурация за­
дается в /e tc /k b d /c o n f ig .

6.2. Русификация консольных программ


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

6.2.1. Командные интерпретаторы


Каждый из применяемых в Linux командных интерпретаторов (shell) по умолча­
нию не позволяет вводить русские буквы в командной строке, так что не получит­
ся не только обратиться к файлу с русским именем, но и найти русское слово ко­
мандой дгер или вывести сообщение при помощи echo.
Каждый shell легко можно настроить на работу с русскими буквами (то есть
считать русские буквы буквами, а не неизвестными управляющими символами).
308 Русификация Linux

Рассмотрим наиболее известные командные интерпретаторы.


□ bash
В файл . input гс в домашней директории надо поместить следующие три строки:
set meta-flag on
set convert-meta off
set output-meta on

Чтобы этот файл создавался в домашних директориях всех новых пользовате­


лей, удобно скопировать его в /etc/skel.
Сводка информации по настройке русского языка в bash в разных дистрибу­
тивах:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0: Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено
□ csh/tcsh
В большинстве случаев проблем с русскими буквами не возникает, если же они
все-таки не вводятся, можно поместить в файл . cshrc строки
setenv LC_CTYPE iso_8858_5
stty pass8

Сводка информации по настройке русского языка в csh/tcsh в разных дистри­


бутивах:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0: Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено
□ ksh
Выполняется команда
set -о vi
Сводка информации по настройке русского языка в ksh в разных дистрибу­
тивах:
Русификация консольных программ 309

Red H at Linux 6.2 Zoot Отсутствует ksh


Black Cat Linux 6.02 Foxhound Отсутствует ksh
KSI Linux 2.0 Отсутствует ksh
Mandrake Linux 7.1 Hydrogen Отсутствует ksh
SuSE Linux 6.4 He выполнено
Slackware Linux 7.0 Отсутствует ksh
Debian GN U/Linux 2.2 Potato Отсутствует ksh
Corel Linux 1.1 Выполнено
□ zsh
При необходимости используются те же команды, что и для csh/tcsh, но поме­
щаются не в . csh гс, а в . zsh гс или, соответственно, в /e tc /z sh гс.
Сводка информации по настройке русского языка в zsh в разных дистрибутивах:
Red H at Linux 6.2 Zoot Отсутствует zsh
Black Cat Linux 6.02 Foxhound Отсутствует zsh
KSI Linux 2.0 Отсутствует zsh
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Отсутствует zsh

6.2.2. Программа less


По умолчанию, если не установлена локаль (раздел 6.3), less будет показывать
шестнадцатеричные коды вместо русских букв, и для его русификации достаточ­
но установить переменную среды LESSCHARSET в koi8-r, поместив, например,
в /e tc /p ro f ile , команду
export LESSCHARSET=koi8-r
для bash, или, соответственно,
setenv LESSCHARSET koi8-r
для csh/tcsh.
Если же локаль установлена, следует, наоборот, убедиться в том, что перемен­
ная LESSCHARSET не определена; русские буквы будут показаны в любом слу­
чае, но если переменная не установлена, less будет пользоваться локалью и, на­
пример, сможет выполнять поиск слов, не различая заглавные и прописные буквы.
Чтобы убедиться, что LESSCHARSET не будет установлена, можно в файл
“/. lesskey вписать
#env
LESSCHARSET=

после чего остается перекомпилировать ~/. less командой lesskey. Чтобы такие
установки автоматически выполнялись для всех новых пользователей, новые фай­
лы . lesskey и . less надо поместить в директорию /e tc /s k e l.
310 Русификация Linux

Сводка информации по настройке русского языка в программе less в разных


дистрибутивах:
Red H at Linux 6.2 Zoot Выполнено (установлена локаль)
Black Cat Linux 6.02 Foxhound Выполнено (установлена локаль)
KSI Linux 2.0 Выполнено (установлена локаль)
Mandrake Linux 7.1 Hydrogen Выполнено (установлена локаль)
SuSE Linux 6.4 Выполнено, но установлен неверный LESS-
CHARSET
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено

6.2.3. Файловый менеджер т с


Чтобы включить поддержку русского языка, надо отметить опции Full 8 bits
output и Full 8 bits input в меню Options => Display bits.
Сводка информации по настройке русского языка в программе тс в разных ди­
стрибутивах:
Red H at Linux 6.2 Zoot Не выполнено, несмотря на перевод всех
текстовых сообщений
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Не выполнено, несмотря на перевод всех
текстовых сообщений
Mandrake Linux 7.1 Hydrogen Не выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Выполнено
Corel Linux 1.1 Не выполнено

6.2.4. Редакторы
Версии текстового редактора Vi, используемые в Linux, поддерживают ввод рус­
ских букв и преобразования между заглавными и прописными буквами, если
установлена русская локаль (раздел 6.3).
Сводка информации по настройке русского языка в Vi в разных дистрибутивах:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Выполнено
Corel Linux 1.1 Выполнено
Русификация консольных программ 311

Текстовый редактор pico работает с русским языком без каких-либо проблем,


сводка информации по дистрибутивам:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Выполнено
Debian GN U/Linux 2.2 Potato Выполнено
Corel Linux 1.1 Отсутствует pico
Для включения работы с русским языком в Emacs, если в используемой вами
версии есть расширение MULE, можно вписать в файл . emacs в домашнем ката­
логе пользователя следующие две строки:
(standard-display-euгореап t)
(setup-суrillic-koi8-environment)

В качестве самого полного решения для Emacs можно предложить программу


russian.el Валерия Алексеева, которая позволяет просматривать, редактировать
и распечатывать тексты на русском языке в 17(!) разных кодировках. Эта програм­
ма доступна по адресу h ttp :/ / www.math.uga.edu/~valerv/ russian.el. Хорошим до­
полнением к ней служит программа rusup.el Александра Беликова, которая по­
зволяет Emacs корректно определять границы слов в русских текстах и добавляет
несколько новых команд перекодировки.
На данный момент русификация Emacs в различных дистрибутивах выглядит
следующим оброзом:
Red H at Linux 6.2 Zoot Выполнено (минимально)
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 He выполнено
Mandrake Linux 7.1 Hydrogen Выполнено (минимально)
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Выполнено
Debian GN U/Linux 2.2 Potato Выполнено
Corel Linux 1.1 Отсутствует Emacs
В графической версии этого редактора, Xemacs, для включения русской рас­
кладки при помощи ХКВ может потребоваться вписать в “/. emacs строки:
(global-set-key [iso-next-group] "(lambda () (interactive) (insert "")))
(global-set-key [Cyrillic_shorti] "(lambda () (interactive) (insert "й")))
(global-set-key [Cyrillic_u] '(lambda () (interactive) (insert "y")))

и так далее для всех символов из набора Cyrillic (см. табл. 6.1).
Данная часть работы по русификации не выпонена в большинстве дистрибу­
тивов:
312 Русификация Linux

Red H at Linux 6.2 Zoot He выполнено


Black Cat Linux 6.02 Foxhound He выполнено
KSI Linux 2.0 Русские буквы вводить можно, шрифты по
умолчанию не русифицированы
Mandrake Linux 7.1 Hydrogen Не выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Отсутствует Emacs

6.2.5. Проверка правописания ispell


Для работы ispell с русскими текстами необходим словарь, который описывает
базовые слова языка и правила словообразования. Такой словарь существует
и доступен по адресу ftp: / /mch5.ehem.msu.su /pub /russian /ispell. Он включает в себя
около 80 тысяч базовых слов и 803 тысячи образуемых форм. При компилирова­
нии самого ispell (доступен по адресу ftp://ftp.cs.ucla.edu/pub/ispell-3.1/) для ра­
боты с этим словарем необходимо закомментировать опцию N08BIT в файле
local.h, то есть заменить ее на #undef N08BIT, но в большинстве дистрибутивов он
скомпилирован именно в этом режиме.
Распакуйте дистрибутив словаря (обычно это rus-ispell. tar. gz) в любой ката­
лог, исправьте строку LIB = /usr/lib/ispell, если в вашей системе словари для
ispell расположены в другом каталоге, и выполните команду make для построения
словаря в кодировке KOI8-R, make alt для СР866 или make iso для IS08859-5.
Можно также передать make дополнительную опцию Y0 =1 для создания слова­
ря, учитывающего букву ё. После подготовки словарей выполните команду make
install, и ispell будет немедленно готов к работе с русскими текстами.
Для использования вызывайте ispell с ключом -d russian. Возможность работы
с русскими текстами в ispell предоставляется большинством современных дист­
рибутивов:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Выполнено
Corel Linux 1.1 Не выполнено

6.2.6. Браузеры WWW


Современные версии lynx, доступные на http://lynx.brow ser.org. поддерживают
перекодировку между всеми основными вариантами русского языка, включая
даже транслитерацию латинскими буквами. Достаточно, запустив lynx, нажать О,
Русификация консольных программ 313

чтобы попасть в настройки и выбрать KOI8-R Cyrillic в меню display (C)haracter


set (вызывается нажатием С). В меню AA)ssume charset if unknown, вызываемом
при нажатии Ctrl+A, можно по умолчанию выбрать windows-1251, так как боль­
шинство страниц на русском языке, не указывающих кодировку, используют
именно windows-1251. В дальнейшем, если страница не будет читаться, кодиров­
ку можно изменить, пользуясь именно этим пунктом.
По умолчанию кодировка установлена только в дистрибутиве KSI Linux 2.0:
Red H at Linux 6.2 Zoot Не выполнено
Black Cat Linux 6.02 Foxhound He выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen He выполнено
SuSE Linux 6.4 He выполнено
Slackware Linux 7.0 He выполнено
Debian GN U/Linux 2.2 Potato He выполнено
Corel Linux 1.1 He выполнено
Основной графический браузер, используемый вLinux - это Netscape. Он
поддерживает различные кодировки русского языка, так же как и в версии для
Windows. Однако для более полной русификации, например для разрешения
ввода русских текстов в формах, может потребоваться вписать в файл . Xdefaults
в домашнем каталоге пользователя или в Netscape, ad в каталоге app-defaults / сле­
дующие строки:
Netscape*fontList: -*-helvetica-bold- r-*-*-*-80-*-*-*-*-koi8-r
Netscape*XmTextField,fontList: -*-courier-medium-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*XmText.fontList: -*-courier-medium-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*XmList*fontList: -*-courier-medium-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*Form*fontlist: -*-helvetica-bold-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*menuBar*font List: -*-helvetica-bold-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*popup*fontList: -*-helvetica-bold-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*InputForm*fontlist: -*-courier-medium-r-*-*-*-100-*-*-*-*-koi8-r
Netscape*topArea*fontList: -*-helvetica-bold-r-*-*-*-80-*-*-*-*-koi8-r
Netscape*topArea*XmTextField.fontList: -*-eourier-medium-r-*-*-*-80-*-*-*-*-koi8-r
Netseape*topArea*XmText.fontList: -*-courier-medium-r-*-*-*-80-*-*-*-*-koi8-r

Netscape*bookmark*fontList: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-koi8-*r
Netscape*bookmark*selectedLabel.font List: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-
koi8-r
Netscape*bookmark*XmTextField.fontList: -*-courier-medium-r-*-*-*-80-*-*-*-*-
koi8-r
Netscape*bookmark*XmText.fontList: -*-courier-medium-r-*-*-*-80-*-*-*-*-koi8-r
Netscape*mouseDocumentation.fontList: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-
koi8-*
Netscape*docinfoButton.font List: -*-helvetiea-medium-r-*-*-*-80-*-*-*-*-koi8-*r
Netscape*mailto*urlLabel.fontList: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-koi8-r
Netscape*licenseDialog*text.fontList: -*-courier-medium-r-*-*-*-100-*-*-*-*-koi8-r
314 Русификация Linux

Netscape*Xml_Grid*fontList: -*-helvetica-medium-r-*-*-*-80-*-*-*-*-koi8-r, \
-*-helvetica-bold-r-*-*-*-80-*-*-*-*-koi8-r=B0LD,\
-*-helvetica-medium-o-*-*-*-80-*-*-*-*-koi8-r=ITALIC
Netscape*documentFonts*registry: koi8
Netscape*menuBar*latin1.labelString: Russian (K0I8-R)
Netscape*Navigator.title: World Wide Web
Netscape*Locale.MimeCharset: С
Netscape*locale.iso-8859-1: ru_RU.K0I8-R
Netscape*documentFonts.charsetlang*iso-8859-1: Russian
Netscape*documentFonts.charset*koi8-*: iso-8859-1
Netscape*documentFonts.charset*iso8859-1: koi8-r

Сводка информации по русификации браузера Netscape в различных дистрибу­


тивах:
Red H at Linux 6.2 Zoot Выполнено (минимально)
Black Cat Linux 6.02 Foxhound Выполнено (минимально)
KSI Linux 2.0 Выполнена полная русификация с внесени­
ем изменений в бинарный файл netscape
Mandrake Linux 7.1 Hydrogen Выполнено (минимально)
SuSE Linux 6.4 Выполнено (минимально)
Slackware Linux 7.0 Выполнено (минимально)
Debian GN U/Linux 2.2 Potato Выполнено (минимально)
Corel Linux 1.1 He выполнено

6.2.7. Почтовые программы


Для настройки наиболее популярной почтовой программы PINE (h ttp ://w w w .
w ashington.edu/p in e^ следует перейти в меню конфигурации (S)ETUP (С )-
ONFIGURE и установить пункты enable-8bit-esmtp-negotiations, enable-8bit-
-nntp-posting и pass-control-character-as-is. Кроме того, в этом же меню следует
выбрать пункт character-set и вписать в него KOI8-R.
После этого останутся некоторые проблемы, которые легко исправить, внеся
поправки в исходные тексты и перекомпилировав программы. Чтобы pine не про­
пускал в некоторых ситуациях заглавный твердый знак, замените в файле pine/
pine, h строку

#define TAG_EMBED "\377"

#define TAG_EMBED "\001"


Чтобы pine не кодировал в quoted-printable или base64 все посылаемые пись­
ма, содержащие более 30% русских букв, следует внести следующие изменения
в файл pine/send, с: перед строкой
new_encoding = ENCBINARY /* > 30% 8 bit chars */
Русификация консольных программ 315

вписать
if(body->type == TYPETEXT)
new_encoding = ENC8BIT;
else
перед строкой
gf_lin k_filte г(gf_8bit_qp);
вписать строку
if(F_0FF(F_ENABLE_8BIT,ps_global))
и, наконец, строку
: (body_encoding == ENC8BIT && F_0FF(F_ENABLE_8BIT, ps_global))
сократить до
: (body_encoding == ENC8BIT)

Работы по русификации PINE не выполнены ни в одном из следующих дистрибу­


тивов:
Red H at Linux 6.2 Zoot He выполнено
Black Cat Linux 6.02 Foxhound He выполнено
KSI Linux 2.0 He выполнено
Mandrake Linux 7.1 Hydrogen He выполнено
SuSE Linux 6.4 He выполнено
Slackware Linux 7.0 He выполнено
Debian GN U/Linux 2.2 Potato He выполнено
Corel Linux 1.1 Отсутствует PINE
Для корректной работы более старой почтовой программы elm при необходи­
мости достаточно вписать в файл “/. elm/elm гс строки:
charset = K0I8-R
displaycharset = K0I8-R

Ситуация с русификацией elm гораздо более благоприятна, хотя и далека от за­


вершения:
Red H at Linux 6.2 Zoot Выполнено частично
Black Cat Linux 6.02 Foxhound Выполнено частично
KSI Linux 2.0 Выполнено частично
Mandrake Linux 7.1Hydrogen Отсутствует elm
SuSE Linux 6.4 Отсутствует elm
Slackware Linux 7.0 He выполнено
Debian GN U/Linux 2.2 Potato Выполнено частично
Corel Linux 1.1 Выполнено частично
Для работы почтовой программы M UTT также достаточно вписать в конфигу­
рационный файл ~ /. muttrc две строки:
set allow_8bit
set charset="koi8-r"
316 Русификация Linux

Сводка информации по дистрибутивам:


Red H at Linux 6.2 Zoot Выполнено частично
Black Cat Linux 6.02 Foxhound Выполнено частично
KSI Linux 2.0 Выполнено частично
Mandrake Linux 7.1 Hydrogen Выполнено частично
SuSE Linux 6.4 Выполнено частично
Slackware Linux 7.0 Отсутствует M UTT
Debian GN U/Linux 2.2 Potato Выполнено частично
Corel Linux 1.1 Отсутствует M UTT

6.2.8. Программы для чтения USENET-новостей


Современные версии программы tin (1.4 и старше, доступны на ftp ://ftp .tin .org/
pub /news /clients /tin ) поддерживают русский язык, если установлена правильная
локаль (раздел 6.3). Единственное изменение, которое следует внести - это указать
значение koi8-r для переменной M M _CHARSET в меню конфигурации (вызыва­
ется нажатием заглавной М). Что, скорее всего, придется сделать самостоятельно.
Red H at Linux 6.2 Zoot Не выполнено
Black Cat Linux 6.02 Foxhound Не выполнено
KSI Linux 2.0 Не выполнено
Mandrake Linux 7.1 Hydrogen Не выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Отсутствует TIN

6.2.9. Русификация ТеХ


Начиная с версии 1.0, основной дистрибутив ТеХ для UNIX-систем, teTeX, включа­
ет полную русификацию, хотя уже с версией 0.9 практически во всех дистрибути­
вах распространялся пакет русификации Т2, вошедший в teTeX 1.0. Основной ад­
рес для загрузки этого дистрибутива - ftp://sunsite.inforniatik.rwth-aachen.de/pub/
com p/tex/teTeX . или лучше воспользоваться сайтом http://theory.uw innipeg.ca/
search /tetex.htm l.
После установки выполните команду texconfig и в появившемся меню выбе­
рите пункт hyphenation => latex. Появится текстовый файл, в котором следует най­
ти строку, содержащую слово russian и удалить первый символ %(раскомментиро­
вать).
При использовании LaTeX можно создавать документы, использующие русские
буквы, указав следующие три строки в начале каждого файла (после команды
\documentclass):

\usepackage[T2A]{fontenc}
\usepackage[koi8-r]{inputenc}
\usepackage[english, russian]{babel}
Русификация консольных программ 317

После этого обычная команда latex создает DVI-файл, содержащий русские


буквы из шрифта Computer Modern Cyrillic (по умолчанию).
Ситуация с русификацией ТеХ в большинстве дистрибутивов обстоит более-
менее благопрятно:
Red H at Linux 6.2 Zoot Выполнено, но нет таблицы переносов
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено, но нет таблицы переносов
SuSE Linux 6.4 Выполнено,нонеттаблицы переносов
Slackware Linux 7.0 Выполнено,нонеттаблицы переносов
Debian GN U/Linux 2.2 Potato Выполнено, но нет таблицы переносов
Corel Linux 1.1 Отсутствует ТеХ

6.2.10. Эмулятор DOS


Самый простой способ работы с русским языком в Dosemu - разрешить програм­
мам доступ к клавиатуре и к графике: $_дraphics = (1) и $_rawkeyboard = (1).
В этом случае любой русификатор для DOS будет работать без особых проблем.
Но, с другой стороны, при этом вы будете работать со всеми русскими текстами
в кодировке DOS (СР866), так что придется пользоваться перекодировщиком
(например, GNU recode или iconv).
Если вы ограничиваете свободу эмуляции, не передавая Dosemu полный кон­
троль над клавиатурой или монитором, придется либо загружать шрифты и рас­
кладку клавиатуры для кодовой страницы 866, либо работать с русскими текстами
в среде DOS в кодировке KOI8-R. Во втором случае всегда можно будет воспользо­
ваться перекодировщиком, если эти тексты вам потребуются в формате DOS. Од­
нако все русифицированные программы для DOS используют исключительно
D O S-кодировку, так что, скорее всего, вам обязательно потребуются экранные
шрифты и раскладка для этой кодировки. К счастью, и то и другое присутствует
в стандартном пакете kbd (см. раздел 6.1). Достаточно выполнить перед запуском
dos следующие команды:

setfont Суг_а8х16
load keys ru2.map
mapscrn trivial

После работы с Dosemu или при переключении в другой виртуальный терми­


нал придется восстановить настройки, выполнив те команды, которые выбирают
русский шрифт и раскладку на вашей системе. Удобно, если эти команды выпол­
нены в виде отдельного файла сценария, например, etc/rc. d/rc. font.
Как правило, русификацию Dosemu приходится выполнять вручную:
Red H at Linux 6.2 Zoot Отсутствует Dosemu
Black Cat Linux 6.02 Foxhound Не выполнено
KSI Linux 2.0 He выполнено
Mandrake Linux 7.1 Hydrogen Отсутствует Dosemu
318 Русификация Linux

SuSE Linux 6.4 He выполнено


Slackware Linux 7.0 Отстутствует Dosemu
Debian GN U/Linux 2.2 Potato He выполнено
Corel Linux 1.1 He выполнено
При работе с Dosemu в системе X Window возникают другие трудности. П ер­
вая состоит в том, что шрифт vga, который использует xdos, не русифицирован.
Его русифицированная версия доступна по адресу ftp:/ / ftp.dosemu.org/d osemu /
Development/vga_cyr8xl6.pcf.gz. Достаточно скопировать соответствующий файл
в vga. pcf и установить его:
ср vga_cyr8x16.pcf /usг/Х11/lib/X11/fonts/misc/vga.pcf
cd /us r/X11/lib/X11/fonts/misc
mkfontdir

Кроме того, можно воспользоваться сценарием console2bdf, доступным, на­


пример, на ftp://ftp.dosem u.org/dosem u/contrib/console2bdf· Этот сценарий пре­
вратит любой консольный шрифт из /usr/lib/kbd/consolefonts в B D F-шрифт,
который можно превратить в PC F при помощи программы bdftopcf, поставляе­
мой с X Window. На самом деле часть форматов шрифтов этот сценарий не по­
нимает, но вы всегда можете загрузить такой шрифт при помощи программы
setfont и вывести в понятном для console2bdf формате командой setfont -о. Т а­
ким образом вы немедленно получаете в свое распоряжение шрифты в кодиров-
ках KOI8-R и СР866.
Еще один способ получить P C F -шрифт в желаемой кодировке - установить
xfsft, как описано в разделе 5.4, и воспользоваться командами fstobdf и bdftopcf:
fstobdf -server localhost:7100 -fn -monotype-courier\ new-medium-r-normal-O-O-
100-100-p-0-ibm-cp866 > altcourierlOO.bdf
bdftopcf altcourierlOO.pcf
fstobdf -server localhost:7100 -fn -monotype-courier\ new-medium-r-normal-0-0-
100-100-p-0-koi8-r > koicourierlOO.bdf
bdftopcf koicourierlOO.pcf

Здесь вместо courier\ new можно указать имя любого шрифта, показываемого
командой xlsf onts, а вместо 100-100 можно выбрать любое желаемое разрешение.
Однако, установив шрифт СР866 как vga, вы сможете увидеть русские буквы,
но не сможете их ввести - русифицированная согласно разделу 6.5 X Window бу­
дет пользоваться раскладкой KOI8-R. Идеологически верный способ справиться
с этой ситуацией - создать системную локаль ru_RU.СР866. В этом случае «правиль­
ная» русская раскладка ХКВ будет вводить символы именно в этой кодировке.
Однако xdos на настоящий момент не пользуется ХКВ и воспринимает русские
символы, только если они записаны в «неправильную» русскую раскладку. Таким
образом, ввод русских текстов в xdos в СР866 возможен только при создании до­
полнительной «неправильной» (см. раздел 6.5) раскладки для X Window.
Ситуация с русификацией xdos аналогична рассмотреному выше случаю с dos
и выглядит не очень благоприятно:
Локаль 319

Red H at Linux 6.2 Zoot Отсутствует xdos


Black Cat Linux 6.02 Foxhound Не выполнено
KSI Linux 2.0 Не выполнено
Mandrake Linux 7.1 Hydrogen Отсутствует xdos
SuSE Linux 6.4 He выполнено
Slackware Linux 7.0 Отсутствует xdos
Debian GN U/Linux 2.2 Potato He выполнено
Corel Linux 1.1 He выполнено

6.3. Локаль
Локаль (locale) - это набор правил, по которым различные программы, авторы
которых позаботились об этом, модифицируют свои действия при работе с раз­
личными языками. В локали описываются буквы языка, соответствие заглав­
ных и строчных букв, порядок сортировки, формат записи десятичных чисел
и дат и основная единица валюты.
Утилиты locale и localedef, которые нам понадобятся, создаются при компиляции
библиотеки libe и присутствуют в любой работающей системе Linux.
Чтобы определить, установлена ли русская локаль, можно воспользоваться
командой locale -а, которая покажет список всех установленных локалей. Если
в этом списке не будет ru_RU.K0I8-R или другой локали, начинающейся на ru, при­
дется ее создать.
Для этого нам потребуется команда localedef и два файла: описание локали
(ftp ://dkuu g .d k /il8 n /lo cales/ru _ R U ) и файл с описанием кодировки (ftp ://d k u u g .
d k /i 18n/charm aps/K O I8-R ) . Оба эти файла также можно найти в дистрибутиве
библиотеки glibc2 (ІіЬсб), которая может входить в установленный вами дис­
трибутив (это можно проверить при помощи команды locate K0I8-R)
Если эти файлы присутствуют в текущей директории и если уже установлена
локаль en_DK, на которую ссылается ru_RU, то можно выполнить команду
localedef -с -i ru_RU -f K0I8-R ru_RU.K0I8-R

Теперь можно просто установить переменную LANG в ru_RU. K0I8-R и убедить­


ся, что локаль работает - команда locale покажет, что все переменные группы
LC_* кроме LC_ALL установлены в ru_RU.K0I8-R, а команда cal выведет название
месяца по-русски.
Многим не нравится то, что LC_NUMERIC в русской локали заставляет про­
граммы выводить запятую для отделения десятичных знаков в числах. С этим
можно легко справиться, включая локаль в /ete/profile двумя командами
export LANG=ru_RU.K0I8-R
export LC_NUMERIC=POSIX

И последнее замечание. Часто используют сокращенное имя локали, напри­


мер ru_RU или просто ru. Соответствие между сокращенным и полным именем
320 Русификация Linux

система устанавливает по файлу locale, alias. Но при этом основная система


Linux и графическая система X W indow используют файлы, расположенные
в разных каталогах. Кроме того, может оказаться, что в каком-нибудь из них ука­
зана другая (не KOI8-R) кодировка, а в каком-то не найдется этого сокращения
вообще. Всегда выгоднее пользоваться полным именем локали. В правильно на­
строенной системе пользователю не придется его набирать, а администратору
предпочтительно выбирать точность и однозначность, даже в ущерб простоте
своей работы.
Сводка информации по локали в различных дистрибутивах:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Не выполнено, но в системе есть русские
локали
Slackware Linux 7.0 Не выполнено, но в системе есть русские
локали
Debian GN U/Linux 2.2 Potato Не выполнено, но в системе есть русские
локали
Corel Linux 1.1 Не выполнено, но в системе есть русские
локали

6.4. NLS и gettext


Локаль позволяет программам правильно обрабатывать русскоязычные данные,
но сами программы продолжают общаться с пользователем на том языке, кото­
рый использовался при их разработке. Однако существует система, позволяю­
щая программам общаться с пользователями на их языке - это NLS (National
Lanuage Support), реализованная в Linux как GNU gettext (доступно как f tp ://
prep.ai.m it.edu/gnu/gettext или в составе библиотеки glibc2).
После того как gettext установлен, многие GNU-программы можно перекомпи­
лировать, выполнив еще раз сценарий . /conf іди re , чтобы наличие gettext учитыва­
лось при компиляции (можно использовать . /configure --with-gnu-gettext). Про­
граммы, которые поддерживают такую систему “интернационализации”, обычно
имеют в своем дистрибутиве каталог ро с множеством файлов типа ??. ро, где пер­
вые две буквы соответствуют первым двум буквам локали (в нашем случае - ru).
Авторы русифицированных дистрибутивов Linux создают ро-файлы для многих
программ и распространяют их вместе со своими дистрибутивами.
Анализ различных дистрибутивов показал большую неоднородность в поддерж­
ке интернациональных стандартов:
Red H at Linux 6.2 Zoot Выполнено для Xconfigurator, ark, bugbuddy,
chkconfig, control-center, ее, enlightenmentconf,
NLS и gettext 321

fileutils, gnupg, grep, gtk+, me, mouseconfig,


MUTT, RPM, tar, textutils, timeconfig, xchat,
KDE, GNOME
Black Cat Linux 6.02 Foxhound Выполнено для Xconfigurator, ark, aumix,
authconfig, chkconfig, control-center, ее, en-
lightenm ent-conf, fileutils, grep, gtk+, me,
mouseconfig, M U TT, RPM , sndconfig, tar,
textutils, timeconfig, xchat
KSI Linux 2.0 Выполнено для WindowMaker, Xconfigurator,
chkconfig, fileutils, kbdeonfig, m4, man, me,
minicom, mouseconfig, MUTT, RPM, sndconfig,
timeconfig, KDE
Mandrake Linux 7.1 Hydrogen Выполнено для Gtk+Lizq, Wprefs, W indow­
Maker, ark, bonobo, chkconfig, control-center,
control-panel, ее, enlightenment-conf, fileutils,
freeciv, grep, gtk+, lftp, menu-messages, MUTT,
RPM, sh-utils, tar, texinfo, textutils, timeconfig,
xmms, KDE, GNOME
SuSE Linux 6.4 Выполнено для a2ps, fileutils, gimp, grep,
gtk+, kbd, lyx, me, M UTT, RPM, sh-utils, tar,
texinfo, textutils, wget, KDE
Slackware Linux 7.0 Выполнено для control-center, englighten-
ment-conf, fetchmail, fileutils, grep, gtk+, kbd,
me, RPM, xchat, GNOME
Debian GNU/Linux 2.2 Potato Выполнено для balsa, console-tools, dpkg,
ее,fileutils, grep, gtk+, lftp, me, sh-utils, tar,
textutils, GNOME
Corel Linux 1.1 Выполнено для grep

6.5. Русификация системы X Window


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

6.5.1. Русские шрифты


Как и в предыдущих случаях, первое, что необходимо сделать, - это наладить пра­
вильное отображение русских символов на экране.
Для этого, естественно, надо установить и подключить русские шрифты.
322 Русификация Linux

6.5.1.1. Растровые шрифты


Немасштабируемые русские шрифты для X Window с разрешением 75 и 100 dpi,
созданные изначально Cronyx Ltd и модифицированные Андреем Черновым для
более точного соответствия стандарту KOI8-R, можно бесплатно загрузить с http:
/ / w w w .kiarchive.ru/pub/m isc/fonts/cyrillic/xwindows/x6rus-2.2.0-bin.tgz. Эти же
шрифты поставляются с Xfree, но на сервере kiarchive может оказаться более све­
жая версия. Этот набор шрифтов обычно распаковывают в каталог /и s г/Х11R6/
lib/X1 1/fonts/cyrillic, где создаются подкаталоги 100dpi, 75dpi и misc. Ста­
рые файлы, поставлявшиеся с Xfree и располагавшиеся прямо в /usr/X1 1R6/1 i b/
X11/fonts/cyrillic, можно удалить. Эти ш рифты записаны в формате PC F
(P ortable Compiled F ont) и дополнительно сжаты gzip для экономии места. Их
исходные тексты в формате Adobe BDF (Bitm ap D istribution Form at) также до­
ступны на сервере kiarchive, если вам потребуется изменить какой-нибудь
символ.
Чтобы подключить новые шрифты в системе без сервера шрифтов, надо доба­
вить эти три новых каталога к списку F ontPath в файле /etc/XF86Confід или
XF86Con f ід в домашнем каталоге и перезапустить Х-сервер. Где именно располо­
жен файл, который использует ваш Х-сервер, можно узнать, запустив его с сохра­
нением сообщений, выдаваемых при запуске:
X 2>&1 >Х.log

Там же можно будет прочитать, какие именно каталоги со шрифтами использу­


ются.
Если нет возможности перегрузить Х-сервер, новые шрифты можно добавить
при помощи команд
xset +fp /us r/X11R6/lib/X11/fonts/cyrillic/100dpi
xset +fp /usr/X11R6/lib/X11/fonts/суrillic/75dpi
xset +fp /usr/X11R6/lib/X11/fonts/суrillic/misc
xset fp rehash

Но изменения в XF86Config все равно надо внести, так как такая конфигура­
ция сохраняется только до отключения Х-сервера.
Если вы установили сервер ш рифтов (fontserver), как предлагалось в разде­
ле 5.4, надо вместо всего вышеописанного просто добавить три новых каталога
в его файл конфигурации /usr/X11R6/lib/X1 1/f s/conf ід, например так:
catalogue = /us r/X11R6/lib/X11/fonts/cyrillic/100dpi,
/us r/X11R6/lib/X11/fonts/су rillic/75dpi,
/us r/X11R6/lib/X11/fonts/суrillic/misc,
/us r/X11R6/lib/X11/fonts/Type1,
/us r/X11R6/lib/X11/fonts/Speedo,
/us r/X11R6/lib/X11/fonts/100dpi,
/us r/X11R6/lib/X11/fonts/75dpi,
/us r/X11R6/lib/X11/fonts/misc/
Русификация системы X Window 323

После чего надо послать процессу xfs сигнал SIGHUP для перезагрузки файла
конфигурации, вызвав по очереди команды ps -ах и kill или автоматически:
gummadoon:-# kill -HUP "ps ax | grep xfs | grep -v grep | \
> awk "{print $1}"'

Здесь ps выдает список процессов, первый grep выбирает строки, содержащие


слово xfs (их может быть две - для процессов xfs и grep xfs), второй grep удаляет
строку, содержащую слово grep, awk выделяет первое число (номер процесса),
и затем kill посылает ему SIGHUP.
Заметьте, что русские шрифты должны быть указаны, и в XF86Conf ід, и в Χ11/
fs/config, перед всеми остальными. В этом случае именно они будут исполь­
зоваться программами, не указывающими кодировку. Ш рифты Сгопух имеют
имена:
-cronyx-times-*-*-*-*-*-*-100,75-100,75-*-*-koi8-r
-с ronyx-helvetica-*-*-*-*-*-*-100,75-100,75-*-*-koi8-r
-с ronyx-courier-*-*-*-*-*-*-100,75-100,75-*-*-koi8-r
-сronyx-fixed-*-*-*-*-*-*-100,75-100,75-*-*-koi8-r

В принципе этого достаточно для того, чтобы большинство графических про­


грамм работало с русскими буквами. Однако программы, использующие более
сложные манипуляции со шрифтами, чем просто вывод символа на экран,
не будут удовлетворены таким минимальным набором из четырех шрифтов
с двумя фиксированными масштабами. В частности, пакеты типа w ord-процессо-
ра StarOffice или программы для просмотра Postscript-файлов Ghostview вообще
не будут использовать эти шрифты, так как им требуется возможность масштаби­
рования.
6.5.1.2. Шрифты Туре1
Наиболее распространенный вид масштабируемых шрифтов в мире UNIX поми­
мо используемых в системе ТеХ - это, по-видимому, Adobe PostScript Typel.
Шрифты Typel могут распространяться в форматах PFA (ASCII) и PFB (Binary),
но для X Window это не важно, они подключаются так же легко, как и раст­
ровые B D F -шрифты. М инимальный набор русских Туре ш рифтов семейств
ERKourier © Gavin Helf и ArialCyrMT, CourierCyrPS и TimesNRCyrM T ©
Monotype можно найти на том же www.kiarchive.ru: http://w w w .kiarchive.ru/pub/
misc/ fonts/cyrillic/xw indow s/Туре 1.koi8-r.tgz или на ftp:/ /ftp.kapella.gpi.ru /p u b /
cyrillic/psfonts/gs-typel_koi8_fonts.tgz. По второму адресу к ним прилагаются
также P FM -файлы с метриками, которые потребуются для русификации некото­
рых программ, так что лучше брать сразу второй архив.
Ш рифты можно поместить в один каталог с уже имеющимися Typel шрифта­
ми или в отдельный каталог, например /us г/Х11R6/lib/f onts/cyrillic/Typel . З а ­
тем надо скопировать файл ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/X Free86-
Typel_fonts.dir.scale.gz в fonts.dir и scale.dir в этот каталог. Если вы пользовались
архивом с сервера kiarchive, надо разархивировать его в пустой каталог, перейти
в него и выполнить команды:
324 Русификация Linux

echo 16 > fonts.dir


echo 16 > fonts.scale
cat fonts.dir-scale.add > fonts.dir
cat fonts.dir-scale.add > fonts.scale

Соответственно, при объединении шрифтов с уже существующими, файл fonts


.dir-scale. add надо добавить к уже существующим fonts, dir и fonts, scale, а к чис­
лам в первых строчках этих двух файлов добавить в текстовом редакторе 16 -
число строк в fonts, dir-scale. add.
После этого, если шрифты добавлялись в отдельный каталог, надо внести его
в /etc/XF86Config или / u s r / X 1 1R6 / l i b X 1 1/fs/config, а если они добавлялись
в каталог к уже существующим - только выполнить xset f р rehash или послать
SIGHUP серверу шрифтов.

6.5.1.3. Шрифты TrueType


Если у вас установлена поддержка T T F-шрифтов (раздел 5.4), то лучший вариант
для работы - шрифты, распространяемые Microsoft, многие из которых доступны
бесплатно на http://w w w.m icrosoft.com /typography/fontpack/default.htni. а также
огромное количество разнообразных русских T T F -шрифтов, распространяемых
повсеместно. Даже описанные в предыдущем разделе русские шрифты Typel на
самом деле являются перекодированными из формата TTF.
Если установлен сервер шрифтов xfsft, инсталляция русских (и любых других)
TrueType шрифтов сводится к следующей процедуре:
1. Ш рифты помещаются в /usr/X11R6/lib/fonts/cyrillic/TrueType (или в лю­
бой другой подходящий каталог).
2. В этом каталоге выполняется mkfontdir -е /usr/X11R6/lib/fonts/encodings.
3. Затем выполняется ttmkfdir > fonts, scale и ср fonts, scale fonts, dir.
4. Имя каталога добавляется в список catalogue файла конфигурации сервера
шрифтов.
5. Серверу шрифтов посылается сигнал SIGHUP.
Команда ttmkf di г создает описания шрифтов не во всех возможных кодиров­
ках. В частности, из интересующих нас русских шрифтов в fonts.scale и fonts.dir
попадают только K0I8-R и IS08859-5. Если вам предстоит работать с докумен­
тами в других кодировках, модуль перекодирования xfsft поддерживает также
windows-CP1251 (кодировка Windows) и IBM -CP866 (кодировка DOS). Для это­
го можно модифицировать файлы fonts, scale и fonts, dir, добавив соответ­
ствующие описания шрифтов. Так, фрагмент, описывающий шрифт arial.ttf,
будет выглядеть так:
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-ascii-0
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-microsoft-cp1251
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-ibm-cp866
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-koi8-r
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-15
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-10
Русификация системы X Window 325

a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-9
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-7
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-5
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-4
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-3
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-2
a rial.ttf -monotype-arial-medium-r-normal-0-0-0-0-p-0-iso8859-1

Такие модификации можно внести при помощи команд s e d :


cat fonts.dir I sed s/koi8-ru/windows-cp1251/g > fonts.scale
cat fonts.scale | sed s/fcd8859-15/ibm-cp866/g > fonts.dir
cp fonts.dir fonts.scale

заменяя неиспользуемые кодировки на более полезные. Эти же команды можно


ввести в редакторе Vi:
:%s/koi8-ru/windows-cp1251/g
:%s/fcd8859-15/ibm-cp866/g

Правильную кодировку установленного шрифта можно проверить при помо­


щи команды xf d -f η полное-им я-ш риф т а. Например, для шрифта Bookman Old Style
в кодировке KOI8-R команда xfd покажет окно, изображенное на рис. 6.1.

- Μ xfd - J
-m onot у ре-bookm an old style-sem i bold-i-norm al— 12-120-75- 75-ρ -70-koi8-iΓ

Quit \ Prev Ї-Чще \ \ Мея* Рщ ї * і

Select a ch a ra cte r

range: OxOOQQ (0,0) thru OxOOff (0,255)


upper left: 0x0000 (□,□)

Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί

Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί Ί
гг г *
t # $ % * f J + ! - ■ /
0 1 2 3 4 5 6 7 8 9 : 3 < = > ρ

@ A В С D Б F G- Я І J к L Μ N Ο

P Q R s T и V W X Y Z [ \ J Λ
_
■ b с d є h і k. 1 ηι Ά ο
CL f 9
P 'Ϊ Τ' s t u v Ы? X у z { 1 I - Ί

- L J ± ш
1 Г Ί l· ■
1 Т 1 ■ 1 1 1
■ • л/ 5 > ο JZ -Γ
і ί 1
= I ё L IL IL =
1 JI J
F ΙΓ lr =
1 η її h
IL Ё _L 1 JL JL ©
II- ІГ =
1 i =1 T т їг + 1 ΊΓ
Ю CL б if d e Ф £ u. к Л Μ Η ο

Ά Я P с m if ж в ь ЬІ 3 Ш Э Щ 4. Τι

Ю A Б ц Д Б ф г X И Η К А Μ Η Ο

Π Я P С г У Ж в ь Ы 3 Ш Э Щ 4 Ь

Рис. 6.1. Пример работы программы xfd - шрифт Bookman Old Style в KOI8-R
326 Русификация Linux

Для упорядочивания большого количества ТгиеТуре-шрифтов имеет смысл со­


здавать отдельные каталоги для шрифтов разных производителей. Например,
можно создать каталоги
/us г/Х11R6/lib/fonts/T гиеТуре/monotype
/us r/X11R6/lib/fonts/T rueType/bitst ream
и т. Д.
В каждом из этих каталогов надо выполнить команду ttmkfdir, как было пока­
зано выше. Файл encodings, dir, созданный при помощи mkfontdir, можно просто
скопировать. Такое разбиение на каталоги будет дополнительно полезным, если
у вас есть T T F -шрифты с нестандартными кодировками, например, набор ER
Kourier. Достаточно просто не создавать encodings.di г в каталоге с такими ш риф­
тами (и вручную указать кодировки в fonts, dir).
В любом случае, для того чтобы X Window приложения использовали русские
шрифты, каталоги с ними должны быть указаны раньше, чем каталоги с похожими
английскими шрифтами в файле конфигурации xfs или Х-сервера.
На данный момент растровые шрифты установлены в подавляющем большин­
стве дистрибутивов:
Red H at Linux 6.2 Zoot Выполнено, стандартные растровые ш риф­
ты Сгопух
Black Cat Linux 6.02 Foxhound Выполнено, стандартные растровые ш риф­
ты Сгопух
KSI Linux 2.0 Выполнено, установлено большое количе­
ство растровых шрифтов
Mandrake Linux 7.1 Hydrogen Выполнено, стандартные растровые ш риф­
ты Сгопух
SuSE Linux 6.4 Выполнено, стандартные растровые ш риф­
ты Сгопух и растровые Unicode-шрифты
Slackware Linux 7.0 Выполнено, стандартные растровые ш риф­
ты Сгопух
Debian GN U/Linux 2.2 Potato Выполнено, стандартные растровые ш риф­
ты Сгопух
Corel Linux 1.1 Не выполнено

6.5.2. Локаль в X Window


Система X Window, а точнее, библиотека xlib, использует расширение локали биб­
лиотеки libe, которую мы рассматривали в разделе 6.3. Эта Х-локаль настраивает­
ся при запуске X Window, основываясь на текущем значении системной локали.
Чтобы установить Х-локаль, надо, во-первых, установить обычную (систем­
ную) локаль, во-вторых, убедиться, что в файле /v ar/X11R6/lib/locale/locale.dir
есть строка
koi8-r/XLC_LOCALE ru_RU.K0I8-R
Русификация системы X Window 327

где справа стоит имя системной локали, а слева - имя файла, который поставляется
вместе с библиотекой xlib (то есть с пакетом XFree86). Если такого файла у вас нет,
его можно загрузить с http://w w w .kiarchive.ru/pub/xl 1/cyrillic/X I lR6_locale.tgz.
Следует сразу сказать, что XFree86 версии 3.3.3 содержит ошибку, из-за кото­
рой русский язык настроить невозможно, и следует установить более новую вер­
сию (хотя бы 3.3.3.1) с www.xfree.org. или придется внести небольшое изменение
в исходный текст - заменить в файле xc/lib/X11/imConv.с слово sCyrillic на sKoi8,
после чего следует перекомпилировать всю библиотеку xlib.
Ниже представлена сводная информация по настройке локали в X Window:
Red H at Linux 6.2 Zoot Выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen Выполнено
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено

6.5.3. Русификация клавиатуры под X Window


Прежде чем приступить к этому разделу, убедитесь, что установлены русские
шрифты (раздел 6.5.1) и русская локаль (раздел 6.5.2). Первое можно проверить,
распечатав в xterm при помощи echo -е "\312" какую-нибудь русскую букву, напри­
мер «й», второе - командой locale в том же xterm.
Кроме того, если на вашей системе установлены устаревшие средства руси­
фикации: программы xrus, kikbd или им подобные, - проверьте и удалите файл
.Xmodmap в домашнем каталоге или строку XkbDisable в /etc/XF86Conf ig.

6.5.3.1. Расширение ХКВ


Реализация системы X Window, используемая в Linux, XFree86 (h ttp ://w w w .
xfree86.orgV начиная с версии 3.1.2 включает подсистему управления клавиату­
рой ХКВ. Эта подсистема преобразует код нажатой клавиши (скан-код), пришед­
ший с клавиатуры, в какой-нибудь символ, зависящий от текущего состояния
клавиатуры. Для каждого скан-кода соответствующий символ выбирается в зави­
симости от группы, числом до четырех, и уровня (shiftlevel) внутри группы, до 64
уровней в группе. Различные группы соответствуют различным раскладкам клавиату­
ры, а уровни - это состояния в одной и той же группе с нажатыми клавишами-моди-
фикаторами Shift, Control, Alt и их комбинациями, а также некоторыми другими.
На указанном уровне в указанной группе клавиша может порождать не символ,
а действие (action), которое выглядит как небольшая программа, и воздейство­
вать на внутренние состояния ХКВ. Кроме того, уже введенные символы могут
интерпретироваться особым образом перед отправкой приложениям, то есть
328 Русификация Linux

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


клавишам в разделе конфигурации keycodes, а интерпретации задаются в разделе
compat.
Основное преимущество ХКВ, помимо больших возможностей по настрой­
ке - необходимость всего одной раскладки клавиатуры для всех кодировок рус­
ского (KOI8-R, IS08859-5, и т. д.). Кодировка выбирается из локали автоматичес­
ки (ru_RU. K0I8-R, ru_RU. IS08859-5 и т.д.).
Мы не будем исследовать ХКВ досконально, это слишком сложная и разно­
сторонняя система. Рассмотрим только, как установить русскую раскладку кла­
виатуры, достаточную для работы со всеми приложениями. Довольно подроб­
ное описание русификации ХКВ, включая несколько весьма сложных способов
переключения между тремя группами, есть в Internet по адресу http://w w w .tsu.ru/
-pascal /other /x k b /.

6.5.3.2. Конфигурация ХКВ


Конфигурация ХКВ задается в файле /etc/XF86Conf ig в секции Keyboard. С точки
зрения самого модуля ХКВ, его конфигурация задается выбором необходимых
файлов из пяти основных каталогов:
/usг/Х11R6/lib/X11/xkb/keycodes (раздел keycodes),
/us r/X11R6/lib/X11/xkb/types (раздел types),
/usr/X11R6/lib/X11/xkb/compat (раздел compat),
/usr/X11R6/lib/X11/xkb/symbols (раздел symbols),
/usг/Х11R6/lib/X11/xkb/geomet гу (раздел geometry).
Таким образом, указание в XF86Config следующих пяти команд полностью
описывает стандартную русскую раскладку клавиатуры для 104-клавишной кла­
виатуры (для примера введено также и минимальное изменение конфигурации -
переключение раскладок при нажатии обеих клавиш Shift).
XkbKeycodes "xfree86"
XkbTypes "complete"
XkbCompat "complete"
XkbSymbols "us(pc104)+ru+group(shift_toggle)"
XkbGeometry "pc(pc104)"

При этом каждое слово в кавычках (xf гее86, complete, us, ru, group, pc) - это имя
файла, находящегося в соответствующем подкаталоге /usr/X1 1R6/lib/X11/xkb. Сло­
во в круглых скобках - имя секции внутри соответствующего файла. Если секция
не указана, используется та, которая внутри файла начинается со слова default.
Просмотрите эти файлы, чтобы иметь представление об их структуре.
Однако в /etc/XF86Config совсем не обязательно указывать каждый раздел
конфигурации отдельно. Достаточно записать всего одну строку, с именем ф ай­
ла в разделе keymap.
XkbKeymap "xfree86(ru)"
Русификация системы X Window 329

В этом случае Х-сервер откроет файл / u s г/Х11 R6/lib/X11/xkb/keymap/xf ree86


и найдет там секцию "r u ", содержащую все пять разделов конфигурации (в не­
сколько другом формате).
xkb_keymap "ru" {
xkb_keycodes { include "ru" };
xkb_types { include "default" };
xkb_compatibility { include "default" };
xkb_symbols { include "en_US(pc104) + ru"};
xkb_geometry{ include "pc(pel04)" };
};
Существует еще и третий способ задания конфигурации ХКВ. Этот способ ре­
комендуется к использованию авторами XFree, и программа полуавтоматической
конфигурации XF86Setup вписывает выбранную раскладку, используя именно
этот способ. Здесь вместо физической конфигурации, как в предыдущих случаях,
задается логическая - правила, модель клавиатуры, раскладка и нестандартные
опции.
XkbRules "xfree86"
XkbModel "pci 04"
XkbLayout "ru"
XkbVariant
XkbOptions "group: shift_toggle"

Из всего этого набора только xf гее86 является файлом в каталоге /usr/X11R6/


lib/X11/xkb/rules, а остальные разделы конфигурации определяются из него. Та­
кая форма считается более удобной для понимания, но потребует дополнитель­
ных усилий, когда мы будем модифицировать настройки ХКВ.

6.5.3.3. Возможные проблемы с ХКВ


Возникает вопрос: а зачем мы будем что-то модифицировать, если в ХКВ уже вхо­
дит русская раскладка? Дело в том, что только половина программ будут видеть
русские буквы, введенные таким образом. Попробуйте загрузить X Window с лю­
бым из трех вышеуказанных вариантов конфигурации ХКВ и открыть две про­
граммы - xterm и rxvt. Находясь в xterm (если, конечно, у вас разрешен ввод
русских букв в shell, см. раздел 6.2.1), вы можете набирать русский текст (и ви ­
деть его, если установлены шрифты). В стандартной раскладке буквы вводятся,
если удерживать правую кнопку Alt (AltG r) или нажать и отпустить обе клавиши
Shift (или используя Caps Lock по умолчанию). Тогда при попытке набрать что-
либо в rxvt не будет вводиться вообще ничего.
Дело в том, что не все авторы программ учли возможность того, что ими будут
пользоваться люди, говорящие на других языках, и включили поддержку локали­
зации в свои программы. Если такая программа доступна в исходных текстах, си­
туацию легко исправить, добавив ближе к началу вызов функции setlocale:
setlocale(LC_CTYPE,"");
330 Русификация Linux

И, в самом начале, указание на соответствующий включаемый файл:


#include <locale.h>
После этого функция X Window, читающая введенный с клавиатуры символ, бу­
дет возвращать не пустую строку, а русскую букву в соответствующей кодировке
(она определяется из системной локали - для ru_RU. K0I8-R это KOI8-R). Это не па­
нацея - где-то в глубине такой программы все равно могут обнаружиться проблемы
с русскими буквами, но, по крайней мере, эти буквы будут вводиться с клавиатуры.
Тем не менее перекомпилирование всех программ в дистрибутиве - процесс до­
статочно длительный, и к тому же встречаются программы, которые не удастся
исправить таким образом, или распространяющиеся без исходных текстов. В этом
случае придется построить дополнительную группу в ХКВ, содержащую русские
буквы в виде, необходимом для работы старых программ.

6.5.3.4. Русификация ХКВ с тремя группами


Русские буквы, введенные в стандартной, правильной ситуации, преобразуются
в соответствии с symbols/ru в символы Cyrillic a, Cyrillic be и т.д. Эти внутрен­
ние двухбайтовые символы преобразуются затем, в зависимости от выбранной ло­
кали, в однобайтовые русские буквы в той или иной кодировке. Программа, кото­
рая не установила свою локаль, считается выбравшей локаль POSIX (или С),
в которой русские (и вообще любые двухбайтовые) буквы не существуют. Тем не
менее, можно настроить ХКВ так, чтобы клавиши посылали однобайтовые коды,
соответствующие русским буквам в какой-то конкретной кодировке. Но при этом
происходит другая неприятность - программы, работающие с более совершенны­
ми двухбайтовыми кодами, инициализируют русскую локаль, после чего не вво­
дятся уже эти, «неправильные» однобайтовые символы.
Поэтому нам потребуется два варианта русификации одновременно. Так как
в ХКВ разрешено до четырех групп, с этим не должно быть проблем. Старая рас­
кладка должна быть описана как группа 2, потому что старые программы рассчи­
таны на работу только с двумя группами и, в соответствии с установками ХКВ для
совместимости, обращаются ко второй группе, если выбрана любая кроме первой.
Удобно взять для модификации файл symbols/ru, в котором записана правильная
раскладка русского, и описание каждой буквы выглядит следующим образом:
key <АС04> {[ f, F ],
[ Cyrillic_a,Суrillic_A ]};

Здесь содержимое первых квадратных скобок определяет символы, которые


создает клавиша в первой группе (английская раскладка) на двух первых уровнях
(нейтральном - «f» и с Shift - «F»), Во вторых квадратных скобках находятся
символы, создаваемые во второй группе («а» и «А»),
После внесения наших модификаций описание этой клавиши будет выглядеть так:
key <АС04> {[ f, F ],
[ 0хс1, 0хе1 ],
[ Cyrillic_a, Cyrillic_A ]};
Русификация системы X Window 331

То есть создавать символы «f» и «F» в первой группе, символы с кодами Oxcl
и Oxel во второй и русские «а» и «А» в третьей. Указанные шестнадцатеричные
коды соответствуют буквам «а» и «А» в кодировке KOI8-R. Полный список кодов
KOI8 для русских букв показан в табл. 6.1.

Таблица 6.1. Однобайтовые коды символов KOI8-R


ХКВ Код Код ХКВ Код Код

Cyrillic_io Oxa3 C y rillic JO О хЬЗ

Cyri 11ic_s horti Oxca Cyrillic_SHORTI Oxea

Cyrillic_ya O xdl Cyrillic_YA Oxfl

Cyrillic_yeru Oxd9 Cyrillic_YERU Oxf9

Cyrillic_ef Охсб Cyrillic_EF Охеб

Cyrillic_tse ОхсЗ Cyrillic_TSE ОхеЗ

Cyrillic_es Oxd3 Cyrillic_ES Oxf3

Cyrillic_che Oxde Cyrillic_CHE Oxfe

Cyrillic_ve Oxd7 Cyrillic_VE Oxf7

C yrillicjj Oxd5 Cyrillic_U Oxf5

Cyrillic_em Oxcd Cyrillic_EM Oxed

Cyrillic_a O xcl Cyrillic_A O xel

Cyrillic_ie Oxc5 C yrillicJE Oxe5


J
U

Oxcb Cyrillic_KA Oxeb


>

C yrillicje Oxd4 Cyrillic_TE Oxf4

Cyrillic_i Oxc9 Cyrillic_l Oxe9

Cyrillic_er Oxd2 Cyrillic_ER Oxf2

Cyrillic_pe OxdO Cyrillic_PE OxfO

Cyrillic_en Oxce Cyrillic_EN Oxee

Cyrillic_softsign Oxd8 Cyrillic_SO FTSIG N Oxf8

Cyrillic_o Oxcf Cyrillic_0 Oxef

Cyrillic_ghe Oxc7 Cyrillic_GHE Oxe7

Cyrillic_be Oxc2 Cyrillic_BE Oxe2

Cyrillic_el Oxcc Cyrillic_EL Oxec

Cyrillic_sha Oxdb Cyrillic_SHA Oxfb

Cyrillic_shcha Oxdd C yrillic_SHCHA Oxfd

Cyrillic_yu OxcO Cyrillic_YU OxeO

Cyrillic_de Oxc4 Cyril lic_DE Oxe4

Cyrillic_zhe Oxd6 Cyrillic_ZHE Oxf6

Cyrillic_ze Oxda Cyrillic_ZE Oxfa

Cyrillic_e Oxdc Cyrillic_E Oxfc

Cyrillic_ha Oxc8 Cyrillic_HA Oxe8

Cyrillic_hardsign Oxdf Cyrillic_H ARD SIG N Oxff


332 Русификация Linux

Переделанный таким образом файл symbols/ru имеет смысл сохранить как от­
дельный набор символов, например symbols/ru_2way. После этого можно заменить
указание +ru в файлах конфигурации (/etc/XF86Config или keymap/xf гее86) на
+ ru_2way. В нашем примере это соответственно
XkbSymbols "us(pc104)+ru_2way+group(shift_toggle)"

xkb_symbols { include "en_US(pc104)+ru_2way"};


Указанный переключатель (в данном случае две клавиши Shift) будет переклю­
чаться циклически между английской, русской «неправильной» и русской «пра­
вильной» раскладками. Единственная проблема - переключатель по умолчанию
Caps Lock. Чтобы его можно было использовать в такой конфигурации, придется
его переопределить, добавив в файл ru_2way строку:
key <CAPS> { [IS0_Next_Group] };
Теперь можно запустить X Window и проверить функционирование всей сис­
темы. Для этого запустите в xterm (или в другом терминале) программу xev
и понажимайте клавиши. При нажатии и отпускании каждой клавиши выводит­
ся четыре строки информации о том, что произошло в этот момент с точки зре­
ния X Window. Нас будет интересовать предпоследняя строка, в которой указан
keysym - символ, полученный с клавиатуры. В английской раскладке это будет
что-то вроде (keysym 0x40, а), в русской «неправильной»- ( keysym Охсб, АЕ),
в русской «правильной»- ( keysym Охбсб, Cyrillic_ef ).

6.5.3.5. Индикация выбранной группы


Итак, у нас есть переключатель, но пользоваться им неудобно, потому что он пе­
реключает три раскладки и непонятно, в какой из них он находится в конкретный
момент. Нам потребуется какой-то индикатор. Рассмотрим сначала средства, ко­
торые нам предлагает сама ХКВ.
В ней определено до 32 индикаторов. Из них первые три (а на некоторых кла­
виатурах - четыре) соответствуют реальным индикаторам на клавиатуре. Осталь­
ные можно увидеть только при помощи специальных программ, одна из которых,
xkbvleds, поставляется вместе с XFree86. Определим три виртуальных индикато­
ра для соответствия трем нашим клавиатурным группам.
Описание индикаторов размещено в двух разделах конфигурационных файлов
ХКВ. В разделе keycodes определяются названия индикаторов, а в compat - ситу­
ации, в которых каждый из них срабатывает.
Мы можем вписать три новых индикатора прямо в используемый файл из раз­
дела keycodes или создать отдельный файл, например keycodes/ind3g, и объявить
их следующим образом:
default xkb_keycodes "ind3g" {
indicator 6 = "English"
indicator 5 = "Russian OLD"
indicator 4 = "Russian NEW"
Русификация системы X Window 333

Нумерация выполнена в обратном порядке из расчета на программу xkbvleds,


которая изображает индикаторы справа налево. Соответственно, если дополни­
тельные индикаторы объявлены в отдельном файле, он должен быть включен
в конфигурацию ХКВ:
xkb_keycodes { include "ru+ind3g" };

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


индикатора условия срабатывания. В нашем случае это попадание ХКВ в соот­
ветствующую группу. Запишем следующие команды в файл /usr/X11R6/lib/X11/
xkb/compat/ind3g.

default partial xkb_compatibility "ind3g" {


indicator "English" { groups=Group1; };
indicator "Russian OLD" { groups=Group2; };
indicator "Russian NEW" { groups=Group3; };
};
Теперь этот файл тоже надо включить в конфигурацию, выбранную в /etc/
XF86Config.
xkb_compatibility { include "default+ind3g" };
После того, как выполнены все эти модификации, можно перезапустить Х-сер-
вер и выполнить из xterm команду
xkbvleds -watch 0x38 &
Эта программа (xkbvleds) выводит в небольшом окошке состояние индикато­
ров ХКВ. Число после - watch - битовая маска для индикаторов. Это значит, что
будут выводиться только индикаторы с номерами, совпадающими с номерами би­
тов в маске, установленных в единицу. Используемое
нами шестнадцатеричное число 0x38 соответствует J
двоичному 111000, где установлены биты 4, 5 и 6, что
нам и требуется. Должно появиться окошко с тремя ггг
индикаторами (рис. 6.2), первый из которых будет
включен. Нажатие клавиши или комбинации кла­ Рис. 6.2. Индикация
клавиатурной группы
виш для переключения клавиатурных групп будет средствами ХКВ
одновременно переключать и индикацию.
Чтобы xkbvleds запускалась автоматически при старте системы, надо поместить
ее либо в файл /usr/X11R6/lib/X11/xinit/xinitrc, либо в файл конфигурации ис­
пользуемого менеджера окон.
Единственное преимущество xkbvleds состоит в том, что эта программа распро­
страняется с XFree и присутствует всегда. Но в ней нет ничего из того, что требу­
ется от реального индикатора/переключателя клавиатуры. Она не показывает на­
звание текущей раскладки и не позволяет переключиться при щелчке по своему
окну мышью. Вам придется помнить, что слева находится английский индикатор,
справа - русский, а посередине - русский для старых программ. К счастью, су­
ществует довольно много индикаторов/переключателей, написанных другими
334 Русификация Linux

авторами, при установке которых следует обращать внимание только на способ


переключения, так как многие из них были написаны до появления ХКВ и пользу­
ются исключительно старым методом.
Сводная информация по настройке переключения раскладки в различных дис­
трибутивах выглядит следующим образом:
Red H at Linux 6.2 Zoot Не выполнено
Black Cat Linux 6.02 Foxhound Выполнено, метод ХКВ, переключение Ctrl+
+Shift
KSI Linux 2.0 Выполнено, метод ХКВ, русский язык вклю­
чается правой клавишей Ctrl, украинский -
правой Alt, английский - правой Shift
Mandrake Linux 7.1 Hydrogen Выполнено, метод ХКВ, переключение Caps
Lock
SuSE Linux 6.4 Не выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено

6.6. Русификация системы печати


Наиболее универсальный способ печати в Linux - использование Ghostscript. Эта
программа преобразует («интерпретирует») файлы, написанные на языке управ­
ления принтером PostScript в бинарные файлы для печати на данном конкретном
принтере. Вся русификация в этом случае сводится к помещению T ypel-шрифтов
с кирилицей в каталог шрифтов Ghostscript и указанию их имен в его файле кон­
фигурации Fontmap. Набор свободно распространяемых шрифтов как раз для
этой цели есть на ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts/·
Чтобы добавить шрифт в Ghostscript, достаточно вписать его имя и имя ф ай­
ла в конце Fontmap (обычно /usr/share/ghostscript/fonts/Fontmap), так как за­
писи в конце имеют бо "лътттуго силу, чем записи в начале. Формат записи в Fontmap
достаточно простой: /, имя шрифта, имя файла в круглых скобках, точка с запятой,
например:
/ArialCyrMT (arial8.pfb) ;
Кроме того, вместо имени файла в скобках может стоять имя шрифта, описан­
ного выше (без скобок, но начинающееся с символа /):
/A rial /ArialCyrMT
Приведенные две строки описывают шрифт ArialCyrM T и заставляют Ghos­
tscript использовать его всюду вместо стандартного шрифта Arial. В качестве
имени файла может быть указано либо имя PFA, PFB, GSF, TTF (начиная
с Ghostscript 4.0) файла, находящегося в каталоге шрифтов Ghostscript, либо имя
такого файла с полным путем.
И наконец, следует запускать Ghostscript с аргументом =dN0PLATF0NTS, иначе в не­
которых ситуациях установленные шрифты могут быть проигнорированы.
Русификация системы печати 335

На сегодняшний день русификация системы печати выполнена далеко не во


всех дистрибутивах:
Red H at Linux 6.2 Zoot He выполнено
Black Cat Linux 6.02 Foxhound Выполнено
KSI Linux 2.0 Выполнено
Mandrake Linux 7.1 Hydrogen He выполнено
SuSE Linux 6.4 Выполнено
Slackware Linux 7.0 Не выполнено
Debian GN U/Linux 2.2 Potato Не выполнено
Corel Linux 1.1 Не выполнено

6.7. Русификация офисных пакетов


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

6.7.1. Русификация StarOffice


О фисный пакет StarO ffice, принадлеж авш ий ранее компании S tar Division
(h ttp ://www.stardivision.deV и выкупленный Sun (http://w w w .sun.com /products/
staroffice) включает в себя полноценный текстовый процессор, превосходящий
во многом ставший индустриальным стандартом Microsoft Word. Помимо тексто­
вого процессора StarOffice W riter в пакет входят: электронная таблица StarOffice
Calc, модуль презентации StarO ffice Impress, редактор временной граф ики
StarOffice Draw, редактор формул StarOffice Math, программа для создания диа­
грамм StarOffice Chart, графический редактор StarOffice Image и планировщик
StarOffice Schedule. Офисный пакет StarOffice чаще всего и используют в Linux
для создания и редактирования документов и таблиц, совместимых с форматами
Windows. Единственный недостаток этого пакета - это его размер, неуклонно уве­
личивающийся от версии к версии.
Если вы выполнили русификацию клавиатуры согласно указаниям раздела
6.5.3, в StarOffice 5.2 русские буквы можно вводить сразу из третьей раскладки
(русский для «правильных» программ). Предыдущие версии StarOffice (5.0 и бо­
лее ранние) использовали исключительно «неправильный» вариант.
В поставку StarOffice начиная с версии 5.2 входит полностью русифицирован­
ная версия с несколькими русскими шрифтами, однако в реальных системах мо­
гут возникать конфликты, из-за которых не удается увидеть вводимый текст. Если
в системе установлено минимальное количество шрифтов - только русские эк­
ранные шрифты Сгопух, - в StarOffice можно пользоваться шрифтами Bookman
Light, Courier, Helvetica, Lucidasans, Lucidatypewriter, New Century Schoolbook,
336 Русификация Linux

StarOffice5.2-[безйменні
Файл Правка Вид Вставка Формат Сервис Окно Справка

JI Є+1± ^ Р *
Ш
о1:1ЕІ 01ИН

ЧИП
ФІ
on ш \ n ш на
Sil

и
3
Заголовок 1
Новая электрон- ная Новая презентация Новый рисунок Заголовок 10
таблица
Заголовок 2
1 Заголовок 3
I Стандарт т I ITimes New Roman \20 Н ж А А Б
II Заголовок 4
Заголовок 5
ПІ Заголовок 6
Заголовок 7
Заголовок 8
II Заголовок 9
' Маргиналии
Название
Обратный отступ
StarOffice 5.2 - п е р в ы й офисный п а к е т Основной текст
Отступ основного текста
ДЛЯ Linux, который Б кл|ю1і І Ш п олно cm ью Отступ первой строки
Отступы

р у си фи цир о ванную в е р с и ю в Подпись


Приветствие

с т ан да р тн у ю поставку.
Автоматически
MiJ
Страница 1 /1 Стандарт 100% ВСТАВК СТАН HYP *
J

Добро пожаловать в StarOffice!


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

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

Рис. 6.3. Внешний вид программы StarOffice

Palatino, Times. Если в системе установлено достаточно много ш рифтов,


в любом случае можно будет пользоваться u n ico d e-ш рифтами Lucidasans
и Lucidatypewriter, но другие шрифты не всегда отображаются правильно. С дру­
гой стороны, в StarOffice вам доступны не только шрифты, которые предлагаются
в окошке для выбора, но и любые известные Х-серверу - достаточно ввести имя
такого шрифта вручную. Список этих имен можно увидеть в пункте меню Встав­
ка => Специальные символы. Однако для работы с русским языком без дополни­
тельных настроек подойдут только Unicode TrueType шрифты, установленные
в соответствии с описанием в разделе 6.5.1.3, например Times New Roman (в при­
мере на рис. 6.3).
В предыдущих версиях StarOffice применять TrueType шрифт удавалось толь­
ко при наличии afm-файла метрики в каталоге хрЗ/fontmetrics/afm и пустого pfb-
файла с именем, совпадающим с именем файла с метрикой в xp3/fonts/type1 /. Это
срабатывало потому, что StarOffice использует средства Х-сервера и содержимое
файла метрики для вывода символов на экран, а файл с описанием шрифта нужен
только при создании Postscript-файла для вывода на принтер. Причем, если ис­
пользовать описание шрифта нулевой длины, интерпретатор Ghostscript доста­
точно новых версий корректно обработает ситуацию и воспользуется шрифтом
с таким же именем, указанным в его файле Fontmap. Вообще говоря, программу
Ghostscript стоит использовать в качестве фильтра для печати в разных случаях.
Сам StarOffice пользуется шрифтами Typel. P FB -файлы с описаниями этих
шрифтов располагаются при стандартной установке в каталогах /opt/office52/
share/fonts/typel (экранные шрифты) и /opt/office52/share/xp3/pssoftfonts
(шрифты для печати). AFM -файлы с метриками находятся в /opt/off ice52/share/
хрЗ/fontmet rics/af m. Список шрифтов хранится в файле /opt/of f ice52/sha ге/хрЗ/
Русификация офисных пакетов 337

psstd.fonts. (Название каталога хрЗ происходит от используемой в StarOffice под­


системы работы с принтерами, Xprinter.) Чтобы добавить новый T ypel-шрифт, вы
должны поместить его файлы в эти каталоги (достаточно символических ссылок,
если сам шрифт располагается в другом каталоге), добавить его в fonts, dir
и fonts, scale в каталоге /opt/office52/share/fonts/type1, вписать в файл psstd. fonts
и зарегистрировать при помощи утилиты spadmin. Установим, например, шрифт
TimesET:
1. Скопируем файл tiet .pf b в каталог со шрифтами StarOffice.
2. Увеличим на один число, с которого начинается файл fonts .dir, и впишем
в этот файл строку
tiet_____.pfb -paragraph-times et-medium-r-normal-0-0-0-0-p-0-windows-1251
3. Проделаем аналогичную операцию с fonts.scale.
4. Скопируем tiet .afm в каталог с метриками StarOffice.
5. Впишем в psstd.fonts строку
tiet , -paragraph-times et-medium-r-normal-%d-%d-%d-%d-p-0-iso8859-5
Указание iso8859-5 необходимо для того, чтобы StarOffice разрешил вывод сим­
волов кириллицы на экран. Реально используемая кодировка будет определяться
настройками локали. Теперь, если вы запустите StarOffice Writer, то увидите но­
вый шрифт (Times E t) в списке, доступном из меню выбора шрифта.
Аналогично можно поступить с любым, не только Unicode доступным TrueType
шрифтом, скажем, создать для него AFM -файл с метрикой (для этого потребу­
ется файл http://w w w .robertk.com /source/font_tools/afm m aker.ps и сценарий на
языке peri: http://w w w robertk.com /source/font_tools/m akeafm s) и разместить его
в fontmetrics/afm, после чего можно будет точно также вписать в psstd. fonts
строчку с iso8858-5, хотя на самом деле будет использоваться, например, K0I8-R.

6.7.2. Русификация WordPerfect


Компания Corel разрабатывает офисный вариант системы Linux и весь необходи­
мый набор приложений, включая и текстовый процессор W ordPerfect (http: IL
linux.corel.com/linux8y Доступная в настоящее время версия W ordPerfect 8 вклю­
чает в себя несколько русских шрифтов, однако установленные по умолчанию
используют только кодировку IS08859-5, если клавиатура русифицирована
в K0I8-R, ввести один символ можно только при помощи меню Insert => Symbol =>
Cyrillic (Вставка => Символ => Кириллица). Эта версия W ordPerfect не пользуется
расширением ХКВ, так что для ввода потребуется русификация клавиатуры для
«неправильных» программ (см. раздел 6.5.3).
Однако, если вам доступна программа fontinstaller, являющаяся отдельно рас­
пространяемой компонентой W ordPerfect, вы можете добавить в систему лю­
бые Typel-шрифты. Запустите xwpfi и выберите пункт меню File => Install Typel =>
Printer and Graphics Fonts (Ф айл => Установить Typel => Принтерные и графи­
ческие шрифты). Измените поле Font Directory (Каталог Ш рифтов) на любой
подходящий каталог со шрифтами, снимите отметки с тех, которые вам не нужны,
и нажмите Install. Теперь после запуска xwp вам будут доступны все установленные
338 Русификация Linux

Рис. 6.4. Внешний вид программы WordPerfect

Typel-шрифты (рис. 6.4). Для инсталляции необходимо наличие как файла с опи­
санием шрифта (PFB ), так и файла метрики (AFM ). Установка шрифта не копи­
рует их, а только создает на него ссылки в файлах конфигурации WordPerfect. Под
графическим шрифтом (Graphics Font) W ordPerfect понимает шрифт, который
будет растеризован и послан на принтер уже в виде бинарного образа, вместе со
всей печатаемой страницей. Принтерные шрифты (Soft Fonts или Printer Fonts)
растеризуются для печати либо самим принтером, либо postscript-интерпретато-
ром (например, Ghostscript), что обычно приводит к лучшим результатам. Поэто­
му по возможности следует устанавливать каждый шрифт дважды - как графи­
ческий и как принтерный.

6.7.3. Русификация Applix Words


ApplixWare Office ('http: / / www.vistasource.com i - еще один коммерчески распростра­
няемый офисный пакет для Linux. В него входят текстовый процессор Applix Words,
электронная таблица Applix Spreadsheets, среда разработки Applix Builder и т.д.
Версия ApplixWare 4.3 не использует расширение ХКВ, так что для ввода опять
потребуется русификация клавиатуры для «неправильных» программ (раздел 6.5.3).
ApplixWare использует особый сервер шрифтов, FontTastic, практически первый
сервер, поддерживающий ТгиеТуре-шрифты в UNIX. Для установки русского
шрифта воспользуйтесь пунктом меню Tools => Font Installer из основного окна
ApplixWare. Будет запущена программа FontTastic Font Manager. Выберите пункт
Services => Install Fonts into => FontTastic Font Server => Select Files (Сервисы =>
Установить шрифты в => Сервер шрифтов FontTastic => Выбрать файлы) и укажи­
те интересующие вас TrueType или T ypel-шрифты. Нажмите Install (Установить)
и Close (Закрыть). Затем выберите строку aplxfont Active FontTastic Font Server
и пункт меню Services => Update (Сервисы => Обновить). После этого нужно вый­
ти из установщика шрифтов и перезапустить ApplixWare, чтобы полностью акти­
визировать новые шрифты (рис. 6.5).
Русификация офисных пакетов 339

™ /opt/applix/bin/Words.aw H
УС File Edit Vieui Insert Format Table Tools Help

г V \ l· E t | l | l | l | Normal — t 1 Er Bukinist Koi 8 _i | 18 — t \


l“. , . I . , . I', , . I . , . |2 I*. 1-І. |5. |6, |7. |* , . ,i ,
► ' 4
T

Русификация ApplixWare осущ ествляется без каких-


либо проблем ш татны м и средствами. Д ля этого
тр ебуется русские TrueType шрифты в подходящ ей
кодировке (не Unicode) \

/
1.834of 11in. Paae 1Of1 їїіо% [J

Рис. 6.5. Внешний вид программы ApplixWare

Эта процедура действительно очень проста, но шрифты, установленные таким


образом, неэффективно используются при печати - шрифт растеризуется с раз­
решением не больше 300dpi, и полученный графический файл посылается на
принтер (или помещается в PostScript-файл, увеличивая его размеры в десятки
раз). Существует возможность установить шрифт вручную, избегая этих проблем.
Для этого, во-первых, сделайте шрифт Typel или TrueType доступным X Window,
после чего откройте в текстовом редакторе файл applix/axdata/fontmet rics/
fontmap. dir. He забудьте предварительно на всякий случай сделать копию этого
файла. В fontmap. dir описан каждый шрифт, известный ApplixWare. Вы должны
создать новое описание для каждого добавляемого шрифта. Оно состоит из сле­
дующих строк:
FontRecord имя шрифта (любое слово);
FamilyName семейство шрифта (под этим именем вы увидите шрифт
в ApplixWare, должно быть одинаковым для вариантов
roman/italic/bold/bold-italic);
ScreenName длинное имя, под которым шрифт известен Х-серверу;
MetricsFile AFM файл для шрифта;
PostScriptPrintNam e имя, под которым шрифт известен в Ghostscript;
TypelFontFileName PFB -файл для включения в PostScript (необязательное
поле);
Slant = 1 флаг курсивного шрифта;
Weight = 1 флаг жирного шрифта.
Если вы не указываете TypelFontFileN am e, убедитесь, что в файле конф игу­
рации G hostscript Fontm ap есть ш рифт под именем, в точности совпадающим
с указанным в PostScriptPrintName. Если вы укажете TypelFontFileName, описа­
ние шрифта (PFB -файл) будет включаться в создаваемый PostScript-файл, так что
вы сумеете его распечатать в любом другом месте. Это не увеличит размер файла
340 Русификация Linux

настолько, насколько его увеличивают растеризованные шрифты, получающиеся


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

6.7.4. Русификация КОffice


Этот офисный пакет, в отличие от предыдущих, распространяется в исходных тек­
стах, в полном соответствии с традициями Linux. В него уже сейчас входят тек­
стовый процессор (KW ord), редакторы таблиц (KSpread), формул (KFormula),
и многое другое. Пакет все еще находится в стадии разработки, и не всегда послед­
ние исходные тексты, которые можно найти на http: //koffice.kde.org. компилиру­
ются и запускаются, но работа идет весьма активно.
Уже сейчас KWord использует для ввода расширение ХКВ и разрешает пользо­
ваться всеми шрифтами, известными Х-серверу, например, Bookman Old Style
(рис. 6.6.). Реальная работа с этим пакетом все еще представляется затруднитель­
ной из-за большого количества ошибок, но в скором времени KOffice, по-видимо-
му, станет главным конкурентом StarOffice. KOffice является частью графической
системы KDE.

6.7.5. Русификация AbiWord


Еще один распространяемый в исходных текстах офисный пакет - AbiWord, часть
проекта AbiSource (http://www.abisource.orgV
В настоящее время (бета-версия 0.7) попытка ввода при помощи ХКВ приво­
дит к краху программы, хотя предполагается, что окончательная версия будет
применять для ввода именно этот механизм. Можно использовать некоторые
русские шрифты, доступные в системе (рис. 6.7), но в настоящее время работать
с этим пакетом полноценно не удается. В будущем AbiWord, по-видимому, станет
базовым текстовым процессором проекта GNOME.

F ile Edit V ie w insert Tools Form at T a b le Extra Settings Help

□6 ifi
f Sta n d a rd ▼ 12 т bookman old style ▼ l ' u ^ 1 [ I

Ц 1 T solid line

L I 1I 'X ' I ' 2 ' I ' 3 I I I Ί I I m l I S I I I 7 (Jj S I I I 3 I I HOI I n il І И2І I 1131 І (ці I 1151 I I 161 I 1171 I 1181 І I 131 І іф 1I I

KWord, СОСТАВНАЯ ЧАСТЬ K o ffic e , ИСПОЛЬЗУЕТ ШРИФТЫ, ДОСТУПНЫЕ


Х-СЕРВЕРУ (В ТОМ ЧИСЛЕ True Type), НО ПОКА С НЕБОЛЬШИМИ
ОШИБКАМИ.

Рис. 6.6. Внешний вид программы K W o rd


Русификация офисных пакетов 341

<— U ntitledl - AbiWord Personal (www.abisource.con

ΙΙΙ·Ι|·Ι|Ι·ΙΙΙ·ΙΙ||Ι·Ι|Ι·Ι|||Ι·Ι|Μ
и in |ιοο% _/]
м|jNorm al / | tim es et | /рГб /j | В I и О Я- хг хг ^ Ж Щ Ш ^ = — —


і] « ■
J ■

AbiWord- м о ^ т - ж ^ 1-щ|мф™5-хотя·
во;шіжают-:ігек^ с-КОІ-8.

Paqe: 1/1 INS default

Рис. 6.7. Внешний вид программы AbiWord

6.7.6. Русификация SIAG


SIAG Office (http ://siag .n u ) - это еще один разрабатываемый офисный пакет с от­
крытыми исходными текстами. Он отличается активным использованием мощ­
ного встраиваемого языка программирования Scheme.
Текстовый процессор Pathetic W riter, входящий в SIAG, использует все ш риф­
ты, доступные Х-серверу, Typel или TrueType, и позволяет беспрепятственно
работать с русским языком при использовании «неправильной» раскладки кла­
виатуры (без использования ХКВ). Это во многом экспериментальный пакет,
с ограниченными возможностями и недоделками, свойственными большинству
бесплатно распространяемых программ (например, возможно чтение только од­
ного из форматов MS Word - версии 8; наблюдаются также некоторые проблемы
с отображением шрифтов (рис. 6.8) и при запуске), но в целом уже в настоящее
время ситуация с текстовыми процессорами в Linux выглядит благоприятно.

Pathetic W riter: nonam e.pw


File Edit Blo ck Format W in d o w T oo ls P lu gin Help

t [Ї4 ▼IDefault t Black ▼В jf U f SUP


I I I 3 I I I
Текстовый р е д а к т о р P a th e tic Writer, в х о д я щ и й в о Фl·
п й к є т SIAG р у с и ф и ц и р у е т е ? ! п р о с т ы м у к а з а н н о м P y CCKl ·

ШРИФТОВ T y p e l + Кроме т о г о , нео бход им о УСТАНОВИТЬ

ЛОКЙЛЬ С ПРИ его ЗЙПУСКе:

L ЙN G=Сρω I

< < | > > j \ Sheet 1 / ~

[6,0- 6,0] P W 5 /9 1 0 0 %

Рис. 6.8. Внешний вид программы S IA G


Заклю чение
Операционная система Linux - уникальное явление в мире программного обеспе­
чения в силу своих удивительно разносторонних возможностей и темпов разви­
тия, обгоняющих развитие любых других существующих систем. Распростране­
ние Linux в России все-таки произошло, хотя и запоздав из-за отсутствия UNIX
в нашем представлении о компьютерной грамотности и из-за длительной незаин­
тересованности в появлении русскоязычных версий Linux. Появляются специа­
лизированные русифицированные дистрибутивы, авторы дистрибутивов с миро­
вой известностью подключают поддержку русского языка. Не все еще работает
гладко, но хочется надеяться, что эта книга поможет устранить хотя бы часть ше­
роховатостей и недостатков, связанных с применением Linux в русскоязычной
среде, и ответить на наиболее часто возникающие вопросы.
Алф авитны й указатель
А З
Администрирование 191 Загрузка Linux
Атрибуты файлов 124 графическая 100
Аутентификация 202 командная строка ядра
18, 30, 43, 81, 106
Б Загрузчик
Безопасность 192 Debian 111
Браузер GRUB 67
lynx 313 LILO 23, 41, 55, 67, 75, 99, 115
netscape 313 Задачи shell 131

В И
Выход из системы 119 Идентификатор
группы 195
Г пользователя 192
Графический режим 287 Интерпретатор
Группы 196 bash 118
ksh 308
д sh 118
Демонтирование 217 tcsh 118
Дистрибутив zsh 309
Black Cat Linux ЗО К
Caldera Linux 13
Corel Linux 13 Каталог
Debian GN U/Linux 105 /b in 125
KSI Linux 43 /b o o t 125
Mandrake Linux 56 /d ev 125
Red H at Linux 18 /e tc 125
Slackware Linux 80 /hom e 125
SuSE Linux 70 /lib 125
«Красная Шапочка» 12 /m n t 125
отличия 11 /o p t 125
Документация 121 /proc 125
344 Linux. Русские версии

/u sr 126 pwd 122


/v a r 126 renice 135
Клавиатура rm 128
в X Window 327 rmdir 127
индикация 333 rpm 227
кодировки 306 rwho 208
раскладка 303 set 119
Коллекции программ 256 setenv 120
Команда setfont 302
bg 133 su 192
cd 124 tic 303
chfn 202 top 131
chsh 202 tune2fs 221
consolefont 306 umount 217
cp 127 useradd 197
df 223 userdel 199
dpkg 239 vi 135
exit 119 w 208
export 120 who 207
fg 132 whoami 193
finger 206 xfd 325
fsck 222 Командный интерпретатор 118
help 121 Компиляция 249
id 193, 206 Консоль
infocmp 303 локаль 319
installpkg 236 Конфигурация
ispell 312 autoconf 243
jobs 132 xmkmf 247
kill 133 XWindow 280
less 120 ядра 258
In 129
Л
loadkeys 303
login 117 Логический раздел 14
logout 119 Локаль
Is 122 NLS 320
man 121 в X Window 327
mapscrn 302 основная 319
me 310
mesg 207
м
mkdir 127 Модули ядра 258
mkfs 219 Монтирование 210
more 120 автоматическое 210, 218
mount 210
mv 128
н
nice 135 Настройка
passwd 200 ext2fs 221
ps 130 РАМ 203
Алфавитный указатель 345

сервисы по умолчанию 40 программа


системные часы 25, 53, 65, 71, 103 cfdisk 83
Новости DiskDruid 22, 34, 45
TIN 316 DrakeX 60
fdisk 84
О
FIPS 15
Офисные пакеты 335 Раскладка клавиатуры 303
Редактирование текстов в Vi 138
Редактор
Пакет emacs 311
debian 239 pico 311
RPM 227 ТеХ 317
slackware 235, 236 Русификация
самостоятельный учет 254 необходимые составляющие 16
Подсказка 118
Пароли 195 С
Переменные среды 119 Сервер шрифтов 322
Поиск и замена в Vim 169 Сигналы 133
Пользователь 192 Синхронизация 289
квоты 224 Страничный просмотр 120
Почта
elm 315 Т
M UTT 315
PINE 314 Таблица разделов 14
Права 192 Терминал
группы 196 terminfo 303
ограничения для su 193 Unicode 306
Права доступа 124 псевдографика 303
Правописание 312 Ф
Приоритет процесса 135
Программа Файл
AbiWord 341 .forward 207
Applixware 338 .plan 207
Ghostscript 334 .project 207
KOffice 340 /etc/fstab 210
SIAG 341 /etc/g ro u p 196
StarOffice 335 /etc/pam .d 203
W ordPerfect 337 /etc/passw d 195
/etc/shadow 197
P
/e tc/su au th 193
Разбиение на разделы cshrc 308
инсталлятор SuSE 73 inputrc 308
общая информация 14 XF86Config 280
346 Linux. Русские версии

Файловая система в X Window 321


демонтирование 217 сервер шрифтов 322
диагностика 222
квоты 224 э
монтирование 210 Эмулятор
настройка 221 Dosemu 275, 317
создание 219 W INE 300
Файлы xdos 318
атрибуты 124
список 122 Я
ссылки 129
Ядро
Фоновое выполнение 132
Hurd 105
ш командная
Шрифты строка 18, 30, 43, 81, 106
TrueType 281, 324 компиляция 277
Typel 324 конфигурация 258
З у б ко в С ергей В лади м и рови ч

Linux
Русские версии
Главный редактор Захаров И. М.
Научный редактор Анаников В. П.
Выпускающий редактор Левицкая Т. В.
Технический редактор Прока С. В.
Верстка Шаховской Г. Б
Графика Бахарев А. А.
Дизайн обложки Антонов А. И.

Гарнитура «Петербург». Печать офсетная.


Уел. печ. л. 22. Тираж 5000 экз. Зак. №

Издательство «ДМК Пресс», 105023, Москва, пл. Журавлева, д

Отпечатано в полном соответствии


с качеством предоставленных диапозитивов
в ППП «Типография «Наука»

Вам также может понравиться