Linux. Oт новичка к профессионалу [Денис Николаевич Колисниченко] (pdf) читать онлайн

-  Linux. Oт новичка к профессионалу  [6-е издание, переработанное и дополненное] (и.с. В подлиннике) 63.9 Мб, 674с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Денис Николаевич Колисниченко

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Денис Колисниченко

ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
6-е издание

Санкт-Петербург
«БХВ-Петербург»
2018

УДК 004.451
ББК 32.973.26-018.2
К60
Колисниченко Д. Н.
К60 Linux. От новичка к профессионалу. — 6-е изд., перераб. и доп. — СПб.:
БХВ-Петербург, 2018. — 672 с.: ил. — (В подлиннике)
ISBN 978-5-9775-3943-2
Даны ответы на все вопросы, возникающие при работе с Linux: от установки
и настройки этой ОС до настройки сервера на базе Linux. Материал книги максимально охватывает все сферы применения Linux от запуска Windows-игр под
управлением Linux до настройки собственного Web-сервера. Также рассмотрены:
вход в систему, работа с файловой системой, использование графического интерфейса, установка программного обеспечения, настройка сети и Интернета, работа
в Интернете, средства безопасности, резервное копирование, защита от вирусов
и другие вопросы. Материал ориентирован на последние версии дистрибутивов
Fedora, openSUSE, Slackware, Ubuntu.
В шестом издании описаны виртуальные частные сети, виртуальные серверы,
настройка VPN-соединения и VPN-сервера, выбор VPN-провайдера, системы виртуализации OpenVZ и Virtuozzo, программные системы хранения данных с резервированием.
На сайте издательства находятся дополнительные главы в PDF-файлах и
видеоуроки.
Для широкого круга пользователей Linux
УДК 004.451
ББК 32.973.26-018.2

Группа подготовки издания:
Руководитель проекта
Зав. редакцией
Компьютерная верстка
Дизайн серии
Оформление обложки

Евгений Рыбаков
Екатерина Капалыгина
Ольги Сергиенко
Инны Тачиной
Марины Дамбиевой

Подписано в печать 30.03.18.
Формат 70х1001/16. Печать офсетная. Уел. печ. л. 54,18.
Тираж 1500 экз. Заказ № 6273.
"БХВ-Петербург", 191036, Санкт-Петербург, Гончарная ул., 20.
Отпечатано с готового оригинал-макета
ООО «Принт-М», 142300, М.О., г.Чехов, ул. Полиграфистов, д.1

ISBN 978-5-9775-3943-2

©ООО "БХВ", 2018
© Оформление. ООО "БХВ-Петербург", 2018

Оглавление

Предисловие............................................................................................................................ 17
Что нового в шестом издании?........................................................................................................17
ЧАСТЬ I ВЫБОР И УСТАНОВКА ДИСТРИБУТИВА................................................ 19
Глава 1. Выбор дистрибутива..............................................................................................21
1.1. Краткая история Linux.............................................................................................................. 24
1.2. Какой дистрибутив лучше?...................................................................................................... 26
1.2.1. Red Hat и Mandrake/Mandriva/Mageia............................................................................... 27
1.2.2. Fedora....................................................................................................................................27
1.2.3. CentOS.................................................................................................................................. 28
1.2.4. ALT Linux.............................................................................................................................29
1.2.5. Debian....................................................................................................................................29
1.2.6. Ubuntu................................................................................................................................... 29
1.2.7. Slackware.............................................................................................................................. 30
1.2.8. openSUSE............................................................................................................................. 30
1.3. На каком дистрибутиве основать сервер?.............................................................................. 31
Глава 2. Особенности установки.........................................................................................32
2.1. Системные требования............................................................................................................. 32
2.2. Первоначальная загрузка.......................................................................................................... 34
2.2.1. POST и загрузчики.............................................................................................................. 34
2.2.2. Ядро Linux и его параметры;............................................................................................. 34
2.3. Проверка носителей................................................................................................................ 38
2.4. Изменение таблицы разделов.................................................................................................. 39
2.4.1. Разметка диска в Fedora 26................................................................................................ 40
2.4.2. Разметка диска в Ubuntu 17.04.......................................................................................... 43
2.4.3. Разметка диска в openSUSE...............................................................................................45
2.4.4. Шифрование файловой системы.......................................................................................47
2.5. Выбор устанавливаемых пакетов программ..........................................................................48
2.6. Выбор графической среды.......................................................................................................49
2.7. Установка пароля root..............................................................................................................51
2.8. Создание учетных записей пользователей.............................................................................52
2.9. Порядок установки операционных систем............................................................................ 52

4

Оглавление

2.10. Установка Linux по сети.......................................................................................................... 52
2.10.1. Немного о загрузке и установке по сети.......................................................................... 52
2.10.2. Подготовка загрузочного сервера................................................................................... 53
Установка DHCP-сервера...................................................................................................... 53
Настройка TFTP-сервера........................................................................................................54
Загрузка установочного образа............................................................................................. 54
2.10.3. Настройка клиента.......................................................................................................... 55
2.11. Проблемы при установке....................................................................................................... 55
2.11.1. Проблема с APIC....... .......................................................................................................55
2.11.2. Ошибка: kernelpanic:VFS: Unable to mount rootfs........................................................... 56
2.11.3. Проблемы с некоторыми LCD-мониторами.................................................................... 56
2.11.4. Сообщение Probing EDD и зависание системы.............................................................. 56
2.11.5. Установка Linux на HP Mini 2133 (проблема c ACPI).................................................. 57
2.11.6. Проблема с ACPI на Fujitsu Siemens Esprimo Mobile u9200.........................................57
2.11.7. Переход в режим паники компьютера с процессором AMD64................................... 57
2.11.8. Проблема с механизмом Enhanced Disk Device (EDD)................................................. 58

ЧАСТЬ II. ОСНОВНЫЕ СВЕДЕНИЯ О LINUX...............................................................59
Глава 3. Сразу после установки.......................................................................................... 61
3.1. Вход в систему и завершение работы..................................................................................... 61
3.2. О графическом интерфейсе Linux........................................................................................... 64
3.2.1. GNOME и KDE.................................................................................................................... 64
3.2.2. Установка альтернативного графического интерфейса.................................................. 67
3.2.3. Основные элементы интерфейса GNOME....................................................................... 68
3.2.4. Знакомство с Unity.............................................................................................................. 71
3.3. Изменение параметров графического интерфейса................................................................ 73
3.3.1. Отключение блокировки экрана........................................................................................73
3.3.2. Изменение способа переключения языков ввода.............................................................. 78
3.3.3. Изменение фона рабочего стола........................................................................................ 78
3.4. «Аварийные» комбинации клавиш, использование клавиши ................................81
3.5. Практические приемы работы с консолью............................................................................. 82
3.5.1. Автодополнение командной строки и псевдонимы команд...........................................82
3.5.2. Графические терминалы.....................................................................................................83
3.5.3. Перенаправление ввода/вывода.........................................................................................83
Глава 4. Файловая система Linux....................................................................................... 85
4.1. Файловые системы, поддерживаемые Linux.......................................................................... 85
4.1.1. Выбор файловой системы...................................................................................................87
4.1.2. Linux и файловые системы Windows................................................................................ 88
4.1.3. Сменные носители...............................................................................................................89
4.2. Особенности файловых систем Linux..................................................................................... 89
4.2.1. Имена файлов в Linux.........................................................................................................89
4.2.2. Файлы и устройства............................................................................................................ 90
4.2.3. Корневая файловая система и монтирование...................................................................90
4.2.4. Стандартные каталоги Linux............................................................................................. 91
4.3. Внутреннее строение файловой системы................................................................................92
4.4. Команды для работы с файлами и каталогами........................................................................ 95
4.4.1. Работа с файлами................................................................................................................ 95
4.4.2. Работа с каталогами............................................................................................................ 97

Оглавление

5

4.5. Использование ссылок. Команда In.......................................................................................... 99
4.5.1. Жесткие и мягкие ссылки.....................................................................................................99
4.5.2. Создание ссылок................................................................................................................100
4.5.3. Определение ссылок......................................................................................................... 100
4.5.4. Удаление и жесткие ссылки.............................................................................................101
4.5.5. Разница между копированием и созданием жесткой ссылки........................................102
4.6. Права доступа и атрибуты файла. Команды chown, chmod и chattr.................................... 102
4.6.1. Права доступа к файлам и каталогам............................................................................... 102
4.6.2. Смена владельца файла.................................................................................................... 105
4.6.3. Специальные права доступа (SUID и SGID)..................................................................105
4.6.4. Атрибуты файла. Запрет изменения файла.................................................................... 105
4.6.5. Команды поиска файлов: find, which и locate.................................................................106
4.7. Монтирование файловых систем...........................................................................................108
4.7.1. Команды mount и umount..................................................................................................108
4.7.2. Файлы устройств и монтирование.................................................................................. 109
Жесткие диски.......................................................................................................................109
Приводы оптических дисков................................................................................................ 111
Флешки и внешние жесткие диски.....................................................................................111
4.7.3. Опции монтирования файловых систем........................................................................ 111
4.7.4. Монтирование разделов при загрузке............................................................................ 113
4.7.5. Подробно о UUID и файле /etc/fstab............................................................................... 114
4.7.6. Монтирование флеш-дисков............................................................................................118
4.8. Настройка журнала файловой системы ext3/ext4................................................................ 120
4.9. Файловая система ext4............................................................................................................ 120
4.9.1. Сравнение ext3 и ext4....................................................................................................... 121
4.9.2. Совместимость с ext3........................................................................................................122
4.9.3. Переход на ext4...... ............................................................................................................122
4.10. Использование программы fdisk для разметки диска....................................................... 123
4.11. Таблица разделов GPT.......................................................................................................... 126

Глава 5. Командный интерпретатор bash....................................................................... 128
5.1. bash: основные сведения.........................................................................................................128
5.2. Автоматизация задач с помощью bash..................................................................................129
5.3. Привет, мир!.............................................................................................................................130
5.4. Использование переменных в собственных сценариях...................................................... 130
5.5. Передача параметров сценарию............................................................................................ 131
5.6. Массивы....................................................................................................................................132
5.7. Циклы........................................................................................................................................ 133
5.8. Условные операторы...............................................................................................................134
Глава 6. Пользователи и группы...................................................................................... 136
6.1. Многопользовательская система........................................................................................... 136
6.2. Пользователь root.................................................................................................................... 137
6.2.1. Полномочия пользователя root........................................................................................ 137
6.2.2. Временное получение полномочий root......................................................................... 138
Команда sudo......................................................................................................................... 138
Команда su............................................................................................................................. 139
Команды gksudo и kdesu....................................................................................................... 140
Проблемы с sudo в Ubuntu и Kubuntu................................................................................. 140
Ввод серии команд sudo....................................................................................................... 140

6

Оглавление

6.2.3. Переход к традиционной учетной записи root............................................................. 141
Преимущества и недостатки sudo.......................................................................................141
Традиционная учетная запись root в Ubuntu..................................................................... 143
6.3. Создание, удаление и модификация пользователей и групп стандартными
средствами.............................................................................................................................. 143
6.3.1. Отдельные пользователи..................................................................................................143
6.3.2. Группы пользователей......................................................................................................146
6.4. Управление пользователями и группами с помощью графических конфигураторов......146
6.4.1. Конфигураторы в Fedora и Ubuntu................................................................................... 146
6.4.2. Графический конфигуратор в openSUSE....................................................................... 150
Еще о правах root и командах su и sudo применительно к openSUSE............................. 153
Конфигуратор Центр безопасности openSUSE.............................................................. 154
6.5. Квотирование...........................................................................................................................157

Глава 7. Пакеты и управление пакетами........................................................................ 160
7.1. Способы установки программного обеспечения в Linux................................................... 160
7.2. Репозитории пакетов...............................................................................................................162
7.3. Программы для управления пакетами.................................................................................. 163
7.4. Программа rpm (все Red Hat-совместимые дистрибутивы)...............................................164
7.5. Программа urpmi..................................................................................................................... 165
7.5.1. Установка пакетов.............................................................................................................165
7.5.2. Обновление и удаление пакетов...................................................................................... 166
7.5.3. Поиск пакета. Получение информации о пакете............................................................166
7.6. Программа yum........................................................................................................................ 166
7.6.1. Использование yum........................................................................................................... 166
7.6.2. Управление источниками пакетов................................................................................... 169
7.6.3. Установка пакетов через прокси-сервер......................................................................... 170
7.6.4. Плагины для yum............................................................................................................. 171
7.7. Менеджер пакетов dnf............................................................................................................ 171
7.8. Программы dkpg и apt-get: установка пакетов в Debian/Ubuntu..........................................173
7.8.1. Программа dpkg................................................................................................................. 173
7.8.2. Программа apt-get (apt)..................................................................................................... 175
7.8.3. Установка RPM-пакетов в Debian/Ubuntu...................................................................... 177
7.8.4. Подключение репозитория Medibuntu............................................................................ 177
7.8.5. Графические менеджеры в Debian/Ubuntu......................................................................177
7.8.6. Волшебная команда update...............................................................................................179
7.9. Установка пакетов в Slackware.............................................................................................. 179
7.9.1. Управление пакетами........................................................................................................181
Программа установки пакетов installpkg........................................................................... 182
Программа удаления пакетов removepkg.......................................................................... 183
Программа обновления пакетов upgradepkg...................................................................... 184
7.9.2. Нет нужного пакета: вам поможет программа rpm2tgz................................................ 184
7.9.3. Программа slackpkg: установка пакетов из Интернета................................................. 184
7.10. Установка программ в openSUSE........................................................................................ 186
7.10.1. Менеджер пакетов zypper............................................................................................... 186
7.10.2. Графический менеджер пакетов openSUSE..................................................................188

Оглавление

7

ЧАСТЬ III. НАСТРОЙКА СЕТИ И ИНТЕРНЕТА.........................................................191
Глава 8. Настройка локальной сети.................................................................................. 193
8.1. Локальная сеть с использованием технологии Fast Ethernet................................................193
8.2. Файлы конфигурации сети в Linux......................................................................................... 196
8.3. Об именах сетевых интерфейсов.............................................................................................197
8.4. Настройка сети с помощью конфигуратора nm-connection-editor.......................................200
8.5. Конфигуратор netconfig в Slackware....................................................................................... 203
8.6. Утилиты для диагностики соединения................................................................................... 204
8.7. Для фанатов, или настройка сети вручную............................................................................208
8.7.1. Конфигурационные файлы Fedora/CentOS.................................................................. 209
8.7.2. Конфигурационные файлы openSUSE......................................................................... 211
8.7.3. Конфигурационные файлы Debian/Ubuntu.................................................................. 212
8.7.4. Команда hostnamectl..........................................................................................................213
8.7.5. Команда mii-tool................................................................................................................ 213
8.8. Еще несколько слов о настройке сети.....................................................................................214
Глава 9. Настройка соединения Wi-Fi...............................................................................216
9.1. Настройка беспроводного соединения с помощью NetworkManager................................. 216
9.2. Что делать, если сети нет в списке?........................................................................................ 220
9.3. Точка доступа Wi-Fi на смартфоне......................................................................................... 221
Глава 10. Настройка VPN-соединения............................................................................. 223
10.1. Вкратце о выборе VPN-сервера и тарифного плана........................................................... 223
10.2. Настройка VPN-подключения............................................................................................. 225
Глава 11. Объединение интернет-каналов...................................................................... 231
11.1. Цели и средства решения задачи..........................................................................................231
11.2. Простой способ со статической маршрутизацией...............................................................231
11.3. Сложный способ с гибкой настройкой отказоустойчивости............................................. 234
ЧАСТЬ IV. LINUX ДОМА И В ОФИСЕ........................................................................... 239
Глава 12. Поддержка форматов мультимедиа............................................................... 241
12.1. Что такое кодеки и почему их нет в Linux?......................................................................... 241
12.2. Настройка дистрибутива Fedora 25-26................................................................................241
12.3. Установка кодеков в openSUSE...........................................................................................242
12.4. Установка кодеков в Ubuntu 16.04-17.04..............................................................................246
12.5. Домашний медиацентр на основе openELEC.....................................................................247
12.5.1. Выбор дистрибутива.......................................................................................................247
12.5.2. Установка дистрибутива................................................................................................ 248
12.5.3. Настройка и использование...........................................................................................251
12.5.4. Удаленный доступ.......................................................................................................... 258
12.5.5. А где же консоль?......................................................................................................... 258
12.5.6. Ложки дегтя..................................................................................................................... 258
Глава 13. Графическая подсистема.................................................................................. 259
13.1. Настройка X.Org в современных дистрибутивах................................................................ 259
13.2. Конфигурационный файл X.Org..........................................................................................260

8

Оглавление

13.3. Синтаксис файла xorg.conf...................................................................................................261
13.4. Установка проприетарных драйверов NVIDIA в Fedora 21-26........................................ 267

Глава 14. Офисные пакеты................................................................................................272
14.1. Выбор офисного пакета........................................................................................................272
14.1.1. LibreOffice........................................................................................................................272
14.1.2. Calligra Suite.....................................................................................................................274
14.1.3. Kingsoft Office............................................................................................... ................... 275
14.2. Кроссплатформенная совместимость................................................................................. 276
14.3. Вкратце об OpenOffice.org................................................................................................... 277
Глава 15. Графический редактор GIMP..........................................................................278
15.1. Начало работы....................................................................................................................... 278
15.2. Обработка фотографий......................................................................................................... 280
15.2.1. Изменение размера (масштабирование)....................................................................... 280
15.2.2. Вращение......................................................................................................................... 282
15.2.3. Кадрирование (обрезка)..................................................................................................283
15.2.4. Инструмент Размывание-Резкость................................................................................ 285
15.3. Работа в GIMP с помощью скриптов.................................................................................. 286
15.4. Windows-версия GIMP.......................................................................................................... 286
Глава 16. Лазерные диски и программы для их «прожига»........................................289
16.1. Что нужно для записи CD и DVD?...................................................................................... 289
16.2. Отдельно о DVD.................................................................................................................... 290
16.2.1. История создания DVD................................................................................................. 290
16.2.2. Преимущества и недостатки DVD................................................................................ 291
16.2.3. Форматы и маркировка DVD-дисков............................................................................ 293
16.2.4. Регионы DVD-Video........................................................................................................295
16.2.5. Некоторые рекомендации относительно DVD.............................................................296
16.3. Программа КЗЬ...................................................................................................................... 297
16.4. Программа Brasero.................................................................................................................306
16.5. Запись CD/DVD из консоли..................................................................................................309
16.6. Чтение «битых» компакт-дисков......................................................................................... 309
Глава 17. Популярные программы для работы с Интернетом................................... 311
17.1. Браузер Firefox.......................................................................................................................311
17.2. Браузер Chromium..................................................................................................................314
17.3. Почтовый клиент................................................................................................................... 316
17.4. Skype........................................................................................................................................316
17.5. FTP-клиенты...........................................................................................................................319
17.6. Р2Р-клиенты........................................................................................................................... 321
Глава 18. Виртуальная машина VirtualBox.................................................................... 323
18.1. Зачем нужна виртуальная машина?.....................................................................................323
18.2. Установка эмулятора VirtualBox..........................................................................................324
18.3. Создание новой виртуальной машины................................................................................325
18.4. Изменение параметров виртуальной машины....................................................................330
18.4.1. Общие параметры............................................................................................................330
18.4.2. Раздел Система................................................................................................................ 330
18.4.3. Виртуальные жесткие диски.......................................................................................... 330

9

Оглавление

18.4.4. А нужен ли звук?.............................................................................................................332
18.4.5. Параметры сети......... ..................................................................................................... 334
18.4.6. Последовательные порты...............................................................................................335
18.5. Запуск виртуальной машины и установка гостевой операционной системы............... 336

Глава 19. Эмулятор Wine: запуск Windows-игр в Linux............................................... 337
19.1. Эмуляторы, эмуляторы.........................................................................................................337
19.2. Установка Wine..................................................................................................................... 338
19.3. Настройка Wine и прозрачного запуска Windows-приложений...................................... 340
19.4. Использование Wine.............................................................................................................342
ЧАСТЬ V. СИСТЕМНЫЕ ТРЮКИ, ИЛИ LINUX ИЗНУТРИ..................................... 349
Глава 20. Ядро...................................................................................................................... 351
20.1. Процесс загрузки ядра..........................................................................................................351
20.2. Параметры ядра..................................................................................................................... 357
20.3. Компиляция ядра в дистрибутиве Ubuntu..........................................................................361
20.3.1. Установка дополнительных пакетов.............................................................................362
20.3.2. Загрузка исходных текстов ядра................................................................................... 362
20.3.3. Настройка ядра................................................................................................................363
20.3.4. Компиляция ядра.............................................................................................................366
20.4. RT-ядро...................................................................................................................................369
20.5. Особенности компиляции ядра в других дистрибутивах Linux.......................................370
Глава 21. Загрузчики Linux................................................................................................371
21.1. Основные загрузчики............................................................................................................371
21.2. Конфигурационные файлы GRUB и GRUB2..................................................................... 372
21.2.1. Конфигурационный файл GRUB...................................................................................372
21.2.2. Конфигурационный файл GRUB2.................................................................................374
21.3. Команды установки загрузчиков......................................................................................... 377
21.4. Установка собственного фона загрузчиков GRUB и GRUB2.......................................... 377
21.5. Постоянные имена устройств.............................................................................................. 378
21.6. Восстановление загрузчика GRUB/GRUB2....................................................................... 379
21.7. Загрузка с ISO-образов..........................................................................................................380
21.8. Установка пароля загрузчика...............................................................................................380
21.8.1. Загрузчик GRUB............................................................................................................. 381
21.8.2. Загрузчик GRUB2........................................................................................................... 383
Глава 22. Системы инициализации..................................................................................385
22.1. Начальная загрузка Linux.................................................................................................... 385
22.2. Система инициализации init.................................................................................................387
22.2.1. Команда init......................................................................................................................389
22.2.2. Команда service................................................................................................................389
22.2.3. Редакторы уровней запуска............................................................................................390
22.2.4. Параллельная загрузка сервисов, или как сделать старый init быстрее....................390
22.3. Система инициализации systemd.........................................................................................391
22.3.1. Идеальная система инициализации.............................................................................. 391
22.3.2. systemd — основные понятия........................................................................................ 392
22.3.3. Основные особенности systemd.................................................................................... 393

10

Оглавление

22.3.4. Сравнение init, upstart и systemd..................................................................................... 394
22.3.5. Немного практики........................................................................................................... 396
22.3.6. Команды системного администратора..........................................................................399
22.4. Система инициализации Slackware...................................................................................401

Глава 23. Процессы.............................................................................................................. 404
23.1. Аварийное завершение процесса......................................................................................... 404
23.2. Программа top: кто больше всех расходует процессорное время?................................... 406
23.3. Изменение приоритета процесса..........................................................................................408
Глава 24. Псевдофайловые системы sysfs и proc............................................................ 409
24.1. Виртуальная файловая система sysfs...................................................................................409
24.2. Виртуальная файловая система рrос................................................................................... 410
24.2.1. Информационные файлы................................................................................................ 410
24.2.2. Файлы, позволяющие изменять параметры ядра.........................................................411
24.2.3. Файлы, изменяющие параметры сети........................................................................... 412
24.2.4. Файлы, изменяющие параметры виртуальной памяти................................................412
24.2.5. Файлы, позволяющие изменить параметры файловых систем....................................413
24.3. Сохранение произведенных изменений..............................................................................413
Глава 25. Команды Linux, о которых нужно знать каждому линуксоиду................. 414
25.1. Общие команды..................................................................................................................... 414
25.1.1. Команда arch — вывод архитектуры компьютера........................................................414
25.1.2. Команда clear — очистка экрана................................................................................... 414
25.1.3. Команда date.....................................................................................................................414
25.1.4. Команда echo....................................................................................................................415
25.1.5. Команда exit — выход из системы................................................................................. 415
25.1.6. Команда man — вывод справки..................................................................................... 415
25.1.7. Команда passwd — изменение пароля.............................................................................415
25.1.8. Команда startx — запуск графического интерфейса X.Org......................................... 415
25.1.9. Команда uptime — информация о работе системы....................................................... 416
25.1.10. Команда users — информация о пользователях..........................................................416
25.1.11. Команды w, who и whoami — информация о пользователях.................................... 416
25.1.12. Команда xf86config — настройка графической подсистемы.....................................417
25.2. Команды для работы с текстом............................................................................................ 417
25.2.1. Команды diffи стр — сравнение файлов.......................................................................417
25.2.2. Команды grep и egrep — текстовый фильтр..................................................................418
25.2.3. Команды тоге и less — постраничный вывод..............................................................419
25.2.4. Команды head и tail — вывод начала и хвоста файла................................................. 419
25.2.5. Команда wc — подсчет слов в файле..............................................................................420
25.2.6. Команды vi, nano, ее, mcedit,pico — текстовые редакторы..........................................420
25.3. Команды для работы с Интернетом..................................................................................... 424
25.3.1. Команда ftp — стандартный FTP-клиент.......................................................................424
25.3.2. Команда lynx — текстовый браузер............... ................................................................ 425
25.3.3. Команда mail — чтение почты и отправка сообщений................................................ 425
25.4. Команды системного администратора................................................................................ 426
25.4.1. Команды free и df — информация о системных ресурсах.......................................... 426
25.4.2. Команда md5sum — вычисление контрольного кода MD5........................................ 426
25.4.3. Команды ssh и telnet — удаленный вход в систему.....................................................426

Оглавление

11

Глава 26. Конфигурационные файлы Linux..................... .............................................. 427
26.1. Каталог /etc............................................................................................................................. 427
26.2. Каталог /etc/NetworkManager............................................................................................... 428
26.3. Каталог /etc/abrt......................................................................................................................429
26.4. Каталог /etc/alsa..................................................................................................................... 429
26.5. Каталоги /etc/audit и /etc/audisp............................................................................................429
26.6. Каталог /etc/avahi — файлы конфигурации демона Avahi................................................429
26.7. Каталог /etc/blkid................................................................................................................... 430
26.8. Файлы конфигурации планировщиков задач..................................................................... 430
26.9. Каталог /etc/cups....................................................................................................................431
26.10. Файл /etc/fonts/fonts.conf.................................................................................................... 433
26.11. Каталог /etc/gdm.................................................................................................................. 433
26.12. Файлы конфигурации популярных сетевых служб.........................................................433
26.13. Каталог /etc/logrotate.d........................................................................................................ 434
26.14. Каталог /etc/mail.................................................................................................................. 435
26.15. Каталог /etc/ntp.................................................................................................................... 435
26.16. Каталог /etc/openldap...........................................................................................................435
26.17. Каталог /etc/openvpn........................................................................................................... 436
26.18. Каталоги /etc/pam.d и /etc/security..................................................................................... 436
26.19. Каталог /etc/ppp................................................................................................................... 436
26.20. Каталог /etc/rc.d................................................................................................................... 436
26.21. Каталог /etc/sane.d............................................................................................................... 436
26.22. Каталог /etc/selinux............................................................................................................. 437
26.23. Каталог /etc/skel...................................................................................................................437
26.24. Каталог /etc/sysconfig..........................................................................................................437
26.25. Каталог /etc/Xl 1..................................................................................................................438
26.26. Конфигурационные файлы yum/dnf................................................................................. 438
26.27. Основные конфигурационные файлы сети...................................................................... 438
26.28. Остальные конфигурационные файлы каталога /etc.......................................................438
Глава 27. Протоколирование системы.............................................................................440
27.1. Протоколирование по-новому: joumalctl............................................................................441
27.1.1. Установка времени........................................................................................................ 441
27.1.2. Просмотр и фильтрация логов....................................................................................... 442
Текущая и предыдущие загрузки........................................................................................ 442
Фильтр по дате...................................................................................................................... 443
Фильтр по сервису................................................................................................................ 444
Фильтр по пути......................................................................................................................444
Фильтр по процессу или пользователю..............................................................................444
Просмотр сообщений ядра................................................................................................... 444
Фильтр по уровню ошибки.................................................................................................. 444
27.1.3. Журналы в реальном времени....................................................................................... 445
27.1.4. Централизованное хранение логов............................................................................... 445
27.2. Демоны syslogd и rsyslogd....................................................................................................445

12

Оглавление

ЧАСТЬ VI. LINUX НА СЕРВЕРЕ......................................................................................449
Глава 28. Обеспечение безопасности сервера..................................................................451
28.1. Защита от «восстановления пароля root».............................................................................451
28.1.1. Параметр ядра single...................................................................................................... 451
28.1.2. Пароль загрузчика GRUB.............................................................................................. 453
28.1.3. Осторожно: LiveCD........................................................................................................453
28.2. Защита от перезагрузки........................................................................................................453
28.3. Отключение учетной записи root: нестандартный метод.................................................. 455
28.4. Отключение учетной записи root средствами KDM и GDM............................................. 457
28.5. Системы управления доступом........................................................................................... 458
Глава 29. Модули аутентификации РАМ........................................................................459
29.1. Каталог /etc/pam.d..................................................................................................................459
29.2. Дополнительные файлы конфигурации..............................................................................460
29.2.1. Содержимое каталога /etc/security................................................................................. 460
29.2.2. Файл access.conf: ограничение доступа к системе....................................................... 461
29.2.3. Файл limits.conf: ограничение на используемые системные ресурсы........................ 462
29.2.4. Файл time.conf: регистрация только в рабочее время.................................................. 463
29.3. Список РАМ-модулей........................................................................................................... 464
29.4. Борьба с простыми паролями............................................................................................... 465
Глава 30. Оптимизация системы. Автоматизация выполнения задач.......................467
30.1 Оптимизация подкачки.........................................................................................................467
30.2. Создание файла подкачки.....................................................................................................468
30.3. Настройка планировщика ввода/вывода............................................................................. 469
30.4. Двухканальный режим памяти.............................................................................................470
30.5. Автоматизация выполнения задач.......................................................................................470
30.5.1. Планировщик crond.........................................................................................................470
30.5.2. Планировщик anacron.....................................................................................................472
30.5.3. Разовое выполнение команд — демон atd....................................................................473
Глава 31. Маршрутизация. Настройка брандмауэра................................................... 474
31.1. Таблица маршрутизации ядра. Установка маршрута по умолчанию............................... 475
31.2. Изменение таблицы маршрутизации. Команда route........................................................478
31.3. Включение 1Ру4-переадресации, или превращение компьютера в шлюз......................481
31.4. Настройка брандмауэра........................................................................................................ 482
31.4.1. Цепочки и правила.......................................................................................................... 483
31.4.2. Брандмауэр iptables....................................................................................................... 485
31.4.3. Шлюз своими руками......................................................................................................488
Глава 32. Безопасный удаленный доступ. OpenSSH..................................................... 494
32.1. Протокол SSH.........................................................................................................................494
32.2. Использование SSH-клиента................................................................................................ 495
32.3. Настройка SSH-сервера........................................................................................................ 495
Глава 33. Web-сервер. Связка Apache + РНР + MySQL................................................500
33.1. Самый популярный Web-сервер.......................................................................................... 500
33.2. Установка Web-сервера и интерпретатора РНР. Выбор версии.......................................500
33.3. Тестирование настроек..........................................................................................................502

Оглавление

13

33.4. Файл конфигурации Web-сервера....................................................................................... 505
33.4.1. Базовая настройка........................................................................................................... 505
33.4.2. Самые полезные директивы файла конфигурации................................................ ... 506
33.4.3. Директивы Directory, Limit, Location, Files..................................................................507
33.5. Управление запуском сервера Apache................................................................................ 510
33.6. Оптимизация Apache.............................................................................................................510
33.7. Пользовательские каталоги..................................................................................................512
33.8. Установка сервера баз данных MySQL...............................................................................512
3 3.8.1. Установка сервера......................................................................................................... 512
33.8.2. Изменение пароля root и добавление пользователей................................................. 513
33.8.3. Запуск и останов сервера................................................................................................514
33.8.4. Программа MySQL Administrator..................................................................................514
33.9. Обеспечение безопасности сайта от вирусов.....................................................................516
33.9.1. Как вирусы попадают на сайт?...................................................................................... 516
33.9.2. Установка прав доступа................................................................................................. 517
33.9.3. Антивирус ClamAV........................................................................................................ 518
33.9.4. Сценарий scanner.............................................................................................................519

Глава 34. FTP-сервер........................................................................................................... 520
34.1. Установка FTP-сервера.........................................................................................................520
34.2. Конфигурационный файл.................................................................................................... 521
34.3. Настройка FTP-сервера........................................................................................................ 525
34.4. Оптимизация FTP-сервера................................................................................................... 527
34.5. Программы ftpwho и ftpcount...............................................................................................529
Глава 35. DNS-сервер...........................................................................................................530
35.1. Еще раз о том, что такое DNS............................................................................................ 530
35.2. Кэширующий сервер DNS................................................................................................... 531
35.3. Полноценный DNS-сервер................................................................................................... 536
35.4. Вторичный DNS-сервер....................................................................................................... 541
35.5. Обновление базы данных корневых серверов................................................................... 541
Глава 36. Прокси-сервер: Squid и squidGuard................................................................544
36.1. Зачем нужен прокси-сервер в локальной сети?................................................................. 544
36.2. Базовая настройка Squid..................................................................................................... 544
36.3. Практические примеры.........................................................................................................546
36.3.1. Управление доступом.....................................................................................................546
36.3.2. Создание «черного» списка адресов.............................................................................547
36.3.3. Отказ от баннеров........................................................................................................... 547
36.4. Управление прокси-сервером squid.....................................................................................547
36.5. Настройка клиентов.............................................................................................................. 548
36.6. Прозрачный прокси-сервер................................................................................................. 548
36.7. squidGuard — ваше дополнительное «оружие».................................................................549
Глава 37. Почтовый сервер................................................................................................ 553
37.1. Выбор почтового сервера.....................................................................................................553
37.2. Настройка МТА Exim........................................................................................................... 554
37.3. Настройка аутентификации SMTP...................................................................................... 556
37.4. Настройка демона SASL.......................................................................................................557

14

Оглавление

Глава 38. СервисSamba......................................................................................................558
38.1. Установка Samba....................................................................................................................558
38.2. Базовая настройка Samba......................................................................................................558
38.3. Настройка общих ресурсов................................................................................................. 560
38.4. Просмотр ресурсов Windows-сети...................................................................................... 561
38.5. Оптимизация Samba.............................................................................................................. 561
38.6. Samba и Active Directory....................................................................................................... 563
38.7. Samba в качестве контроллера домена................................................................................ 566
Глава 39. Поддержка КАШ.................................................................................................570
39.1. Аппаратные RAID-массивы..................................................................................................570
39.2. Программные RAID-массивы.............................................................................................. 573
39.3. Создание программных массивов........................................................................................574
39.4. RAID-массив только для данных.........................................................................................575
39.5. Сбой и его имитация............................................................................................................. 576
Глава 40. Программные системы хранения данных.....................................................577
40.1. Аппаратные хранилища с резервированием.......................................................................577
40.2. Программные хранилища с резервированием....................................................................579
40.3. Распределенная система хранения данных Ceph...............................................................581
40.4. Дополнительные материалы.................................................................................................582
Глава 41. Средства резервного копирования. Создание ISO-образа диска...............583
41.1. Необходимость в «живой» резервной копии......................................................................583
41.2. Средства клонирования Linux..............................................................................................584
41.3. Clonezilla................................................................................................................................. 585
41.4. Linux Live................................................................................................................................594
Глава 42. Шифрование файловой системы.................................................................... 595
42.1. Шифрование папки............................................................................................................... 595
42.2. Храним пароль на флешке....................................................................................................597
ЧАСТЬ VII. ВИРТУАЛЬНЫЕ СЕРВЕРЫ......................................................................599
Глава 43. А нужен ли физический сервер?..................................................................... 601
43.1. Физический или виртуальный?........................................................................................... 601
43.1.1. Стоимость физического сервера................................................................................... 601
43.1.2. Необходимость в аппаратном сервере..........................................................................602
43.1.3. Про VPS, VDS и спекулянтов........................................................................................603
43.1.4. Стоимость VDS............................................................................................................... 605
43.1.5. Физический сервер vs VDS............................................................................................ 606
43.1.6. Стоимость владения физическим сервером................................................................. 607
43.1.7. Выводы............................................................................................................................. 608
43.2. Виртуальный тест-драйв.......................................................................................................608
43.2.1. Джино................................................................................................................................609
О ценах................................................................................................................................... 609
Создание сервера................................................................................................................... 610
Тестирование......................................................................................................................... 611
Выводы................................................................................................................................... 613
43.2.2. Спринтхост.......................................................................................................................615
О ценах................................................................................................................................... 615

Оглавление

15

Создание сервера.................................................................................................................. 616
Тестирование...................................................................................................... .................617
Выводы...................................................................................................................................619
43.2.3. Макхост............................................................................................................................ 620
О ценах................................................................................................................................... 620
Создание сервера...................................................................................................................620
Тестирование........................................................................................................................621
Выводы...................................................................................................................................623
43.2.4. UltraVDS...........................................................................................................................623
О ценах...................................................................................................................................623
Создание сервера.................................................................................................................. 623
Тестирование......................................................................................................................... 626
Выводы...................................................................................................................................627
43.2.5. 1cloud.............................................................................................................................. 628
О ценах.................................................................................................................................. 628
Тестирование......................................................................................................................... 629
Выводы.................................................................................................................................. 631
43.3. Заключение................ ..........................................................................................................632

Глава 44. Сервер виртуализации OpenVZ...................................................................... 633
44.1. Способы виртуализации.......................................................................................................633
44.2. Установка OpenVZ................................................................................................................635
44.3. Создание и настройка виртуального контейнера.............................................................. 637
44.4. Запуск виртуальной машины.............................................................................................. 638
Глава 45. Знакомство с Virtuozzo Linux...........................................................................640
45.1. Что такое Virtuozzo?............................................................................................................. 640
45.2. Как это работает?.................................................................................................................. 640
45.3. Системные требования и ограничения...............................................................................641
45.4. Установка Virtuozzo..............................................................................................................642
45.5. Выбор шаблона......................................................................................................................645
45.6. Создание и настройка контейнера.......................................................................................646
45.7. Управление ресурсами контейнера..................................................................................... 647
45.8. Управление контейнерами................................................................................................... 649
45.9. Запуск команд и вход в гостевую операционную систему...............................................650
45.10. Настройка сети.................................................................................................................... 651
45.11. Делаем работу с Virtuozzo удобнее................................................................................... 654
Глава 46. Настройка собственного VPN-сервера...........................................................655
46.1. Что мы будем настраивать?................................................................................................. 655
46.2. Установка OpenVPN............................................................................................................. 656
46.3. Настройка центра сертификации........................................................................................ 656
46.4. Создание сертификата и ключей для сервера.................................................................... 657
46.5. Создание сертификата и ключей для клиента....................................................................658
46.6. Настройка сервера OpenVPN............................................................................................... 658
46.7. Инфраструктура настройки клиентов................................................................................. 660
46.8. Настройка клиентов............................................................................................................ 662
Приложение. Описание электронного архива................................................................664
Предметный указатель........................................................................................................665

Предисловие
Операционная система Linux уверенно осваивает наши просторы. Но в силу многообразия доступных дистрибутивов Linux, а создать и предложить сообществу свой
дистрибутив может каждый «умелец», начинающий1 пользователь, бывает, теряется при выборе дистрибутива для себя... И это понятно— у каждого дистрибутива
свои особенности.
Книга, которую вы держите в руках, поможет вам пройти сложный, но интересный
путь от новичка к профессиональному пользователю Linux, а именно — сориентироваться в особенностях различных дистрибутивов, выбрать для себя наиболее
подходящий и научиться в нем работать.

Что нового в шестом издании?
Новые версии дистрибутивов выходят постоянно: некоторые — чаще, некоторые — реже. Пользователи Linux к этому привыкли, поэтому простой заменой
в книге описаний одних версий дистрибутивов на другие никого не удивишь.
Направление этого издания — всевозможные виртуальные технологии. Так, в гла­
ве 10 мы поговорим о выборе VPN-провайдера и настроим VPN-подключение.
А в главе 46 займемся настройкой собственного VPN-сервера для защиты ваших
данных, передающихся по незащищенным соединениям, таким как публичные
сети Wi-Fi.
В главе 43 мы рассмотрим выбор VPS/VDS-провайдера — провайдера виртуального сервера, узнаем, на что нужно обратить внимание при выборе такого сервера,
поговорим о стоимости его аренды.
В предыдущих изданиях книги рассматривалась технология виртуализации
OpenVZ. В этом издании, кроме технологии OpenVZ, которой посвящена гла-

1 Обращаясь здесь к начинающему пользователю, автор отнюдь не имеет в виду сугубого новичка,
впервые подсаживающегося к компьютеру... Напротив, книга ориентирована на вполне уверенного
современного пользователя Windows или Маc, по тем или иным причинам заинтересовавшегося работой в Linux.

18

Предисловие

ва 44, рассматривается еще и технология Virtuozzo — продолжение и дальнейшее
развитие OpenVZ (глава 45).
Шестая часть книги — о серверном применении Linux — дополнена новой гла­
вой 40, рассказывающей о программных системах хранения данных с резервированием. Вы узнаете, какие программные системы хранения существуют, и в чем их
преимущества перед аппаратными решениями.
Электронный архив с информацией, расширяющей и дополняющей материал
«бумажной» книги, можно скачать с FTP-сервера издательства по ссылке:
ftp://ftp.bhv.ru/9785977539432.zip, а также со страницы книги на сайте
www.bhv.ru. Подробная информация об архиве приведена в приложении.
Вот теперь самое время приступить к чтению книги!

ЧАСТЬ I
Выбор и установка
дистрибутива
Первая часть, как следует из ее названия, посвящена выбору и установке дистрибутива. Соответственно, в главе 1 мы поговорим об исторических корнях Linux
и выборе ее дистрибутива, а в главе 2 — об особенностях установки этой операционной системы на компьютер.

ГЛАВА 1

Выбор дистрибутива
Прежде всего вам нужно решить, какой именно дистрибутив Linux устанавливать.
В конце 1990-х годов в этом плане особого выбора пользователям не предоставлялось — скачивать дистрибутив из Интернета было дорого, а в компьютерных магазинах они встречались редко. А если и попадались, то исключительно Red Hat и
появившиеся на прилавках чуть позже Black Cat и Mandrake.
Сейчас, наоборот, проблема выбора стоит перед нами в полный рост. Лет десять назад я бы отдал предпочтение отечественному дистрибутиву — например, ALT Linux.
Почему? Да потому что в отечественных разработках существенное внимание уделялось локализации — была переведена на русский язык вся документация, включая
страницы руководства пользователя (man pages), не говоря уже о качественной русификации графических интерфейсов GNOME и KDE. В настоящее время особой разницы между дистрибутивами по этой части нет — качество локализации зарубежных
дистрибутивов не вызывает особых нареканий. Единственный дистрибутив, который
до сих пор окончательно не русифицирован, — это Fedora.
Проблем с русским языком при работе в нем у вас не возникнет, но некоторые окна
окажутся переведенными на русский язык не полностью, — видимо, это фирменная
особенность Fedora.
Может, я предвзято отношусь к Fedora, но в доказательство своих слов приведу
несколько скриншотов. Начнем с экрана загрузчика (рис. 1.1) — а вот в других дистрибутивах (в том же Ubuntu) можно выбрать русский язык прямо на этом этапе и уже
не гадать, что означает та или иная команда.
Подобную картину вы увидите и при запуске LiveCD (рис. 1.2)— только английский...
Да и после установки кое-где в системных окнах можно заметить, что некоторые
надписи так на русский язык и не переведены, — вот, например, как здесь: OS Туре
(рис. 1.3) или в окне описания обновлений пакетов (рис. 1.4).
Подобные небольшие «косяки» вы найдете в любом дистрибутиве, но в Fedora они
встречаются чаще.
Так какой же дистрибутив выбрать? Чтобы ответить на этот вопрос, познакомимся
с основными этапами развития операционной системы Linux.

22

Часть I. Выбор и установка дистрибутива

Рис. 1.1. Fedora 26: не русифицирован экран загрузчика установочного диска

Рис. 1.2. Fedora 26: сразу после запуска LiveCD (установочный образ,
загруженный с официального сайта)

Глава 1. Выбор дистрибутива

Рис. 1.3. Fedora 26: некоторые надписи не переведены на русский язык

Рис. 1.4. Fedora 26: описание обновлений пакетов

23

24

Часть I. Выбор и установка дистрибутива

1.1. Краткая история Linux
В далеком 1969 году несколько сотрудников фирмы Bell Labs, вышедшей из совместного с Массачусетским технологическим институтом и компанией General
Electric проекта, где они занимались разработкой операционной системы Multics,
решили доработать эту ОС, но превзошли сами себя — то, что получилось, уже
никак не тянуло на обычный апгрейд для Multics, это была совершенно новая операционная система, которую они назвали UNIX. Интересно, что поначалу UNIX
называлась «UNICS», но позже американцы, как они это любят делать, немного
упростили аббревиатуру.
В начале 70-х годов прошлого века ОС UNIX существенно доработали: в ядро системы добавили много новых функций, а главное — ее переписали на языке С, что
обеспечило легкость переноса UNIX на другие аппаратные платформы (исходная
UNIX была написана на ассемблере и предназначалась для конкретного компьютера PDP-7).
Важно, что с самого рождения UNIX разрабатывалась как система многопользовательская и многозадачная. Таким образом, идеи, заложенные в представленную
в 1995 году Windows 95, оказались, по сути, идеями 20-летней давности — в UNIX
все это уже было реализовано давным-давно. Да, в ней отсутствовал красивый
«фантик» — графический интерфейс, — но это и не главное в операционной системе.
В начале 1980-х годов появились первые персональные компьютеры фирмы IBM,
однако мощности IBM PC никак не хватало для запуска UNIX, поэтому в мире персональных компьютеров десять лет царствовала операционная система DOS компании Microsoft. Но, начиная с 1990-х, ситуация изменилась — мощность «персоналок»
уже позволяла запускать UNIX, и к этому времени (а прошло более 20 лет с момента
появления первой ее версии) разными фирмами, университетами и отдельными энтузиастами было создано множество UNIX-подобных операционных систем (IRIX,
XENIX, HP-UX, BSD, Minix и др.).
Огромное значение в развитии Linux сыграла одна из таких операционных систем — Minix, которая, собственно, полноценной системой и не являлась, а создавалась для демонстрации основных принципов и устройства реальных операционных
систем. Да, она не была совершенной, но зато ее исходный код (всего 12 тысяч
строк) был опубликован в книге А. Таненбаума «Операционные системы»,—
именно эту книгу и купил живший тогда в Хельсинки программист Линус Торвальдс (Linus Torvalds).
В 1991 году Линус Торвальдс установил на свой компьютер ОС Minix, но та не
оправдала его ожиданий, поэтому он принял решение несколько ее переработать — ведь исходные коды вместе с комментариями были под рукой. Сначала
Торвальдс просто переписал программу эмуляции терминала, а затем так углубился в доработку Minix, что вышел фактически на создание собственной операционной системы. В результате 25 августа 1991 года ОС Linux (версия 0.01) и родилась. Конечно, это была не та Linux, что мы имеем сейчас, но уже тогда она
оказалась лучше Minix, поскольку в ней запускались командный интерпретатор

Глава 1. Выбор дистрибутива

25

bash и компилятор gcc. Сообщение о создании новой операционной системы Торвальдс поместил в группу новостей comp.os.minix, там же всем желающим предлагалось ее протестировать.
С этого и началось интенсивное развитие Linux, а к ее разработке в помощь Торвальдсу подключились энтузиасты со всего мира, — ведь ничто так не сокращает
расстояния, как Интернет. С момента появления версии 0.01, которой еще нельзя
было пользоваться практически, до создания (вышла в апреле 1994 года) версии 1.0, пригодной для обычных пользователей, а не только лишь для увлеченных
программистов, прошло почти три года. Версия обладала поддержкой сети на основе протокола TCP/IP, а также графическим интерфейсом X Window (появившимся в Linux еще в 1992 году одновременно с поддержкой TCP/IP).
Сначала версии Linux распространялись на обыкновенных дискетах. Комплект состоял из двух дискет: одна содержала ядро, а другая — корневую файловую систему и необходимые программы. Установить подобную версию Linux на компьютер
мог только специалист. Первые же дистрибутивы — комплекты, помимо того же
ядра и корневой файловой системы, включающие также программу (как правило,
на отдельной дискете) для установки всего этого на компьютер, появились
в 1992 году — их начали выпускать отдельные энтузиасты или группы энтузиастов
(каждый дистрибутив, естественно, под собственным именем). Впрочем, их дистрибутивы на тот момент отличались друг от друга лишь названием и программой
установки, но в дальнейшем различия между дистрибутивами стали более существенными.
Самый первый дистрибутив, созданный в Манчестерском компьютерном центре
(Manchester Computing Centre, МСС), вышел в начале 1992 года и назывался МСС
Interim Linux. Чуть позже появился дистрибутив TAMU, разработанный в Техасском университете. Настоящий прорыв произвел дистрибутив SLS, выпущенный
в октябре 1992 года, поскольку именно он содержал поддержку TCP/IP и систему
X Window. Впоследствии этот дистрибутив бурно развивался и постепенно трансформировался в один из самых популярных современных дистрибутивов —
Slackware.
Со временем дистрибутивы разрослись до таких размеров, что распространять их
на дискетах стало невозможно, — они занимали объем 50-70 Мбайт. Вы можете себе представить дистрибутив на 50 дискетах? А что делать, если, скажем, дискета
№ 47 окажется бракованной? Впрочем, дистрибутив того времени (как, кстати, и
сейчас) можно было бесплатно (если не считать стоимости трафика) скачать из Интернета. Но далеко не все могли себе позволить качать из Интернета такие объемы
в режиме online (тогда online-режимом считалась работа со Всемирной паутиной,
a offline — с почтой и новостями Usenet), поэтому в начале 1990-х основными носителями для распространения Linux, все же, оставались дискеты. Но как раз к тому времени лазерные компакт-диски и их приводы несколько подешевели, и компания Red Hat стала одной из первых, выпустивших свою разработку на компактдиске. Новшество прижилось, и, начиная с середины 1990-х, дистрибутивы Linux
постепенно почти полностью перекочевали на компакт-диски.

26

Часть I. Выбор и установка дистрибутива

О дистрибутивах можно было бы рассказать еще очень много. Однако важно запомнить следующее:
□ основные дистрибутивы — это Red Hat (сейчас существует в виде RHEL — Red
Hat Enterprise Linux) и Debian, а все остальные — лишь производные от них.
Так, Mandrake и ASPLinux (оба дистрибутива нынче «мертвы») произошли от
Red Hat, a ALT Linux взял за основу Mandrake, Ubuntu изначально был основан
на Debian. К числу современных RH-подобных дистрибутивов относятся
CentOS, Fedora и openSUSE, к числу современных Debian-подобных — Ubuntu, а
также его клоны и всевозможные варианты (Kubuntu, Xubuntu, Mint и т. д.);
□ номер версии дистрибутива не совпадает с номером ядра — это принципиально
разные вещи;
□ самыми популярными дистрибутивами на сегодняшний день считаются Ubuntu
и Fedora— для настольного применения, а также CentOS и Debian— для серверного.

1.2. Какой дистрибутив лучше?
Дистрибутивов сейчас так много, что порою теряешься — какой из них установить,
какой лучше? Здесь мы вкратце рассмотрим сильные и слабые стороны каждого
дистрибутива. Каждого, но только из числа представленных в этой книге. Дело
в том, что дистрибутивов очень много, и, как уже отмечалось ранее, любой желающий может создать свой дистрибутив. Есть такие дистрибутивы, с которыми я
до сих пор не работал, а есть и такие, о которых даже не слышал! Понятно, что все
существующие дистрибутивы рассмотреть в одной книге невозможно, да и не нужны вам они все. Могу поспорить, что после прочтения этой книги вы установите от
одного до трех дистрибутивов, а потом остановитесь на том единственном, который вам больше всех понравится.
В свое время (1998-1999 годы) я работал с Red Hat, поскольку он был более удобным, чем Slackware. Затем мне удалось раздобыть и установить Mandrake (кажется,
это была его седьмая версия), и он оказался еще лучше, чем тот же Red Hat 6, хотя и
являлся его клоном. Потом я еще долго пробовал разные дистрибутивы: Debian,
Ubuntu, Gentoo, openSUSE.
Возможно, сейчас вам понравится один из дистрибутивов, но со временем вы перейдете на другой. Или же сейчас вам какой-то не понравится, однако с выходом
его новой версии он покажется вам лучшим. Так у меня было с openSUSE — первая
попавшая ко мне его версия (не помню сейчас ее номер) особо меня не впечатлила,
а вот следующая оказалась очень даже приличной. Так что сейчас у меня установлено два дистрибутива: openSUSE и Denix (дистрибутив моей собственной разработки, собранный на базе Debian).
Отдельного внимания заслуживает выбор архитектуры: 32-битная или 64-битная1.
Если в вашем компьютере установлено 4 Гбайт оперативной памяти или больше,
Правильно говорить «32-разрядная», но при загрузке образа обычно указывается «32-bit» или
«64-bit» — читателю так будет проще ориентироваться.
1

Глава 1. Выбор дистрибутива

27

вы можете выбрать 64-битную версию, иначе не вся оперативная память окажется
доступной1. Тем не менее, рискну, все же, рекомендовать к выбору 32-битную
архитектуру, даже если у вас 64-разрядный процессор. Почему? Во-первых, производительность 32-битной версии на 64-разрядной машине в большинстве случаев
не ниже производительности 64-битной версии — т. е. особой разницы вы не почувствуете. Во-вторых, так уж повелось, что 32-разрядные версии операционных
систем Linux работают стабильнее.

1.2.1. Red Hat и Mandrake/Mandriva/Mageia
Современной настольной версии Red Hat в природе не существует вследствие того,
что разработка Red Hat была в свое время разделена на две ветки: для корпоративных пользователей (Red Hat Enterprise Linux, RHEL) и для домашних пользователей
и небольших компаний (Fedora). Так что, обратившись к Red Hat, вам придется остановиться на ее ветке Fedora, поскольку RHEL, ориентированный на современные
дата-центры, вряд ли вам подойдет.
Когда-то я был просто в восторге от дистрибутива Mandrake, переименованного
потом в Mandriva, но, к сожалению, всему приходит конец, — последний релиз этого дистрибутива вышел 28 августа 2011 года, после чего проект был закрыт. Поэтому дистрибутив Mandriva в этом издании книги мы рассматривать не станем.
Свято место пусто не бывает, и на смену Mandriva пришел его форк (ответвление) — Mageia (http://www.mageia.org/ru). В настоящее время выпущена уже
6-я версия этого дистрибутива, в состав которой входят графические окружения
KDE Plasma Desktop, GNOME 3 Desktop и LXDE. Примечательно, что дистрибутив
Mageia (и это в наше-то время!) распространяется не только на DVD, но и на простых лазерных компакт-дисках (CD), — правда, в этом случае вам будет доступна
только графическая среда LXDE, что позволит использовать Mageia на весьма
«древних» компьютерах.
Впрочем, подробно дистрибутив Mageia здесь рассмотрен не будет, поскольку за
четыре года своего существования он так и не стал популярным. Однако, если
вы фанат Mandriva, можете попробовать установить Mageia, в противном случае
обратите внимание на другие дистрибутивы: Fedora или Debian — они-то уж точно
никуда по прошествии времени не исчезнут.

1.2.2. Fedora
Fedora (fedoraproject.org) — вполне приличный дистрибутив. Да, в нем есть определенные недоработки, но их не больше, чем в других. Здесь мы рассматриваем

32-битные версии ОС «не видят» полные 4 Гбайт памяти и не могут их до конца использовать. Объяснение этого феномена выходит за рамки книги. Если принципиальна установка именно 32-битной
версии на компьютер с объемом оперативной памяти более 4 Гбайт, необходимо задействовать так
называемое РАЕ-ядро.
1

28

Часть I. Выбор и установка дистрибутива

одну из самых последних на момент написания этих строк (август 2017 года) версий Fedora — 26-ю. Вот основные ее нововведения:
□ ядро 4.11.18;
□ инструменты разработки GCC 7, Golang 1.8 и Python 3.8;
□ обновлена тема Adwaita — пользователи получат обновленный и слегка улучшенный интерфейс;
□ рабочий стол GNOME 3.24;
□ новый пакетный менеджер DNF, включенный в дистрибутив вместо старого менеджера YUM, — он потребляет значительно меньше памяти и быстрее работает. В общем, он так же хорош, как и apt в Ubuntu;
□ виртуализация GNOME Boxes;
□ добавлен отдельный образ Fedora Cloud (Облако) с инструментарием Vagrant,
который может использоваться для быстрого развертывания виртуальных окружений в системах виртуализации на базе KVM и VirtualBox;
□ в серверной версии по умолчанию используется файловая система XFS, хотя
версии Workstation (Рабочая станция) и Cloud (Облако) остались пока на ext4.
Обычно в каждом следующем выпуске Fedora появляются достаточно новые и экспериментальные решения. Но выпуск 26 нас таковыми не порадовал. Тот же выпуск 22 (2015-й год) был более интересен: и новый менеджер пакетов, и виртуализация GNOME, и отдельный образ Fedora Cloud, и другая файловая система в серверной версии. В версии же 26 — ничего сверхъестественного: из улучшений
пользователи заметят только новую версию GNOME и новую тему оформления
(которая, скорее всего, «затачивалась» под новую версию GNOME, поэтому и была
обновлена).
При загрузке ISO-образа дистрибутива Fedora обратите внимание на различные его
варианты:
□ Server (Сервер) — все самое необходимое для построения сервера, при этом нет
графического интерфейса (можно установить отдельно, но зачем?), по умолчанию используется файловая система XFS;
□ Workstation (Рабочая станция)— идеален для офисных/домашних компьютеров. По умолчанию устанавливается графический интерфейс и неплохой набор
программ;
□ Atomic— платформа для вашего стека приложений Linux Docker-Kubemetes
(LDK). Впрочем, для установки на обычный компьютер этот вариант не подойдет.

1.2.3. CentOS
Дистрибутив CentOS (https://www.centos.org) основан на дистрибутиве Red Hat
Enterprise Linux и обладает схожей функциональностью. Основное его отличие
в том, что он бесплатный. Так что, если вам нужен бесплатный RHEL, просто установите CentOS. Я был удивлен, но CentOS оказался весьма добротным дистрибути-

Гпава 1. Выбор дистрибутива

29

вом, — в нем наличествует все, что и должно быть. И если выбирать между Fedora
и CentOS, то я бы предпочел последний.

1.2.4. ALT Linux
Еще один хороший, добротный дистрибутив — ALT Linux (www.altlinux.ru), и это
не просто клон зарубежной разработки. Да, в свое время ALT Linux был основан на
Mandriva, но с тех пор много воды утекло, и теперь этот дистрибутив — собственная разработка компании ALT Linux, в которой нашло применение множество ее
собственных решений.
В начальных версиях дистрибутива ALT Linux «хромала» программа установки —
создавать разделы для него было удобнее в сторонней программе разметки диска,
а не с помощью инсталлятора ALT Linux, сейчас же с этим все в порядке, и установка ALT Linux также удобна, как и любого другого дистрибутива.

1.2.5. Debian
Debian (www.debian.org) — хороший, надежный, стабильный дистрибутив. Практически все его пакеты снабжены собственным конфигуратором debconf, что значительно упрощает настройку. Начиная с версии 5.0, дистрибутив содержит принципиально новую программу установки пакетов— Debian Installer, которая отличается
существенно большей гибкостью по сравнению со своей предшественницей.
Debian хорош тем, что в его состав входят только уже проверенные временем пакеты, — вы не найдете здесь экспериментальных разработок и самых новых версий
ядра. Именно поэтому последние версии моего дистрибутива Denix основаны на
Debian — хотелось получить добротный дистрибутив, в котором будут присутствовать все необходимые мне инструменты.

1.2.6. Ubuntu
Ubuntu (www.ubuntu.com) — очень интересный дистрибутив. Любопытно, что его
название в переводе с одного из африканских языков означает «человечность, гуманность по отношению к другим». По данным сайта DistroWatch.com Ubuntu
признан самым популярным в мире дистрибутивом. Готов поспорить с этим, поскольку на территории бывшего СССР Ubuntu не очень распространен, однако
в последнее время его популярность и у нас стремительно растет.
Дистрибутив основан на Debian, но отличается тем, что в состав Ubuntu включаются не только проверенные пакеты, но и новые. Разработчикам Ubuntu, кажется, удалось соблюсти баланс между стабильностью системы и новыми функциями.
Дистрибутивов Ubuntu существует целое семейство: Kubuntu, Edubuntu, Lubuntu,
Mythbuntu, Xubuntu, Ubuntu Server и Ubuntu GNOME— каждый член семейства
«заточен» либо под определенный контингент пользователей, либо под преобладающий набор приложений, либо под конкретную графическую среду, и познакомиться с их характеристиками можно, например, здесь: http://ubuntu.ru/family.

30

Часть I. Выбор и установка дистрибутива

«Фишка» этого дистрибутива — частое обновление. Новые версии Ubuntu выходят
два раза в год (текущая версия— 17.04). Существует два типа версий Ubuntu:
обычные и LTS. Разница между ними в том, что LTS (Long Term Support)— это
дистрибутив с увеличенным сроком поддержки: обычные версии дистрибутивов
Ubuntu выходят два раза в год, a LTS — только один раз. Однако техническая поддержка и обновление программ для LTS-дистрибутивов доступны на протяжении
5 лет. Это означает, что вы можете установить в 2017 году текущую LTS-версию
(16.04 LTS), а следующую вам достаточно будет установить лишь в 2019-м. LTSдистрибутивы лучше устанавливать на предприятиях, поскольку там не вполне
удобно производить обновление дистрибутивов каждые полгода. Впрочем, для
предприятий я бы рекомендовал что-либо более стабильное— например, Debian
или CentOS, т. к. в настоящее время это два самых стабильных дистрибутива.
В целом, Ubuntu— очень неплохой дистрибутив, а с помощью этой книги вы
узнаете, как «довести его до ума».

1.2.7. Slackware
Дистрибутивы Slackware (www.slackware.com) сочетают в себе стабильность, простоту и безопасность. Но для офисного и домашнего применения они не столь
удобны из-за весьма посредственной русификации.
Программа установки Slackware также оставляет желать лучшего — это наименее
удобная программа установки из всех, которые я видел. Тут, как на машине времени, переносишься лет на десять назад, — давно я вручную не выполнял разметку
диска с помощью команды fdisk и не выбирал отдельные пакеты с помощью текстовой программы установки. Одним словом, Slackware — не самый лучший выбор
для новичка, хотя некоторые фанаты Linux называют Slackware «настоящим Linux»
(True Linux). Спорить с ними сложно, но начинающим пользователям лучше
выбрать другой дистрибутив.
Нужно отметить, что Slackware — это настоящий старожил. Первая его версия появилась в 1993 году, т. е. 24 года назад. Тем не менее, дистрибутив не умер, а развивается, и на сегодняшний день доступна его четырнадцатая версия (14.2, если
быть предельно точным).
Рекомендовать этот дистрибутив начинающим пользователям я не решаюсь также
из-за замысловатой системы управления пакетами, усложняющей их установку и
обновление (особенно обновление!). Тем не менее, Slackware будет рассмотрен
в нашей книге, чтобы после ее прочтения вы смогли работать и с ним.

1.2.8. openSUSE
openSUSE (www.opensuse.org)— превосходный немецкий дистрибутив. Когда я
впервые с ним познакомился, то он мне понравился больше, чем Mandriva и Fedora
вместе взятые.
Дистрибутив весьма несложен (хотя и не упрощен до того уровня, когда ощущаешь
недостаток функционала, — как в случае с Ubuntu), но, в то же время, предоставляет все, что нужно, для полноценной работы, и идеально подойдет для офисного и

Гпава 1. Выбор дистрибутива

31

домашнего компьютера. При использовании openSUSE создается впечатление добротно сделанного дистрибутива, не требующего «хирургического» вмешательства
(как в случае с Fedora и Ubuntu), чтобы «довести систему до ума».
Особого внимания заслуживает технология установки программного обеспечения
по одному щелчку. Хотите установить кодеки для просмотра фильма? Или проприетарные драйверы видеокарты? Вам нужно сделать один щелчок мышью и просто подождать, пока все необходимое программное обеспечение будет установлено.
При этом вам даже не придется вникать в тонкости системы управления пакетами
(тем не менее, мы ее подробно рассмотрим).
В настоящее время существуют два варианта openSUSE: Tumbleweed и Leap. Все
самое новое ПО включено в первый, а во второй — лишь все самое стабильное. Для
домашнего компьютера я бы выбрал Tumbleweed, а для офиса — лучше Leap. Если
вы не склонны к экспериментам, тогда можно и на домашнем ПК установить Leap.
Кстати, недавно я установил этот дистрибутив на сервер. И очень доволен! Никаких нареканий — все работает, как хорошие часы. Чувствуется, что к дистрибутиву
«приложила руку» коммерческая компания — Novell.
Одним словом, можете смело устанавливать этот дистрибутив— вы не будете
в нем разочарованы.

1.3. На каком дистрибутиве основать сервер?
Очень часто читатели задают именно этот вопрос. И не мудрено, ведь Linux — это
не только настольная система, и довольно часто приходится на базе Linux настраивать сервер. Но какой дистрибутив для этого выбрать?
Если вы ожидаете, что я скажу: выбирайте, например, openSUSE или Fedora, то вы
ошибаетесь. Выбирайте тот дистрибутив, к которому вы больше привыкли, который освоили лучше всего и в котором ориентируетесь так же хорошо, как в собственном доме, — вам будет комфортнее работать с привычным дистрибутивом, и,
следовательно, всевозможных «подводных камней» вы ощутите меньше.
Почему так? Да потому что ядро системы — везде одно и то же (если сравнивать
актуальные версии дистрибутивов), а все необходимое для создания сервера программное обеспечение имеется в составе любого дистрибутива. Даже если после
установки окажется, что версия, например, Web-сервера не самая новая, никто не
запрещает вам скачать самую последнюю его версию с сайта проекта или просто
обновить ее, — если дистрибутив, который вы выбрали, выпущен не вчера, наверняка в репозитории уже есть новая версия пакета.
Если же вы желаете установить дистрибутив, который изначально предназначен
именно для сервера, то обратите внимание на RHEL, CentOS, Fedora Server 22-25
(начиная с версии 22, ядро в Fedora поддерживает Live Kernel Patching — технологию, которая, возможно, вам и не понадобится, но если возникнет необходимость,
лучше, чтобы она была). Можно также с успехом использовать и Debian — пусть
это и не сугубо серверный дистрибутив, но зато он один из самых надежных дистрибутивов в мире Linux.

ГЛАВА

2

Особенности установки
Установка Linux совсем не похожа на установку привычной многим операционной
системы Windows. И здесь мы рассмотрим особенности установки Linux, с которыми вы просто обязаны разобраться до ее начала. Зная эти особенности, установить Linux сможет даже совсем новичок, — ведь вся установка проходит в графическом режиме, да еще и на русском языке, что существенно облегчает весь процесс.
Забегая вперед (об этом мы еще поговорим позже), хочу сразу предупредить, что
Linux нужно устанавливать после Windows, потому что загрузчик Linux без проблем загружает все имеющиеся версии Windows, а вот заставить загрузчик
Windows загружать Linux довольно сложно. Поэтому, чтобы не усложнять себе
жизнь, сначала установите все нужные вам версии Windows, а затем — все необходимые дистрибутивы Linux.

2.1. Системные требования
В прошлом даже самые современные на то время версии Linux были не очень
«прожорливыми» и могли работать на компьютерах с 256-512 Мбайт оперативной
памяти. Сейчас же инсталлятор последней версии openSUSE (42.3 Leap), хоть и
запустился на одной из моих машин в графическом режиме, но когда я выбрал
установку не с локального DVD, а из сетевых репозиториев, то он сообщил мне,
что на машине недостаточно оперативной памяти: имелось 768 Мбайт, а инсталлятор потребовал не менее 1000 Мбайт (рис. 2.1).
А ведь установка из сетевых репозиториев необходима, чтобы после ее завершения
не производить обновление системы, — из репозиториев сразу будут установлены
самые новые версии пакетов.
Конечно, все современные компьютеры оснащены как минимум двумя гигабайтами
ОЗУ, и сообщение, показанное на рис. 2.1, скорее всего, вы никогда не увидите. Но
Linux всегда славилась небольшими требованиями к оперативной памяти, а сейчас
же, как видите, и ей уже нужен минимум 1 Гбайт... К слову, 1 Гбайт ОЗУ — это как
раз минимальные требования для Windows 10 (и я запускал Windows 10 в виртуальной машине с 1 Гбайт оперативной памяти, хотя работать в Windows 10 при

Гпава 2. Особенности установки

33

Рис. 2.1. openSUSE 42.3: для установки из сетевых репозиториев необходим 1 Гбайт ОЗУ

таком объеме памяти не слишком комфортно), так что по системным требованиям
Linux уже почти сравнялась с Windows.
По части дискового пространства— ориентируйтесь минимум на 8-10 Гбайт (это
с небольшим запасом — ведь еще нужно оставить место для своих данных), и это
вполне приемлемо по нынешним меркам, учитывая, что после установки вы получаете не «голую» систему, а уже практически готовую к работе, — с офисными пакетами и программами мультимедиа. Если же вы настраиваете сервер, то все офисные и мультимедийные программы, понятно, можно не устанавливать, и тогда для
самой системы понадобится примерно 2 Гбайт (без графического интерфейса — он
на сервере не нужен, но с необходимыми пакетами, содержащими программысерверы). Впрочем, не нужно забывать, что само слово «сервер» подразумевает
достаточное количество дискового пространства, поэтому вам потребуется 2 Гбайт
для самой системы и еще сколько-то для данных, которые сервер будет обрабатывать.
Для корневого раздела, где содержатся файлы операционной системы и приложения, я бы порекомендовал установить размер минимум 7-8 Гбайт, а для раздела
с пользовательскими файлами (/home) установите размер, соответствующий предполагаемому объему обрабатываемых данных.

34

Часть /. Выбор и установка дистрибутива

У меня, например, openSUSE 42.3 Leap сразу после установки заняла 5,7 Гбайт
(версия с KDE), Ubuntu 17.04 — до 4,0 Гбайт (обновления во время установки не
устанавливались), a Fedora 26 — 5 Гбайт. Обратите внимание, что для установленной системы требуется меньше дискового пространства, чем она просит для обеспечения процесса ее установки, — здесь указан размер уже установленных систем,
а во время самой установки может понадобиться еще и некоторый дополнительный
объем.

2.2. Первоначальная загрузка
2.2.1. POST и загрузчики
После включения питания компьютера запускается процедура самотестирования
(Power On Self Test, POST), проверяющая основные компоненты системы: видеокарту, оперативную память, жесткие диски и т. д. Затем начинается загрузка операционной системы. Компьютер при этом ищет на жестком диске (и других носителях) программу-загрузчик операционной системы. Если такая программа найдена,
то ей передается управление, если же такая программа не найдена ни на одном из
носителей, выдается сообщение с просьбой вставить загрузочный диск.
В настоящее время актуален только один загрузчик: GRUB2 — он используется
по умолчанию в большинстве дистрибутивов и после установки Linux начальным
загрузчиком будет именно он (его предшествующую версию — GRUB — можно
по желанию установить вручную лишь после установки Linux).
Задача загрузчика — предоставить пользователю возможность выбрать нужную операционную систему (ведь кроме Linux на компьютере может стоять и еще какая-либо
операционная система) и передать ей управление. В случае с Linux загрузчик загружает ядро операционной системы и передает управление ему. Все последующие
действия по загрузке системы: монтирование корневой файловой системы, запуск
программы инициализации — выполняет ядро Linux.

2.2.2. Ядро Linux и его параметры
Ядро — это святая святых операционной системы Linux. Ядро управляет всем: файловой системой, процессами, распределением памяти, устройствами и т. п. Когда
программе нужно выполнить какую-либо операцию, она обращается к ядру Linux.
Например, если программа хочет прочитать данные из файла, то она сначала открывает файл, используя системный вызов open (), а затем читает данные из файла с помощью системного вызова read (). Для закрытия файла используется системный
вызов close ().
Конечно, на практике все выглядит сложнее, поскольку Linux — многопользовательская и многозадачная система. Это значит, что с системой могут работать одновременно несколько пользователей, и каждый из пользователей может запустить несколько процессов. Ясно, что программе нужно учитывать «поправку на совместный
доступ», т. е. во время работы с файлом одного из пользователей программа должна
установить блокировку доступа к этому файлу других пользователей. Впрочем, в такие нюансы мы сейчас вникать не станем.

Глава 2. Особенности установки

35

Итак, ядро — это программа, самая главная программа в Linux. Как и любой другой
программе, ядру Linux можно передать параметры, влияющие на его работу. Это
можно сделать с помощью любого загрузчика Linux. При установке Linux, особенно
если операционная система отказывается устанавливаться с параметрами по умолчанию, полезно передать ядру особые параметры. Например, на некоторых ноутбуках
дня установки Linux требуется передать ядру параметры noauto и nopcmcia. Первый
параметр запрещает автоматическое определение устройств, а второй — проверку
PCMCIA-карт.
Устранение проблем с загрузкой Linux
В разд. 2.11 приведено описание ряда проблем с загрузкой Linux и способов их устра­
нения, в том числе и с помощью передачи ядру особых параметров.

Кроме передачи параметров ядру, можно передать параметры и программе установки — например, параметр vga при установке ряда дистрибутивов Linux определяет, что эта программа должна работать при разрешении 640x480, а это позволяет произвести установку на самые «древние» компьютеры или такие, видеокарта которых не полностью совместима с Linux (редко, но бывает).
В различных дистрибутивах редактирование параметров ядра, естественно, осуществляется по-разному. Так, в Fedora 26 нужно выбрать необходимый вариант установки (обычно выбирается первый, предлагающий установить или обновить существующую систему) и нажать клавишу — в результате мы получим текстовую строку, в которой можноотредактировать параметры ядра (рис. 2.2).

Рис. 2.2. Fedora 26: редактирование параметров ядра

Часть I. Выбор и установка дистрибутива

36

Запуск инсталляции Fedora 26
Если вы скачали дистрибутив Fedora 26 Live, то для запуска инсталляции надо снача­
ла выбрать опцию Start Fedora-Workstation-Live 26 (см. рис. 2.2), а после загрузки
выполнить команду Install to Hard Drive.

Параметры программы-установщика
Некоторые дистрибутивы, кроме параметров ядра, позволяют также ввести парамет­
ры программы-установщика. По адресу: https://docs.fedoraproject.org/en-US/Fedora/
26/html/lnstallation_Guide/chap-anaconda-boot-options.html вы можете ознакомиться
с параметрами программы установки Fedora 26.

При установке openSUSE 42.3 для редактирования параметров ядра следует
выбрать необходимый вариант установки (рис. 2.3), нажать клавишу и добавить параметры загрузки в поле Варианты загрузки, находящееся под списком
вариантов загрузки (рис. 2.4).
Выбор языка установки
Обратите внимание, что меню загрузки openSUSE на рис. 2.3 и 2.4 представлено на
русском языке. Однако сразу после загрузки с DVD меню выводится на английском, и
для смены языка установки следует нажать клавишу и выбрать русский язык из
списка. Такая возможность есть не у всех дистрибутивов— например, у Fedora она,
к сожалению, отсутствует.

Рис. 2.3. openSUSE 42.3: начальное меню установки

Глава 2. Особенности установки

Рис. 2.4. openSUSE 42.3: редактирование параметров ядра при установке

Рис. 2.5. Ubuntu 17.04: заставка при запуске с установочного диска

37

38

Часть I. Выбор и установка дистрибутива

При установке Ubuntu сначала появится графическая заставка (рис. 2.5) — вам следует нажать здесь любую клавишу, и на экран будет выведено меню выбора языка.
После выбора языка появится загрузочное меню на выбранном пользователем языке. Для выбора параметров ядра нужно нажать клавишу (рис. 2.6).

Рис. 2.6. Ubuntu 17.04: выбор параметров ядра при установке

Видео установки Ubuntu
В папке Видео сопровождающего книгу электронного архива (см. приложение) содер­
жится видеофайл, демонстрирующий процесс установки на компьютер дистрибутива
Ubuntu 15.10 (процедура инсталляции Ubuntu настолько унифицирована, что пере­
снимать видео под версию 17.04 не потребовалось).

Подробнее о параметрах ядра вы сможете прочитать в главе 20.

2.3. Проверка носителей
Некоторые дистрибутивы предлагают перед установкой выполнить проверку установочного DVD. Так что, если поверхность DVD вызывает у вас сомнения, можно
его проверить, — зачем тратить время на установку, если на 99-м проценте программа установки сообщит вам, что ей не удается прочитать какой-то очень важный пакет, и система не может быть установлена? Если же DVD новый (только что
купленный или записанный), можно отказаться от проверки носителя — вы сэкономите немного времени.

Глава 2. Особенности установки

39

Так, для проверки носителя Fedora нужно выбрать в загрузочном меню опцию Test
this media & start Fedora-Workstation-Live 26, а в Ubuntu — опцию Проверить
диск на наличие ошибок.

2.4. Изменение таблицы разделов
Система Linux не может быть установлена в Windows-разделы: FAT32 или NTFS,
и для нее нужно создать на жестком диске компьютера Linux-разделы в файловой системе ext3 или ext4. Понятно, что для этого на жестком диске должно
иметься неразмеченное пространство. Если его нет, придется или удалить один
из Windows-разделов и на его месте создать Linux-раздел, или же уменьшить размер одного из Windows-разделов и на освободившемся месте создать разделы
Linux.
Удалять раздел Windows имеет смысл только в том случае, если вся содержащаяся
в нем информация вам абсолютно не нужна, поэтому обычно дело до удаления не
доходит, — просто размер подходящего Windows-раздела уменьшают на величину
имеющегося в нем свободного пространства. Так что, перед началом установки
убедитесь, что в каком-либо разделе Windows есть 8-10 Гбайт свободного пространства (вообще, чем больше, тем лучше).
Сделайте резервную копию всех важных данных
Часто бывает, что возможности программы-установщика по изменению размеров уже
существующего раздела ограничены. Поэтому перед установкой Linux на компьютер,
где уже установлена другая операционная система, я рекомендую сделать резервную
копию всех важных данных и использовать стороннюю программу разметки — напри­
мер, AOMEI Partition Assistant (https://www.aomeitech.com/aomei-partition-assistant.html).

У с т а н о в к а д и с т р и б у т и в а с з а г р у з ч и к о м LILO
Если вы устанавливаете очень старый дистрибутив Linux, в котором все еще исполь­
зуется загрузчик LILO, то основной раздел Linux следует расположить ближе к началу
диска. Дело в том, что загрузчик LILO может загружать Linux только с тех разделов,
которые начинаются до 1024-го цилиндра (т. е. до 1024-го цилиндра должен распола­
гаться первый блок раздела). Это не проблема операционной системы, а требование
старого загрузчика Linux. В некоторых случаях проблему удается обойти, а в некото­
рых — нет. Лучше лишний раз не тратить время зря и создать Linux-раздел так, чтобы
он начинался как можно ближе к «началу» диска. После установки Linux сможет ис­
пользовать (читать и записывать данные) любые разделы вне зависимости от началь­
ного номера цилиндра раздела.

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

40

Часть I. Выбор и установка дистрибутива

2.4.1. Разметка диска в Fedora 26
В более ранних дистрибутивах Fedora программа разметки диска, на мой взгляд,
была более удобной, чем в ее последних версиях, но мы имеем то, что имеем,
и должны с этим работать.
Итак, если вы устанавливаете Fedora на новый компьютер, где еще не было установлено никаких других операционных систем, проще всего выбрать вариант
Автоматически (рис. 2.7).

Рис. 2.7. Fedora 26: выбор типа разметки

Однако если на жестком диске уже есть таблица разделов, или вы желаете создать
разделы вручную, — выберите вариант По-своему и нажмите кнопку Готово (она
находится в верхнем левом углу окна).
По умолчанию Fedora предлагает использовать LVM (Logical Volume Manager), но
на домашней машине можно создать обычные разделы (да и, скорее всего, обычные
разделы для Windows у вас уже созданы). Поэтому из списка схем разбиения нужно
выбрать Стандартный раздел (рис. 2.8).
Затем для создания раздела нажмите кнопку + (для удаления раздела, соответственно, служит кнопка -), после чего в открывшемся окне выберите точку монти­
рования и введите размер раздела (рис. 2.9). При вводе размера можно добавить

Глава 2. Особенности установки

Рис. 2.8. Fedora 26: выберите Стандартный раздел

Рис. 2.9. Fedora 26: создание основного раздела

41

42

Часть I. Выбор и установка дистрибутива

символы G или Гб (в современных версиях Fedora объем можно вводить на русском языке), чтобы указать, что размер задается в гигабайтах.
Как минимум, вам понадобится создать раздел с точкой монтирования / и раздел
подкачки (swap).
Точка монтирования / используется для корневой файловой системы, которая помимо всего прочего (файлов самой системы) содержит также каталоги /home (тут
хранятся пользовательские данные) и Л/ar (а здесь лежат журналы и данные различных серверов: Web-сервера, почтового сервера, сервера БД). Именно поэтому на
домашнем компьютере с одним жестким диском возможны две схемы разметки диска:
□ один раздел с точкой монтирования / и раздел подкачки;
□ два раздела: один с точкой монтирования /, второй— с точкой монтирования
/home, а также раздел подкачки.
Для сервера нужно создать отдельные разделы для каждой точки монтирования: /,
/home и /var, а также раздел подкачки.
Размер раздела подкачки, учитывая требования к оперативной памяти современных
дистрибутивов, должен быть установлен на уровне 2-4 Гбайт (рис. 2.10).
Закончив разметку диска, нажмите кнопку Готово для записи изменений на диск
(рис. 2.11).

Рис. 2.10. Fedora 26: создание раздела подкачки

Глава 2. Особенности установки

43

Рис. 2.11. Fedora 26: разметка диска завершена

Основной недостаток программы разметки диска в Fedora — она не умеет уменьшать размер уже существующих разделов. И если диск вашего компьютера уже
полностью разбит в Windows на разделы, скажем, С: и D:, то для установки на такой
компьютер Linux один из этих разделов придется удалить. Именно поэтому установка Fedora на компьютеры, где уже установлена Windows, и есть всего лишь
один раздел, будет весьма проблематичной, — потребуется или задействовать сторонние программы разметки диска (хотя бы для изменения размера существующего
раздела Windows), или переустанавливать Windows. При этом сначала надо будет
выполнить разметку диска, оставив для Linux нераспределенное пространство, потом установить Windows, а затем уже и Linux. Честно говоря, такая вот система установки никак не способствует росту популярности Linux...
Помню, дистрибутив Mandriva включал отличную программу разметки дисков
diskdrake, которая могла уменьшить на величину свободного дискового пространства любой выбранный раздел, а на освободившемся пространстве создать Linuxразделы.

2.4.2. Разметка диска в Ubuntu 17.04
Программа разметки диска в Ubuntu 17.04 мне понравилась гораздо больше, чем
в Fedora,— она позволяет более гибко управлять созданием разделов: вы можете
выбрать тип (первичный, логический) и местоположение нового раздела (рис. 2.12),

44

Часть I. Выбор и установка дистрибутива

а также и устанавливаемую файловую систему (рис. 2.13). В Fedora же по умолчанию устанавливается файловая система ext4 (XFS — для серверной версии), а пользователю предоставляется возможность лишь указать размер раздела и точку монтирования. После создания раздела вы можете сменить тип файловой системы, но
для этого нужно будет производить лишние действия: выбирать раздел, менять тип
файловой системы, нажимать кнопку Применить.

Рис. 2.12. Ubuntu 17.04: создание нового раздела

Рис. 2.13. Ubuntu 17.04: выбор файловой системы

Глава 2. Особенности установки

45

К сожалению, программа разметки в Ubuntu не лишена того же недостатка, что и
в Fedora, — кнопка Изменить позволяет выбрать лишь другую файловую систему
и точку монтирования, но не дает возможности изменить размер раздела (рис. 2.14).

Рис. 2.14. Ubuntu 17.04: изменение раздела

2.4.3. Разметка диска в openSUSE
openSUSE— один из немногих дистрибутивов, программа разметки которого
позволяет изменить размер существующих разделов. Для этого, когда программа

Рис. 2.15. openSUSE 42.3: нажмите кнопку Экспертная разметка

46

Часть I. Выбор и установка дистрибутива

установки предложит вам свою разметку диска, следует нажать кнопку Эксперт­
ная разметка (рис. 2.15), в открывшемся окне щелкнуть правой кнопкой мыши по
нужному разделу и выбрать команду Изменить размер, после чего в открывшейся
панели можно будет установить новый размер раздела (рис. 2.16).
Надо признать, программа разметки в openSUSE 42.3 весьма сбалансирована и гибка. Как можно видеть, она позволяет выбрать тип файловой системы, отказаться от
форматирования, просто создав раздел заданного типа, зашифровать раздел, отказаться от монтирования созданного раздела (рис. 2.17). Конечно, все эти опции доступны при выборе экспертной разметки.

Рис. 2.16. openSUSE 42.3: изменение размера раздела

Презентация установки дистрибутива Slackware
В папке Дополнения сопровождающего книгу электронного архива (см. приложение)
содержится файл презентации Slackware14.ppt, демонстрирующий процесс установки
на компьютер дистрибутива Slackware 14. Здесь же вы найдете советы по работе
с программой разметки диска fdisk.

Глава 2. Особенности установки

47

Рис. 2.17. openSUSE 42.3: возможности программы разметки

2.4.4. Шифрование файловой системы
Практически все современные дистрибутивы поддерживают шифрование файловой
системы, которое вы можете предусмотреть при создании раздела, — например,
включить в openSUSE 42.3 параметр Зашифровать устройство (см. рис. 2.17)
или в Ubuntu 17.04— параметр Зашифровать новую установку Ubuntu в целях
безопасности (рис. 2.18). Как можно видеть, в зависимости от дистрибутива этот
параметр называется по-разному.
Но нужно ли вам это? Если вы агент 007 — бесспорно, шифрование весьма полезная опция. А вот во всех остальных ситуациях при попытке восстановления данных
вчухучае сбоя системы опция шифрования создаст вам только дополнительные проблемы.
Криптографическая файловая система eCryptfs
Шифрование файловой системы с помощью криптографической утилиты eCryptfs опи­
сано в главе 42.

48

Часть I. Выбор и установка дистрибутива

Рис. 2.18. Ubuntu 17.04: включение шифрования

2.5. Выбор
устанавливаемых пакетов программ
Честно говоря, старые дистрибутивы мне нравились больше— можно было настроить дистрибутив под себя уже во время его установки. А сейчас разработчики
дистрибутивов стараются упростить не только сами дистрибутивы, но и инсталляторы. Однако говорят же, что простота иногда хуже воровства...
Программы установки прошлых лет позволяли выбрать не только группы пакетов
программ, но и отдельные пакеты. Было сложнее? Нет! Все выглядело вполне гармонично. Начинающий пользователь просто соглашался с выбором по умолчанию
и нажимал кнопку Далее (или аналогичную), а опытный — выбирал пакеты (или
хотя бы группы пакетов) вручную.
Сейчас же программы установки не только не позволяют выбрать группу пакетов — нельзя выбрать даже графическую среду (хотя в дистрибутиве их может
быть несколько)! Да что там графическая среда— пользователь элементарно не
знает, сколько места занимает установка по умолчанию. То есть, ставим вслепую:
хватит места— хорошо, не хватит— начинай установку сначала. И хотя современные жесткие диски достаточно емкие для установки любого дистрибутива, но
бывает, что пользователь ошибется и отведет под раздел с системой, допустим, всего 5 Гбайт, а системе потребуется 8... Однако пока не начнешь установку, об этом
не узнаешь. К чему такая простота — не понятно...

Глава 2. Особенности установки

49

Может быть, если устанавливаешь рабочую станцию или домашний компьютер,
такое решение себя оправдывает. Но когда планируешь устанавливать сервер, то
зачем инсталлятор устанавливает все эти офисные и мультимедиаприложения?
Единственным честным в этом смысле дистрибутивом остался openSUSE — он позволяет выбрать не только графическую среду, но и пакеты. Для выбора пакетов
перед самой установкой системы будет выведена сводка (рис. 2.19) — щелкните на
разделе Программное обеспечение, и у вас появится возможность выбрать устанавливаемые пакеты.

Рис. 2.19. openSUSE 42.3: выбор приложений

2.6. Выбор графической среды
Как было отмечено ранее, современные дистрибутивы редко когда предоставляют
выбор графической среды (оболочки), поэтому нам придется привыкать к тому,
что есть.
В Ubuntu по умолчанию устанавливается оболочка Unity, в Fedora — GNOME.
И только openSUSE позволяет пользователю самому выбрать графическую оболочку (рис. 2.20).

50

Часть I. Выбор и установка дистрибутива

Рис. 2.20. openSUSE 42.3: выбор графической среды при установке системы

Итак, если все-таки возможность выбора имеется, то какую оболочку выбрать?
Пользователям, привыкшим к какой-либо оболочке, нужно ее и выбирать, — так
будет привычнее. Если же нет никаких предпочтений, выбирайте GNOME — эта
графическая среда немного менее требовательна к системным ресурсам. Впрочем,
третья версия GNOME тоже отличается «прожорливостью», однако все же не
такой, как KDE 5.
Владельцам старых компьютеров можно порекомендовать оболочку LXDE — даже
если инсталлятор не позволяет ее выбрать при установке системы, вы можете доустановить ее впоследствии.
Глядя на все это, иногда хочется вернуться в прошлое, когда инсталляторы при
установке системы свободно позволяли выбрать графическую среду. Так почему же
сейчас по умолчанию устанавливается только какая-то определенная среда, а выбор
альтернативной даже не предоставляется? Ответ прост— этим разработчики облегчили себе жизнь. Ведь каждую оболочку нужно настраивать, «кастомизировать»
под стилистику дистрибутива, а на все это необходимо время. А когда работы в два
раза больше (если предусмотрены две среды вместо одной), то это сделать очень
сложно и дорого. Плюс к тому же документацию (те же HOWTO) можно в этом
случае написать только для одной среды. Ведь если написать HOWTO, допустим,
по настройке кодеков, для GNOME, то для KDE придется описать совсем другую

Глава 2. Особенности установки

51

последовательность действий. Таким образом, разработчики, облегчая себе жизнь,
лишили пользователей свободы выбора (или освободили от проблемы выбора?), —
впрочем, фанаты той или иной среды и более опытные пользователи и так смогут
самостоятельно доустановить любимую графическую среду (см. главу 3) и правильно ее настроить. Да и лучше одна хорошо настроенная графическая среда, чем
две недоделанные.
Альтернативные графические оболочки
Если вы любите все нестандартное, предлагаю статью-обзор альтернативных графи­
ческих оболочек: http://ubuntunews.ru/articles/20-altemativ-rabochemu-stolu-unity.html.

2.7. Установка пароля root
Пользователь root— это главный пользователь в системе (как Администратор
в Windows). Постарайтесь не забыть его пароль! В некоторых дистрибутивах окно
для ввода пароля root совмещено с окном добавления пользователя, некоторые дистрибутивы (например, Fedora) выводят отдельно окно для задания пароля root, а
openSUSE предлагает создать обычного пользователя, и при этом его пароль предлагается использовать в качестве пароля root (рис. 2.21). Это довольно удобно, но

Рис. 2.21. openSUSE 42.3: создание пользователя и задание пароля root

52

Часть I. Выбор и установка дистрибутива

с точки зрения безопасности лучше, чтобы пароль root не совпадал с пользовательским паролем. В Ubuntu вообще особая ситуация — учетная запись пользователя
root по умолчанию отключена, а создаваемая учетная запись является учетной
записью администратора (подробнее об этом мы поговорим в главе 6).
Переключиться на английскую раскладку!
При установке Fedora сразу же активируется выбранная в начале установки раскладка
клавиатуры (в наших краях— русская), поэтому при вводе имени и пароля пользова­
теля может возникнуть проблема — как переключиться на английскую раскладку, ко­
торая необходима для ввода имени пользователя и его пароля? Так вот, используйте
для этого комбинацию клавиш +. В иных дистрибутивах могут использо­
ваться другие комбинации, например, + или +.

2.8. Создание учетных записей пользователей
При установке системы вам необходимо создать (см. рис. 2.21) хотя бы одну пользовательскую учетную запись — с ее помощью вы будете осуществлять вход в систему. Многие современные дистрибутивы запрещают вход в систему от имени root,
поэтому вы будете использовать именно эту созданную при установке учетную
запись.

2.9. Порядок установки операционных систем
Как уже отмечалось ранее, сначала нужно устанавливать Windows, а потом Linux.
Дело в том, что Windows при установке узурпирует главную загрузочную запись,
и после ее установки Linux вы уже не запустите.
При установке Linux такого не происходит — загрузчик Linux настраивается так,
чтобы вы могли запускать как Linux, так и Windows.
Если вы планируете установить несколько версий Windows — например,
Windows 10 и Windows 7/8, то сначала установите все необходимые вам версии
Windows, а уже затем — Linux.

2.10. Установка Linux по сети
2.10.1. Немного о загрузке и установке по сети
Большинство современных компьютеров умеют загружаться по сети — BIOS компьютера находит загрузочный РХЕ-сервер (Preboot Execution Environment) и загружает с него операционную систему. В этом случае компьютеру для загрузки операционной системы не нужен ни жесткий диск, ни любой другой носитель информации. Обычно такая схема используется на «тонких клиентах» — компьютерах, не
имеющих жесткого диска (с целью удешевления), загрузка операционной системы
на которых производится с центрального компьютера сети.
В этом разделе мы рассмотрим настройку и использование РХЕ-сервера, предназначенного для загрузки программы установки Linux.

Глава 2. Особенности установки

53

Установка по сети может понадобиться в двух случаях:
□ при установке Linux на мини-ноутбук, не оснащенный приводом DVD —
покупать USB-привод DVD только для установки Linux не очень-то рационально, правда? Может быть и так, что ваш старенький ноутбук оснащен лишь
CD-приводом, тогда как большинство современных дистрибутивов распространяются на DVD;
□ при установке Linux на целый парк компьютеров — тут все просто: компьютеров много, а установочный диск всего один, поэтому установка по сети позволит значительно сэкономить время. В среднем установка Linux (без настройки)
занимает полчаса. 10 компьютеров подряд— это уже более 5 часов работы.
А вот при наличии загрузочного сервера, на настройку которого у вас уйдет минут 20, эти 10 компьютеров будут готовы к работе всего за 1 час.
Как видите, РХЕ-сервер — весьма полезная в хозяйстве вещь. В этой книге, правда,
подробно рассматривать создание полноценного РХЕ-сервера мы не станем.

2.10.2. Подготовка загрузочного сервера
Настройку загрузочного сервера мы рассмотрим на примере Ubuntu. Поскольку
установка по сети— довольно специфическая операция, и она нужна далеко не
всем пользователям, то я не вижу особой необходимости рассматривать установку
РХЕ-сервера в разных дистрибутивах, — ведь в другом дистрибутиве можно все
сделать «по образу и подобию».

Установка DHCP-сервера
Первым делом надо установить DHCP-сервер — в Ubuntu это делается командой:
$ sudo apt-get install dhcp-server
Затем откройте файл /etc/dhcp3/dhcpd/dhcpd.conf и добавьте в него следующие строки:
host pxeinstall {
hardware ethernet xx:xx:xx:xx:xx:xx:xx;
filename "pxelinux.0";
}
И н с т р у к ц и я hardware
Об инструкции hardware следует сказать особо. По большому счету — она не нужна.
Но если вы запускаете DHCP-сервер в реальной сети, где уже наверняка есть другой
DHCP-сервер, а вам надо установить Linux всего на один компьютер, тогда замените
символы хх в инструкции hardware МАС-адресом сетевого адаптера, установленного
на компьютере, на который нужно поставить Linux.
Если же вы настраиваете всю сеть компьютеров или же полноценный РХЕ-сервер,
тогда можно инструкцию hardware удалить — чтобы ваш сервер могли использовать
все компьютеры сети.

С другой стороны, указать МАС-адреса потенциальных клиентов — это хорошая
идея с точки зрения безопасности. Но если вы разворачиваете свой РХЕ-сервер

54

Часть I. Выбор и установка дистрибутива

только для установки операционной системы, нет никакой необходимости тратить
время на определение МАС-адресов всех компьютеров сети. Вот, когда надо настроить полноценный РХЕ-сервер, может и нужно указать адреса «тонких клиентов», чтобы никто другой не смог использовать ваш сервер для загрузки. Тут уже
решать вам...
Сохраните файл конфигурации DHCP-сервера и перезапустите сервер:
$ sudo /etc/init.d/dhcpd restart

Настройка TFTP-сервера
Следующий шаг — настройка TFTP-сервера (Trivial File Transfer Protocol), на котором будет размещен образ операционной системы. В нашем случае — это установочный образ Ubuntu.
Установить TFTP-сервер можно командой:
$ sudo apt-get install tftpd-hpa
После установки сервера отредактируйте ваш файл /etc/inetd.conf. Убедитесь, что
в нем есть следующая строка (и что она раскомментирована):
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s
/var/lib/tftpboot
Поскольку TFTP-сервер работает не автономно, а через сервер inted, то для запуска
TFTP-сервера нужно перезапустить сервер inetd:
$ sudo /etc/init.d/inetd restart
В современных дистрибутивах вместо сервера inetd используется суперсервер
xinetd, поэтому надо отредактировать его конфигурационный файл — /etc/xinetd.conf.
Добавьте в него следующие строки:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = tftp
server = /usr/sbin/in.tftpd
server_args = -1 /var/lib/tftpboot
only_from = client.test.net
}

И перезапустите xinetd:
$ sudo /etc/init.d/xinetd restart

Загрузка установочного образа
Теперь нам нужно загрузить специальный установочный образ, рассчитанный на
установку по сети. Подключитесь к Интернету и введите следующие команды:

Глава 2. Особенности установки

55

$ mkdir net-install
$ sudo lftp -c "open
http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/

images/; mirror net-install/"
Первая команда создаст каталог net-install, а вторая — загрузит в нее установочный
образ Ubuntu.
Почти все готово, и в каталог net-install загружены файлы, необходимые для установки Linux по сети. Но давайте вспомним наш файл /etc/inetd.conf (или xinetd.conf).
Конфигурация TFTP предполагает, что все файлы, доступные по протоколу TFTP,
должны быть расположены в каталоге /var/lib/tftpboot. Поэтому нам нужно скопировать туда файлы из каталога net-install:
$ sudo ср -a net-install/* /var/lib/tftpboot
$ sudo cd /var/lib/tftpboot
$ sudo tar zxf netboot.tar.gz
Вот и все — ваш РХЕ-сервер готов к работе.

2.10.3. Настройка клиента
Настраивать клиент, т. e. компьютер, на который вы будете устанавливать Linux,
очень просто, — достаточно зайти в его BIOS и установить загрузку по сети. Но
загружаться по сети умеют не все компьютеры...
Что делать, если у вас старый компьютер, который не умеет загружаться по сети?
Можно попытаться перепрошить BIOS — новая версия наверняка будет поддерживать загрузку по сети. Если перепрошивать BIOS нежелательно, или вы не
можете найти подходящую версию BIOS именно для вашего компьютера, тогда
вам будет проще изготовить специальную загрузочную дискету, загрузиться
с нее, а загрузчик уже сам найдет РХЕ-сервер и запустит процесс установки.
Создать загрузочную дискету можно с помощью команды mknbi (страница руководства по этой команде находится тут: http://manpages.ubuntu.com/manpages/
intrepid/manl/mknbi.html).
Загрузочная флешка
Учитывая, что на большинстве современных ноутбуков уже нет дисководов для дис­
кет, взамен загрузочной дискеты лучше всего изготовить загрузочную флешку, для
создания которой используется программа Система | Администрирование | Startup
disk creator. С другой стороны, все современные машины поддерживают загрузку по
сети, так что вам не стоит особо беспокоиться по этому поводу.

2.11. Проблемы при установке
2.11.1. Проблема с APIC
APIC (Advanced Programmable Interrupt Controller) — улучшенный программируемый контроллер прерываний. Поскольку контроллер прерываний «улучшенный»,
то проблем быть с ним не должно, но на практике это далеко не так. Одним словом,

56

Часть I. Выбор и установка дистрибутива

проблемы с APIC в Linux возникают довольно часто. При загрузке система может
зависнуть. Вы можете увидеть сообщение о проблеме с APIC, а можете и не увидеть его. Если сообщение есть, то оно будет выглядеть примерно так:
kernel panic — not syncing: IO-APIC + tinier doesn’t work! Boot with apic=debug
and send areport. Then try booting with the 'noapic’ option
Решить проблему помогает параметр ядра noapic, позволяющий SMP-ядру не
использовать расширенные возможности контроллера прерываний в многопроцессорных машинах. Обратите внимание — ядро само подсказало, чего ему не хватает!
Подробно о передаче параметров ядру мы поговорим в главе 20. А пока, находясь
в меню загрузчика GRUB, нажмите для редактирования параметров ядра клавишу
(или в случае с openSUSE) и просто добавьте в список параметров команду noapic — проблема должна исчезнуть. Если этот параметр вам помог, нужно добавить его в файл /boot/qrub/menu.lst или отключить APIC в BIOS.

2.11.2. Ошибка:
kernel panic:VFS: Unable to mount root fs
Появление такого сообщения означает, что ядро не может подмонтировать корневую файловую систему. Понятно, что дальнейшее продолжение работы невозможно. Наиболее вероятная причина — повреждение установочного диска. Если с поверхностью диска все в порядке (она не поцарапана, отсутствуют следы грязи и/или
жира), тогда причина в ошибке при записи DVD. Выход один — раздобыть другой
установочный DVD и загрузиться с него.

2.11.3. Проблемы с некоторыми LCD-мониторами
Если ваш LCD-монитор подключен к DVI-разъему видеокарты, и с ним возникают
проблемы: не поддерживается максимальное разрешение, низкое качество изображения, самопроизвольное выключение питания монитора— попробуйте передать
ядру параметр nofb. Если это поможет решить проблему, «пропишите» этот параметр в конфигурационном файле загрузчика (об этом мы также поговорим далее).
Что делать, если параметр nofb не помог? Просто подключите монитор к аналоговому разъему видеокарты — все должно заработать нормально.

2.11.4. Сообщение Probing EDD и зависание системы
Некоторые дистрибутивы при загрузке могут вывести сообщение Probing EDD, и
на этом загрузка остановится. Изначально я столкнулся с этой проблемой при установке openSUSE 11.x на ноутбук Toshiba. Но, судя по письмам пользователей, такая
проблема проявлялась и в Fedora 10, и в Mandriva 2009 при использовании определенных жестких дисков. Если вы увидели это сообщение, и система зависла, пере-

Глава 2. Особенности установки

57

дайте ядру параметр edd=off. Самое интересное — уже в 2017 году при установке
Ubuntu на ноутбук ASUS возникла та же ошибка, и пришлось опять применить
параметр edd=off, иначе система отказывалась загружаться.

2.11.5. Установка Linux на HP Mini 2133
(проблема с ACPI)
При установке Linux на этот нетбук может возникнуть проблема с ACPI (Advanced
Configuration and Power Interface) — системой управления питанием и энергосбережением. В этом случае нужно или отключить ACPI (параметр ядра acpi=off), или
обновить BIOS нетбука до версии F.06. Отключение ACPI на нетбуке можно воспринимать только как временную меру (до обновления BIOS) — это все равно, что
не включать кондиционер в жару (при условии наличия самого кондиционера!).
Однако, пока вы не обновите BIOS (при отсутствии опыта эту операцию лучше
производить в сервисном центре), ACPI выключить можно. А после обновления
BIOS ваша система сможет работать нормально.

2.11.6. Проблема с ACPI
на Fujitsu Siemens Esprimo Mobile u9200
Проблема c ACPI есть еще у одного ноутбука. На ноутбуке Esprimo Mobile u9200
неправильно работает подсветка. Чтобы все восемь уровней подсветки были доступны, нужно передать ядру параметр acpi_backlight=vendor. Понятно, что этот
параметр первый раз надо просто передать ядру, чтобы проверить, правильно ли
работает подсветка, а затем его следует добавить в конфигурационный файл
загрузчика, чтобы не вводить его каждый раз при запуске Linux.

2.11.7. Переход в режим паники компьютера
с процессором AMD64
На компьютере с процессором AMD64 ядро переходило в режим паники, и установить Linux было невозможно. При этом на экране красовалось следующее сообщение:
kernel panic — not syncing: IO-APIC + timer doesn’t work! Boot with apic=debug
and send report. Then try booting with the ’noapic’ option
Помог решить проблему параметр ядра noapic, позволяющий SMP-ядру не использовать расширенные возможности контроллера прерываний в многопроцессорных
машинах. Обратите внимание — ядро снова само подсказало, чего ему не хватает!
Впрочем, ради справедливости нужно отметить, что указанная проблема характерна для первых версий ядра линейки 2.6.x. Новые версии ядра с процессорами
AMD64 работают нормально.

58

Часть I. Выбор и установка дистрибутива

2.11.8. Проблема с механизмом
Enhanced Disk Device (EDD)
Современные версии ядра Linux поддерживают механизм Enhanced Disk Device
(EDD) polling, позволяющий собирать информацию о всех дисковых устройствах,
с которых возможна загрузка. Собранная информация потом сохраняется в каталоге
/sys. Иногда с EDD возникает проблема — при загрузке Linux пользователь видит
сообщение Updating EDD..., и компьютер как бы зависает. В некоторых случаях
загрузка секунд через 30-40 продолжается, а в некоторых вообще и не начинается.
Суть происходящего в том, что при загрузке система обнаруживает «лишние» загрузочные устройства. В этом случае вам поможет параметр ядра edd=skipmbr. Если
проблема таким путем не устраняется, попробуйте передать ядру параметр edd=off,
вообще отключающий механизм EDD.

ЧАСТЬ II
Основные сведения
о Linux
Вторую часть книги можно рассматривать в качестве своеобразного фундамента
знаний любого линуксоида — да будет позволено мне нас, пользователей Linux, так
называть. Ведь здесь мы рассмотрим вход в систему, ее базовую настройку, особенности файловой системы Linux, командный интерпретатор bash, поговорим
о пользователях, группах и правах доступа, а также разберемся с различными системами управления пакетами.

ГЛАВА 3

Сразу после установки...
3.1. Вход в систему и завершение работы
По умолчанию в современных дистрибутивах при входе в систему запускается
графический менеджер регистрации (рис. 3.1), в окне которого требуется указать
имя пользователя и пароль, — после этого загрузится установленная в вашем дистрибутиве по умолчанию графическая среда (обычно это KDE или GNOME).

Рис. 3.1. Fedora 26: графический вход в систему

62

Часть II. Основные сведения о Linux

Конечно, может быть загружена и какая-либо другая графическая среда по вашему
выбору. Для этого надо нажать соответствующую кнопку выбора типа сеанса,
имеющуюся в окне регистрации. В зависимости от дистрибутива она может называться Тип сеанса или Сеанс, а может быть представлена графической пиктограммой — например, шестеренкой, как в Fedora (см. рис. 3.1), или гаечным ключом,
как в openSUSE 13.2. В openSUSE 42.3 (рис. 3.2) в нижнем левом углу экрана вы
обнаружите соответствующий список.

Рис. 3.2. openSUSE 42.3: выбор типа сеанса

Дистрибутив Slackware - исключение
Однако из всех правил могут быть исключения. Пример тому дистрибутив Slackware —
в нем сначала придется выполнить вход в консоли (рис. 3.3), а потом для запуска
графического интерфейса ввести команду startx.
Забегая немного вперед, отмечу, что консольный режим (см. разд. 3.6), несмотря на
свой столь устрашающий вид, оказывается весьма полезен в практической работе
с Linux, в чем мы впоследствии не раз убедимся.

Итак, войдя в систему, вы попадаете в графический режим. Для того чтобы перейти из графического режима в консоль, нажмите клавиатурную комбинацию
++, где п — номер консоли (от 1 до 6). То есть, чтобы перейти на
первую консоль, нужно нажать ++, на вторую — +
++ и т. д. Обратите внимание, что так можно перейти в консоль только

Гkава 3. Сразу после установки...

63

из графического режима. Если вы уже находитесь в консоли, то для переключения
между консолями служат комбинации клавиш + ... +, а также
+ — возвращающая вас в графический режим. Для лучшего запоминания
эти комбинации клавиш сведены в табл. 3.1.

Рис. 3.3. Slackware: регистрация в консоли

Таблица 3.1. Клавиши переключения между консолями и графическим режимом

Комбинация клавиш

Предназначение

++ (n— от 1 до 6)

Переключение из графического режима в консоль
с номером n

+ (n — от 1 до 6)

Переключение между консолями

+

Переключение из консоли в графический режим

Для выхода из консоли (чтобы ею никто не воспользовался во время вашего отсутствия) предусмотрена команда logout, можно выйти из консоли и по команде exit.
Для перезагрузки компьютера надо отдать команду reboot. Существуют также две
команды завершения работы: halt и poweroff:
□ команда halt завершает работу системы, но не выключает питание. Вы увидите
сообщение System is halted, свидетельствующее о возможности выключения
питания. Эта команда предназначена для старых компьютеров, не поддерживающих расширенное управление питанием;
□ команда poweroff завершает работу системы и выключает ее питание.

Часть II. Основные сведения о Linux

64

Самая «продвинутая» команда — shutdown — позволяет завершить работу или перезагрузить систему в назначенное время. Предположим, вы хотите уйти пораньше,
но компьютер нужно выключить ровно в 19.30 (вдруг некоторые пользователи задержались на работе, а вы выключите сервер, — вряд ли это им понравится). Вот
тут-то вам и поможет команда shutdown:
$ shutdown -h 19:30 [сообщение]
Р е ш е т к а (#) и д о л л а р ($)
Здесь и далее решетка (#) означает, что команда должна быть выполнена от имени
пользователя root. Если перед командой ничего не указано или же указан символ дол­
лара ($), команду можно выполнить от имени обычного пользователя. Ранее команды
завершения работы системы требовали полномочий root, что подчеркивало ориента­
цию Linux на серверы, — только администратору дозволялось завершить работу сер­
вера. Сейчас же команды shutdown, reboot и poweroff могут выполнить обычные
пользователи.

Сообщение [сообщение] можно и не указывать — все равно Windows-пользователи
его не увидят.
Если нужно завершить работу системы прямо сейчас, вместо времени укажите now:
$ shutdown -h now
Для перезагрузки системы есть опция -r:
$ shutdown -r now
Командная строка и терминал
В этой книге вы часто будете вводить различные команды — например, команды включения/выключения или запуска тех или иных конфигураторов системы. Для выполне­
ния какой-либо команды нужно нажать клавиатурную комбинацию +, в от­
крывшейся командной строке ввести эту команду и нажать клавишу . Можно
также использовать эмулятор консоли — терминал, кнопку запуска которого вы най­
дете в основном меню графической среды.

3.2. О графическом интерфейсе Linux
3.2.1. GNOME и KDE
Долгого и мучительного экскурса в историю развития графических интерфейсов
здесь не будет, отметим только, что основных таких интерфейсов существует два:
GNOME и KDE. По умолчанию GNOME используется в Fedora, Ubuntu, Debian,
a KDE — в openSUSE.
Основные элементы управления классического интерфейса GNOME: меню, панель
задач и область уведомлений (выражаясь терминологией Windows, что будет привычнее большинству пользователей) — находятся в верхней части экрана (рис. 3.4).
Классический интерфейс GNOME за годы его существования несколько «приелся»,
и в 2010 году компания Canonical Ltd, курирующая операционную систему Ubuntu
Linux, в версии Ubuntu 10.10 Notebook Edition представила свою оболочку для

Глава 3. Сразу после установки...

65

Рис. 3.4. Классический GNOME (какая-то старая версия Fedora)

GNOME — Unity1, которая, начиная с 11-й версии Ubuntu, принята в этой системе
по умолчанию. Как можно видеть, в верхней части экрана Unity находится меню
приложения, а всевозможные кнопки быстрого доступа к тем или иным возможностям расположены на ленте слева (рис. 3.5).
Оболочка Unity многим пришлась по вкусу, и, начиная с версии 3.8, GNOME предоставляет теперь на выбор два интерфейса: и классический, и современный — не
правда ли, современный интерфейс GNOME в Fedora 26 (рис. 3.6) и Unity в Ubuntu
похожи, как две капли воды?
В свое время считалось, что GNOME — интерфейс менее эффектный, но и менее
«прожорливый», a KDE — красивее (рис. 3.7), но более требовательный к системным ресурсам. Впрочем, сейчас по части системных требований они если и различаются, то только на бумаге, — субъективно на современных компьютерах пользователь не почувствует разницы в производительности между KDE и GNOME.
Какой интерфейс выбрать? Если вы впервые обратились к Linux, выбирайте используемый по умолчанию. Если же вы уже не новичок, то выбор очевиден — тот,
который вам больше нравится.
Ходили слухи, что Canonical откажется от Unity, но вместо этого встречаем Unity 8 — в Ubuntu
17.04. Правда, 8-я версия мало чем визуально отличается от всех предыдущих, но факт есть факт.

1

66

Часть II. Основные сведения о Linux

Рис. 3.5. Ubuntu 17.04: оболочка Unity

Рис. 3.6. Fedora 26: современный интерфейс GNOME

Глава 3. Сразу после установки...

67

Рис. 3.7. openSUSE 42.3: рабочий стол KDE

3.2.2. Установка
альтернативного графического интерфейса
В любом дистрибутиве, независимо от используемого по умолчанию графического
интерфейса, можно установить альтернативный. Так, в Ubuntu для установки KDE
следует выполнить в терминале команду:
sudo apt install kubuntu-desktop
Выполнение команды в терминале
Для выполнения команды в терминале щелкните правой кнопкой мыши на свободной
области рабочего стола, выберите команду Открыть терминал, введите в поле ввода
терминала команду и нажмите клавишу .

Эта команда установит интерфейс KDE со стандартным набором приложений. Почему пакет называется kubuntu-desktop? Потому что существует несколько разных
редакций Ubuntu: Kubuntu, Edubuntu, Lubuntu, Mythbuntu, Xubuntu, Ubuntu Server и
Ubuntu GNOME (cм. http://ubuntu.ru/family). Стандартный дистрибутив Ubuntu
поставляется c GNOME/Unity, a Kubuntu — c KDE.
Чтобы получить KDE с полным набором приложений, установите пакет kubuntufull:
sudo apt install kubuntu-full

Часть II. Основные сведения о Linux

68

Однако, как показывает практика, если вы хотите работать с KDE, рациональнее
установить редакцию Kubuntu сразу — так дисковое пространство будет использоваться более эффективно.
Если же установленная у вас система Ubuntu не содержит графического интерфейса
вовсе (например, это редакция Ubuntu Server), и вам потребовалось, чтобы он был,
установите пакет ubuntu-desktop:
sudo apt install ubuntu-desktop
В Fedora для установки KDE нужно ввести команду:
$ sudo dnf install @kde-desktop
Можно также установить в
Cinnamon, MATE, XFCE, LXDE:
sudo
sudo
sudo
sudo

dnf
dnf
dnf
dnf

install
install
install
install

Fedora

и

следующие

графические

интерфейсы:

@cinnamon-desktop
@mate-desktop
@xfce-desktop
@lxde-desktop

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

3.2.3. Основные элементы интерфейса GNOME
Установив openSUSE, в ее интерфейсе вы сможете ориентироваться сразу— расположение элементов и их назначение такое же, как и в Windows. А вот современные версии GNOME заслуживают отдельного разговора.
На рис. 3.8 представлен типичный рабочий стол GNOME 3.24. Чтобы получить
такое его состояние, нужно нажать кнопку Обзор в верхнем левом углу окна. Слева
в виде вертикальной ленты расположена т. н. панель Dash, содержащая кнопки
быстрого доступа к вашим любимым приложениям, а самая нижняя кнопка на ней
открывает полный список установленных приложений (рис. 3.9). Чтобы добавить
какое-либо из них в Dash, щелкните по нему правой кнопкой мыши и выберите
команду Добавить в избранное.
В верхней части экрана заметно поле поиска Найти — это универсальный поиск,
позволяющий найти как приложения, так и файлы, а над ним — панель уведомле­
ний. Именно на ней будут показаны всплывающие уведомления GNOME.
В верхнем правом углу окна вы найдете значок изменения языка ввода, а также
значки изменения уровня громкости, завершения работы и др. (рис. 3.10)— кроме
управления уровнем громкости и завершением работы системы, отсюда можно
также управлять подключением к сетям, включать/выключать определение местоположения (т. е. включать/выключать GPS-модуль, если он у вас есть), вызывать
экран настроек (кнопка внизу слева) и блокировать экран (кнопка внизу в центре).
Справа на экране обзора находится панель рабочих столов (рис. 3.11). Рабочие столы добавляются туда автоматически по заполнению текущего рабочего стола. При

Глава 3. Сразу после установки...

Рис. 3.8. Интерфейс GNOME

Рис. 3.9. Интерфейс GNOME: список установленныхприложений

69

70

Часть II. Основные сведения о Linux

Рис. 3.10. Интерфейс GNOME: изменение громкости, завершение работы и многое другое

Рис. 3.11. Интерфейс GNOME: панель рабочих столов (справа)

Глава 3. Сразу после установки...

71

запуске системы у вас будет единственный рабочий стол. Но как только вы откроете хотя бы одно приложение, автоматически создастся второй рабочий стол — пустой, и вы сможете переключиться на него с помощью панели рабочих столов. Как
только на этом рабочем столе вы запустите хотя бы одно приложение, автоматически будет создан третий рабочий стол, и т. д. Учитывая, что каждый рабочий стол
занимает системные ресурсы и в первую очередь оперативную и видеопамять, не
перестарайтесь!

3.2.4. Знакомство с Unity
Как уже отмечалось ранее, начиная с Ubuntu 11-й версии, вместо привычной среды
GNOME пользователей встречает новая оболочка— Unity, разработанная специально для этого дистрибутива (ранее Unity использовалась только в версии Ubuntu
Netbook Edition).
Оболочка Unity похожа на современный интерфейс GNOME (точнее, наоборот, —
это современный GNOME похож на Unity), но все же различия имеются. С одной
стороны, такой интерфейс на фоне уже приевшегося классического GNOME смотрится довольно-таки свежо (рис. 3.12). С другой— удобно ли Unity пользоваться?
Вопрос спорный... Лично мне больше нравится стандартное классическое меню
GNOME (см. рис. 3.4), чем главное меню Unity (рис. 3.13). Впрочем, у каждого свои
представления о том, что удобно, а что — нет.
«Изюминка» Unity— ее панель: левая вертикальная лента значков (см. рис. 3.12
и 3.13). Она позволяет открывать стандартные объекты: главное меню, окно настроек системы, Корзину и пр., а также пользовательские приложения.

Рис. 3.12. Ubuntu 17.04: рабочий стол Unity

72

Часть II. Основные сведения о Linux

Рис. 3.13. Ubuntu 17.04: главное меню Unity

Чтобы добавить приложение на панель Unity, просто перетащите на нее его значок.
А для удаления значка приложения из панели щелкните по нему правой кнопкой
мыши и выберите команду Изъять из панели (рис. 3.14).

Рис. 3.14. Ubuntu 17.04: изъятие значка из панели Unity

Глава 3. Сразу после установки...

73

3. 3. Изменение параметров
графического интерфейса
Что надо бы изменить в системе сразу после ее установки? Мне представляется разумным отключить блокировку экрана на домашнем компьютере (на предприятии
она, может, и не будет лишней), изменить способ переключения языков ввода
и, возможно, разрешение экрана (см. главу 13), а также, конечно же, сменить фон
рабочего стола. Что ж, приступим.

3.3.1. Отключение блокировки экрана
Блокировка экрана — это самая надоедливая опция графического интерфейса. Стоит отлучиться на минутку, и все — экран заблокирован, и снова приходится вводить пароль. Может быть, в корпоративной среде так и должно быть, но на домашнем компьютере, на мой взгляд, — это совершенно излишняя опция, если, конечно,
вы не параноик и не верите в теорию всемирного заговора.
Для отключения блокировки экрана в Fedora нажмите кнопку Обзор, затем кнопку
Показать приложения (самая последняя на панели слева), далее выберите приложение Параметры — с изображением гаечного ключа и отвертки (рис. 3.15). В открывшемся окне перейдите в раздел Конфиденциальность (рис. 3.16) и выключите параметр Блокировка экрана (рис. 3.17).

Рис. 3.15. Fedora 26: доступ к параметрам системы

74

Часть II. Основные сведения о Linux

Рис. 3.16. Fedora 26: окно Все параметры

Рис. 3.17. Fedora 26: отключение блокировки экрана

75

Глава 3. Сразу после установки...

Однако спешу вас разочаровать: да, вам не придется более вводить пароль после
каждой блокировки экрана, но, тем не менее, вы по-прежнему будете каждый раз
созерцать экран блокировки. Как от него избавиться окончательно?
Здесь нам поможет программа dconf-editor — в Linux она служит для редактирования конфигурации GNOME (это в некоторой степени аналог редактора реестра
Windows), и, чтобы ее установить (рис. 3.18), выполните в терминале команду:
sudo dnf install dconf-editor

Рис. 3.18. Fedora 26: установка dconf-editor

Установив программу dconf-editor, запустите ее,
+ и введя в открывшееся поле команду:

нажав

комбинацию

клавиш

dconf-editor
Ее, в общем-то, можно было бы ввести и в терминале, но мне хочется продемонстрировать вам окно запуска команды, открывающееся по нажатию этой комбинации
клавиш (рис. 3.19).
Осталось только найти опцию disable-lock-screen и установить для нее значение
True, как это показано на рис. 3.20.
Чтобы система приняла изменения, нужно перезапустить GNOME, — достаточно
просто выйти из системы и снова зайти в нее, перезагружать компьютер полностью
не обязательно.

76

Часть II. Основные сведения о Linux

Рис. 3.19. Fedora 26: запуск dconf-editor

Рис. 3.20. Fedora 26: полное отключение блокировки экрана

Глава 3. Сразу после установки...

77

В Ubuntu все обстоит гораздо проще, и отключить блокировку экрана можно средствами ее собственного окна настроек, без необходимости редактирования конфигурации GNOME. Для этого нажмите в правом верхнем углу главного окна Ubuntu
значок
, выберите команду Параметры системы (рис. 3.21), в открывшемся окне
параметров (рис. 3.22) перейдите в раздел Яркость и блокировка и установите там
параметры так, как показано на рис. 3.23.

Рис. 3.21. Ubuntu 17.04: открываем окно Параметры системы

Рис. 3.22. Ubuntu 17.04: окно Параметры системы

78

Часть II. Основные сведения о Linux

Рис. 3.23. Ubuntu 17.04: отключение блокировки экрана

3.3.2. Изменение
способа переключения языков ввода
У каждого из нас — своя любимая комбинация клавиш переключения языков ввода: у меня это +, но по умолчанию в Fedora предусмотрена
+, а в Ubuntu — + (клавиша — это та, что на
всех клавиатурах несет изображение логотипа Windows).
Изменение способа переключения языков ввода во всех дистрибутивах, где по
умолчанию используется GNOME, производится одинаково: что в Fedora, что
в Ubuntu. Для этого нужно в окне параметров системы перейти в раздел Клавиатура,
затем открыть вкладку Комбинации клавиш и выбрать комбинацию клавиш для
переключения источника ввода (рис. 3.24, а и б). Ранее комбинация клавиш устанавливалась путем выбора из списка, сейчас же нужно просто нажать нужную вам
комбинацию.

3.3.3. Изменение фона рабочего стола
Изменение фона рабочего стола в Fedora производится в разделе Фон окна Пара­
метры (рис. 3.25, а), а в Ubuntu— в разделе Оформление окна Параметры сис­
темы (рис. 3.25, б). Как видите, стандартный GNOME и Unity — весьма похожи, но
все же не без различий.

Глава 3. Сразу после установки...

79

а

б
Рис. 3.24. Изменение способа переключения языков ввода: в Fedora 26 (а) и в Ubuntu 17.04 (б)

80

Часть II. Основные сведения о Linux

а

б
Рис. 3.25. Изменение фона рабочего стола: в Fedora 26 (а) и в Ubuntu 17.14 (б)

Глава 3. Сразу после установки...

81

3.4. «Аварийные» комбинации клавиш,
использование клавиши
Компьютер завис и, казалось бы, не реагирует на нажатия клавиш? Вполне может
быть, но всегда можно попробовать следующие «аварийные» комбинации клавиш:


++ — обычно это перезагрузка системы, но реакция на нажатие этой комбинации клавиш задается в файле /etc/inittab;



++— аварийное завершение графической подсистемы
X.Org;



++ — «убивает» все запущенные процессы. Эта комбинация
клавиш помогает также для приведения в чувство X.Org, когда нет реакции даже
на ++;



++— посылает всем процессам (кроме init) сигнал SIGTERM.
После этого будут запущены только ядро и init. Войдите снова в систему и запустите заново сервисы /sbin/init 3 или /sbin/init 5;



++ — сбрасывает содержимое буферов ввода/вывода на диск.
Полезна, если вы боитесь, что в результате нажатия на кнопку Reset не будут
сохранены важные данные (команда на сохранение давалась, но вы не знаете,
была ли произведена физическая запись данных на носитель). Рекомендуется
нажать эту комбинацию несколько раз с небольшим перерывом (в 2-3 секунды).
Если вы увидели надпись Emergency Sync, то все нормально, можно нажимать
кнопку Reset. А вот если нет, то остается надеяться, что просто невозможен
вывод на консоль, а данные все же успели синхронизироваться;



++— используется для аварийного размонтирования всех
файловых систем. По окончании размонтирования вы увидите сообщение:
Emergency Umounting... OK;



++— практически эквивалентно нажатию кнопки Reset.
Полезно, если кнопки Reset нет, или она не нажимается. Перед нажатием этой
комбинации клавиш желательно нажать комбинации ++ и
++.

У некоторых пользователей комбинации клавиш с просто не срабатывают.
А все из-за того, что в ряде дистрибутивов по умолчанию они отключены. Прежде
всего решите, будете ли вы использовать эти комбинации. Если да, тогда отредактируйте файл /etc/sysctl.conf— в него нужно добавить строку (если такой строки там
нет):
kernel.sysrq = 1
Если же параметр kernel.sysrq в файле sysctl.conf присутствует, но его значение о,
исправьте это значение на 1, после чего или перезагрузите систему, или введите
команду:
sudo sysctl -w «kernel.sysrq=l»

82

Часть II. Основные сведения о Linux

Есть еще одна причина, по которой комбинация клавиш с может не работать. Как правило, на ноутбуках в целях экономии места на клавиатуре значения
некоторых клавиш перенагружают функциями. Так, например, на моем ноутбуке
HP функции клавиш и повешены на одну и ту же физическую
кнопку на клавиатуре. Обычно она работает как , но будучи нажата вместе
с клавишей , работает как . В таком случае все комбинации клавиш
с следует дополнить нажатием клавиши . При этом комбинация
++ будет правильно работать уже в варианте ++
++. Да, понимаю, что это неудобно, но другого выхода нет (если, конечно, не подключить к ноутбуку внешнюю полноразмерную клавиатуру).

3.5. Практические приемы работы с консолью
Работая с этой книгой, вам часто придется вводить различные команды, т. е. взаимодействие с консолью системы будет у вас довольно плотным. Некоторые команды (в основном, для работы с файловой системой) мы рассмотрим в главе 4, с рядом полезных команд вы познакомитесь в главе 25. Сейчас же поговорим о прак­
тических приемах работы в командной строке.

3.5.1. Автодополнение командной строки
и псевдонимы команд
Работа в консоли заключается во вводе нужной команды — вы вводите команду
(например, создания каталога, просмотра файла, вызова редактора и т. д.) и нажимаете клавишу . Команда содержит как минимум имя запускаемой программы. Кроме имени программы команда может содержать параметры, которые
будут переданы программе, а также символы перенаправления ввода/вывода (об
этом чуть позже). Естественно, вам нужно знать имя программы, а также параметры, которые необходимо ей передать.
Если вы помните название программы, а назначение параметров забыли, поможет
команда man. Man (от англ, manual) — это справочная система Linux. В ней имеется
информация о каждой программе, которая установлена в системе. Откуда система
знает обо всех программах? Все очень просто — разработчики программ под Linux
договорились, что вместе с программой будет поставляться специальный manфайл, — файл справочной системы. Понятно, если разработчик недобросовестный,
он может и не создать файл справочной системы, но это происходит очень редко.
И чтобы получить справку по какой-нибудь программе, нужно ввести команду:
man имя_программы
Вы никак не можете запомнить, как пишется та или иная команда? Если вы помните хотя бы на какую букву она начинается, воспользуйтесь функцией автодополне­
ния командной строки— введите первые буквы команды и нажмите клавишу
. При первом нажатии система попытается дополнить команду. Иногда дополнить команду невозможно — например, вы ввели букву а. Ясное дело, в системе

Глава 3. Сразу после установки...

83

есть несколько команд, которые начинаются на букву «а», и в такой ситуации система не может дополнить командную строку. Но если вы хотите просмотреть все
команды на букву «а», тогда нажмите еще раз клавишу .
Вам не с руки вписывать (даже с автодополнением) длинные команды? Тогда можно создать псевдонимы команд. Для этого в файл .bash_profile добавьте строки вида:
alias псевдоним= 'команда'
Например:
alias cfg-net='system-config-network'
Для того чтобы изменения вступили в силу, выйдите из консоли (командой logout)
и заново зарегистрируйтесь.
Пожалуй, для полноценной работы с консолью вам нужно знать еще одну команду — clear. Эта команда очищает консоль (терминал). Очень полезная команда,
особенно когда вы хотите все начать с «чистого листа».

3.5.2. Графические терминалы
Понимаю, что практически все дистрибутивы оснащены графическим интерфейсом, который к тому же запускается по умолчанию. Поэтому большинство пользователей не станут жертвовать удобным и привычным интерфейсом ради консоли.
Как уже упоминалось в разд. 3.1, вместо переключения в консоль можно использовать терминал— эмулятор консоли. Терминал— это графическая программа
(см. рис. 3.18), в окне которой вы можете вводить команды и видеть результаты их
выполнения.

3.5.3. Перенаправление ввода/вывода
С помощью перенаправления ввода/вывода мы можем перенаправить вывод одной
программы в файл или на стандартный ввод другой программы. Например, у вас не
получается настроить сеть, и вы хотите перенаправить вывод команды ifconfig
в файл, а затем разместить этот файл на форуме, где вам помогут разобраться
с проблемой. А можно командой ps -ах перенаправить список всех процессов
команде grep, которая найдет в списке интересующий вас процесс.
Рассмотрим следующую команду:
echo "some text" > file.txt
Символ > означает, что вывод команды, находящейся слева от этого символа, будет
записан в файл, находящийся справа от символа, при этом файл будет перезаписан.
Чуть ранее мы говорили о перенаправлении вывода программы ifconfig в файл.
Команда будет выглядеть так:
ifconfig > ifconfig.txt
Если вместо > указано >>, то исходный файл не будет перезаписан, а вывод команды добавится в конец файла:

84

Часть II. Основные сведения о Linux

echo "some text" > file.txt
echo "more text" >> file.txt
cat file.txt
some text
more text
Кроме символов > и >> для перенаправления ввода/вывода часто употребляется
вертикальная черта |. Предположим, что мы хотим вывести содержимое файла
big_text:
cat big_text
Но в файле big_text много строк, они быстро проскочат по экрану, и мы ничего не
успеем прочитать. Следовательно, целесообразно отправить вывод команды cat
какой-то программе, которая будет выводить файл на экран постранично, например:
cat big_text | more
Конечно, этот пример не очень убедительный, потому что для постраничного вывода гораздо удобнее команда less:
less big_text
Вот еще один интересный пример. Допустим, мы хотим удалить файл file.txt без
запроса — для этого можно указать команду:
echo у | rm file.txt
Команда rm запросит подтверждение удаления (нужно было бы нажать клавишу
), но за нас это сделает команда echo.
И еще один пример. Пусть имеется большой файл, и нам нужно найти в нем все
строки, содержащие подстроку 555-555. Чтобы не делать это вручную, можно воспользоваться командой:
cat file.txt | grep "555-555"
Надеюсь, приведенная в этом разделе информация сделает вашу работу в командной строке максимально комфортной.

глава 4

Файловая система Linux
4.1. Файловые системы,
поддерживаемые Linux
Linux поддерживает много различных файловых систем. Начинающий пользователь просто теряется, когда видит такое многообразие выбора, — ведь в качестве
корневой файловой системы доступны: ext2, ext3, ext4, XFS, ReiserFS, JFS и еще
несколько.
Ф айловая система ехт
Linux также до сих пор поддерживает файловую систему ext (самую первую файловую
систему Linux), однако выбрать ext при установке системы вы не сможете, — под­
держка ext добавлена в ядро лишь на тот случай, если вам попадется носитель ин­
формации, отформатированный в этой файловой системе.

«Родной» файловой системой современных дистрибутивов Linux является журналируемая файловая система ext4, но при установке Linux вы можете выбрать и предыдущие версии: ext3 или даже ext2.
Ж урналируемость
Все упомянутые здесь файловые системы (кроме ext2 и, естественно, ext) ведут журна­
лы своей работы, что позволяет восстановить данные в случае сбоя. Осуществляется
это следующим образом: перед тем как выполнить операцию, журналируемая файло­
вая система записывает ее в особый файл — журнал, а после выполнения опера­
ции удаляет запись из журнала. Представим, что после занесения операции в журнал
произошел сбой (например, отключилось электропитание). Позже, когда сбой будет
устранен, файловая система по журналу выполнит все действия, которые в него зане­
сены. Конечно, и это не всегда позволяет уберечься от последствий сбоя — стопро­
центной гарантии никто не дает, но все же такая схема работы лучше, чем вообще ни­
чего.

Основное отличие ext3 от ext2 как раз и заключается в ее журналируемости. При
этом файловые системы ext2 и ext3 совместимы, т. е. раздел ext3 могут читать программы, рассчитанные на ext2 (например, Total Commander и Ext2Fsd из-под
Windows). Современная версия — ext4 — построена на базе ext3, но отличия столь
существенны, что о них мы поговорим отдельно (см. разд. 4.9).

86

Часть II. Основные сведения о Linux

Итак, в качестве корневой файловой системы и файловой системы других Linuxразделов могут служить файловые системы ext3 и ext4, а также ReiserFS, XFS, JFS
и др. Рассмотрим особенности этих файловых систем, чтобы понять, использовать
ли их или же остановить свой выбор на стандартной ext4.
□ Файловая система ReiserFS (она же Reiser3) считается самой экономной, поскольку позволяет хранить несколько файлов в одном блоке (другие файловые
системы могут хранить в одном блоке только один файл или одну его часть).
Например, если размер блока равен 4 Кбайт, а файл занимает всего 512 байтов
(а таких файлов в разных каталогах Linux очень много), то 3,5 Кбайт в этом блоке просто не будут использоваться. А вот ReiserFS позволяет задействовать буквально каждый байт вашего жесткого диска!
Но у этой файловой системы есть два больших недостатка: она неустойчива
к сбоям, и ее производительность сильно снижается при фрагментации диска. Поэтому, если вы выбираете ReiserFS, покупайте источник бесперебойного питания и почаще дефрагментируйте жесткий диск.
И нтернет - магазин на базе M agento
Впрочем, именно благодаря ReiserFS, которая превосходно работает с мелкими фай­
лами, удалось обеспечить стабильную работу интернет-магазина на базе платформы
Magento. Magento создает множество (особенно при хорошей посещаемости) мелких
файлов в каталоге var/session. Файлов создается настолько много, что сервер (ис­
пользовался VDS с 5-ю ядрами и 16 Гбайт ОЗУ) начинал работать некорректно: в па­
нель управления Magento войти было нельзя, иногда зависал даже процесс Apache.
Сначала проблема решалась периодической очисткой каталога var/session. Однако
этот каталог приходилось очищать все чаще и чаще— по мере роста посещаемости.
Но очистка каталога var/session означает, что информация обо всех сессиях будет
удалена. Это создавало неудобства как для менеджеров магазина, которых «выбра­
сывало» из панели управления Magento, так и для самих посетителей — представьте,
выбирая покупки, вы добавили в корзину несколько десятков наименований, а вдруг
корзина взяла и очистилась! Проблему удалось решить благодаря переносу каталога
var/session на файловую систему ReiserFS. Сейчас в этом каталоге несколько мил­
лионов файлов, и сервер работает стабильно.



Файловая система Reiser4 впервые была представлена в 2004 году. Она поддерживает транзакции, задержку выделения пространства, а также сжатие и
шифрование данных. Однако создатель этой файловой системы Ханс Рейзер
(Hans Reiser) был осужден в 2008 году за убийство жены, и Reiser4 стала развиваться не столь активно, как хотелось бы. Тем не менее, эта файловая система
поддерживается группой энтузиастов во главе с Эдуардом Шишкиным. Впрочем, несмотря на все их старания, в основную ветку ядра файловую систему
Reiser4 так и не включили.

□ Файловая система XFS была разработана компанией Silicon Graphics в 2001 году. Основная ее особенность — высокая производительность (до 7 Гбайт/с).
Кроме того, XFS может работать с блоками размером от 512 байтов до 64 Кбайт.
Ясно, что если у вас много небольших файлов, то в целях экономии дискового
пространства можно установить самый маленький размер блока. А если вы
работаете с файлами большого размера (например, с мультимедиа), выбирайте
самые большие блоки,— тогда файловая система обеспечит максимальную

Глава 4. Файловая система Linux

87

производительность (конечно, если «железо» позволяет). Учитывая такие особенности этой файловой системы, ее нет смысла устанавливать на домашнем
компьютере, предназначенном для выхода в Интернет и просмотра любительских фотографий, поскольку вы просто не сможете оценить все ее преимущества. А вот если вы реально работаете с файлами очень большого размера, XFS
проявит себя с лучшей стороны. Стоит отметить, что эта файловая система используется в Fedora 26 Server, тогда как в Fedora 26 Workstation по умолчанию
устанавливается ext4. Другими словами, разработчики Fedora рекомендуют XFS
для серверов.


Файловая система ZFS (Zettabyte File System) создана в 2005 году компанией
Sun Microsystems для операционной системы Solaris. Отличительные особенности ZFS: отсутствие фрагментации, создание снапшотов диска, которые можно
использовать для восстановления данных, организация пулов хранения (storage
pools), изменяемый размер блоков, 64-разрядный механизм контрольных сумм.



Файловая система Btrfs (В-tree FS или Butter FS) изначально была представлена компанией Oracle. Многие считают эту файловую систему ответом Oracle
на файловую систему ZFS. Файловая система Btrfs настолько хороша, что разработчики openSUSE выбрали ее в качестве основной в openSUSE 13.2 — вместо
проверенной годами ext4. Ключевые особенности Btrfs: сжатие данных, оптимизированный для SSD режим работы, контроль за целостностью данных и метаданных, поддержка снапшотов диска и т. д.



Файловая система JFS (разработка IBM) сначала появилась в операционной
системе AIX, а потом была модифицирована под Linux. Основные достоинства
этой файловой системы — надежность и высокая производительность (выше, чем
у XFS). Однако у нее маленький размер блока (от 512 байтов до 4 Кбайт) — следовательно, она хороша на сервере баз данных, но не при работе с данными мультимедиа, поскольку блока в 4 Кбайт для обработки, например, видео в реальном
времени будет маловато.



Файловая система Тuх2 была создана Дэниэлем Филипсом как надстройка над
ext2, но не получила публичного распространения.



Файловая система ТuхЗ задумывалась как надстройка над Btrfs. Эта файловая
система вместо журналирования предлагает версионное восстановление файлов:
для каждого файла создается измененная копия, а не переписывается текущая
версия, что позволяет гибко управлять версиями.



Файловая система Xiafs основана на файловой системе MINIX. Это весьма
древняя разработка, она создавалась параллельно с ext2 на замену файловой системе ext, и не получила распространения.

4.1.1. Выбор файловой системы
С точки зрения производительности рассматриваемых файловых систем напрашиваются следующие рекомендации:


для рабочей станции и сервера общего назначения оптимальной файловой системой являются ext3/ext4 или ReiserFS (в крайнем случае);

88

Часть II. Основные сведения о Linux

□ на сервере баз данных можно использовать JFS — в этом случае (особенно, если
база данных огромная) будет наблюдаться определенный прирост производительности;


файловая система XFS — это удел станции мультимедиа, на обычной рабочей
станции или обычном сервере ее использовать не следует.

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


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



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

Файловые системы ext3/ext4, ReiserFS и XFS одинаково надежны, а вот надежность
JFS иногда оставляет желать лучшего. Учитывая это, а также и то, что программы
для восстановления файловой системы имеются только в системах ext*, на сервере
лучше использовать все-таки ext3/ext4.
Если вы уже интересовались характеристиками файловых систем, то могли в некоторых источниках встретить неверную информацию о максимальном размере файла для файловой системы ext3. Так, иногда сообщается, что максимальный размер
файла для ext3 равен 2 Гбайт, что делает ее непригодной для использования на сервере. Это не так. Раньше, во времена ext2 и ядер 2.2 и 2.4, действительно, существовало такое ограничение, но только для ext2. Файловая система ext3 поддерживает
файлы размером до 1 Тбайт, а максимальный размер тома (раздела) у нее равен
4 Тбайт, что вполне достаточно даже для сервера. Если же вам нужна поддержка
больших объемов данных, рекомендую обратить внимание на другие файловые
системы, — например, на ReiserFS (максимальный размер файла 16 Тбайт) или на
XFS/JFS (размер файла вообще исчисляется в петабайтах).

4.1.2. Linux и файловые системы Windows
Linux почти безо всяких ограничений поддерживает файловые системы FAT12
(DOS), FAT16 (или просто FAT, как в Windows 95) и FAT32 (Windows 98 и все последующие версии — до появления в них файловой системы NTFS). Вы можете из
Linux читать в файловых системах Windows файлы и каталоги, изменять, создавать
новые файлы и каталоги, удалять их — в общем все, что можно делать в файловой
системе непосредственно в Windows.
Однако файловые системы Windows не поддерживают установку прав доступа, поэтому можно даже не пытаться установить в Linux права доступа к файлу, который
находится на Windows-разделе, — у вас ничего не получится.

Глава 4. Файловая система Linux

89

О файловой системе NTFS — отдельный разговор. По умолчанию (без перекомпиляции ядра) Linux умеет только читать данные, расположенные в NTFS-разделе.
Однако даже после перекомпиляции ядра ряд ограничений на запись в NTFS-раздел
останется— например, вы не можете создавать в нем новые файлы, разрешено
только редактировать уже имеющиеся. Кстати, поддержка NTFS современным
ядром до сих пор экспериментальна, т. е. в один не совсем прекрасный момент при
попытке записи из-под Linux в раздел NTFS вы можете потерять в нем все свои
данные.
Я вас напугал? Существуют решения (и мы рассмотрим их в этой книге далее), позволяющие снять большую часть ограничений на запись в NTFS-разделы. Конечно,
все эти решения не идеальные: что-то работает, но ужасно медленно, что-то снимает далеко не все ограничения на запись, но, тем не менее, возможность записывать
данные в NTFS-раздел без их потери все же имеется.

4.1.3. Сменные носители
Linux превосходно работает со сменными CD/DVD- и USB-дисками и в большинстве случаев даже выполняет их автоматическое монтирование и размонтирование
(хотя эта функция доступна не во всех дистрибутивах). С другой стороны, автоматическое монтирование сменных носителей на сервере— это от лукавого, на
домашнем компьютере — да, но не на сервере. О монтировании, в том числе автоматическом, мы поговорим чуть позже в этой главе.

4.2. Особенности файловых систем Linux
4.2.1. Имена файлов в Linux
В Linux, по сравнению с Windows, несколько иные правила построения имен файлов, и вам придется с этим смириться. Начнем с того, что в Linux нет такого понятия, как расширение имени файла. В Windows, например, для файла Document1.doc
именем файла является фрагмент Documentl, a doc— это его расширение. В Linux же
Documentl.doc — это имя файла целиком, никакого разделения на имя и расширение
нет.
Максимальная длина имени файла— 254 символа. Имя может содержать любые
символы (в том числе и кириллицу), кроме / \ ? < > * " |. Тем не менее кириллицу
в именах файлов я бы не рекомендовал использовать вовсе. Впрочем, если вы уверены,
что не будете эти файлы передавать Windows-пользователям (на флешке, по электронной почте или еще как-то через Интернет) — используйте на здоровье. А при
обмене файлами с Windows-пользователями из-за возможных несовпадений кодировок вместо русскоязычного имени файла адресат может увидеть абракадабру... Так
что, имена файлов во всех случаях лучше писать латиницей.
Придется вам привыкнуть к тому, что Linux чувствительна к регистру в имени файла: FILE.txt и FiLe.Txt — это два разных файла.
Разделение элементов пути осуществляется символом / (прямой слэш), а не \ (обратный слэш), как в Windows.

90

Часть II. Основные сведения о Linux

4.2.2. Файлы и устройства
Пользователи Windows привыкли к тому, что файл — это именованная область данных на диске. Отчасти так оно и есть. Отчасти — потому, что приведенное определение файла было верно для DOS (Disk Operating System) и Windows.
В Linux же понятие файла значительно шире. Сейчас Windows-пользователи будут
очень удивлены: в Linux есть файлы устройств, позволяющие обращаться с устройством как с обычным файлом. Файлы устройств находятся в каталоге /dev (от
devices). Да, через файл устройства мы можем обратиться к устройству! Если вы
работали в DOS, то, наверное, помните, что что-то подобное было и там — существовали зарезервированные имена файлов: PRN (принтер), CON (клавиатура при
вводе, дисплей при выводе), LPTп (параллельный порт, п — номер порта), СОМя
(последовательный порт).
Ф айлы устройств
Кому-то может показаться, что разработчики Linux «украли» идею специальных фай­
лов у Microsoft — ведь Linux появилась в начале 90-х, a DOS — в начале 80-х годов
прошлого века. На самом деле это не так. Наоборот, Microsoft позаимствовала идею
файлов устройств из операционной системы UNIX, которая была создана еще до по­
явления DOS. Однако сейчас не время говорить об истории развития операционных
систем, поэтому лучше вернемся к файлам устройств.

Вот некоторые примеры файлов устройств:
□ /dev/sdx — файл жесткого диска;
□ /dev/sdxN — файл устройства раздела на жестком диске, N — это номер раздела;
□ /dev/scdN — файл устройства CD/DVD-привода;
□ /dev/mouse — файл устройства мыши;
□ /dev/modem — файл устройства модема (на самом деле является ссылкой на файл
устройства ttySn);
□ /dev/ttySn — файл последовательного порта, п — номер порта (ttySO соответствует СОМ1, ttySl — COM2 и т. д.).
В свою очередь, файлы устройств бывают двух типов: блочные и символьные. Обмен
информации с блочными устройствами, например с жестким диском, осуществляется
блоками информации, а с символьными — отдельными символами. Пример символьного устройства — последовательный порт.

4.2.3. Корневая файловая система и монтирование
Наверняка на вашем компьютере установлена система Windows. Запустите Проводник и просмотрите список логических дисков вашего компьютера (рис. 4.1).
Скорее всего, вы увидите значок гибкого диска (имя устройства А:), значки разделов жесткого диска (в нашем случае имеется один раздел — С:), значок привода
CD/DVD (D:). Таким способом, с помощью буквенных обозначений А:, С:, D:
и т. п., в Windows обозначаются корневые каталоги разделов жесткого диска
и сменных носителей.

Глава 4. Файловая система Linux

91

Рис. 4.1. Проводник в Windows 10

В Linux существует понятие корневой файловой системы. Допустим, вы установили Linux в раздел с именем /dev/sda3 — в этом разделе и будет развернута корневая
файловая система вашей Linux-системы. Корневой каталог обозначается прямым
слэшем — /, т. е. для перехода в корневой каталог в терминале (или консоли) нужно
ввести команду cd /.
Понятно, что на вашем жестком диске есть еще и другие разделы. Чтобы получить
к ним доступ, вам нужно подмонтироватъ их к корневой файловой системе. После
монтирования вы сможете обратиться к содержимому разделов через точку монтирования — назначенный вами при монтировании специальный каталог, например,
/mnt/cdrom. Монтированию файловых систем посвящен разд. 4.7, поэтому сейчас мы
не станем говорить об этом процессе подробно.

4.2.4. Стандартные каталоги Linux
Файловая система любого дистрибутива Linux содержит следующие каталоги:
□ / — корневой каталог;
□ /bin — стандартные программы Linux (cat, ср, Is, login и т. д.);

92

Часть II. Основные сведения о Linux

□ /boot— каталог загрузчика, содержит образы ядра и Initrd, может содержать
конфигурационные и вспомогательные файлы загрузчика;
□ /dev — файлы устройств;
□ /etc — конфигурационные файлы системы;
□ /home — домашние каталоги пользователей;
□ /lib — библиотеки и модули;
□ /lost+found — восстановленные после некорректного размонтирования файловой
системы файлы и каталоги;
□ /misc — может содержать все, что угодно, равно как и каталог /opt;
□ /mnt — обычно содержит точки монтирования;
□ /ргос — каталог псевдофайловой системы procfs, предоставляющей информацию
о процессах;
□ /root — каталог суперпользователя root;
□ /sbin — каталог системных утилит, выполнять которые имеет право пользователь
root;
□ /tmp — каталог для временных файлов;
□ /usr — пользовательские программы, документацию, исходные коды программ и
ядра;
□ /var— постоянно изменяющиеся данные системы, например, очереди системы
печати, почтовые ящики, протоколы, замки и т. д.

4.3. Внутреннее строение файловой системы
Что такое файловая система? Можно встретить различные определения, и все они
будут правильные. Наиболее точным я считаю следующее:
Файловая система — это способ представления информации на носителе данных,
а также часть операционной системы, обеспечивающая выполнение операции над
файлами.

Из приведенного определения ясно, что файловая система состоит из двух частей,
двух уровней: уровня представления данных и набора системных вызовов для работы с этими данными.
Любая операционная система может работать с разными файловыми системами —
например, со своей основной файловой системой и с файловой системой компактдисков (ISO 9660). Задача операционной системы заключается в предоставлении
пользователю стандартного интерфейса, позволяющего ему обращаться к каждой
файловой системе, не вникая в ее особенности. Например, в Linux для открытия
файла служит системный вызов open () — программа просто вызывает open (), передав ему имя файла, а на какой файловой системе расположен этот файл — дело
третье.

Глава 4. Файловая система Linux

93

Рассмотрим схему архитектуры файловой системы (рис. 4.2): верхние два элемента — это пользовательский уровень, все последующие — уровень ядра.
Приложение может использовать функции glibc (библиотека GNU С) или же напрямую системные вызовы ядра — тут уж как будет угодно программисту. Использовать функции glibc удобнее, но, вызывая непосредственно системные вызовы, —
например, open(), read(), write(), close(), — можно немного повысить производительность приложения — ведь вы минуете glibc, которая все равно использует те
же системные вызовы.

Рис. 4.2. Архитектура
файловой системы

VFS — это виртуальная файловая система. Именно она позволяет добиться существующего сейчас уровня абстракции. Каждая файловая система имеет свои особенности. Если бы не было VFS, то пришлось бы разрабатывать разные версии системных вызовов для каждого типа поддерживаемой файловой системы, например
open_ext2 () для открытия файла, находящегося на файловой системе ext2, или
open vfat () — для VFAT. Другими словами, VFS делает системные вызовы независимыми от типа используемой файловой системы.
Драйверы устройств служат для физического доступа к носителям данных. Ведь
эти самые носители тоже различны— в компьютере может быть установлено
несколько жестких дисков с разными интерфейсами — например, диски РАТА и
SATA.
Схематически раздел диска с файловой системой ext4 можно представить так, как
показано на рис. 4.3.

Рис. 4.3. Структура файловой системы ext4

94

Часть II. Основные сведения о Linux

Жесткий диск физически разбивается на секторы по 512 байтов каждый. Первый
сектор каждого раздела представляет собой загрузочную область. В загрузочной
области первичного раздела находится главная загрузочная запись (Master Boot
Record, MBR) — программа, которая запускает операционную систему. На других
разделах такой записи нет.
Все последующие (после загрузочной записи) секторы объединены в логические
блоки. Блок — это наименьшая адресуемая порция данных. Размер блока может
быть 1, 2 или 4 Кбайт. Блоки группируются в группы блоков. Нумерация групп
начинается с 1.
После загрузочного сектора (блока загрузки) следует суперблок, хранящий всю информацию о файловой системе. Размер суперблока — 1 Кбайт (1024 байта). Суперблок дублируется в каждой группе блоков, что позволяет восстановить его в случае
повреждения файловой системы.
В суперблоке хранится следующая информация: версия заголовка, количество монтирований (именно по этому «счетчику» система понимает, что пора проверить ту
или иную файловую систему), размер блока, количество свободных блоков, количество свободных i-узлов, а также ссылка на первый i-узел (i-узел каталога /).
Каждому файлу соответствует только один i-узел, хранящий метаданные файла, —
все атрибуты файла, кроме его имени, а именно: режим, информацию о владельце и
группе, время доступа, время модификации, время создания, а также список ссылок
на файл.
Кроме атрибутов файла в i-узле хранится указатель на данные файла. Обычно это
массив из 15 адресов блоков, 12 из которых непосредственно ссылаются на номера
блоков, хранящие данные файла. Если данные занимают более 12 блоков (напомню, что обычно 1 блок = 1 Кбайт), то используется косвенная адресация. Поэтому
следующий адрес (13-й)— это адрес блока, где находится список адресов других
блоков, содержащих данные файла.
Не нужно быть гением в математике, чтобы вычислить, сколько блоков можно разместить путем косвенной адресации. Все зависит от размера блока, который может
быть 1, 2 или 4 Кбайт. Следовательно, можно адресовать 256, 512 или 1024 блока.
А что делать, если файл еще больше? Тогда используется двойная и тройная косвенная адресация: 14-й адрес— это адрес блока, содержащего список последующих адресов блоков данных этого файла, 15-й адрес используется тройной косвенной адресацией и содержит список адресов блоков, которые являются блоками
двойной косвенной адресации.
Ранее было сказано, что в i-узле хранится вся информация о файле, кроме его имени. Имя файла хранится в каталоге, к которому принадлежит файл. А отсюда следует, что одному i-узлу может соответствовать неограниченное количество имен
файла (ссылок). При этом ссылки (дополнительные имена) могут находиться как
в одном каталоге с исходным файлом, так и в любом другом каталоге файловой
системы.

Глава 4. Файловая система Linux

95

Как мы уже знаем, в Linux есть обычные файлы и есть файлы устройств. В чем
между ними разница? Эта разница проявляется на уровне i-узла: i-узел обычного
файла указывает на блоки данных, а i-узел файла устройства — на адрес драйвера
в ядре Linux.

4.4. Команды для работы с файлами
и каталогами
4.4.1. Работа с файлами
Здесь мы рассмотрим основные команды для работы с файлами в Linux (табл. 4.1),
а в последующих разделах этой главы — команды для работы с каталогами, ссылками и поговорим о правах доступа к файлам и каталогам.
Таблица 4.1. Основные команды Linux, предназначенные для работы с файлами
Команда

Назначение

touch

Создает пустой файл

cat

Просмотр текстового файла

tac

Вывод содержимого текстового файла в обратном порядке, т. е.
сначала выводится последняя строка, потом предпоследняя и т. д.

ср

Копирует файл в файл . Если
существует, программа попросит разрешение на его перезапись

mv

Перемещает файл в файл . Эту же команду можно
использовать и для переименования файла

rm

Удаляет файл

locate

Производит быстрый поиск файла

which

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

less

Используется для удобного просмотра файла с возможностью
скроллинга (постраничной прокрутки)

Е ще раз о консоли . . .
Все представленные здесь команды предназначены для работы в консоли, т. е. в тек­
стовом режиме. Понятно, что большинство современных дистрибутивов запускаются
в графическом режиме, поэтому некоторые пользователи Linux даже не подозревают
о том, что существует консоль. Да, таково новое поколение Linux-пользователей, ко­
торым проще использовать графический файловый менеджер, чем вводить команды.
Но если вы хотите стать квалифицированным пользователем Linux, то просто обязаны
знать, как работать в консоли, иначе уподобитесь Windows-пользователям, которые
при каждом сбое переустанавливают операционную систему... Если вы пропустили
главу 3, в которой рассматривается работа с консолью, настоятельно рекомендую
вернуться и прочитать ее!

Часть II. Основные сведения о Linux

96

Рассмотрим небольшую серию команд (протокол выполнения этих команд приведен на рис. 4.4):
touch file.txt
echo "some text" > file.txt
cat file.txt
cp file.txt file-copy.txt
cat file-copy.txt
rm file.txt
cat file.txt
mv file-copy.txt file.txt
cat file.txt
Первая команда (touch) создает в текущем каталоге файл fiie.txt. Вторая команда
(echo) записывает строку some text в этот же файл. Обратите внимание на символ > — это символ перенаправления ввода/вывода, о котором мы поговорим чуть
позже.

Рис. 4.4. Операции с файлом

Третья команда (cat) выводит содержимое файла— в файле записанная нами строка some text. Четвертая команда (ср) копирует файл file.txt в файл с именем filecopy.txt. После этого мы опять используем команду cat, чтобы вывести содержимое файла file-copy.txt — надо же убедиться, что файл действительно скопировался.
Шестая команда (т) удаляет файл fiie.txt. При удалении система спрашивает,
хотите ли вы удалить файл. Если хотите удалить, то нужно нажать клавишу , а
если нет, то . Точно ли файл удален? Убедимся в этом: введите команду cat
fiie.txt. Система нам сообщает, что нет такого файла.
Восьмая команда (mv) переименовывает файл file-copy.txt в файл fiie.txt. Последняя команда выводит новый файл fiie.txt. Думаю, особых проблем с этими
командами у вас не возникло, тем более, что принцип действия этих команд вам
должен быть знаком по командам DOS, которые, как квалифицированный пользователь Windows, вы должны знать наизусть.

Глава 4. Файловая система Linux

97

Вместо имени файла иногда очень удобно указать маску имени файла. Например,
у нас есть много временных файлов,имена которых заканчиваются фрагментом tmp.
Для их удаления нужно воспользоваться командой: rm *tmp.
Если же требуется удалить все файлы в текущем каталоге, можно просто указать
звездочку: rm * .
Аналогично можно использовать символ ?, который, в отличие от звездочки, заменяющей последовательность символов произвольной длины, заменяет всего один
символ. Например, нам нужно удалить все файлы, имена которых состоят из трех
букв и начинаются на S:
rm s??
Будут удалены файлы si4, sqm, sr6 и т. д., но не будут тронуты файлы, имена которых состоят более чем из трех букв и которые не начинаются на S.
Маски имен можно также использовать и при работе с каталогами.

4.4.2. Работа с каталогами
Основные команды для работы с каталогами приведены в табл. 4.2.
Таблица 4.2. Основные команды для работы с каталогами
Команда

Описание

mkdir

Создание каталога

cd

Изменение каталога

ls

Вывод содержимого каталога

rmdir

Удаление пустого каталога

rm -r

Рекурсивное удаление каталога

При указании имени каталога можно использовать следующие символы:
□ . — означает текущий каталог. Если вы введете команду cat ./file , то она
выведет файл file , который находится в текущем каталоге;
□ .. — родительский каталог. Например, команда cd .. переведет вас на один
уровень вверх по дереву файловой системы;
□ ~ — домашний каталог пользователя (об этом мы поговорим позже).
Теперь рассмотрим пример работы с каталогами на практике. Выполните следующие команды:
mkdir directory
cd directory
touch filel.txt
touch file2.txt
ls

98

Часть II. Основные сведения о Linux

cd . .
ls directory
rm directory
rmdir directory
rm -r directory
Первая команда (mkdir) создает каталог directory в текущем каталоге. Вторая
команда (cd) переводит (изменяет каталог) в только что созданный каталог. Следующие две команды touch создают в новом каталоге два файла: filel.txt и fiie2.txt.
Команда ls без указания каталога выводит содержимое текущего каталога.
Команда cd .. переводит в родительский каталог. Как уже было отмечено, в Linux
родительский каталог обозначается так: . . (две точки), а текущий так: . (одна
точка). То есть, находясь в каталоге directory, мы можем обращаться к файлам
file1.txt и file2.txt без указания каталога или же так: ./file1.txt и
./file2.txt.
П рямой слэш !
Еще раз обратите внимание — в Linux, в отличие от Windows, для разделения эле­
ментов пути служит прямой слэш (/), а не обратный (\).

Кроме обозначений .. и . в Linux часто используется обозначение ~ — это домаш­
ний каталог. Предположим, что наш домашний каталог /home/den. В нем мы создали подкаталог dir и поместили в него файл file1.txt. Полный путь к файлу можно
записать так:
/home/den/dir/filel.txt
или же так:
~/dir/filel.txt
Как видите, тильда (~) заменяет часть пути. Удобно? Конечно!
Поскольку мы находимся в родительском для каталога directory каталоге, чтобы
вывести содержимое только что созданного каталога, в команде ls нам нужно четко указать имя каталога:
ls directory
Команда rm используется для удаления каталога. Но что мы видим — система отказывается удалять каталог! Пробуем удалить его командой rmdir , но и тут отказ.
Система сообщает нам, что каталог не пустой, т. е. содержит файлы. Для удаления
каталога нужно удалить все файлы. Конечно, делать это не сильно хочется, поэтому
проще указать опцию -r команды rm для рекурсивного удаления каталога. В этом
случае сначала будут удалены все подкаталоги (и все файлы в этих подкаталогах),
а затем будет удален сам каталог (рис. 4.5).
Команды ср и mv работают аналогично: для копирования (перемещения/переименования) сначала указывается каталог-источник, а потом каталог-назначение.
Для каталогов желательно указывать параметр -r, чтобы копирование (перемещение) производилось рекурсивно.

Глава 4. Файловая система Linux

99

Рис. 4.5. Операции с каталогами

4.5. Использование ссылок. Команда In
4.5.1. Жесткие и мягкие ссылки
Файлы и каталоги физически хранятся на устройстве хранения в виде набора блоков. Информация о файле (владелец, права доступа, размер файла, время последнего обращения, признак каталога и т. д.) хранится в inode — индексном дескрипторе.
Номер inode также называют порядковым номером файла. Этот номер является
уникальным в пределах отдельной файловой системы. Запись каталога содержит
имя файла (или каталога), а также указатель на дескриптор inode, в котором хранится информация об этом файле (каталоге).

Ссылки — это дополнительные записи каталога, позволяющие обращаться к файлам или каталогам по нескольким именам. Жесткая ссылка — это запись каталога,
указывающая на дескриптор inode, а мягкая (или символическая) ссылка— это
запись каталога, указывающая на имя объекта с другим inode.
Механизмы хранения дополнительных имен (ссылок) зависят от типа файловой
системы и от длины имени.
Жесткие ссылки можно создать только для файлов, для каталогов их создать невозможно. Исключение составляют лишь специальные записи каталогов, указывающие на сам каталог и на ее родительский каталог, — то есть . и .. являются
жесткими ссылками. При попытке создать ссылку для каталога вы увидите следующее сообщение об ошибке:
ln: 'link': hard link not allowed for directory
ln: 'link': не допускается создавать жесткие ссылки на каталоги

100

Часть II. Основные сведения о Linux

Жесткие ссылки можно использовать только в пределах одной файловой системы,
поскольку они являются указателями на дескрипторы inode, которые, как уже отмечалось, являются уникальными только в пределах отдельной файловой системы.
Файл удаляется только тогда, когда удаляется последняя ссылка на его inode,
и счетчик ссылок сбрасывается до 0. Об удалении ссылок мы поговорим позже, так
как этот вопрос заслуживает отдельного рассмотрения.
Мягкая (или символическая ссылка, symlink) указывает на имя другого файла или
каталога, а не на его inode. В этом и есть различие мягких ссылок от жестких. Мягкие ссылки можно создавать на объекты разных файловых систем, а также на каталоги. Удаление мягкой ссылки не приводит к удалению файла или каталога, на которую она указывает, а удаление целевого объекта не приводит к автоматическому
удалению мягких ссылок. Другими словами, если у вас есть файл file.txt и вы создали на него символическую ссылку symlink.txt, то в случае удаления файла file.txt
ссылка окажется «битой» — она не будет ни на что указывать.

4.5.2. Создание ссылок
Для создания ссылок служит команда in:
ln file.txt linkl
ln -s file.txt link2
Первая команда создает жесткую ссылку link1, ссылающуюся на текстовый файл
file.txt. Вторая команда создает символическую ссылку link2, которая ссылается
на этот же текстовый файл file.txt.
Модифицируя ссылку (все равно какую: linkl или link2), вы автоматически модифицируете исходный файл file.txt.

4.5.3. Определение ссылок
Мы только что научились создавать ссылки. Теперь давайте посмотрим, как различить — где файл, а где ссылка. Представим, что мы создали файл и две ссылки на
него:
echo "Hello" > file
ln -s file symlink
ln file hardlink
Если ввести команду is, то символическая ссылка будет выделена цветом. Каким
именно— зависит от вашего дистрибутива. Так, в Ubuntu символические ссылки
выделяются цветом ближе к бирюзовому. Если в вашем дистрибутиве символические ссылки не выделяются, попробуйте указать опцию -- color=auto:
ls --color=auto
А вот жесткие ссылки никак не выделяются, и визуально нельзя понять: перед нами
файл или ссылка— по крайней мере, в Ubuntu. Однако есть дистрибутивы, где
жесткие ссылки выделяются каким-либо цветом, — например, темно-синим.

101

Глава 4. Файловая система Linux

Рассмотрим вывод команды ls -1:
ls -1
итого 8
-rw-rw-r— 2 den denб июл
-rw-rw-r— 2 den den6 июл
lrwxrwxrwx 1den den4 июл

15
15
15

08:46 file
08:46 hardlink
08:46 symlink ->file

Как можно видеть, проще всего с символическими ссылками — с помощью стрелки
(->) сразу показывается, на какой файл указывает ссылка.
Также найти все символические ссылки можно с помощью команды find:
find . -type 1
Найти с помощью этой команды все символические ссылки на файл "file" можно
так:
find . -lname "file"
С жесткими ссылками все не так просто. Первая колонка вывода команды ls -1 —
это права доступа. Вторая колонка — счетчик жестких ссылок.
Посмотрим на вывод команды ls -1, которая показывает индексные дескрипторы
файлов:
ls -i
2130783 file
2130783
hardlink
2130784
symlink
Как можно видеть, здесь есть два одинаковых дескриптора (2130783) и два имени
для этого дескриптора.

4.5.4. Удаление и жесткие ссылки
Мы подходим к самому интересному вопросу. Как уже отмечалось, файл не будет
удален, пока на него указывает хоть одна жесткая ссылка.
Ранее приводился вывод команды ls с опцией -i. Также посмотрите на вывод
командыls -1 is -1 — вторая колонка показывает количество жестких ссылок на inode.
По сути, в данном контексте нет особой разницы между ссылкой и файлом. Вы можете удалить файл file:
rm file
ls -1
итого 4
-rw-rw-r-- 1 den den 6 июл 15 08:46 hardlink
lrwxrwxrwx 1 den den 4 июл 15 08:46 symlink -> file
И вы увидите, что счетчик ссылок оказался уменьшен на единицу. Но ваши данные
останутся в файле hardlink, и вы сможете их прочитать. Почему же файл file был
удален, если на него указывала жесткая ссылка hardlink? Да потому, что жесткая
ссылка указывает не на имя фаша, а на inode\ А ведь индексный дескриптор
2130783 остался, и он не будет удален, пока счетчик жестких ссылок больше 0!

102

Часть II. Основные сведения о Linux

Именно поэтому, если вы хотите защитить файл от удаления путем создания на него жесткой ссылки — это неправильный вариант. Для защиты файла от случайного
удаления используйте команду chattr +i (она также будет рассмотрена в этой главе позже):
touch f
sudo chattr +i f
rm f
rm: удалить защищенный от записи пустой обычный файл 'f'? у
rm: невозможно удалить ' f ' : Операция не позволена
Удалить файл можно, только сняв флаг i:
chattr -i f
Кстати, после удаления файла file, на который указывала символическая ссылка
symiink, последняя превращается в «битую» ссылку— в выводе команды is она
отмечается красным цветом на черном фоне. Таким образом, символическая ссылка
превращается в «битую» по следующим причинам:
□ удаление целевого файла;
□ переименование целевого файла;
□ переименование элементов пути к целевому файлу. Например, ссылка указывала
на файл /home/den/links/file, а потом каталог links был переименован в test.
Возвращаемся к жестким ссылкам— найти все жесткие ссылки на файл можно
командой find С опцией -samefile:
find . -samefile file

4.5.5. Разница
между копированием и созданием жесткой ссылки
Учитывая, что жесткая ссылка— это практически то же самое, что и файл, возникает вопрос: когда лучше копировать файл, а когда создавать ссылки?
Все зависит от поставленных задач. Ведь жесткая ссылка ссылается на тот же inode,
что и файл, следовательно, при изменении файла (или жесткой ссылки) изменяется
и содержимое файла. Если же вы создаете копию файла, то ей будет присвоен
другой inode, и, следовательно, изменение копии никак не отразится на оригинале
и наоборот.

4.6. Права доступа и атрибуты файла.
Команды chown, chmod и chattr
4.6.1. Права доступа к файлам и каталогам
Для каждого каталога и файла вы можете задать права доступа. Точнее, права доступа автоматически задаются при создании каталога/файла, а вам при необходимости можно их изменить. Какая может быть необходимость? Например, вам нужно,

Глава 4. Файловая система Linux

103

чтобы к вашему файлу-отчету смогли получить доступ пользователи — члены вашей группы. Или вы создали обычный текстовый файл, содержащий инструкции
командного интерпретатора. Чтобы этот файл стал сценарием, вам нужно установить право на выполнение для этого файла.
Существуют три права доступа: чтение (r), запись (w), выполнение (х). Для каталога
право на выполнение означает право на просмотр содержимого каталога.
Вы можете установить разные права доступа для владельца (т. е. для себя), для
группы владельца (т. е. для всех пользователей, входящих в одну с владельцем группу) и для прочих пользователей. Пользователь root может получить доступ к любому файлу или каталогу вне зависимости от прав, которые вы установили.
Чтобы просмотреть текущие права доступа, введите команду:
ls -1
Например,
ls -1 video.txt
В ответ программа выведет следующую строку:
-r--r----- 1den group 300 Apr 1111:11 video.txt
В этой строке фрагмент: -r--r----- описывает права доступа:
□ первый символ — это признак каталога. Сейчас перед нами файл. Если бы перед
нами был каталог, то первый символ был бы символом d (от directory);
□ последующие три символа (r--) определяют права доступа владельца файла ши
каталога. Первый символ — это чтение, второй — запись, третий — выполнение. Как можно видеть, владельцу разрешено только чтение этого файла, запись
и выполнение запрещены, поскольку в правах доступа режимы w и х не определены;
□ следующие три символа (r--) задают права доступа для членов группы владель­
ца. Права такие же, как и у владельца: можно читать файл, но нельзя изменять
или запускать;


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

Права доступа задаются командой chmod. Существуют два способа указания прав
доступа: символьный (когда указываются символы, задающие право доступа, — r,
w, х) и абсолютный.

104

Часть II. Основные сведения о Linux

Так уж заведено, что в мире UNIX чаще пользуются абсолютным методом. Разберемся, в чем он заключается, и рассмотрим следующий набор прав доступа:
rw-r-Этот набор предоставляет владельцу право чтения и модификации файла (rw-),
запускать файл владелец не может. Члены группы владельца могут только просматривать файл (r--), а все остальные пользователи не имеют вообще никакого
доступа к файлу.
Возьмем отдельный набор прав, например, для владельца: rw-.
Чтение разрешено— мысленно записываем 1, запись разрешена— запоминаем
еще 1, а вот выполнение запрещено, поэтому запоминаем 0. Получается число 110.
Если из двоичной системы перевести число ПО в восьмеричную, получится число 6. Для перевода можно воспользоваться табл. 4.3.
Таблица 4.3. Преобразование чисел из двоичной системы в восьмеричную
Двоичная система

Восьмеричная
система

Двоичная система

Восьмеричная
система

000

0

100

4

001

1

101

5

010

2

110

6

011

3

111

7

Аналогично произведем разбор прав для членов группы владельца. Получится двоичное 100, т. е. восьмеричное 4. С третьим набором (---) все вообще просто — это
000, т. е. 0.
Записываем полученные числа в восьмеричной системе в порядке владелец-группаостальные. Получится число 640 — это и есть права доступа. Для того чтобы установить эти права доступа, выполните команду:
chmod 640
Наиболее популярные права доступа:
□ 644 — владельцу можно читать и изменять файл, остальным пользователям —
только читать;
□ 666 — читать и изменять файл можно всем пользователям;
□ 777 — всем можно читать, изменять и выполнять файл.
Право выполнения для каталога
Напомню, что для каталога право выполнения — это право просмотра оглавления
каталога.

Иногда символьный метод оказывается проще. Например, чтобы файл script сделать
исполнимым, можно отдать команду:
chmod +х script

Гпава 4. Файловая система Linux

105

Для того чтобы снять право выполнения, указывается параметр -х:
chmod -х script
Подробнее о символьном методе вы сможете прочитать в руководстве по команде
chmod (выполнив команду man chmod).

4.6.2. Смена владельца файла
Если вы хотите «подарить» кому-то файл, т. е. сделать какого-либо пользователя
владельцем файла, вам нужно использовать команду chown:
chown пользователь файл
Последствия изменения владельца файла
Возможно, что после изменения владельца файла вы сами не сможете получить к не­
му доступ, ведь владельцем будете уже не вы.

4.6.3. Специальные права доступа (SUID и SGID)
Мы рассмотрели обычные права доступа к файлам, но в Linux есть еще так называемые специальные права доступа: SUID (Set User ID root) и SGID (Set Group
ID root).
Эти права доступа позволяют обычным пользователям запускать программы, требующие для своего запуска привилегий пользователя root. Например, демон pppd
требует привилегий root, но чтобы каждый раз при установке РРР-соединения (модемное или ADSL-соединение) не входить в систему под именем root, достаточно
установить специальные права доступа для демона pppd. Делается это так:
chmod u+s /usr/sbin/pppd
Однако не нужно увлекаться такими решениями, поскольку каждая программа, для
которой установлен бит SUID, является потенциальной «дырой» в безопасности
системы. Для выполнения программ, требующих прав root, намного рациональнее
использовать программы sudo и su (описание которых можно получить по командам man sudo И man su).

4.6.4. Атрибуты файла. Запрет изменения файла
С помощью команды chattr можно изменить атрибуты файла. Параметр + устанавливает атрибут, а параметр - атрибут снимает. Например:
# chattr +i /boot/grub/menu.1st
Эта команда устанавливает атрибут i, запрещающий любое изменение, переименование и удаление файла. Установить этот атрибут, равно как и снять его, имеет
право только суперпользователь или процесс с возможностью CAP_LINUX_IMMUTABLE.
Чтобы изменить файл, нужно очистить атрибут с помощью команды:
# chattr -i /boot/grub/menu.1st

106

Часть II. Основные сведения о Linux

Если установить атрибут j, то все данные, прежде чем быть записанными непосредственно в файл, будут сохранены в журнал файловой системы. Этот атрибут
имеет смысл только, если файловая система смонтирована с опциями data=ordered
или data=writeback (см. разд. 4.8). Когда файловая система смонтирована с опцией
data=journal, установка атрибута j не имеет смысла, поскольку все данные файла
и так уже журналируются.
Рассмотрим еще несколько атрибутов:
□ когда для файла установлен атрибут A (прописная буква!), тогда не происходит
обновление записи atime (в ней хранится время доступа к файлу). Это позволяет
избежать лишних дисковых операций ввода/вывода, что полезно для медленных
компьютеров;


если для файла установлен атрибут а, в файл можно только добавлять данные.
Этот атрибут имеет право установить (или очистить) суперпользователь или
процесс с возможностью cap_linux_immutable;

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


когда изменяется каталог с установленным атрибутом D, изменения сразу же
записываются на диск. Это эквивалентно применению опции монтирования
dirsync;



если для файла установлен атрибут d, для него не будет выполнено резервное
копирование программой dump;

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


при удалении файла с атрибутом и его содержимое сохраняется на диске, что
позволяет впоследствии легко восстановить этот файл;

□ атрибуты X и Z используются экспериментальными заплатками сжатия для служебных целей.
Установить любой атрибут можно командой chattr, а просмотреть— командой
lsattr. Об остальных атрибутах вы сможете прочитать в справочной системе:
man chattr

4.6.5. Команды поиска файлов: find, which и locate
Для поиска файлов в Linux служит команда find. Это довольно мощная утилита со
сложным синтаксисом, и далеко не всегда она нужна обычному пользователю. Намного проще установить файловый менеджер mc и использовать встроенную в него
функцию поиска.

Глава 4. Файловая система Linux

107

Но команду find мы все же рассмотрим, по крайней мере ее основы. Синтаксис
команды следующий:
find список_поиска выражение
Мощность команды find заключается во множестве самых разных параметров
поиска, которые из-за их количества не так-то просто запомнить. К тому же find
может выполнять операции над найденными файлами. Например, вы можете найти
временные файлы и сразу удалить их.
Подробно опции команды find мы изучать не станем — это вы можете сделать самостоятельно с помощью команды man find. Здесь мы рассмотрим лишь несколько
примеров использования этой команды:
□ найти файлы с именем a.out (точнее, в имени которых содержится строка
«a.out»), поиск начать с корневого каталога (/):
find / -name a.out
□ найти файлы по маске *. txt:
find / -name '*.txt'
□ найти файлы нулевого размера, поиск начать с текущего каталога (.):
find . -size Ос
Кстати, для поиска пустых файлов намного проще использовать параметр
-empty:
find . -empty
□ найти файлы, размер которых от 100 до 150 Мбайт, поиск производить в домашнем каталоге и всех его подкаталогах:
find ~ -size +100М -size -150М
□ найти все временные файлы и удалить их (для каждого найденного файла будет
запу щена команда rm):
# find / -name *.tmp -ok rm {} \;
Вместо параметра -ok можно использовать параметр -ехес, который также
запускает указанную после него команду, но не запрашивает подтверждение
выполнения этой команды для каждого файла.
Кроме команды find можно использовать команды which и locate. Первая выводит
полный путь к программе или к сценарию, если программа или сценарий находится
в списке каталогов, заданном в переменной окружения path:
which sendmail
Команда locate ищет в базе данных демона located файлы, соответствующие заданному образцу. Недостаток этой команды в том, что located имеется далеко не во
всех дистрибутивах, поэтому команды locate у вас может и не быть. Зато если
located имеется и запущен, поиск файлов будет осуществляться быстрее, чем с помощью find.

108

Часть II. Основные сведения о Linux

4.7. Монтирование файловых систем
4.7.1. Кома нды mount и umount
Чтобы работать с какой-либо файловой системой, необходимо примонтироватъ ее
к корневой файловой системе. Например, вставив в разъем USB флешку, нужно
подмонтировать файловую систему флешки к корневой файловой системе, — только так мы сможем получить доступ к файлам и каталогам, которые на этой флешке
записаны. Аналогичная ситуация с жесткими, оптическими дисками и другими носителями данных.
Если вы хотите заменить сменный носитель данных (флешку, компакт-диск),
вам нужно сначала размонтировать файловую систему, затем извлечь носитель
данных, установить новый и заново смонтировать файловую систему. В случае
с флешкой о размонтировании должны помнить вы сами, поскольку при этом выполняется синхронизация буферов ввода/вывода и файловой системы, т. е. данные
физически записываются на диск, если это еще не было сделано. А компакт-диск
система не разрешит вам извлечь, если он не размонтирован. В свою очередь, размонтировать файловую систему можно только тогда, когда ни один процесс ее не
использует.
При завершении работы системы (перезагрузке, выключении компьютера) размонтирование всех файловых систем выполняется автоматически.
Команда монтирования (ее нужно выполнять с привилегиями root) выглядит так:
# mount [опции]
Здесь точка монтирования — это каталог, через который будет осуществляться доступ к монтируемой файловой системе. Например, если вы подмонтировали компакт-диск к каталогу /mnt/cdrom, то получить доступ к файлам и каталогам, записанным на компакт-диске, можно будет через точку монтирования (именно этот каталог: /mnt/cdrom). Точкой монтирования может быть любой каталог корневой
файловой системы, хоть /ааа-111. Главное, чтобы этот каталог существовал на момент монтирования файловой системы.
В некоторых современных дистрибутивах запрещен вход в систему под именем
суперпользователя — root. Поэтому для выполнения команд с привилегиями root
вам нужно использовать команду sudo. Например, чтобы выполнить команду монтирования привода компакт-диска, вам нужно ввести команду:
sudo mount /dev/scdO /mnt/cdrom
Перед выполнением команды mount команда sudo попросит вас ввести пароль root.
Если введенный пароль правильный, то будет выполнена команда mount.
Для размонтирования файловой системы служит команда umount:
# umount

Глава 4. Файловая система Linux

109

4.7.2. Файлы устройств и монтирование
В этой главе мы уже говорили о файлах устройств. Здесь мы вернемся к ним снова,
но в контексте монтирования файловой системы.
Как уже было отмечено, для Linux нет разницы между устройством и файлом. Все
устройства системы представлены в корневой файловой системе как обычные
файлы. Например, /dev/fd0 — это ваш дисковод для гибких дисков (ведь вы все
еще помните, что это за устройство?), /dev/sda — жесткий диск. Файлы устройств
хранятся в каталоге /dev.

Жесткие диски
С жесткими дисками сложнее всего, поскольку одно и то же устройство может в разных версиях одного и того же дистрибутива называться по-разному. Например, мой IDEдиск, подключенный как первичный мастер, в Fedora 5 все еще назывался /dev/hda, а,
начиная с Fedora 8, он называется /dev/sda. Раньше накопители, подклю-чающиеся к
интерфейсу IDE (PATА), назывались /dev/hdx, а SCSI/SATA-нако- пители — /dev/sdx
(где в обоих случаях х — буква).
После внедрения менеджера устройств udev1 и принятия глобального уникального
идентификатора устройств (UUID) все дисковые устройства, вне зависимости от
интерфейса подключения (РАТА, SATA, SCSI), называются /dev/sdx, где х — буква.
Все современные дистрибутивы поддерживают udev и UUID. Так что не удивляйтесь, если вдруг ваш старенький IDE-винчестер будет назван /dev/sda. С одной стороны, это вносит некоторую путаницу (см. разд. 4.7.5). С другой— все современные компьютеры оснащены именно SATA-дисками (т. к. РАТА-диски уже устарели, a SCSI — дорогие), а на современных материнских платах только один
контроллер IDE (РАТА), потому многие пользователи даже ничего не заметят.
Рассмотрим ситуацию с жесткими дисками чуть подробнее. Пусть у нас есть устройство /dev/sda. На жестком диске, понятное дело, может быть несколько разделов.
Рассмотрим ситуацию, когда на диске имеются три раздела (логических диска), которые в Windows называются С:, D: и Е:. Диск С: обычно является загрузочным
(активным), поэтому этот раздел будет записан в самом начале диска. Нумерация
разделов жесткого диска в Linux начинается с 1, и в большинстве случаев диску С:
будет соответствовать имя /dev/sda 1 — первый раздел на первом жестком диске.
Резонно предположить, что двум оставшимся разделам (D: и Е:) будут присвоены имена
/dev/sda2 и /dev/sda3. Это может быть и так, и не так. Как известно, на жест-ком диске
могут существовать или четыре первичных раздела, или три первичных и один
расширенный. В расширенном разделе могут разместиться до 11 логических дисков
(разделов). Таким образом, раздел может быть первичным (primary partition),
расширенным (extended partition) или логическим (logical partition).

1 udev — это менеджер устройств, впервые появившийся в ядре Linux, начиная с версии 2.6. Пришел
на смену более громоздкой псевдофайловой системе devfs. Управляет всеми манипуляциями с файлами из каталога ./dev.

110

Часть II. Основные сведения о Linux

Для возможных четырех первичных разделов диска в Linux зарезервированы номера
1, 2, 3, 4. Если разделы D: и Е: нашего диска первичные, то, да — им будут присвоены имена /dev/sda2 и /dev/sda3. Но, в большинстве случаев, эти разделы являются логическими и содержатся в расширенном разделе. Логические разделы именуются,
начиная с 5, а это означает, что если разделы D: и Е: — логические, им будут присвоены имена /dev/sda5 и /dev/sda6 соответственно.
Расширенный раздел Windows
В Windows расширенному разделу не присваивается буква, потому что этот раздел не
содержит данных пользователя, а только информацию о логических разделах.

Узнать номер раздела очень просто — достаточно запустить утилиту, работающую
с таблицей разделов диска. В Fedora придется использовать стандартный fdisk или
cfdisk (он немного удобнее), а в Debian/Ubuntu — GParted (кстати, очень удобное
средство разметки диска). В openSUSE нужно выполнить команду Компьютер |
Центр управления | YaST, а в открывшемся окне нажать кнопку Средство разметки. Впрочем, в большинстве случаев удобнее всего запустить (от имени root)
утилиту fdisk — она есть в любом дистрибутиве Linux.
Чтобы узнать номера разделов первого жесткого диска (/dev/sda), введите команду:
# /sbin/fdisk /dev/sda
В ответ на появившееся приглашение fdisk нужно ввести р и нажать клавишу
— вы увидите таблицу разделов (рис. 4.6). Для выхода из программы введите q и нажмите клавишу .

Рис. 4.6. Таблица разделов жесткого диска

Гпава 4. Файловая система Linux

111

На рис. 4.6 изображена таблица разделов первого жесткого диска моего компьютера. Первый раздел (это мой диск С:, где установлена система Windows)— первичный. Сразу после него расположен расширенный раздел (его номер— 2). Следующий за ним — логический раздел (номер 5). Разделы с номерами 3 и 4 пропущены,
потому что их нет на моем жестком диске. Это те самые первичные разделы, которые я не создал, — они мне не нужны.

Приводы оптических дисков
Приводы для чтения/записи CD/DVD называются /dev/scdN, где N— номер устройства. Если у вас только один привод CD/DVD, то его имя будет /dev/scd0.
Монтирование привода для чтения оптических дисков осуществляется командой:
# mount /dev/scd0 /mnt/cdrom
После этого обратиться к файлам, записанным на диске, можно будет через каталог
/mnt/cdrom. Напомню, что этот каталог должен существовать.

Флешки и внешние жесткие диски
Флешка (флеш-память) и внешние USB-диски определяются системой как обычные
жесткие диски. Предположим, что в компьютере установлен всего один жесткий
диск, тогда ему соответствует имя устройства /dev/sda.
Когда вы подключите флешку или внешний жесткий диск, этому устройству будет
присвоено имя /dev/sdb. Обычно на флешке или USB-диске всего один раздел, поэтому подмонтировать устройство можно командой:
# mount /dev/sdbl /mnt/usbdisk
Далее (см. разд. 4.7.6) мы поговорим о монтировании флешек (и устройств, определяемых как флешки: цифровых фотоаппаратов, видеокамер, мобильных телефонов)
более подробно. А пока нужно отметить, что в современных дистрибутивах флешки, внешние жесткие диски и диски CD/DVD монтируются автоматически (правда,
не к подкаталогу /mnt — чаще для этих целей используется каталог /media, но все
зависит от дистрибутива), и вся информация на этот счет здесь приведена для общего развития или на аварийный случай — когда вы загрузите систему в однопользовательском режиме, и вам придется монтировать носители вручную.

4.7.3. Опции монтирования файловых систем
Теперь, когда мы знаем номер раздела, можно подмонтировать его файловую систему. Делается это так:
# mount
Например:
# mount /dev/sda5 /mnt/win d

112

Часть II. Основные сведения о Linux

У команды mount довольно много опций, но на практике наиболее часто использу-ются
только некоторые из них: -t, -r, -w, -а.
□ Параметр -t позволяет задать тип файловой системы. Обычно программа сама
определяет файловую систему, но иногда это у нее не получается. Тогда мы
должны ей помочь. Формат этого параметра следующий:
# mount -t
Например,
# mount -t iso9660 /dev/sdc /mnt/cdrom
Вот опции для указания наиболее популярных монтируемых файловых систем:
• ext2, ext3, ext4 — файловая система Linux;


iso9660 — указывается при монтировании CD-ROM;

• vfat — FAT, FAT32 (поддерживается Windows 9х, ME, ХР);
• ntfs — NT File System (поддерживается Windows NT, XP, 7, 8, 10). Будет
использована стандартная поддержка NTFS, при которой NTFS-раздел доступен только для чтения;


ntfs-3g — будет запущен модуль ntfs-3g, входящий в большинство современных дистрибутивов. Этот модуль позволяет производить запись информации на NTFS-разделы.
М о д у л ь n t f s -3 g
Если в вашем дистрибутиве нет модуля ntfs-Зд, т. е. при попытке указания файловой
системы NTFS будет выведено сообщение об ошибке, вы можете скачать его с сайта
www.ntfs-3g.org. На этом сайте доступны как исходные коды, так и уже откомпилиро­
ванные для разных дистрибутивов пакеты.

Если вы не можете смонтировать NTFS-раздел с помощью опции ntfs-Зg, то,
вероятнее всего, он был неправильно размонтирован (например, работа
Windows не была завершена корректно). В этом случае для монтирования
раздела нужно использовать опцию -о force, например:
sudo mount -t ntfs-Зg /dev/sdbl /media/usb -о force


Параметр -r монтирует указанную файловую систему в режиме «только чтение».



Параметр -w монтирует файловую систему в режиме «чтение/запись». Этот
параметр используется по умолчанию для файловых систем, поддерживающих
запись (например, NTFS по умолчанию запись не поддерживает, как и файловые
системы CD/DVD-дисков).

□ Параметр -а служит для монтирования всех файловых систем, указанных в файле /etc/fstab (кроме тех, для которых указано noauto, — такие файловые системы
нужно монтировать вручную). При загрузке системы тогда вызывается команда
mount с параметром -а.

Гпава 4. Файловая система Linux

113

4.7.4. Монтирование разделов при загрузке
Если вы не хотите при каждой загрузке монтировать постоянные файловые системы
(например, Windows-разделы), то нужно прописать их в файле /etc/fstab. Обратите
внимание — в этом файле не следует прописывать файловые системы сменных носителей (дисковода, CD/DVD-привода, флешки). Следует отметить, что программы установки некоторых дистрибутивов читают таблицу разделов и автоматически заполняют файл /etc/fstab — в результате все ваши Windows-разделы оказываются доступны сразу после установки системы. К сожалению, не все дистрибутивы могут
похвастаться такой интеллектуальностью, поэтому вам нужно знать формат файла
fstab:
устройство точка монтирования тип_ФС опции флаг_РК флаг_проверки
Здесь: тип_фс — это тип файловой системы, а флаг_РК — флаг резервного копирования. Если он установлен (l), то программа dump заархивирует эту файловую систему при создании резервной копии. Если не установлен (о), то резервная копия ее
создаваться не будет. Флаг_ проверки устанавливает, будет ли эта файловая система
проверяться на наличие ошибок программой fsck. Проверка производится в двух
случаях:
□ если файловая система размонтирована некорректно;
□ если достигнуто максимальное число операций монтирования для этой файловой системы.
Поле опции содержит важные параметры файловой системы. Некоторые из них
представлены в табл. 4.4.
Таблица 4.4. Опции монтирования файловой системы в файле /etc/fstab
Опция

Описание

auto

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

noauto

Файловая система не монтируется при загрузке системы (при выполнении
команды mount -а), но ее можно смонтировать вручную с помощью все той
же команды mount

defaults

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

exec

Разрешает запуск выполняемых файлов для этой файловой системы.
Опция используется по умолчанию

noexec

Запрещает запуск выполняемых файлов для этой файловой системы

ro

Монтирование в режиме «только чтение»

rw

Монтирование в режиме «чтение/запись». Используется по умолчанию
для файловых систем, поддерживающих запись

user

Эту файловую систему разрешается монтировать/размонтировать обычному
пользователю (не root)

nouser

Файловую систему может монтировать только пользователь root.
Используется по умолчанию

114

Часть II. Основные сведения о Linux
Таблица 4.4 (окончание)

Опция

Описание

umask

Определяет маску прав доступа при создании файлов. Для не-Linux файло­
вых систем маску нужно установить так: umask=0

utf8

Применяется только на дистрибутивах, которые используют кодировку UTF8
в качестве кодировки локали. В старых дистрибутивах (где используется
KOI8-R) для корректного отображения русских имен файлов на Windowsразделах нужно задать параметры iocharset=koi8-u, codepage=866

Редактирование файла /etc/fstab
Редактировать файл /etc/fstab, как и любой другой файл из каталога /etc, можно в лю­
бом текстовом редакторе (например, gedit, kate), но перед этим нужно получить права
root (командами su или sudo).

Рассмотрим небольшой пример:
/dev/sdc /mnt/cdrom auto umask=0,user,noauto,ro,exec 0 0
/dev/sdal /mnt/win_c vfat umask=0,utf8 0 0
Первая строка— это строка монтирования файловой системы компакт-диска, а
вторая — строка монтирования диска С:.
□ Начнем с первой строки, /dev/sdc — это имя устройства CD-ROM. Точка монтирования— /mnt/cdrom. Понятно, что этот каталог должен существовать. Обратите внимание — в качестве файловой системы не указывается жестко iso9660, поскольку компакт-диск может быть записан в другой файловой системе, поэтому
в качестве типа файловой системы задано auto, т. е. автоматическое определение.
Теперь идет довольно длинный набор опций. Ясно, что umask установлен в ноль,
поскольку файловая система компакт-диска не поддерживает права доступа Linux.
Параметр user говорит о том, что эту файловую систему можно монтировать
обычному пользователю. Параметр noauto запрещает автоматическое монтирование этой файловой системы, что правильно— ведь на момент монтирования
в приводе может и не быть компакт-диска. Опция rо разрешает монтирование
в режиме «только чтение», а ехес разрешает запускать исполнимые файлы. Понятно, что компакт-диск не нуждается ни в проверке, ни в создании резервной
копии, поэтому два последних флага равны нулю.
□ Вторая строка проще. Первые два поля — это устройство и точка монтирования.
Третье — тип файловой системы. Файловая система постоянна, поэтому можно
явно указать тип файловой системы (vfat), а не auto. Опция umask, как и в предыдущем случае, равна нулю. Указание опции utf8 позволяет корректно отображать русскоязычные имена файлов и каталогов.

4.7.5. Подробно о UUID и файле /etc/fstab
Пока вы еще не успели забыть формат файла /etc/fstab, поговорим о UUID (Universally Unique Identifier), или о длинных именах дисков. В некоторых дистрибутивах,

Гпава 4. Файловая система Linux

115

например в Ubuntu, вместо имени носителя (первое поле файла fstab) указывается
его ID, поэтому файл fstab выглядит устрашающе, вот так:
# /dev/sda6
UUID=1f049af9-2bdd-43bf-al6c-ff5859a4116a / ext3 defaults 0 1
# /dev/sda1
UUID=45AE-84D9 /media/sda1 vfat defaults,utf8,umask=007 0 0
В openSUSE идентификаторы устройств указываются немного иначе:
/dev/disk/by-id/scsi-SATA_WDC_WD1600JB-00_WD-WCANM7959048-part5 / ext3
acl,user_xattr 1 1
/dev/disk/by-id/scsi-SATA_WDC_WDl600JB-00_WD-WCANM7959048-part7 swap swap

defaults 0 0
Понятно, что использовать короткие имена вроде /dev/sda1 намного проще, чем
идентификаторы в стиле 1f04 9af9-2bdd-43bf-a16c-ff5859a4116a. Использование
имен дисков еще никто не отменял, поэтому вместо идентификатора носителя можете смело указывать его файл устройства — так вам будет значительно проще!
Но все же разбираться в соответствии длинных имен дисков коротким именам устройств следует — ведь система использует именно эти имена, а в файле /etc/fstab не
всегда указывается, какой идентификатор принадлежит какому короткому имени
устройства (или указывается, но не для всех разделов).
Узнать длинные имена устройств можно с помощью простой команды:
1s -1 /dev/disk/by-uuid/
Результат выполнения этой команды приведен на рис. 4.7, а. Можно использовать
и следующую команду (рис. 4.7, б):
sudo blkid
Спрашивается, зачем было вводить длинные имена, если короткие имена удобнее,
во всяком случае для пользователей? Оказывается, разработчики Linux в первую
очередь и заботились как раз о пользователях. Возьмем обычный IDE-диск. Как
известно, его можно подключить либо к первичному (primary), либо к вторичному
(secondary), если он есть, контроллеру. При этом, согласно положению перемычки
выбора режима, винчестер может быть либо главным устройством (master), либо
подчиненным (slave). Таким образом, в зависимости от контроллера, к которому
подключается диск, изменяется его короткое имя: sda (primary master), sdb (primary slave), sdc (secondary' master), sdd (secondary slave). To же самое происходит
с SATA/SCSI-винчестерами — при изменении параметров подключения изменяется
и короткое имя устройства.
При использовании же длинных имен идентификатор дискового устройства остается постоянным вне зависимости от типа подключения устройства к контроллеру.
Именно поэтому длинные имена дисков часто также называются постоянными
именами (persistent name). Получается, что если подключить жесткий диск немного
иначе, то разделы, которые назывались, скажем, /dev/sdaN, стали бы называться
/dev/sdbN. Понятно, что загрузить Linux с такого диска не получится, поскольку везде указаны другие имена устройств. Если же используются длинные имена дисков,

116

Часть II. Основные сведения о Linux

система загрузится в любом случае, как бы вы ни подключили жесткий диск. Удобно? Конечно.
Но это еще не все. Постоянные имена — это только первая причина. Вторая причина заключается в обновлении библиотеки libata. В новой версии libata все РАТАустройства именуются не как hdx, а как sdx, что (как отмечалось в этой главе ранее)

а

б
Рис. 4.7. Соответствие длинных имен дисков коротким: а — команда 1s -1 /dev/disk/by-uuid/;

б — команда sudo blkid

117

Гпава 4. Файловая система Linux

вносит некую путаницу. Длинные же имена дисков от этого не изменяются и избавляют пользователя от беспокойства по поводу того, что его старый IDE-диск
вдруг превратился в SATA/SCSI-диск.
При использовании UUID однозначно идентифицировать раздел диска можно несколькими способами:
□ UUID=45AE-84D9 /media/sdal vfat defaults,utf8,umask=007, gid=46 0 0 — Здесь с
помощью параметра UUID указывается идентификатор диска;

□ /dev/disk/by-id/scsi-SATA_WDC_WD1600JB-00_WD-WCANM7959048-part7 swap swap
defaults 0 0 — здесь указывается длинное имя устройства диска;
□ label=/ / ext3 defaults 1 1 — самый компактный третий способ, позволяющий идентифицировать устройства по их метке.
Способы получения длинных имен
Первый способ получения длинного имени в англоязычной литературе называется
«by-uuid», т. е. длинное имя составляется по UUID, второй способ называется «by-id»,
т. е.— по аппаратному идентификатору устройства. Третий способ называется
«by-label» — по метке. Просмотреть соответствие длинных имен коротким можно с по­
мощью команд:

1s -1 /dev/disk/by-uuid
1s -1 /dev/disk/by-id
1s -1 /dev/disk/by-label
Но есть еще и четвертый способ, который называется «by-path» — в этом случае имя
генерируется по sysfs. Этот способ является наименее используемым, поэтому вы
редко столкнетесь с ним.

Узнать метки разделов можно с помощью команды:
1s -1F /dev/disk/by-label
Установить метку можно с помощью команд, указанных в табл. 4.5.
Таблица 4.5. Команды для установки меток разделов
Файловая система

Команда

ext2/ext3/ext4

# e2label /dev/ХХХ

ReiserFS

# reiserfstune -1 /dev/ХХХ

JFS

# jfs tune -L /dev/ХХХ

XFS

# xfs admin -L /dev/ХХХ

FAT/FAT32

Только средствами Windows

NTFS

# ntfslabel /dev/ХХХ

В файле /etc/fstab вы можете использовать длинные имена в любом формате: можно
указывать имена устройств В виде: /dev/disk/by-uuid/*,/dev/disk/by-id/* или

118

Часть II. Основные сведения о Linux

/dev/dis к/by-label/*, можно использовать параметры UUID=идентификатор или
LABEL=метка. Используйте тот способ, который вам больше нравится.

4.7.6. Монтирование флеш-дисков
В последнее время стала очень популярна флеш-память. Уже сегодня флеш-память,
точнее флеш-диски (они же USB-диски или попросту флешки), построенные с использованием флеш-памяти, практически вытеснили обычные дискеты— они
очень компактны и позволяют хранить довольно большие объемы информации.
Сегодня никого не удивишь небольшим брелоком, вмещающим 8-16 Гбайт.
Принцип использования флеш-диска очень прост— достаточно подключить его
к шине USB, и через несколько секунд система его определит. Далее с ним можно
будет работать как с обычным диском. Да, флеш-диски не очень шустры, но молниеносной реакции от них никто и не ожидает — во всяком случае, они выглядят
настоящими спринтерами на фоне обычных дискет.
Технология флеш-памяти нашла свое применение в различных портативных устройствах: от мобильных телефонов до цифровых фотоаппаратов. Вы можете подключить мобильник к компьютеру и работать с ним как с обычным диском — записывать на него мелодии и картинки. Аналогичная ситуация и с цифровым фотоаппаратом — когда вы фотографируете, то фотографии и видеоролики записываются
на его флеш-память. Потом вам нужно подключить фотоаппарат к компьютеру и
просто скопировать фотографии. Вы также можете записать фотографии (или другие файлы — не имеет значения) на фотоаппарат, используя его встроенную флешпамять как большую дискету — для переноса своих файлов.
Все современные дистрибутивы умеют автоматически монтировать флеш-диски.
После монтирования открывается окно (рис. 4.8) либо с предложением просмотреть
содержимое диска или же импортировать фотографии (в зависимости от типа подключенного устройства — обычный это USB-диск или фотоаппарат), либо сразу
с содержимым диска (для обычной флешки с файлами).
Понятно, что нам, как настоящим линуксоидам, интересно самостоятельно смонтировать флеш-диск. Оказывается, тут все просто: USB-диск — это обычный накопитель, и его можно увидеть в каталоге /dev/disk/by-id. Напомню, что способ «by-id»
подразумевает получение длинного имени по аппаратному идентификатору устройства, а поэтому с помощью каталога /dev/disk/by-id проще всего найти длинное
имя USB-диска среди имен других накопителей, — оно будет начинаться
с префикса usb. Введите команду:
ls -1 /dev/disk/by-id | grep usb
Результат выполнения этой команды представлен на рис. 4.9.
Судя по выводу этой команды, для монтирования флеш-диска следует выполнить
команду:
# mount /dev/sdbl /mnt/flash

Гпава 4. Файловая система Linux

Рис. 4.8. Ubuntu 17.04: содержимое подключенной флешки с файлами

Рис. 4.9. Ubuntu 17.04: USB-диск найден

119

120

Часть II. Основные сведения о Linux

4.8. Настройка журнала
файловой системы ext3/ext4
Журналируемая файловая система имеет три режима работы: journal, ordered и
writeback. Первый режим самый медленный, но он позволяет минимизировать потери ваших данных в случае сбоя системы или отключения питания. В режиме journal
в системный журнал записывается все, что только можно, и это позволяет максимально
восстановить файловую систему в случае сбоя.
В последовательном режиме (ordered) в журнал заносится информация только об
изменении метаданных (служебных данных файловой системы). Этот режим используется по умолчанию и является компромиссным вариантом между производительностью и отказоустойчивостью.
Самым быстрым является режим обратной записи (writeback). Но использовать его
я вам не рекомендую, поскольку особого толку от него не будет. Проще тогда уже
при установке Linux выбрать файловую систему ext2 вместо ext3/ext4.
Если отказоустойчивость для вас на первом месте — выбирайте режим journal,
во всех остальных случаях лучше выбрать ordered. Выбор режима осуществляется
редактированием файла /etc/fstab. Например,
# режим ordered используется по умолчанию,
# поэтому ничего указывать не нужно
/dev/sdal / ext3 defaults 1 0
# на этом разделе важные данные, используем режим journal
/dev/sda2 /var ext3 data=journal 1 0
# здесь ничего важного нет, режим writeback
/dev/sda2 /opt ext3 data=writeback 0 0
После изменения этого файла выполните команду:
# mount -а
Она заново смонтирует все файловые системы, чтобы изменения вступили в силу.

4.9. Файловая система ext4
Файловая система ext4 заслуживает отдельного разговора. Все, что было сказано
о файловых системах ранее, справедливо и для ext4, но у этой файловой системы
есть ряд особенностей, о которых мы сейчас и поговорим.
Поддержка ext4 как стабильной файловой системы появилась в ядре Linux версии
2.6.28. Если сравнивать эту файловую систему с ext3, то производительность и надежность в ext4 существенно увеличена, а максимальный размер раздела доведен
до 1024 петабайт (1 эксбибайт). Максимальный размер файла— более 2 Тбайт. Ресурс Phoronix (www.phoronix.com) произвел тестирование файловой системы ext4 на
SSD-накопителе (такие накопители устанавливаются на современные ноутбуки) —

Глава 4. Файловая система Linux

121

результат, как говорится, налицо: ext4 почти в два раза превзошла файловые системы ext3, XFS, JFS и ReiserFS.
Впрочем, когда я установил Fedora 11 (первая версия Fedora, в которой использовалась ext4 по умолчанию) на рабочую станцию, прироста производительности при
работе с файлами мне почувствовать не удалось. Однако производительность —
это не основной конек ext4. Но, обо всем по порядку.

4.9.1. Сравнение ext3 и ext4
Описание особенностей файловой системы ext4 и ее преимуществ по сравнению
с ext3 сведены в табл. 4.6.
Таблица 4.6. Особенности ext4
Особенность

Комментарий

Увеличенный раз­
мер файла и фай­
ловой системы

Для ext3 максимальный размер файловой системы составляет 32 Тбайт,
а файла — 2 Тбайт, но на практике ограничения были более жесткими.
Так, в зависимости от архитектуры, максимальный размер тома состав­
лял до 2 Тбайт, а максимальный размер файла — до 16 Гбайт.
В случае с ext4 максимальный размер тома составляет 1 эксбибайт
(EiB) — это 260 байт. Максимальный размер файла составляет
16 Тбайт. Такие объемы информации пока не нужны обычным
пользователям, однако весьма пригодятся на серверах, работающих
с большими дисковыми массивами

Экстенты

Отложенное
выделение
пространства

Основной недостаток ext3 — ее метод выделения места на диске. Дис­
ковые ресурсы выделялись с помощью битовых карт свободного места,
а такой способ не отличается ни скоростью, ни масштабируемостью.
' Получилось, что ext3 более эффективна для небольших файлов, но
совсем не подходит для хранения больших файлов.
Для улучшения выделения ресурсов и более эффективной организации
данных в ext4 были введены экстенты. Экстент — это способ пред­
ставления непрерывной последовательности блоков памяти.
Для эффективного представления маленьких файлов в экстентах при­
меняется уровневый подход, а для больших файлов используются де­
ревья экстентов. Например, один индексный дескриптор может ссылать­
ся на четыре экстента, каждый из которых может ссылаться на другие
индексные дескрипторы и т. д. Такая структура является мощным меха­
низмом представления больших файлов, а также более защищена
и устойчива к сбоям
Файловая система ext4 может отложить выделение дискового простран­
ства до последнего момента, что увеличивает производительность
системы

Контрольные суммы Контрольные суммы журналов повышают надежность файловой
журналов
системы
Большее количест­
во каталогов

В ext3 могло быть максимум 32 000 каталогов, в ext4 количество катало­
гов не ограничивается

Дефрагментация
«на лету»

Файловая система ext3 не особо склонна к фрагментации, но все же
такое неприятное явление имеется. В ext4 производится дефрагмента­
ция «на лету», что позволяет повысить производительность системы
в целом

Часть //. Основные сведения о Linux

122

Таблица 4.6 (окончание)
Особенность

Комментарий

Наносекундные
временные метки

В большинстве файловых систем временные метки (timestamp) устанав­
ливаются с точностью до секунды, в ext4 точность повышена до нано­
секунды. Также ext4 поддерживает временные метки до 25 апреля
2514 года, в отличие от ext3 (только до 18 января 2038 г.)

4.9.2. Совместимость с ext3
Файловая система ext4 является прямо и обратно совместимой с ext3, однако все же
существуют некоторые ограничения. Предположим, что у нас на диске имеется
файловая система ext4. Ее можно смонтировать и как ext3, и как ext4 (это и есть
прямая совместимость)— и тут ограничений никаких нет. А вот с обратной совместимостью не все так безоблачно — если файловую систему ext4 смонтировать
как ext3, то она будет работать без экстентов, что снизит ее производительность.

4.9.3. Переход на ext4
Если вы при установке системы выбрали файловую систему ext3, то перейти на
ext4 можно без потери данных и в любой удобный для вас момент. Откройте терминал и введите команду:
sudo tune2fs -О extents,uninit_bg,dir_index /dev/имя_устройства
На момент ввода этой команды устройство должно быть размонтировано.

Преобразование

корневой файловой системы
Если нужно преобразовать в ext4 корневую файловую систему, то эту команду нужно
вводить с LiveCD, поддерживающего ext4.

Теперь проверим файловую систему:
sudo fsck -pf /dev/имя_устройства
Затем смонтируем файловую систему так:
mount -t ext4 /dev/имя_устройства /точка_монтирования
mount -t ext4 /dev/disk/by-uuid/UUID-устройства /точка_монтирования
Если раздел автоматически монтируется через /etc/fstab, не забудьте исправить файловую систему на ext4:
UUID=UUID-раздела /точка ext4 defaults,errors=remount-ro,relatime 0 1

Если вы изменили тип файловой системы корневого раздела, тогда необходимо отредактировать файл /boot/grub/menu.lst и добавить опцию rootfstype=ext4 в список
параметров ядра, например:
title
root

Linux
(hd0,1)

Гпава 4. Файловая система Linux

123

kernel /boot/vmlinuz-2.6.28.1 root=UUID=879f797c-944d-4c28-a720-249730705714 rо

quiet splash rootfstype=ext4
initrd
/boot/initrd.img-2.6.28.1
quiet
Совет
Рекомендую прочитать статью Тима Джонса «Анатомия ext4»:
http://www.ibm.com/developerworks/ru/library/l-anatomy-ext4/index.html.

4.10. Использование программы fdisk
для разметки диска
Для разметки диска мы воспользуемся стандартной программой fdisk, которая имеется во всех дистрибутивах Linux.
Введите команду (можно использовать короткие имена):
# fdisk
Например, если вы подключили винчестер как вторичный мастер, то команда будет
следующей:
# fdisk /dev/sda
Чтобы убедиться, что диск не размечен, введите команду р — программа выведет
пустую таблицу разделов (рис. 4.10).

Рис. 4.10. Таблица разделов пуста

Самое время создать раздел. Для этого служит команда п (рис. 4.11). Кстати, для
справки можете ввести команду ш, которая выведет список доступных команд fdisk
(рис. 4.12).

Рис. 4.11. Создание нового раздела

124

Часть II. Основные сведения о Linux

Рис. 4.12. Список команд программы fdisk

После ввода команды п программа попросит вас уточнить, какого типа должен
быть раздел (см. рис. 4.11), — можно выбрать первичный или расширенный раздел.
В нашем случае больше подойдет первичный, поэтому вводим букву р. Затем нужно ввести номер раздела. Поскольку это первый раздел, то вводим 1. Потом fdisk
попросит ввести номер первого цилиндра. Это первый раздел, поэтому вводим номер 1. После ввода первого цилиндра нужно ввести номер последнего цилиндра.
Чтобы не высчитывать на калькуляторе номер цилиндра, намного проще ввести
размер раздела. Делается это так: +M. После числа должна идти именно
буква м, иначе размер будет воспринят в байтах, а нам нужны мегабайты, — например, если вы хотите создать раздел размером 10 Гбайт, то введите +10240М.
Для создания второго раздела опять введите команду n. Программа вновь попросит
тип раздела, номер первого цилиндра (это будет номер последнего цилиндра первого раздела плюс 1) и размер раздела. Если вы хотите создать раздел до «конца»
диска, то просто введите номер последнего цилиндра.
Теперь посмотрим на таблицу разделов. Для этого опять введите команду р
(рис. 4.13).

Рис. 4.13. Создание второго раздела, вывод таблицы разделов

Глава 4. Файловая система Linux

125

По умолчанию программа fdisk создает Linux-разделы. Если вы собираетесь работать только в Linux, можно оставить и так, но ведь не у всех есть Linux, — если вы
снимете свой винчестер, чтобы, например, переписать у товарища большие файлы,
то вряд ли сможете комфортно с ним работать в его Windows: прочитать данные
(например, с помощью Total Commander) вам удастся, а что-либо записать — уже
нет. Поэтому давайте изменим тип разделов. Для этого служит команда t. Введите
эту команду. Программа запросит у вас номер раздела и тип файловой системы.
С номером раздела все ясно, а вот с кодом файловой системы сложнее. Введите L,
чтобы просмотреть доступные файловые системы (рис. 4.14).

Рис. 4.14. Коды файловых систем

Код FAT32 — b. Введите его, и вы увидите сообщение программы, что тип файловой системы изменен (рис. 4.15).
Еще раз введите команду р, чтобы убедиться, что все нормально. Для сохранения
таблицы разделов введите w, а для выхода без сохранения изменений — q.

Рис. 4.15. Тип файловой системы изменен

Из графических программ для разметки диска мне нравится только GParted
(рис. 4.16). Остальные программы не заслуживают внимания — уж лучше использовать текстовые программы fdisk или cfdisk.

126

Часть II. Основные сведения о Linux

Рис. 4.16. Ubuntu: программа GParted

4.11. Таблица разделов GPT
GUID Partition Table (GPT) — стандартный формат размещения таблиц разделов на
физическом жестком диске. GPT является частью EFI (Extensible Firmware Interface,
расширяемый микропрограммный интерфейс) — стандарта, который был предложен компанией Intel на смену BIOS. В EFI таблица GPT используется там, где
в BIOS используется MBR (Master Boot Record, главная загрузочная запись).
В отличие от MBR, начинающейся с исполняемой двоичной программы-загрузчика, которая должна идентифицировать и загрузить активный раздел, GPT использует для осуществления этих процессов EFI. Но MBR все же присутствует в самом начале диска для обратной совместимости и для защиты, GPT же начинается
с оглавления таблицы разделов.
В GPT используется современная система адресации логических блоков (LBA)
вместо устаревшей системы CHS (Цилиндр-Головка-Сектор), которая применялась
в MBR. Как и MBR, таблица GPT обеспечивает дублирование — оглавление и таблица разделов записаны как в начале, так и в конце диска.
С помощью GPT можно создавать разделы размером до 9,4 зеттабайт (9,4x1021 байт),
в MBR же максимальный размер диска 2,2 терабайта (2,2х 1012 байт).

Глава 4. Файловая система Linux

127

Для работы с разделами GPT нужно использовать утилиты gdisk или gpart,
поскольку при просмотре содержимого диска GPT программой fdisk картина будет
примерно такой:
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't
support GPT. Use GNU Parted.

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xcd29a27d
Device Boot
/dev/sdbl

Start
1

End
Blocks Id System
1953525167 976762583+ ее GPT

В о с с т а н о в л е н и е и н ф о р м а ц и и c GPT
К сожалению, подробное рассмотрение GPT выходит за рамки этой книги, но, понимая
важность темы, привожу ссылку на очень полезную статью о восстановлении инфор­
мации с GPT (да, новые терабайтные жесткие диски тоже «сыплются») программой
gpart: http://bu7cher.blogspot.com/2010/10/gpt-gpart.html.

ГЛАВА 5

Командный интерпретатор bash
5.1. bash: основные сведения
bash — это наиболее часто использующаяся командная оболочка (командный интерпретатор) Linux. Основное предназначение bash — выполнение команд, введенных пользователем. Пользователь вводит команду, bash ищет программу, соответствующую команде, в каталогах, указанных в переменной окружения PATH. Если
такая программа найдена, то bash запускает ее и передает ей введенные пользователем параметры. В противном случае выводится сообщение о невозможности
выполнения команды.
Кроме bash в Linux существуют и другие оболочки: sh, csh, ksh, zsh и пр. Все командные оболочки, установленные в системе, прописаны в файле /etc/shells. В листинге 5.1 представлен файл /etc/shells дистрибутива Fedora 26 с установками по
умолчанию. В этом дистрибутиве, по сравнению с Fedora 16, набор оболочек существенно сокращен и оставлены только sh и bash (nologin — это не оболочка, а просто программа, отображающая сообщение, что учетная запись недоступна, —
в случае обращения к отключенной или системной учетной записи). По сути,
в Fedora 26 присутствует одна командная оболочка, потому что sh и bash — это
практически одно и то же.

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
С точки зрения пользователя все прописанные в файле /etc/shells оболочки мало чем
друг от друга отличаются, поскольку все они позволяют выполнять введенные
пользователем команды. Но оболочки служат не только для выполнения команд,
а еще и для автоматизации задач с помощью сценариев, и основное их различие за-

Глава 5. Командный интерпретатор bash

129

ключается в синтаксисе языка описания сценариев. В этой главе мы поговорим
о создании bash-сценариев, поскольку оболочка bash самая популярная.
ПРОГРАММЫ-«ЗАГЛУШКИ»
Иногда в файле /etc/shells кроме программы nologin можно найти еще и программы
/bin/false и /bin/true, которые тоже не являются оболочками. Это «заглушки», которые
можно использовать, если вы хотите отключить ту или иную учетную запись пользова­
теля. Как известно, при входе пользователя в систему запускается установленная для
него оболочка. И для каждого пользователя имеется возможность задать свою обо­
лочку. Так вот, если для какого-либо пользователя задать оболочку /bin/false (или
/bin/true), он не сможет войти в систему. Точнее, в систему-то он войдет, но и сразу
выйдет из нее, поскольку сессия пользователя длится до завершения работы его обо­
лочки, а обе «заглушки» ничего не делают, кроме того, что просто возвращают значе­
ние 0 (для false) или 1 (для true). В главе 28 мы рассмотрим, как можно обезопасить
сервер с использованием «заглушек».

При запуске оболочка bash выполняет сценарий .bashrc, обычно расположенный
в домашнем каталоге пользователя (этот файл не обязателен и может там отсутствовать). В файле этого сценария можно указать команды, которые нужно выполнить сразу после входа пользователя в систему.
В файле .bash_history (он тоже находится в домашнем каталоге) хранится история
команд, введенных пользователем, — открыв его, вы можете просмотреть свои
команды, которые накануне вводили.

5.2. Автоматизация задач с помощью bash
Представим, что нам нужно выполнить резервное копирование всех важных файлов, для чего создать архивы каталогов /etc, /home и /usr. Понятно, что понадобятся
три команды вида:
tar -cvjf имя_архива.tar.bz2 каталог
Затем надо будет записать все эти три файла на DVD с помощью любой программы
для прожига дисков.
Ничего страшного, если выполнять эту операцию раз в месяц или хотя бы раз в неделю. Но представьте, что вам нужно делать ее каждый день или даже несколько
раз в день? Думаю, такая рутинная работа вам быстро надоест. А ведь можно написать сценарий, который сам будет создавать резервные копии и записывать их на
DVD! И все, что для этого потребуется, — это вставить чистый DVD перед запуском сценария.
Можно пойти и иным путем. Написать сценарий, который будет делать резервные
копии системных каталогов и записывать их на другой раздел жесткого диска. Ведь
не секрет, что резервные копии делаются не только на случай сбоя системы, но и
для защиты от некорректного изменения данных пользователем. Помню, удалив
как-то важную тему своего форума, я попросил хостинг-провайдера сделать откат.
И был приятно удивлен, когда мне предоставили на выбор три резервные копии, —
осталось лишь выбрать наиболее подходящую. Не думаете же вы, что администра-

130

Часть II. Основные сведения о Linux

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

5.3. Привет, мир!
Итак, напишем наш первый сценарий, по традиции выводящий всем известную
фразу: «Привет, мир!» (листинг 5.2). Вся работа со сценариями выполняется обычно в консоли (или в терминале), но для редактирования сценариев вы можете использовать любимый графический редактор, — например, тот же mcedit.

#!/bin/bash
echo "Привет, мир!"
Первая строка нашего сценария— это указание, что он должен быть обработан
программой /bin/bash. Обратите внимание — если между символами # и ! окажется пробел, то эта директива не сработает, поскольку будет воспринята как обычный
комментарий, который, как вы уже догадались, начинается с решетки:
# Комментарий
Вторая строка — это оператор echo, выводящий нашу строку.
Теперь сохраните сценарий под именем hello и введите следующую команду (она
сделает наш сценарий исполнимым):
$ chmod +х hello
Для запуска сценария введите команду:
./hello
и на экране вы увидите строку:
Привет, мир!
Чтобы вводить для запуска сценария просто hello (без . /), сценарий нужно скопировать в каталог /usr/bin (точнее, в любой каталог из переменной окружения path):
# ср ./hello /usr/bin

5.4. Использование переменных
в собственных сценариях
В любом серьезном сценарии вы не обойдетесь без использования переменных.
Переменные можно объявлять в любом месте сценария, но до места их первого
применения. Рекомендуется объявлять переменные в самом начале сценария, чтобы
потом не искать, где вы объявили ту или иную переменную.

Глава 5. Командный интерпретатор bash

131

Для объявления переменной используется следующая конструкция:
переменная=значение
Пример объявления переменной:
ADDRESS=www.dkws.org.ua
echo $ADDRESS
Обратите внимание на следующие моменты:
□ при объявлении переменной знак доллара не ставится, но он обязателен при использовании переменной;
□ при объявлении переменной не должно быть пробелов до и после знака =.
Значение для переменной указывать вручную не обязательно — его можно прочитать с клавиатуры:
read ADDRESS
или со стандартного вывода программы:
ADDRESS='hostname'
Как можно видеть, чтение значения переменной с клавиатуры осуществляется
с помощью инструкции read (при этом указывать символ доллара не нужно). Вторая приведенная здесь команда устанавливает в качестве значения переменной
ADDRESS ВЫВОД команды hostname.
В Linux часто используются переменные окружения. Это специальные переменные,
содержащие служебные данные. Вот примеры некоторых часто используемых
переменных окружения:
□ номе — домашний каталог пользователя, который запустил сценарий;
□ random — случайное число в диапазоне от 0 до 32 767;
□ uid — ID пользователя, который запустил сценарий;
□ pwd — текущий каталог.
Для установки собственной переменной окружения используется команда export:
# присваиваем переменной значение
$ADDRESS=ww.dkws.org.ua
# экспортируем переменную — делаем ее переменной окружения
# после этого переменная ADDRESS будет доступна в других сценариях
export $ADDRESS

5.5. Передача параметров сценарию
Очень часто сценариям нужно передавать различные параметры — например, для
задания режима работы или указания имени файла/каталога. Для передачи параметров используются следующие специальные переменные:

132

Часть II. Основные сведения о Linux

□ $0 — содержит имя сценария;


$n — содержит значение параметра (п — номер параметра);

□ $# — позволяет узнать количество параметров, которые были переданы.
Рассмотрим небольшой пример обработки параметров сценария. Я понимаю, что
конструкцию case-esac мы еще не рассматривали, но общий принцип должен быть
понятен (листинг 5.3).

# сценарий должен вызываться так:
# имя_сценария параметр
# анализируем первый параметр
case "$1" in
start)
# действия при получении параметра start
echo "Запускаем сетевой сервис"
/

*)

г

stop)
# действия при получении параметра stop
echo "Останавливаем сетевой сервис"
;;

# действия в остальных случаях
# выводим подсказку о том, как нужно использовать сценарий,
# и завершаем работу сценария
echo "Usage: $0 {start|stop }"
exit 1
;;
esac
Полагаю, приведенных здесь комментариев достаточно, поэтому подробно рассматривать работу сценария из листинга 5.3 мы не станем.

5.6. Массивы
Интерпретатор bash позволяет использовать массивы. Массивы объявляются подобно переменным. Вот пример объявления массива:
ARRAY[0]=1
ARRAY[1]=2
echo $ARRAY[0]

Глава 5. Командный интерпретатор bash

133

5.7. Циклы
Как и в любом языке программирования, в bash можно использовать циклы. Мы
рассмотрим циклы for и while, хотя в bash доступны также циклы until и select,
но они применяются довольно редко.
Синтаксис цикла for выглядит так:
for переменная in список
do
команды
done
В цикле при каждой итерации переменной будет присвоен очередной элемент списка, над которым будут выполнены указанные команды. Чтобы было понятнее, рассмотрим небольшой пример:
for n in 1 2 3;
do
echo $n;
done
Обратите внимание — список значений и список команд должны заканчиваться
точкой с запятой.
Как и следовало ожидать, наш сценарий выведет на экран следующее:

1
2
3
Синтаксис цикла while выглядит немного иначе:
while условие
do
команды
done
Цикл while выполняется до тех пор, пока истинно заданное условие. Подробно об
условиях мы поговорим в следующем разделе, а сейчас напишем аналог предыдущего цикла, т. е. выведем 1, 2 и 3, но с помощью while, а не for:
n=1
while [ $n -1t 4 ]
do
echo "$n "
n=$(( $n+1 ));
done

134

Часть II. Основные сведения о Linux

5.8. Условные операторы
В bash доступны два условных оператора: if
дующий:

и case. Синтаксис оператора if сле-

if условие_1 then
команды_1
elif условие_2 then
команды_2
elif условие_N then
команды_N
else
команды_N+1
fi
Оператор if в bash работает аналогично оператору if в других языках программирования. Если истинно первое условие, то выполняется первый список команд,
иначе — проверяется второе условие и т. д. Количество блоков elif, понятно, не
ограничено.
Самая ответственная задача— это правильно составить условие. Условия записываются в квадратных скобках. Вот пример записи условий:
# переменная N = 10
[ N==10 ]
# переменная N не равна 10
[ N!=10 ]
Операции сравнения указываются не с помощью привычных знаков больше (>) или
меньше ( /root/somefile
работать не будет, и вместо нее следует использовать команду:
sudo bash -с "ls /etc > /root/somefile"
Длинновато, правда?


имеются также неудобства, связанные с технологией NSS. К счастью, она используется не очень часто, поэтому основной недостаток sudo будет связан
только с перенаправлением ввода/вывода.

С другой стороны, если вы знаете пароль root, то можно просто ввести команду su
и получить полноценную сессию root без необходимости постоянно вводить
команду sudo, — и удобно, и безопасно. Исходя из этих соображений, в этом издании не будет показано, как обеспечить вход пользователя root в графическом
режиме, — это очень небезопасно, поскольку с максимальными правами будут
запускаться не только вводимые вами команды, но и все остальные, которые запускает система. Зато мы разберемся, как включить учетную запись root, поскольку
в некоторых дистрибутивах (и в частности, в Ubuntu) она по умолчанию выключена. После чего вы сможете входить как root в консоли.

Глава 6. Пользователи и группы

143

Традиционная учетная запись root в Ubuntu
Вы все-таки хотите использовать обычную учетную запись root? Для этого достаточно задать пароль для пользователя root. Делается это командой:
sudo passwd root
Сначала программа запросит ваш пользовательский пароль, затем новый пароль
root и его подтверждение:
Enter your existing password:
Enter password for root:
Confirm password for root:
После этого вы сможете входить в систему под учетной записью root.
Для отключения учетной записи root используется команда:
sudo passwd -l root
Помните, что после закрытия учетной записи root у вас могут быть проблемы
с входом в систему в режиме восстановления, поскольку пароль root уже установлен (т. е. он не пустой, как по умолчанию), но в то же время учетная запись закрыта. Поэтому, если вы уж включили учетную запись root, будьте внимательны и
осторожны. А, вообще, повторюсь — лучше ее не включать, а пользоваться командой sudo -i.

6.3. Создание, удаление
и модификация пользователей и групп
стандартными средствами
6.3.1. Отдельные пользователи
Для добавления нового пользователя выполните следующие команды (от имени
root):
# adduser
# passwd
Первая команда (adduser) добавляет пользователя, а вторая (passwd) изменяет его
пароль. Ясно, что и в первом, и во втором случае вы должны указать одно и то же
имя пользователя.
В некоторых дистрибутивах — например, в Ubuntu и Debian — сценарий adduser не
только добавляет пользователя, но и позволяет указать дополнительную информацию о пользователе и сразу же задать пароль пользователя (рис. 6.4).
Сценарии adduser и useradd
В некоторых дистрибутивах (например, в openSUSE) вместо команды adduser исполь­
зуется команда useradd. Сценарии adduser и useradd обычно находятся в каталоге
/usr/sbin.

144

Часть II. Основные сведения о Linux

Рис. 6.4. Ubuntu: добавление нового пользователя

Обратите внимание — если пароль слишком прост для подбора, программа passwd
выдаст соответствующее предупреждение: BAD PASSWORD и сообщит, чем же
наш пароль плох (например, в основе пароля лежит словарное слово, что делает
пароль легким для подбора).
Для модифицирования учетной записи пользователя можно использовать команду
usermod. О ней вы прочитаете в руководстве man, вызвав его командой:
man usermod
Особого смысла рассматривать эту команду я не вижу, ведь обычно нужно менять
только пароль пользователя, а это можно сделать с помощью команды passwd.
А если вам требуется изменить саму учетную запись (например, указать другой
домашний каталог), то это гораздо удобнее сделать с помощью графического конфигуратора (об этом позже) или обычного текстового редактора.
Команда passwd
Команду passwd может использовать не только администратор, но и сам пользователь
для изменения собственного пароля.

Для удаления пользователя служит команда userdel:
# userdel
Давайте разберемся, что же происходит при создании новой учетной записи пользователя.
Во-первых, создается запись в файле /etc/passwd. Формат записи следующий:
имя_пользователя: пароль : UID: GID: полное_имя: домашний_каталог: оболочка

Глава 6. Пользователи и группы

145

Рассмотрим фрагмент этого файла (две строки):
root:х:0:0:root:/root:/bin/bash
den:x:500:500:Denis:/home/den:/bin/bash


первое поле— это логин пользователя, который он вводит для регистрации
в системе. Пароль в современных системах в этом файле не указывается, и второе поле осталось просто для совместимости со старыми системами. Пароли
хранятся в файле /etc/shadow, о котором мы поговорим чуть позже;



третье и четвертое поле: UID (User ID) и gid (Group ID)— идентификаторы
пользователя и группы соответственно. Идентификатор пользователя root всегда
равен 0, как и идентификатор группы root. Список групп вы найдете в файле
/etc/groups;

□ пятое поле — это настоящее имя пользователя. Оно может быть не заполнено, а
может содержать фамилию, имя и отчество пользователя, — все зависит от педантичности администратора системы, т. е. от вас. Если вы работаете за компьютером в гордом одиночестве, то, думаю, свою фамилию вы не забудете. А вот
если ваш компьютер — сервер сети, тогда просто необходимо указать Ф.И.О.
каждого пользователя, а то, когда придет время обратиться к пользователю по
имени, вы его знать не будете (попробуйте запомнить 500 фамилий и имен!);


шестое поле содержит имя домашнего каталога. Обычно это каталог /home/
;



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

В целях повышения безопасности пароли в свое время были перенесены из файла
/etc/passwd в файл /etc/shadow (доступен для чтения/записи только пользователю
root), где они и хранятся в закодированном виде (используются алгоритмы MD5
или Blowfish— в некоторых системах). Узнать, с помощью какого алгоритма
зашифрован пароль, очень просто: посмотрите на шифр — если он достаточно короткий и не начинается с символа $, то применен алгоритм DES (самый слабый и
ненадежный— он, как правило, используется в старых дистрибутивах). Если же
шифр начинается с символов $1$, то это MD5, а если в начале шифра имеются символы $2а$, то это Blowfish.
Во-вторых, при создании пользователя создается каталог /home/
в который копируется содержимое каталога /etc/skel. Каталог /etc/skel содержит
«джентльменский набор» — файлы конфигурации по умолчанию, которые должны быть в любом пользовательском каталоге. Название каталога skel (от skeleton)
полностью оправдывает себя — он действительно содержит «скелет» домашнего
каталога пользователя.
Редактирование файла /etc/passwd
Файл /etc/passwd можно редактировать с помощью обычного текстового редактора. То
есть, вы можете очень легко, не прибегая к помощи ни графического конфигуратора,
ни команды usermod, изменить параметры учетной записи любого пользователя, —
например, задать для него другую оболочку или прописать его настоящую фамилию.

146

Часть II. Основные сведения о Linux
Однако при изменении домашнего каталога пользователя нужно быть осторожным!
Если вы это сделали, то, чтобы у пользователя не возникло проблем с правами дос­
тупа к новому каталогу, следует выполнить команду:

chown -R Пользователь>

6.3.2. Группы пользователей
Иногда пользователей объединяют в группы. Группы позволяют более эффективно
управлять правами пользователей. Например, над каким-либо проектом у вас
должны совместно работать три разных пользователя — их достаточно объединить
в одну группу, и тогда они получат доступ к домашним каталогам друг друга (по
умолчанию один пользователь не имеет доступа к домашнему каталогу другого,
поскольку они находятся в разных группах).
Создать группу, а также поместить пользователя в группу позволяют графические
конфигураторы. Вы можете использовать их — они очень удобные, но если вы хотите стать настоящим линуксоидом, то должны знать, что доступные в системе
группы указываются в файле /etc/group. Добавить новую группу в систему можно
с помощью команды groupadd, но, как правило, проще в текстовом редакторе добавить еще одну запись в файл /etc/group, а изменить группу пользователя еще легче — для этого достаточно отредактировать файл /etc/passwd.

6.4. Управление пользователями и группами
с помощью графических конфигураторов
Обычно добавлять/изменять учетные записи пользователей принято в командной
строке. Но сейчас мы поговорим о графических конфигураторах — они пригодятся
любителям графического интерфейса, а также начинающим пользователям, которые еще не уверены в своих силах. Понятно, что в каждом дистрибутиве имеются
свои конфигураторы, поэтому мы остановимся лишь на трех наиболее популярных
дистрибутивах: Fedora, Ubuntu и openSUSE (с графическими конфигураторами других дистрибутивов после этого, думаю, вы разберетесь и без моих комментариев).

6.4.1. Конфигураторы в Fedora и Ubuntu
Конфигураторы управления учетными записями в Fedora и Ubuntu — как два брата-близнеца. Вы только посмотрите на рис. 6.5 и 6.6: на первом представлен конфигуратор Ubuntu 17.04, на втором— Fedora 26. В конфигураторе Fedora 26 список
пользователей сейчас отображается в верхней части окна, а не слева, как в
Ubuntu 17.04, но до этой версии конфигураторы выглядели вообще одинаково.
Вот только запускаются конфигураторы по-разному:
□ в Fedora нужно открыть окно Все параметры и щелкнуть на кнопке Пользова­
тели;
□ в Ubuntu нужно нажать на панели Unity кнопку Параметры системы (она имеет
вид гаечного ключа на шестеренке) и запустить конфигуратор Учетные записи.

Глава 6. Пользователи и группы

Рис. 6.5. Ubuntu 17.04: конфигуратор управления пользователями

Рис. 6.6. Fedora 26: конфигуратор управления пользователями

147

148

Часть II. Основные сведения о Linux

Первым делом нужно разблокировать конфигуратор — для этого нажмите кнопку
Разблокировать в верхнем правом углу окна. Откроется окно (рис. 6.7), в котором
надо ввести пароль пользователя (не root, а того, от имени которого запущен конфигуратор).

Рис. 6.7. Ubuntu 17.04: разблокирование конфигуратора

Примечание
Далее снимки с экрана соответствуют дистрибутиву Ubuntu, но в Fedora все выглядит
так же (за исключением самого оформления окна).

Начнем с изменения собственной учетной записи. Чтобы изменить какое-либо поле, надо по нему щелкнуть. Например, для изменения изображения пользователя
щелкните по пользователю и выберите подходящее для него изображение
(рис. 6.8). Аналогично изменяются имя пользователя (у изображения), тип учетной
записи, язык, пароль и тип входа в систему.
Особого внимания заслуживает выбор типа учетной записи. Здесь предлагаются
варианты (рис. 6.9):
□ Обычный — пользователь может работать в системе, но не может администрировать ее (использовать команду sudo, устанавливать программы, управлять
пользователями и т. д.);
□ Администратор — пользователь может администрировать систему.
Изменить тип какой-либо учетной записи можно, только если в вашей системе есть
несколько пользователей, и один из них администратор. Но если, например, у вас
есть только один пользователь, и он же является администратором, то тип его учет-

Глава 6. Пользователи и группы

149

ной записи изменить нельзя. При создании же новой учетной записи выбрать для
нее тип разрешается.
Для добавления пользователя нажмите под списком пользователей кнопку +. Вам
потребуется выбрать тип учетной записи, ввести имя пользователя и его полное
имя (см. рис. 6.9). После этого учетную запись пользователя нужно отредактировать: установить пароль, картинку и т. д.

Рис. 6.8. Ubuntu 17.04: выбор картинки пользователя

Рис. 6.9. Ubuntu 17.04: выбор типа учетной записи при создании новой учетной записи

150

Часть II. Основные сведения о Linux

Для удаления пользователя служит имеющаяся под списком пользователей кнопка При этом конфигуратор спросит, что сделать с файлами пользователя (с его
домашним каталогом): удалить или сохранить на диске (рис. 6.10).

Рис. 6.10. Ubuntu 17.04: удаление пользователя

Если выбрана опция Автоматический вход (см. рис. 6.5 и 6.6), то при загрузке
системы будет выполнен вход пользователя в систему без запроса его имени и пароля. Включение автоматического входа полезно или когда вы работаете в гордом
одиночестве и вам нечего скрывать, или когда вы настраиваете публичный компьютер (в интернет-кафе, библиотеке). Во втором случае из соображений безопасности не следует включать автоматический вход для пользователя с административными правами.
Сожалею, но современные графические конфигураторы управления пользователями Ubuntu и Fedora меня разочаровали. В предшествующих их версиях можно было
выбрать группы, к которым принадлежит пользователь, установить его расширенные права и т. п. А сейчас конфигураторы позволяют выполнить только базовые
операции с пользователем: создать и удалить учетную запись — даже возможности
редактирования учетной записи и то ограниченны. Поэтому, на мой, естественно,
взгляд, эти конфигураторы практически бесполезны, и для управления пользователями лучше использовать команды, описанные в разд. 6.3.

6.4.2. Графический конфигуратор в openSUSE
Для запуска конфигуратора Управление пользователями и группами (рис. 6.11)
запустите конфигуратор YaST и выберите Управление пользователями и груп­
пами.
Использовать конфигуратор очень просто: кнопка Добавить служит для создания
нового пользователя, а кнопки Редактировать и Удалить — для изменения и удаления, соответственно, уже созданного.

Глава 6. Пользователи и группы

151

Рис. 6.11. openSUSE: окно Управление пользователями и группами, вкладка Пользователи

При создании пользователя (рис. 6.12) у вас есть возможность (на вкладке Подроб­
ности) выбрать, к каким группам должен принадлежать этот пользователь. Если
пользователю не нужен доступ к Интернету, не следует помечать его принадлежность к группе dialout.
Даже если при создании пользователя вы забыли определить группы, к которым
должен принадлежать пользователь, то всегда сможете сделать это позже — при
изменении его учетной записи (кнопка Редактировать).
Запрет входа в систему
Если вам нужно временно запретить пользователю вход в систему (но удалять его вы
не хотите), выделите этого пользователя, нажмите кнопку Редактировать и установи­
те флажок Отключить вход пользователя в систему.

Для редактирования групп: создания, удаления, изменения списка членов группы — следует перейти на вкладку Группы (рис. 6.13). Нажав здесь кнопку Редак­
тировать, вы можете изменить параметры группы (рис. 6.14),— например, добавить в ее состав новых пользователей. А вот чтобы удалить пользователя из
группы, вам придется перейти на вкладку Пользователи, выбрать нужного пользователя, нажать кнопку Редактировать, затем перейти на вкладку Подробности
и уже там отключить группы, членом которых не должен быть пользователь. Да,
неудобно, но другого способа нет.

152

Часть II. Основные сведения о Linux

Рис. 6.12. openSUSE: создание нового пользователя

Рис. 6.13. openSUSE: окно Управление пользователями и группами, вкладка Группы

Глава 6. Пользователи и группы

153

Рис. 6.14. openSUSE: изменение группы

Еще о правах root и командах su и sudo
применительно к openSUSE
Когда вы запускаете какой-нибудь конфигуратор, система просит вас ввести пароль
root. Вы его вводите, запускается конфигуратор с правами root, и вы успешно производите настройку системы.
А что делать, если вам нужно отредактировать вручную какой-нибудь файл конфигурации, — например: /boot/grub/menu.lst? Если вы его откроете в текстовом редакторе, в том же gedit, то не сможете потом сохранить изменения, поскольку у вас нет
прав доступа к каталогу /boot (точнее, нет права изменять файлы в этом каталоге).
Короче, вам нужны права root.
Чтобы их получить, откройте терминал (Приложения | Стандартные | Терминал)
среды GNOME и введите команду su.
Программа su запросит у вас пароль пользователя root. При вводе пароля в терминале он не отображается на экране — просто введите пароль и нажмите клавишу
. Теперь вы можете вводить команды от имени пользователя root. В нашем
случае для редактирования файла /boot/grub/menu.lst нужно ввести команду:
gedit /boot/grub/menu.lst

154

Часть II. Основные сведения о Linux

Если вы работаете за компьютером один, можете смело использовать команду su.
Но бывают ситуации, когда нужно предоставить возможность настройки компьютера другому пользователю, но вы не хотитесообщать ему пароль root. В этом случае на помощь приходит команда sudo. После ввода команды sudo нужно ввести
свой пароль, а не пароль root. Понятно, что право использовать sudo имеет не каждый пользователь, а только указанные в файле /etc/sudoers (файл редактируется не
вручную, а с помощью конфигуратора YaST | Sudo). Но по умолчанию в openSUSE
для этого файла установлена политика, разрешающая использовать sudo всем пользователям системы (рис. 6.15). Да, это неправильно с точки зрения безопасности, но
вполне приемлемо для домашнего компьютера.
Выполнять команду sudo нужно так:
sudo команда_которую_нужно_выполнить_с_правами_rооt
Например,
sudo gedit /boot/grub/menu.lst

Рис. 6.15. openSUSE: использовать команду sudo могут все пользователи этой системы

Конфигуратор Центр безопасности openSUSE
В группе Безопасность и пользователи конфигуратора YaST имеется конфигуратор Центр безопасности. При его запуске открывается окно Обзор безопасности

Глава 6. Пользователи и группы

155

(рис. 6.16), в котором содержится список настроек, определяющих безопасность
системы.
□ Для максимальной безопасности в разделе Обзор безопасности выберите следующие установки:


Использовать безопасные разрешения файлов — в файлах /etc/permissions *
содержатся разрешения файлов. Самые жесткие разрешения находятся
в файлах secure или paranoid;



Запускать демон DHCP в chroot — демон DHCP будет запускаться в chrootокружении (в так называемой «песочнице»). Даже если его взломают, злоумышленник не сможет добраться до основной файловой системы компьютера;



Удаленный доступ к Х-серверу — не выбирайте эту опцию, если планируете предоставить удаленный доступ к своему компьютеру;



IPv6-переадресация— IPv6 пока не используется, поэтому переадресация
IPv6 не нужна.

Рис. 6.16. openSUSE: Центр безопасности

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

156

Часть II. Основные сведения о Linux

□ Раздел Настройки пароля (рис. 6.17) позволяет изменить параметры паролей —
например, выбрать другой метод шифрования (хотя используемый по умолчанию Blowfish является самым безопасным), установить «возраст» пароля.

Рис. 6.17. openSUSE: параметры пароля

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


Параметры из разделов Настройки входа в систему и Добавление пользова­
теля вы вряд ли будете изменять, а вот в разделе Различные настройки имеется параметр Разрешить магические клавиши SysRq — включите его, если ваша система часто зависает, и вам нужно контролировать процесс ее «разгрузки»,
когда система находится в «полузависшем» состоянии. Описание этих «магических» (они же аварийные) клавиш приведено в разд. 3.5.
Параметр «Использовать магические клавиши SysRq»
Как можно видеть на рис. 6.16, параметр Использовать магические клавиши SysRq
находится в разделе Обзор безопасности. Это тот же самый параметр, что и пара­
метр Разрешить магические клавиши SysRq из раздела Различные настройки.
Почему один и тот же параметр в разных разделах называется по-разному, мне не по­
нятно. Им виднее...

157

Глава 6. Пользователи и группы

Как видите, средства управления пользователями в openSUSE намного удобнее,
чем в Ubuntu и Fedora. При использовании этих средств практически нет необходимости задействовать консольные утилиты.

6.5. Квотирование
Квотирование — это механизм ограничения дискового пространства пользователей. Linux — система многопользовательская, поэтому без ограничения дискового
пространства вам не обойтись. Когда используешь компьютер в гордом одиночестве, то все дисковое пространство доступно вам и только вам. А вот когда пользователей несколько, нужно ограничить доступное пространство, чтобы один из пользователей не «узурпировал» все место на диске. Как именно вы будете ограничивать дисковое пространство, решать только вам — можно поделить дисковое
пространство поровну между пользователями, можно одним пользователям отдать
больше места, а другим — меньше.
На домашнем компьютере квотирование вряд ли понадобится, а на сервере, как
правило, для каталога /home отводится отдельный раздел жесткого диска. Поэтому
будем считать, что у нас есть отдельный раздел, который монтируется к каталогу
/home.
Для настройки квот нужно установить пакет quota. Более ничего устанавливать не
потребуется.
Чтобы пользователи не потеряли свои данные, перезагрузитесь в однопользовательский режим (параметр ядра single). Теперь можно приступать к редактированию квот.
Первым делом разрешим устанавливать квоты на разделе, который содержит файлы пользователей. Откройте файл /etc/fstab:
# nano /etc/fstab
Добавьте параметр usrquota к списку параметров раздела:
/dev/sda5

/home

ext4 defaults,usrquota

0

2

Параметр usrquota включает поддержку квот для отдельных пользователей. Если
вам нужна поддержка квот групп пользователей, тогда добавьте параметр grpquota.
Теперь перемонтируем /home, поскольку мы только что изменили его параметры:
# mount -о remount /home
Механизм квотирования требует создания файлов aquota.user и aquota.group, но поскольку мы будем устанавливать квоты только для пользователей, а не для групп,
то и создадим лишь файл aquota.user:
# touch /home/aquota.user'
# chmod 600 /home/aquota.user
После этого введем команду:
# quotacheck -vagum

Часть II. Основные сведения о Linux

158

Раз мы создали файл aquota.user вручную, то получим сообщение об ошибке, но это
только в первый раз, — далее все будет нормально:
quotacheck: WARNING— Quotafile /home/aquota.user was probably truncated.
Can't save quota settings...
quotacheck: Scanning /dev/sda5 [/home] quotacheck: Old group file not found.
Usage will not be substracted.
done
quotacheck: Checked 3275 directories and 54301 files
Теперь отредактируем квоты для пользователя user:
# edquota -u user
Будет запущен текстовый редактор по умолчанию, и вы увидите следующий текст:
Disk quotas for user user (uid 1001):
Filesystem blocks
soft
hard
inodes
/dev/sda5
16
0
0
5

soft
0

hard
0

Установка редактора по умолчанию
По умолчанию используется редактор vi, который, мягко говоря, не очень удобен. Для
изменения редактора по умолчанию установите переменную окружения editor .
Например, EDITOR=nano.

Разберемся, что это значит:


blocks — место в блоках, используемое пользователем (1 блок = 1 Кбайт);



soft— максимальное дисковое пространство (в блоках по 1 Кбайт), которое
может занимать пользователь. Если вы включите период отсрочки (grace period),
то пользователь получит только лишь сообщение о превышении квоты;



hard — жесткое ограничение, эту квоту пользователь превысить не может, даже
если включен период отсрочки. Предположим, вы хотите «отдать» пользователю 500 Мбайт. В качестве жесткой квоты можно установить значение 500 Мбайт
(или 500 000 блоков), а в качестве «мягкой» — значение 495 Мбайт (495 000 блоков). Когда пользователь превысит 495 Мбайт, он получит сообщение о превышении квоты, а вот когда будет превышена жесткая квота, то пользователь
больше не сможет сохранять файлы в своем домашнем каталоге;



inodes — число используемых пользователем файлов.

Отредактируйте квоты так:
Disk quotas for user user (uid 1001):
Filesystem
blocks
soft
hard
inodes
/dev/sda5
16
95000 500000 5

soft
0

Теперь сохраните файл, выйдите из редактора и введите команду:
# edquota -t

hard
0

Глава 6. Пользователи и группы

159

Сейчас мы установим период отсрочки:
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/sda8
7days
7days
Вы должны вместо 7days вписать свой период отсрочки, при этом используйте
названия единиц изменения времени на английском:


seconds — секунды;

□ days — дни;

□ minutes — минуты;



weeks — недели;

□ hours — часы;



months — месяцы.

Например:


24hours — 24 часа;



2days — 2 дня;



1 weeks — 1 неделя.

Включим квотирование для наших файловых систем:
# quotaon файловая_система
Например:
# quotaon /
После этого перезагрузим систему:
# reboot
При загрузке вы увидите сообщение: Turning on user and group quotas for local
filesystems (Включаем квоты пользователей и групп для локальных файловых систем) — это означает, что механизм квотирования работает правильно.
Для просмотра квот служит команда repquota, например:
# repquota /home
Наверняка использовать редактор vi вам не очень нравится. Значительно упрощают
задание квот так называемые прототипы. Например, вы задали ограничение для
пользователя den, но у вас есть еще несколько пользователей, для которых нужно
задать такие же ограничения. Вы можете использовать квоту пользователя den
в качестве прототипа:
# edquota -р den userl
# edquota -р den user2

ГЛАВА

7

Пакеты и управление пакетами
7.1. Способы установки
программного обеспечения в Linux
Установка программного обеспечения в Linux осуществляется двумя основными
способами:
□ с помощью пакетов;
□ из исходных кодов.

Пакет представляет собой набор файлов, содержащий все необходимое для установки программы. Существуют два основных типа пакетов:
□ RPM-пакеты — применяются во всех Red Hat-совместимых дистрибутивах: Red
Hat, Fedora, CentOS, ALT Linux и др.;
□ DEB-пакеты — применяются в дистрибутиве Debian и в дистрибутивах, на нем
основанных: Ubuntu, Kubuntu, Edubuntu, Denix и др.
Название RPM-пакетов связано с предложенной компанией Red Hat технологией, основанной на использовании менеджера пакетов rpm (Red Hat Package
Manager). С DEB-пакетами все проще — они так названы, потому что последние
три символа имени у файлов пакетов deb (сокращение от Debian).
Пакеты Slackware
В Slackware Linux используется собственный формат пакетов, не совместимый ни
с RPM, ни с DEB. Об установке пакетов в Slackware мы поговорим отдельно.

Не найдя в своем дистрибутиве нужной вам программы, попробуйте поискать ее
пакет на следующих сайтах:
□ RPM-пакеты: http://rpmfind.net и http://rpm.pbone.net;
□ DEB-пакеты: http://www.debian.org/distrib/packages
и http://packages.ubuntu.com/.
Ежели вы не можете найти в Интернете комплектный пакет программы, тогда придется компилировать программу самому, — при условии, что вы нашли архив с ее
исходным кодом. Да, в Linux некоторые программы распространяются только

Глава 7. Пакеты и управление пакетами

161

в исходных кодах. Для установки такой программы нужно распаковать архив с ее
исходными кодами (желательно, в каталог /usr/src), затем перейти в каталог, содержащий файлы распакованного архива исходных кодов, и поочередно выполнить
следующие команды:
./configure
make
make install
Сценарий configure проверит, содержит ли ваша система необходимые библиотеки
или программы, и, если все нормально, создаст файл Makefile. Если вы увидели
сообщение об ошибке, внимательно прочитайте его и попытайтесь устранить причину ошибки, — например, установите недостающую библиотеку. Ясно, что в случае ошибки вводить последние две команды не нужно.
Вторая команда (make) на основании созданного файла Makefile компилирует программу. А последняя команда (make install) устанавливает программу и дополнительные файлы в дерево файловой системы: программы — обычно в каталог /usr/bin,
документацию — в /usr/share/doc, конфигурационные файлы — в /etc и т. д.
ЧИТАЙТЕ ФАЙЛ README!
Для получения подробных инструкций по установке и удалению таких программ лучше
всего прочитать файл README, который обычно присутствует в архиве.

Пакет установки программы, как правило, состоит из набора файлов — например,
исполнимого и конфигурационного, а также файла справки. В зависимости от организации программы установки все эти файлы могут быть:
□ заархивированы каждый отдельно — в этом случае мы получаем набор из архивов файлов программы плюс программа установки;


заархивированы в один общий архив, содержащий комплект файлов программы
и программу установки;



укомплектованы в саму программу установки — самый удобный случай, когда
у нас всего один файл, — программа установки.

Кроме файлов собственно программы, в пакете хранится также и служебная информация, описывающая процесс установки программы:
□ пути — ведь один файл нужно скопировать, например, в каталог /usr/bin, а другой — в /usr/share/doc;


дополнительные действия — например, создание каталога, установка тех или
иных прав доступа к файлам и каталогам программы;



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

162

Часть II. Основные сведения о Linux

ется возможность установки программы и без удовлетворения зависимостей
(тогда информация о зависимостях будет просто проигнорирована), но в большинстве случаев установленная таким образом программа работать не станет;
□ конфликты — та или иная программа может в системе конфликтовать с другой
программой. Например, программы sendmail и postfix являются серверами электронной почты — МТА-агентами (МТА, Mail Transfer Agent). Поскольку в системе может быть только один МТА-агент, установить можно или sendmail, или
postfix, т. е. пакет sendmail конфликтует с пакетом postfix и наоборот.
Некоторая информация о содержащейся в пакете программе, как правило, содержится в самом имени пакета. Сделано это исключительно для удобства — взглянув
на название пакета, можно узнать версию программы и еще кое-какую информацию о ней, например:
program-1.5-14.i586.rpm
Здесь program — название программы, 1.5 — ее версия, 14 — выпуск пакета, i586 —
архитектура процессора, на которую рассчитана программа. Если программа независима от архитектуры, то указывается параметр noarch, — обычно так делают для
документации, примеров конфигурационных файлов, т. е. для пакетов, содержащих
информацию, которая не зависит от архитектуры.

7.2. Репозитории пакетов
Репозиторий — это хранилище пакетов. Репозиторий может быть локальным, например, каталогом на жестком диске или на DVD, или же сетевым — сервером
в Интернете или в локальной сети, содержащем RPM- или DEB-пакеты. Для чего
создаются репозитории? Для централизованного управления обновлением пакетов.
Представьте, что у нас нет репозиториев. Тогда, чтобы узнать, вышла ли новая версия нужной вам программы, вам пришлось бы посещать сайт ее разработчика или,
по крайней мере, сайт разработчика дистрибутива Linux. А это не очень удобно.
Один раз вы можете забыть проверить наличие обновлений, а потом вам вообще
надоест это делать. Проще дождаться выхода новой версии дистрибутива и обновить все программы за один раз.
Так раньше и было. Вот вышла программа, ее включили в состав дистрибутива,
но полностью не протестировали (да и невозможно предварительно протестировать все варианты использования любой новой программы). И в процессе эксплуатации программы выяснилось, что она работает неправильно, но только при
некоторых условиях, — например, с определенным форматом файла. Или же на
платформе Linux был организован, например, Web-сервер. А через некоторое
время оказалось, что в этой версии Web-сервера имеется «дыра», поэтому разработчики вскоре выпустили новую ее версию, эту «дыру» закрывающую. Пользователь же, установивший программу Web-сервера, ничего не подозревая о том,
что вышла новая ее версия, находился бы под угрозой взлома минимум полгода

163

Глава 7. Пакеты и управление пакетами

или даже год — до выхода следующей версии дистрибутива. А его сервер могли
бы взломать уже на следующий день после обнаружения «дыры».
Но не тут-то было — разработчики Linux, заботясь о нас с вами, создали репозитории, с помощью которых можно быстро и удобно отслеживать обновления тех
или иных пакетов. Причем это делает в автоматическом режиме сам менеджер
пакетов, а вам остается лишь указать, какие обновления нужно загружать, а какие — нет. Практически все системы управления пакетами современных дистрибутивов поддерживают работу с репозиториями.

7.3. Программы для управления пакетами
Для управления пакетами в разных дистрибутивах используются разные программы. В табл. 7.1 приведены программы управления пакетами, которые можно встретить в современных дистрибутивах.
Таблица 7.1. Программы управления пакетами
Программа

Дистрибутив

Описание

rpm

Red Hat-совместимые дист­
рибутивы (Fedora, ALT Linux,
openSUSE и др.)

Простой менеджер пакетов. Работает
в текстовом режиме. Не умеет разрешать
зависимости пакетов

urpmi

Mageia

Текстовый менеджер пакетов, поддер­
живающий источники пакетов и автомати­
чески разрешающий зависимости

dpkg

Дистрибутивы, основанные
на Debian (Ubuntu, Kubuntu
и др.)

Простой менеджер пакетов. Работает
в текстовом режиме. Не умеет разрешать
зависимости пакетов

apt

Debian, Ubuntu (и ее клоны),
ALT Linux и др.

Мощный менеджер пакетов, работающий
в текстовом режиме. Умеет разрешать
зависимости пакетов и поддерживает
репозитории (источники пакетов)

yum

Устаревшие версии Fedora
(до версии 22) и дистрибути­
вы, основанные на нем

Мощный менеджер пакетов, работающий
в текстовом режиме. Умеет разрешать
зависимости пакетов и поддерживает
репозитории (источники пакетов)

dnf

Современные версии Fedora
(начиная с версии 22)
и дистрибутивы,
основанные на нем

Современный менеджер пакетов, пришел
на смену yum. Умеет разрешать зависимо­
сти пакетов и поддерживает репозитории
(источники пакетов)

gnome-software

Любые со средой GNOME 3

Центр приложений GNOME 3. Может
использоваться для установки, удаления
и обновления приложений

pkgtool

Slackware

Менеджер пакетов Slackware, заслужи­
вающий отдельного разговора

zypper

openSUSE

Менеджер пакетов SUSE. Работает
в текстовом режиме. Умеет разрешать
зависимости пакетов

164

Часть II. Основные сведения о Linux

Разрешение зависимостей
Наверное, вы обратили внимание на фразу в таблице «умеет разрешать зависимости
пакетов». Это означает следующее: если при установке пакета будет обнаружено, что
для корректной его установки ему нужны дополнительные пакеты, то менеджер паке­
тов установит их. Если же менеджер пакетов не умеет разрешать зависимости, то он
лишь сообщит, что установить пакет невозможно, и выведет список файлов (файлов,
а не пакетов!), которые нужны для установки этого пакета. А уж какой файл в каком
пакете находится, вам придется догадываться самостоятельно.

7.4. Программа rpm
(все Red Hat-совместимые дистрибутивы)
Если вы хотите установить пакет, который не входит в состав дистрибутива (например, загруженный из Интернета), вам следует использовать программу rpm.
ГРАФИЧЕСКИЙ МЕНЕДЖЕР ПАКЕТОВ RPM DRAKE
Для установки пакетов, которые входят в состав дистрибутива, намного удобнее ис­
пользовать графический менеджер пакетов rpmdrake.

Программа rpm — полноценный текстовый менеджер пакетов, позволяющий устанавливать, удалять пакеты, просматривать информацию об уже установленных и
новых пакетах, обновлять пакеты.
Чтобы установить пакет с помощью rpm, выполните команду:
# rpm -ihv
Удалить пакет так же просто:
# rpm -е
Для обновления пакета служит команда:
# rpm -U
Просмотреть, установлен ли тот или иной пакет, можно с помощью команды:
# rpm -qa | grep
Если вы хотите просмотреть информацию о пакете, то введите команду:
# rpm -qi
Просмотреть список файлов, входящих в состав пакета, можно командой:
# rpm -ql
Наконец, вывести все пакеты можно командой:
$ rpm -qa | grep more
Сборка собственных пакетов
Программа rpm может также использоваться и для сборки собственных пакетов, но
рассмотрение такой процедуры выходит за рамки этой книги. Мою статью о сборке
собственных RPM-пакетов вы найдете по адресу:

http://www.dkws.org.ua/article.php?id=58.

Глава 7. Пакеты и управление пакетами

165

7.5. Программа urpmi
Программа urpmi представляет собой систему управления пакетами, использующуюся в Mageia (ранее — в Mandriva). Как уже было отмечено в табл. 7.1, urpmi
поддерживает зависимости пакетов.
Не нужно расценивать urpmi как замену rpm — система urpmi просто делает управление пакетами проще (хотя желающие могут использовать утилиту rpm, если
сочтут ее более удобной).
Локальная установка пакетов
Я, например, предпочитаю для локальной установки пакетов (когда пакет из какого-либо
источника уже закачан на мой компьютер) использовать rpm.

7.5.1. Установка пакетов
Для установки пакета служит команда:
# urpmi
Так, чтобы установить пакет тс (файловый менеджер Midnight Commander), следует ввести команду:
# urpmi me
Программа просматривает список источников пакетов, хранящийся в файле
/etc/urpmi/urpmi.conf. Если она находит пакет в одном из источников, то устанавливает его вместе со всеми необходимыми для его работы пакетами (при этом urpmi
автоматически разрешает зависимости пакетов).
Существуют три вида репозиториев, поддерживаемых urpmi:
□ хранилища на съемных носителях (removable) — репозитории на компактдисках, DVD, ZIP-носителях, флеш-дисках и т. д.;
□ локальные (local) — находятся в каталоге на жестком диске;
□ удаленные (distant server) — пакеты находятся на удаленном FTP- или НТТРсервере.
Просмотреть список источников пакетов можно с помощью команды:
# urpmq —list-media
Добавить источники пакетов можно с помощью команды:
# urpmi.addmedia
Список источников по умолчанию обычно записан в файл urpmi.conf и редко требует
редактирования — тогда, например, когда вы хотите добавить сторонние репозитории.

166

Часть II. Основные сведения о Linux

7.5.2. Обновление и удаление пакетов
Для удаления пакета нужно ввести команду:
# urpme
Если пакет нужен для работы других пакетов, то программа спросит у вас, хотите
ли вы удалить и эти пакеты, иначе придется отказаться от удаления выбранного
пакета.
Для обновления всей системы, т. е. получения списка новых версий пакетов, используется команда:
# urpmi —auto-select

7.5.3. Поиск пакета.
Получение информации о пакете
Найти пакеты, содержащие в названии определенную строку, можно с помощью
команды:
# urpmq
Команда urpmf позволяет получить различную информацию о пакете, например:


urpmf — выводит пакеты, содержащие указанный файл;



urpmf —group — выводит пакеты, входящие в указанную группу;



urpmf —size — выводит размер указанного пакета;



urpmf —summary — ВЫВОДИТ общую информацию О пакете.

7.6. Программа yum
Программа yum (Yellow dog Updater Modified) используется во многих дистрибутивах, в том числе в CentOS и ранних версиях Fedora (в последние версии Fedora
включен менеджер пакетов dnf, который будет рассмотрен далее).
Yum работает аналогично другим подобным программам (urpmi, apt)— когда вы
устанавливаете пакет, yum производит поиск пакета в репозиториях, перечисленных в конфигурационном файле, загружает пакет и устанавливает его. В качестве
репозитория могут выступать как дистрибутивные диски, так и серверы Интернета.

7.6.1. Использование yum
Общий формат вызова yum выглядит так:
yum команда [пакет(ы)]
Команды yum приведены в табл. 7.2.

167

Глава 7. Пакеты и управление пакетами

Таблица 7.2. Использование уит
Команда

Описание

yum install пакет

Установить пакет из репозитория (также устанавливаются
пакеты, необходимые для работы устанавливаемого пакета,
т. е. разрешаются зависимости)

yum remove пакет

Удалить пакет, а также все пакеты, которые зависят от него

yum update

Проверить наличие обновлений всех пакетов. Если обновле­
ния есть, то они будут установлены

yum update пакет

Проверить обновления конкретного пакета. Если есть свежая
версия, то она будет установлена

yum check-update

Только проверить наличие обновлений (обновления
не устанавливаются)

yum check-update пакет

Проверить наличие обновлений конкретного пакета (обновле­
ния не устанавливаются)

yum info пакет

Вывести информацию о пакете

yum list

Вывести список всех пакетов: как установленных, так и дос­
тупных для установки из репозиториев

yum list a*

Вывести список всех пакетов, которые начинаются на букву
«а»

yum search строка

Найти все пакеты, в описаниях которых есть указанная строка

yum groupinstall "группа" Установить все пакеты из указанной группы

yum grouplist

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

При установке пакетов с помощью yum не следует далеко отходить от компьютера— часто нужные пакеты находятся не на локальных источниках, а на серверах
в Интернете, поэтому yum выведет общий объем пакетов, которые вы хотите установить, и спросит вас, хотите ли вы их установить или нет:
Total download size: 10.5 М
It this ok [Y/N]:
Если вы согласны для установки выбранных пакетов загрузить 10,5 Мбайт файлов,
нажмите клавишу , если передумали — нажмите . Довольно-таки удобно,
иначе (с учетом того, что при разрешении зависимостей будут установлены дополнительные пакеты) можно при установке одного небольшого, на первый взгляд,
пакета превысить месячную норму по трафику.
Получить информацию о пакете, как было показано в табл. 7.2, можно с помощью
команды:
yum info пакет
При этом на экран выводится следующая информация (рис. 7.1):
□ Название (Name) — имя пакета;
□ Архитектура (Arch) — архитектура компьютера;

Часть II. Основные сведения о Linux

168

Рис. 7.1. Вывод информации о пакете



Период (Epoch) — как бы подверсия пакета, поле Epoch используется, когда
требуется уменьшить версию или релиз пакета по сравнению с имеющимся
в репозитории;

□ Версия (Version) — версия пакета;
□ Выпуск (Release) — релиз пакета (можете считать это подверсией пакета);
□ Объем (Size) — размер занимаемого места на диске;


Источник (Repo) — хранилище пакета или значение installed, если пакет уже
установлен;



Из источника (From repo)— хранилище, из которого был установлен пакет
(только для установленных пакетов);

□ Аннотация (Summary) — общая информация о пакете;
□ Ссылка (URL) — Web-страничка разработчика программы;
□ Лицензия (License) — лицензия, по которой распространяется программа;
□ Описание (Description) — описание пакета.
Для вывода информации обо всех пакетах можно использовать команду yum list,
но пакетов слишком много, и такой вывод может оказаться слишком громоздким.

Гпава 7. Пакеты и управление пакетами

169

Удобнее задать маску имени пакета— например, yum list а*— в этом случае
будут выведены все пакеты, начинающиеся на букву «а».

7.6.2. Управление источниками пакетов
Источники пакетов yum описываются в файле конфигурации /etc/yum.conf. Откройте
этот файл (листинг 7.1).
Редактирование файла /етс/yum.conf
Обычно файл /etc/yum.conf приходится редактировать редко. Но помните, что делать
это можно только от имени пользователя root. Если вы привыкли к графическому ре­
жиму, тогда в терминале для редактирования этого файла нужно ввести команду:

su -с /etc/yum.conf
В качестве редактора могут выступать программы gedit (если у вас GNOME), kwrite
или kate (если у вас KDE). Если открыть этот файл в редакторе без прав root, то про­
смотреть его вы сможете, но сохранить изменения не удастся.

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debugleve1=2
logfile=/var/log/yum.log
exactarch=l
obsoletes=l
gpgcheck=l
plugins=l
installonly_limit=3
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum. repos.d
Ранее репозитории описывались непосредственно в файле yum.conf (как и в случае
с urpmi.conf), но потом было принято решение хранить описания репозиториев в отдельных REPO-файлах в каталоге /etc/yum.repos.d. Каждый файл в этом каталоге
называется так: .rеро.
В листинге 7.2 приведен пример описания источника пакетов Fedora (версия до 22),
взятый из файла fedora.rеро.

[fedora]
name=Fedora $releasever — $basearch
baseurl=http://download.fedora.redhat.com/pub/fedora/linus/releases/$releasever

/Everything/$basearch/os/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora$releasever&arch=$basearch

170

Часть II. Основные сведения о Linux

enabled=l
gpgcheck=l
gpgkey=file: ///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file: ///etc/pki/rpm-gpg/RPMGPG-KEY

В квадратных скобках здесь указывается сокращенное имя репозитория. Параметр
name задает полное имя источника пакетов. Интернет-адрес (URL) источника пакетов
указан параметром baseuri, а параметр mirroriist определяет список зеркал— копий репозитория, которые будут использоваться, если URL источника, указанный
в baseuri, окажется недоступен. Параметр enabled, установленный в 1, указывает на
то, что этот источник активен, и yum использует его при установке пакетов. Следующий параметр: gpgcheck — обязывает yum проверить подпись источника (если
gpgcheck=1), а ключ для проверки подписи задан параметром gpgkey.
Добавление источника производится путем размещения соответствующего ему
REPO-файла в каталоге /etc/yum.repos.d. Где этот файл взять? Обычно они представлены в виде RPM-пакетов на Web-серверах репозиториев, поэтому надо просто
скачать такой RPM-пакет и установить его.
Например, для установки REPO-файла популярного репозитория RPM Fusion нужно выполнить команду:
su -c 'rpm -Uvh http://downloadl.rpmfusion.org/free/fedora/
rpmfusion-free-release-stable.noarch.rpm
http://downloadl.rpmfusion.org/nonfree/fedora/
rpmfusion-nonfree-release-stable.noarch.rpm'
Что делает эта команда, ясно и без комментариев. Если вы не можете найти соответствующий источнику REPO-файл, его можно написать вручную по формату
листинга 7.2. При этом нужно еще знать базовый URL источника пакетов.
Удалять файлы источников пакетов, если сам источник уже не нужен, совсем не
обязательно. Достаточно установить параметр enabled для источника в о, и этот источник использоваться не будет.

7.6.3. Установка пакетов через прокси-сервер
По умолчанию yum полагает, что наш компьютер напрямую подключен к Интернету (не через прокси-сервер). Если вы подключаетесь к Интернету по локальной
сети, т. е. через прокси-сервер, этот факт нужно отразить в файле yum.conf, иначе вы
не сможете устанавливать пакеты.
Узнайте у администратора сети параметры подключения к прокси-серверу (адрес,
порт, имя пользователя и пароль) и пропишите их в файле yum.conf таким вот образом:
# Адрес прокси и его порт
proxy=http://proxy.company.ru:8080
# Имя пользователя и его пароль
proxy_use rname=dhsilabs
proxy_password=secret

Глава 7. Пакеты и управление пакетами

171

7.6.4. Плагины для yum
Для yum доступно множество плагинов. Мы установим два: fastestmirror и presto.
Первый плагин позволяет найти самый быстрый источник пакетов, что существенно сокращает время установки пакетов. А второй— пытается загружать только
обновленные части пакетов вместо полной загрузки пакетов при обновлении, что
сокращает трафик и уменьшает время обновления.
Для установки этих плагинов введите команды:
# yum install yum-plugin-fastestmirror
# yum install yum-presto
Установка пакетов с дистрибутивного диска
Ранее в моих книгах (как правило, изданных до 2010 года) описывалось, как заставить
менеджер пакетов Fedora устанавливать пакеты с дистрибутивного диска. В этой книге
подобного материала для Fedora не предусмотрено. Во-первых, скорость Интернета
выросла, стоимость снизилась, и высокоскоростной Интернет теперь доступен почти
каждому. А при установке пакетов из Интернета у вас будут всегда самые новые вер­
сии пакетов. Во-вторых, мы только что установили два плагина, уменьшающих время
загрузки пакетов и экономящих ваш трафик, — поэтому я не вижу более смысла ис­
пользовать устаревшие пакеты с установочного DVD. Если же у вас медленное соеди­
нение или вы принципиально желаете устанавливать пакеты с установочного диска, а
не из интернет-репозитория, тогда посетите следующую страничку: http://www.
dkws.org.ua/phpbb2/viewtopic.php?p=23984. Там хотя и описывается настройка ме­
неджера пакетов Fedora 9, вам не составит большого труда настроить «по образу и
подобию» этого описания и более свежие версии Fedora.

7.7. Менеджер пакетов dnf
Менеджер пакетов dnf пришел в дистрибутиве Fedora на смену yum. Впервые экспериментальная версия dnf появилась в Fedora 18, а, начиная с Fedora 22, менеджер
dnf стал использоваться по умолчанию, хотя все еще есть возможность установить
yum.
По сравнению с yum, новый менеджер более быстрый, обладает низким потреблением памяти и эффективнее управляет зависимостями.
Основные команды менеджера dnf (install, remove, upgrade, info, search и т. д.) такие же, что и в менеджере пакетов yum, поэтому при переходе с yum на dnf вы не
ощутите никакого дискомфорта. Основным конфигурационным файлом менеджера
является файл /etc/dnf/dnf.conf. Его синтаксис полностью повторяет синтаксис файла
yum.conf.
Каковы же отличия dnf от yum с точки зрения пользователя? Во-первых, команды
upgrade и update теперь идентичны. Во-вторых, опция -skip-broken теперь не поддерживается, как и команды resoivedep и deplist, вместо которых следует использовать dnf provides И dnf repoquery --requires.
Некоторое время в Fedora все еще будет поддерживаться yum, хотя при вводе
команды yum выводится предупреждение о том, что эта команда устарела
(рис. 7.2), и вместо нее рекомендуется использовать dnf.

172

Часть II. Основные сведения о Linux

Рис. 7.2. Fedora 22-26: команда yum все еще поддерживается,
хотя является просто псевдонимом для dnf

Рис. 7.3. Fedora 26: предложение установить необходимый пакет

Глава 7. Пакеты и управление пакетами

173

Вот, нравится мне в Fedora 22-26, что дистрибутив сам предлагает установить недостающие пакеты. Например, вы вводите команду mc, но пакет этой программы
в системе не установлен, — в таком случае вы получите предложение установить
необходимый пакет (рис. 7.3).
Также в Fedora 22-26 (и в других дистрибутивах на базе GNOME 3) можно задействовать Центр приложений (команда gnome-software), изображенный на рис. 7.4.
Использовать эту утилиту очень просто, поэтому с ней вы сможете разобраться самостоятельно.

Рис. 7.4. Fedora 26: Центр приложений GNOME 3

7.8. Программы dkpg и apt-get:
установка пакетов в Debian/Ubuntu
7.8.1. Программа dpkg
Программа dpkg используется для установки, удаления и управления пакетами
Debian/Ubuntu и вызывается из командной строки. Формат ее вызова следующий:
dpkg [ключи] действие
Для запуска dpkg нужно обладать полномочиями root, получить которые можно
с помощью команды sudo. Рассмотрим, как правильно работать с программой dpkg.

174

Часть II. Основные сведения о Linux

Предположим, у нас есть пакет package.deb. Для его установки откройте Терминал
(Приложения | Стандартные | Терминал) и введите команду:
sudo dpkg -i //package.deb
Как видите, в установке пакета нет ничего сложного. Процесс установки состоит из
следующих шагов:
1. Из пакета извлекаются управляющие файлы.
2. Если уже была установлена старая версия этого пакета, тогда из старого пакета
запускается сценарий prerm — он подготавливает систему к удалению старой
версии пакета. Другими словами, если требуется, то обновление пакета выполняется автоматически.
3. Выполняется сценарий preinst, если он есть в этом пакете.
4. Из пакета распаковываются остальные файлы. Если был установлен старый пакет, то его файлы не удаляются, а сохраняются в другом месте, чтобы их можно
было восстановить, если что-то пойдет не так.
5. Если была установлена старая версия пакета, то из него выполняется сценарий
postrm (действия после удаления). Сценарий запускается сразу после выполнения сценария preinst нового пакета, поскольку старые файлы удаляются во время
записи новых файлов.
6. Выполняется настройка пакета:


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

• запускается сценарий postinst, если он есть в этом пакете.
Удалить пакет тоже просто:
sudo dpkg -r
При удалении пакета не требуется указывать путь к пакету и «расширение» пакета,
т. е. символы .deb в конце имени файла.
Однако установка и удаление пакетов — это далеко не все, что можно выполнить
с помощью программы dpkg. Другие действия программы dpkg, которые могут
быть интересны каждому пользователю Ubuntu, представлены в табл. 7.3.
Таблица 7.3. Вспомогательные действия программы dpkg
Ключ

Описание

-l [образец]

Выводит все установленные пакеты, имена которых соответствуют
образцу. Образец задается с помощью масок * и ? — например,
образец а* соответствует любому имени пакета, начинающемуся
на букву «а». Если образец не задан, выводятся все пакеты

-L

Выводит имена файлов из указанного пакета (пакет должен быть
установлен)

175

Глава 7. Пакеты и управление пакетами

Таблица 7.3 (окончание)
Ключ

Описание



Выводит информацию об установленном пакете

—s

Выводит информацию о статусе пакета

--unpack


Распаковывает, но не устанавливает пакет (полезно, если устанавливать пакет не требуется, а нужно лишь достать из него один или
несколько файлов)

Если вы хотите получить более подробную информацию о программе dpkg, введите
команду: man dpkg — страница руководства будет выведена на русском языке.

7.8.2. Программа apt-get (apt)
Программа apt-get используется не только в Debian/Ubuntu, но и в других дистрибутивах, причем даже в Red Hat-совместимых (например, в ALT Linux), но там с ее
помощью устанавливаются RPM-пакеты. Вообще, выбор менеджера пакетов зависит от разработчиков дистрибутива. В одной версии дистрибутива может использоваться apt-get, в другой — yum, а в третьей — какой-то новый и перспективный
менеджер пакетов.
Команда apt
В современных версиях дистрибутивов Debian/Ubuntu предлагается вводить команду
apt, а не apt-get. Это один и тот же менеджер пакетов, а какую команду вводить — де­
ло вкуса. Если вы не занимаетесь поддержкой разношерстных серверов на базе
Debian, то можете вводить команду apt— так проще. Команду apt-get рекомендуется
использовать из соображений обратной совместимости — несколько устаревшие ди­
стрибутивы не знают команды apt.

Итак, предположим, что мы устанавливаем пакет package.deb. Но в процессе установки обнаружилось, что он требует пакет lib.deb, который в системе не установлен.
Что ж, вы находите в Интернете недостающий пакет lib.deb, устанавливаете его,
а затем заново устанавливаете пакет package.deb. Не очень удобно, правда?
Намного проще выполнить команду:
sudo apt-get install package
Программа apt-get просматривает файл /etc/apt/sources.list — в этом файле перечислены источники (репозитории) DEB-пакетов, в качестве которых может выступать
как компакт-диск, содержащий пакеты, так и сервер в Интернете. Программа находит указанный пакет, читает служебную информацию о нем, затем разрешает зависимости (т. е. устанавливает все другие пакеты, необходимые для работы программ
устанавливаемого пакета), а затем устанавливает нужный нам пакет. Все загруженные программой apt-get и менеджером Synaptic (о нем — далее) пакеты записываются в каталог /var/cache/apt/archives.
Чтобы просмотреть содержимое файла /etc/apt/sources.list, можно выполнить следующую команду:
sudo gedit /etc/apt/sources.list

176

Часть II. Основные сведения о Linux

Стандартные текстовые редакторы
В Ubuntu стандартным текстовым редактором является gedit. В Kubuntu его нет, по­
этому для правки файла там следует использовать текстовый редактор Kate. А в Xubuntu
в качестве текстового редактора служит mousepad.

В репозиториях Ubuntu программы распределены особым образом. Так, в репозиторий main включены основные программы, они распространяются свободно и регулярно поддерживаются (обновляются). В репозитории restricted содержатся программы, распространяемые по несвободным лицензиям, а также имеющие ограниченную поддержку. Репозиторий universe содержит программы с открытыми
лицензиями — поддержка программ из этого репозитория не гарантируется,
но вполне возможна, все зависит от разработчика программы. В репозитории
multiverse содержатся программы, распространяемые несвободно и безо всякой
поддержки и гарантий. Репозиторий security содержит исправления пакетов из
репозиториев main и restricted. Наконец, в репозитории backports содержатся
неофициальные пакеты свежих версий программ, собранные из исходных текстов
энтузиастами Ubuntu (а не разработчиками программ).
Чтобы настроить менеджер пакетов на российские репозитории (соответственно
скорость загрузки пакетов будет выше), замените во всех строках файла
/etc/apt/sources.list адрес archive.ubuntu.com на ru.archive.ubuntu.com.
Понятно, что программа apt-get может использоваться не только для установки пакетов. Общий формат вызова этой программы следующий:
apt-get [опции] команды [пакет]
Основные команды apt-get представлены в табл. 7.4.
Таблица 7.4. Основные команды apt-get
Команда
update

Описание
Синхронизируе
т файлы описаний пакетов (внутреннюю базу данных о паке­
тах) с источниками пакетов, которые указаны в файле /etc/apt/sources.list

upgrade

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

dist-upgrade

Обновляет дистрибутив. Для обновления всех пакетов рекомендуется исполь­
зовать именно эту команду

install

Устанавливает один или несколько пакетов

remove

Удаляет один или несколько пакетов

check

Служит для поиска нарушенных зависимостей

clean

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

Глава 7. Пакеты и управление пакетами

177

7.8.3. Установка RPM-пакетов в Debian/Ubuntu
Всегда может случиться так, что нужная вам программа найдется только в виде
RPM-файла. Что ж, файл формата RPM можно преобразовать в формат DEB с помощью команды alien. Сразу хочу заметить, что установка таких— преобразованных — пакетов не желательна, поскольку нет никакой гарантии, что установленная
программа будет работать, но если другого выхода нет, можно попробовать:
sudo alien package_file.rpm
Если система сообщит вам, что команда alien не найдена, тогда нужно подключиться к Интернету и установить ее с помощью команды:
sudo apt-get install alien

7.8.4. Подключение репозитория Medibuntu
В предыдущих изданиях этой книги было показано, как подключить репозиторий
Medibuntu, содержащий кодеки и другие «полезности». В настоящее время этот
репозиторий закрыт, а все пакеты, содержащиеся в нем, «перекочевали» в официальный репозиторий Ubuntu. Поэтому в подключении Medibuntu уже нет смысла.

7.8.5. Графические менеджеры в Debian/Ubuntu
Дистрибутивы Debian/Ubuntu содержат удобный графический менеджер пакетов
Synaptic (рис. 7.5). Правда, не во всех версиях Debian/Ubuntu он установлен по
умолчанию. Попробуйте ввести команду synaptic — если Synaptic не установлен,
ничто не мешает вам его установить:
sudo apt-get install synaptic
Кроме Synaptic в Ubuntu доступен еще один графический менеджер пакетов —
Muon (рис. 7.6). Получается, что вам здесь доступно как минимум три графических
менеджера пакетов: Synaptic, Muon иЦентр приложений Ubuntu (рис. 7.7). Почему
«как минимум»? Честно говоря, может где-то в недрах репозиториев Ubuntu вы
найдете и дополнительные менеджеры пакетов. Я не искал, поскольку использую
apt-get или, в крайнем случае, Synaptic.
Какой из менеджеров пакетов выбрать, если вам не нравится apt-get? Для самых
начинающих пользователей подойдет Центр приложений Ubuntu. А если вы намерены получать больше информации о пакетах и эффективнее контролировать процесс их установки, тогда или Synaptic, или Muon. Последний — довольно-таки неплохой менеджер, но вот незадача— он является менеджером пакетов для KDE.
И если вы не хотите, чтобы при его установке были загружены «тяжеловесные»
библиотеки KDE, используйте Synaptic. Я же установил Muon из «академического»
интереса — чтобы посмотреть на это чудо и рассказать о нем вам, читателю. Честно говоря, смотреть там не на что (и рис. 7.6 тому подтверждение). Установите
Synaptic — он намного удобнее.

178

Часть II. Основные сведения о Linux

Рис. 7.5. Ubuntu 17.04: менеджер пакетов Synaptic

Рис. 7.6. Ubuntu 17.04: менеджер пакетов Muon

Глава 7. Пакеты и управление пакетами

179

Рис. 7.7. Ubuntu 17.04: Центр приложений

На самом же деле Synaptic, Muon и другие подобные программы — просто оболочки для apt-get, но Synaptic— оболочка наиболее продуманная. Рассматривать
Synaptic подробно мы здесь не станем — управляться с ним очень просто, и вы разберетесь с этим без моих комментариев.

7.8.6. Волшебна я кома нда update
Ubuntu — уникальный дистрибутив. Еще вчера все прекрасно работало, а сегодня
он не загружается. Или еще вчера я устанавливал пакеты, а сегодня они не устанавливаются, и я получаю сообщение:
Е: Невозможно получить некоторые архивы, вероятно надо запустить
apt-get update или попытаться повторить запуск с ключом —fix-missing
Следуя этой рекомендации, при любых недоразумениях с установкой пакетов нужно использовать команду:
sudo apt-get update
И после ее выполнения большая часть ошибок, связанных с установкой пакетов
в Ubuntu, будет устранена.

7.9. Установка пакетов в Slackware
Slackware в плане установки пакетов — весьма специфический дистрибутив. Мне
частенько приходилось слышать мифы о сложности установки и управления пакетами в Slackware. Но все эти мифы, как оказалось, от незнания. Просто пользовате-

180

Часть II. Основные сведения о Linux

лям, привыкшим к Red Hat-совместимым дистрибутивам, трудно привыкнуть
к особенностям Slackware. Возможно, «коренным» пользователям Slackware трудно
привыкнуть к обращению с RPM-пакетами... Так утверждать не буду, потому что
сам начинал свой путь линуксоида с дистрибутива Red Hat.
Но однажды я не выдержал и установил на свой компьютер Slackware. Цель была
одна — разобраться с установкой пакетов. Неужели все так сложно? Как оказалось,
ничего сложного нет, если разобраться в особенностях Slackware, не известных
пользователям Red Hat.
Прежде чем приступить к рассмотрению системы управления пакетами, приведу
ряд мифов, которые мне удалось разрушить:
□ в Slackware нет системы управления пакетами — очевидно, этот миф сотворили пользователи, которые никогда не устанавливали Slackware, потому что такая
система в Slackware есть. Другое дело, что она не поддерживает RPM/DEBпакеты. Пакеты Slackware выполнены в виде обычных TGZ-архивов. Но и формат пакетов RPM — это тоже слегка модифицированный архивный формат,
просто его назвали иначе, в Slackware же используются обычные архивы. Хорошо это или плохо, решать вам. Но учитывая, что Slackware появился намного
раньше, чем Red Hat с его системой RPM, использование архивов TGZ вполне
закономерно;


в Slackware нет зависимостей пакетов — это тоже миф, правда, с долей
правды. Зависимости есть, но программы для установки пакетов их не обрабатывают — обработка зависимостей возложена на пользователя. Хорошо это
или плохо? С одной стороны, есть вероятность недоустановить какой-то пакет
или же удалить пакет, необходимый другим пакетам, что нарушит зависимости
пакетов. Можно также установить пакет, который будет конфликтовать с уже
установленными пакетами. Одним словом, при установке программного обеспечения в Slackware нужно четко себе представлять, что вы делаете, а то очень
легко превратить свою систему в мусорку, для наведения полного порядка в которой поможет только переустановка системы. Если в дистрибутивах, основанных на RPM/DEB, можно положиться на менеджера пакетов, то в Slackware
нужно рассчитывать только на себя, поэтому перед установкой пакета поможет
прочтение соответствующей пакету документации. С другой стороны, пакеты
в Slackware достаточно объемные и содержат практически все необходимое для
работы конкретного программного продукта. Например, чтобы установить РНР
в той же Mandriva, вам понадобился бы 21 пакет, причем каждый из них какимто образом зависел от других пакетов группы. А вот для установки РНР
в Slackware нужен всего один пакет, который включает все необходимое.
Поэтому можно сказать, что разрешение зависимостей в Slackware совсем необязательно;

□ в Slackware отсутствует механизм обновления системы — комментарии здесь
примерно такие же, как и в предыдущем случае. Такой механизм есть, и его достаточно просто использовать, нужно только знать как;

Глава 7. Пакеты и управление пакетами

181

□ в Slackware неудобно устанавливать программы, не входящие в состав дистри­
бутива, — вот тут огромная доля правды. Можно даже сказать, что это не миф...
С самой установкой ничего сложного нет, есть сложности с поиском необходимых пакетов. Но об этом мы поговорим чуть позже.

7.9.1. Управление пакетами
Для управления пакетами в Slackware используются четыре основные программы:
□ pkgtool — псевдографический (использует текстовые меню) менеджер пакетов,
позволяющий устанавливать, удалять и обновлять пакеты (рис. 7.8).

Рис. 7.8. Slackware: программа pkgtool

В его работе несложно разобраться, поэтому мы подробно его рассматривать не
станем. А любителям графических конфигураторов наверняка понравится графическая версия этой программы — XPKGTOOL (рис. 7.9);
□ installpkg — программа для установки пакетов;
□ removepkg — программа удаления пакетов;
□ upgradepkg — программа обновления пакетов.

Часть II. Основные сведения о Linux

182

Рис. 7.9. Slackware: программа XPKGTOOL

Программа установки пакетов installpkg
Перед рассмотрением программы installpkg определимся со структурой пакета. Как
уже было отмечено, пакет с программным обеспечением в Slackware — это обычный TGZ-архив, предназначенный для распаковки в корневой каталог файловой
системы.
Вот пример структуры каталогов условного пакета, содержащего всего одну программу — program:
./

usr/
usr/bin/
usr/bin/program
usr/man/
usr/man/manl
us r/man/manl/program.1.gz
install/
install/doinst.sh

183

Гпава 1. Пакеты и управление пакетами

Обратите внимание на каталог install
запускающийся после установки пакета.

— в нем находится сценарий doinst.sh,

Синтаксис команды для установки пакета:
# installpkg
Вы можете задать одну из трех опций программы:
□ -m — используется для сборки пакета (действие makepkg) в текущем каталоге;


-warn — режим предупреждений: установка пакета не производится, однако
выводится список планируемых действий. Если вы устанавливаете пакет на критически важной системе или просто не уверены в своих действиях, перед установкой пакета рекомендуется использовать режим предупреждений;



-r — рекурсивно устанавливает все пакеты из текущего каталога и всех его
подкаталогов.

Информация об установленных пакетах хранится в файле /var/log/packages. При установке пакетов вы можете указывать сразу несколько пакетов, а также использовать маски имен (типа gnome*).
Как уже было отмечено, при установке пакетов не проверяются зависимости пакетов, поэтому желательно первую установку производить в режиме -warn. Также
installpkg не сообщит, если вы попытаетесь установить уже установленный пакет.
Программа просто перезапишет старые файлы новыми версиями (из устанавливаемого пакета). Вы думаете, что это недостаток? Может и так, зато легко производить
обновление пакета,— можно просто запустить программу installpkg, хотя для
более безопасного обновления рекомендуется использовать программу upgradepkg.
Пример вызова программы:
# installpkg bash-2.04b-i386-2.tgz

Программа удаления пакетов removepkg
Формат вызова программы removepkg такой же, что и в предыдущем случае:
# removepkg
Опций у removepkg немного больше — четыре:
□ -сору — копирует пакет в резервный каталог, но не удаляет его (см. опцию
preserve);
□ -keep — сохраняет временные файлы, которые программа создает при удалении
пакета. Полезно при тестировании созданных вами пакетов (если вы разработчик/сборщик пакета);
□ -preserve — удаляет пакет, но перед удалением копирует его в резервный каталог. Место на диске с этой опцией не сэкономишь, зато пакеты можно полностью из системы не удалять;


-warn — режим предупреждения: не удаляет пакет, а просто показывает список
действий, которые будут выполнены при удалении пакета.

184

Часть II. Основные сведения о Linux

Пример вызова программы:
# removepkg bash

Программа обновления пакетов upgradepkg
Использовать программу обновления пакетов очень просто:
# upgradepkg
Программа сначала устанавливает новую версию пакета, а затем удаляет старую,
чтобы в системе не остались старые версии файлов.

7.9.2. Нет нужного пакета:
вам поможет программа rpm2tgz
Иногда просто невозможно найти программу, распространяющуюся в пакете
Slackware, — как известно, большинство пакетов распространяется в формате RPM.
В этом случае можно воспользоваться программой rpm2tgz, преобразующей пакет
формата RPM в формат Slackware. При этом следует понимать, что эта программа
преобразует лишь формат пакетов, но не занимается разрешением зависимостей
и т. п., т. е. нет никакой гарантии, что после такого преобразования установленная
программа будет работать.
Поиск Slackware-пакетов
Вы думаете, что для вашей программы нет Slackware-пакета? А может, вы не там ис­
кали? Попробуйте посетить сайт http://linuxpackages.net/— там есть очень много
Slackware-пакетов.

7.9.3. Программа slackpkg:
установка пакетов из Интернета
Наверное, вы заметили, что программа installpkg занимается установкой пакетов из
локального каталога. А что делать, если пакет находится в Интернете? Понятно,
что его нужно скачать и установить программой installpkg, но если вы привыкли
к программам вроде yum, Slackware из-за этого может показаться вам ущербным
и малофункциональным дистрибутивом.
На помощь приходит программа slackpkg, позволяющая несколько автоматизировать установку пакетов из сетевых источников — в Slackware сетевые источники
называются зеркалами (от англ, mirrors). Программа slackpkg может скачать и
установить пакет, находящийся на одном из серверов-зеркал. Но эта программа не
занимается разрешением зависимостей, а только слегка упрощает установку и обновление пакетов. Не нужно думать, что slackpkg — это замена installpkg, она всего
лишь ее полезное дополнение, позволяющее немного облегчить установку пакетов.
Программа slackpkg находится в каталоге extra. После установки этой программы
нужно подготовить ее к работе. Первым делом откройте ее главный конфигураци-

Глава 7. Пакеты и управление пакетами

185

онный файл /etc/slackpkg/mirrors и раскомментируйте географически ближайшее
к вам зеркало, т. е. адрес ближайшего FTP-сервера, содержащего Slackware-пакеты:
ftp://ftp.nluug.nl/pub/os/Linux/distr/slackware/slackware-12.О/
Использование зеркал
Помните, что slackpkg позволяет использовать только одно зеркало. Если вы раском­
ментируете несколько зеркал, будет использоваться первое раскомментированное
зеркало.

После редактирования файла зеркал нужно подготовить программу для работы
с GPG-ключами.
Для этого введите команды:
# mkdir ~/.gnupg
# gpg —keyserver pgp.mit.edu —search security@slackware.com
При выполнении второй команды на экран будет выведено следующее сообщение:
gpg: searching for "security@slackware.com" from HKP server pgp.mit.edu
Keys 1-2 of 2 for "security@slackware.com"
(1) Slackware Linux Project
1024 bit DSA key 40102233, created 2003-02-25
(2) Slackware Linux Project
1024 bit DSA key 40102233, created 2003-02-25
Enter number(s), N)ext, or Q)uit >
Как видите, вас просят выбрать номер GPG-ключа. Введите номер одного из доступных GPG-ключей (список ключей перед вами, обычно можно ввести i).
Теперь вам осталось ввести еще одну команду:
gpg —fingerprint security@slackware.com
Все, программа slackpkg готова к использованию.
Перед установкой пакетов не помешает обновить список пакетов активного зеркала. Для этого служит команда:
# slackpkg upgrade
Чтобы иметь постоянно свежие сведения о пакетах, рекомендуется регулярно выполнять эту команду.
Для установки пакета введите команду:
# slackpkg install
Для обновления пакета используется команда:
# slackpkg upgrade

186

Часть II. Основные сведения о Linux

7.10. Установка программ в openSUSE
7.10.1. Менеджер пакетов zypper
Менеджер пакетов openSUSE— zypper— работает по уже знакомому нам сценарию: в системе имеется список источников пакетов (каталог /etc/zypp/repos.d), который просматривается перед установкой пакета с целью определения хранилища,
в котором находится устанавливаемый пакет. Затем менеджер пакетов загружает
необходимый пакет (или пакеты) и устанавливает его.
Зайдите в каталог /etc/zypp/repos.d. В нем вы обнаружите несколько REPO-файлов,
в каждом из которых прописан один репозиторий. В листинге 7.3 представлен
репозиторий установочного DVD.

[openSUSE-Leap-42.3-0]
name=openSUSE-Leap-42.3-0
enabled=0
autorefresh=0
baseurl=cd:///?devices=/dev/disk/by-id/ataIDE_CDROM_Drive_10000000000000000001
path=/
type=yast2
keeppackages=0
Параметр baseuri задает здесь путь к источнику пакетов, а параметр enabled, установленный в о, говорит о том, что репозиторий неактивен (установка программного
обеспечения с него не производится). Если включен параметр keeppackages, менеджер пакетов не будет удалять пакеты после их установки.
Пример сетевого источника пакетов Main Repository (OSS) приведен в листинге 7.4.

[repo-oss]
name=openSUSE-Leap-42.3-0ss
enabled=l
autorefresh=l
baseurl=http://download.opensuse.org/distribution/42.3/repo/oss/
path=/
type=yast2
keeppackages=0
Как видите, параметр baseuri указывает здесь не на локальное устройство, а на сервер в Интернете. Также обратите внимание на опцию autorefresh (автоматическое
обновление) — для сетевого репозитория она установлена в 1, поскольку пакеты
в репозитории могут меняться (например, там появляются новые версии пакетов).

Гпава 7. Пакеты и управление пакетами

187

А для локального источника пакетов автоматическое обновление отключено, потому что пакеты в нем остаются одни и те же.
Если у вас нет соединения с Интернетом или же оно медленное, вам придется использовать только один источник пакетов — локальный установочный DVD. Поэтому откройте терминал, введите команду su, а затем gedit, — этими командами
вы запустите обычный текстовый редактор от имени администратора. Перейдите
в каталог /etc/zypp/repos.d и откройте все файлы, кроме openSUSE-Leap-42.3.repo (он
как раз и описывает установочный DVD). Установите для всех сетевых источников
пакетов параметр enabled в 0. Затем откройте файл DVD-диска и опцию enabled
установите в 1.
Если установить опцию keeppackages в 1, то для этого репозитория менеджер пакетов будет сохранять все загруженные пакеты. Если keeppackages=0, то после установки загруженный пакет удаляется.
Основным файлом конфигурации менеджера пакетов является файл /etc/zypp/zypp.conf,
но в нем нет ничего интересного — обычно все опции там закомментированы, поскольку параметры по умолчанию устраивают всех, и их редко приходится менять.
Файлы репозиториев обычно не приходится подключать вручную — вы скачиваете
из Интернета YMP-файл, в котором описаны все необходимые репозитории и пакеты, которые нужно установить (хотя могут быть прописаны только репозитории —
без пакетов). Этот файл представлен в формате XML (extended Markup Language).
В каждой секции описывается один репозиторий (если репозиториев
несколько, то и секций будет несколько). В листинге 7.5 представлена секция YMP-файла для главного сетевого репозитория — Main
Repository (OSS).

Crepository recommended="true">
Main Repository (OSS)
Main OSS Repository
The largest and main repository from openSUSE for open source
software
http://download.opensuse.org/repositories/openSUSE:42.3/standard/


Каждый пакет, который нужно установить, прописывается в отдельной секции
YMP-файла: (листинг 7.6).


w32codeс-a11
Win 32 Codecs
This packages contains the media player windows codec dlls
for several multimedia formats.


188

Часть II. Основные сведения о Linux

Понятно, что если нужно установить несколько пакетов, то и секций
несколько.



будет

Поддержка мультимедиаформатов
В листингах 7.5 и 7.6 приведены фрагменты файла codecs-gnome.ymp, благодаря ко­
торому в openSUSE устанавливается поддержка мультимедиаформатов.

И з м е н е н и е YMP- ф а й л о в
Приведенная здесь информация нужна лишь для общего развития — вам никогда не
придется изменять YMP-файлы (хотя кто знает, что нас ждет в этой жизни?), а уста­
новка таких файлов производится автоматически, практически без вмешательства
пользователя.

Теперь перейдем непосредственно к использованию менеджера пакетов zypper.
Формат его вызова следующий:
zypper [пакеты]
Основные команды zypper приведены в табл. 7.5.
Таблица 7.5. Основные команды zypper
Команда

Описание

sl

Выводит список используемых репозиториев

sa URL имя

Добавляет репозиторий (URL — адрес репозитория, а имя — имя,
под которым он будет отображаться). Пример:
zypper sa http://сервер/pub/linux/suse/SUSE-Linux-Updates

sd URL|имя

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

install пакеты

Устанавливает пакеты. Пример:

zypper install me
Если нужно установить несколько пакетов, то имена пакетов
разделяются пробелами

search маска

Ищет пакеты по маске. Маска — это часть имени (или полное имя)
пакета. Пример:

zypper search me*
list-updates

Отображает доступные обновления

update пакет

Обновляет пакет. Если пакет не задан, обновляет всю систему

info пакет

Выводит информацию о пакете

remove пакет

Удаляет пакет

7.10.2. Графический менеджер пакетов openSUSE
Устанавливать RPM-пакеты в openSUSE можно с помощью трех программ: собственно zypper, графической оболочки для zypper и программы rpm.

Глава 7. Пакеты и управление пакетами

189

Программой zypper (см. разд. 7.10.1) пользоваться решатся не все— она работает
в командной строке. Программу rpm (см. разд. 7.4) удобно использовать, если есть
уже скачанный собственными силами RPM-пакет и его нужно установить — т. е.
для локальной установки RPM-пакета. Для установки пакетов из любого репозитория, будь то DVD или сервер Интернета, намного удобнее воспользоваться графической оболочкой программы zypper: ввел название пакета, отметил его для установки и установил.
Для запуска графической оболочки zypper (графического менеджера пакетов) выполните команду Компьютер | Система | Установка/удаление программ. Использовать
графическую утилиту всегда просто, поэтому, думаю, вы разберетесь без моих комментариев (рис. 7.10).

Рис. 7.10. openSUSE: менеджер пакетов

Примечание
При просмотре списка пакетов обратите внимание на значки у названий пакетов: пус­
той квадратик говорит о том, что пакет не установлен, а «галочка» свидетельствует об
установке пакета. Зеленая галка говорит о том, что пакет только выбран для установ­
ки, но пока еще не установлен. Для установки выбранных пакетов нажмите кнопку
Принять. Для удаления пакетов снимите галки с ненужных пакетов и также нажмите
кнопку Принять.

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

ЧАСТЬ III
Настройка сети
и Интернета
Третья часть книги посвящена настройке в Linux локальной сети, интернетсоединения Wi-Fi, настройке VPN-соединения, а также интересной задаче объединения интернет-каналов.
Слышал как-то любопытное изречение (к сожалению, не помню, чье — давно это
было): «Linux без сети, как птица без полета». Полностью согласен с ним, поэтому
настройку сети в Linux можно считать одним из основных этапов конфигурации
системы.

ГЛАВА 8

Настройка локальной сети
8.1. Локальная сеть
с использованием технологии Fast Ethernet
Сетевых технологий существует много, но в этой книге мы займемся настройкой
локальной сети, построенной по технологии Fast Ethernet. Зато рассмотрим мы ее
полностью: от обжатия кабеля до конфигурирования сети.
Основные характеристики стандарта Fast Ethernet:
□ скорость передачи данных: ЮОМбит/с;
□ метод доступа к среде передачи данных: CSMA/CD;
□ среда передачи данных: витая пара UTP 3, 4 или 5-й категории (лучше 5-й),
оптоволоконный кабель;
□ максимальное количество компьютеров: 1024;
□ максимальная длина сети: 200 м (272 м для оптоволокна).
Прежде всего нужно убедиться, что компьютеры, предназначенные для соединения
в сеть, оснащены сетевыми адаптерами, поддерживающими технологию Fast
Ethernet. Как правило, сейчас сетевые адаптеры интегрированы в материнскую плату, и устанавливать их отдельно необходимости нет. Однако все еще встречаются
иногда материнские платы и без интегрированных сетевых адаптеров— что ж,
в таком случае их придется приобрести (рис. 8.1). Стоят они не столь и дорого — от
550 рублей за штуку, причем поддерживают также и технологию Gigabit Ethernet —
модификацию Fast Ethernet, позволяющую передавать данные со скоростью до
1000 Мбит/с. Правда, коммутаторы (см. далее) для Gigabit Ethernet стоят пока чуть
дороже, чем для Fast Ethernet.
Установка сетевого адаптера проблем не вызывает — просто вставьте его в свободный разъем шины PCI (все адаптеры Fast Ethernet выполнены в виде плат расширения именно для шины PCI). Существуют также сетевые адаптеры, подключаемые
к компьютеру по USB (рис. 8.2), — стоят они не сильно дороже PCI-адаптеров,
и нет никаких оснований подозревать, что при работе в Linux с ними возникнут
какие-либо проблемы.

194

Часть I I I . Настройка сети и Интернета

Рис. 8.1. Сетевой адаптер Fast Ethernet

Рис. 8.2. Сетевой адаптер USB

Ясно, что устанавливать сетевой PCI-адаптер полагается при выключенном компьютере — шина PCI пока еще не поддерживает «горячей замены». Собрав и включив компьютер, подключите к сетевому адаптеру коннектор (специальный наконечник) сетевого кабеля.
Сетевые кабели различной длины (от 0,5 до 5 м), оснащенные коннекторами (патчкорды), можно приобрести в магазинах компьютерной техники, а можно и сделать
самим, нарезав кабель на нужные отрезки и закрепив (обжав) коннекторы на их
концах.
Обжатие кабеля
Обжать кабель — значит особым образом закрепить на его концах специальные нако­
нечники-коннекторы (см. далее).

Выполняются эти манипуляции, как правило, администратором сети. Вы сами администрируете свою сеть и не знаете, как это сделать? Нет проблем, сейчас разберемся. Для создания сети Fast Ethernet вам потребуются следующие устройства:
□ сетевые адаптеры — о них мы только что поговорили;


коммутатор (switch) — его можно купить в любом компьютерном магазине.
Дизайном и количеством портов коммутаторы могут отличаться друг от друга.
На рис. 8.3 изображен 24-портовый коммутатор, более подходящий для корпоративной сети (и внешним видом и возможностью помещения в специальную
стойку), нежели для дома. А для домашней сети можно найти и более симпатичное устройство;

Рис. 8.3. Коммутатор (switch)

Глава 8. Настройка локальной сети



195

сетевой кабель (витая пара 5-й категории)— приобретайте именно такой тип
кабеля и такой длины, чтобы нормально хватило для соединения каждого компьютера сети с коммутатором;

□ коннекторы RJ-45 — таких коннекторов вам понадобится в два раза больше, чем
компьютеров, поскольку каждый отрезок кабеля нужно обжать с двух концов.
Но я рекомендую купить еще несколько лишних штук — если вы будете обжимать кабель впервые, думаю, без неудачных проб не обойдется. Не пожалейте
пару копеек, а то придется сбегать в магазин еще раз;


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

Теперь приступим к самому процессу обжимки. Внутри кабеля идут четыре витые
пары проводов (всего восемь), причем у каждого провода своя цветовая маркировка. Суть процесса обжимки заключается в том, чтобы подключить каждый из проводов к нужному контакту коннектора (табл. 8.1). Для этого сначала надо вставить
провода в коннектор таким образом, чтобы каждый провод зашел на всю глубину
по направляющим соответствующего контакта (зачищать провода необязательно —
за вас это сделает инструмент), затем коннектор со вставленными проводами осторожно (чтобы провода из него не выпали) помещается в специальное гнездо
обжимных щипцов, и их рукоятки сильно сжимаются. Используя данные табл. 8.1,
вы без проблем сможете обжать кабель.
Таблица 8.1. Обжим витой пары
Контакт

Цвет провода

Контакт

Цвет провода

1

Бело-оранжевый

5

Бело-синий

2

Оранжевый

6

Зеленый

3

Бело-зеленый

7

Бело-коричневый

4

Синий

8

Коричневый

Осталось один конец обжатого отрезка кабеля своим коннектором подключить
к коммутатору (концентратору), а второй — к сетевому адаптеру компьютера. Если
вы неправильно (или несильно) обожмете кабель, то ваша сеть работать не будет
или же будет работать только на скорости 10 Мбит/с.
Проверить, правильно ли вы обжали кабель, очень просто — обратите внимание на
коммутатор: возле каждого его порта имеется по два индикатора. Если горят оба —
все нормально. Если же горит только один из них, то этот порт работает в режиме
10 Мбит/с. А если вообще не горит ни один из индикаторов, вам нужно переобжать
кабель — отрезать плохо обжатые коннекторы и обжать концы кабеля новыми коннекторами заново.
Как видите, в процессе обжима нет ничего сложного.

196

Часть I I I . Настройка сети и Интернета

8.2. Файлы конфигурации сети в Linux
Прежде чем приступить к настройке сети, следует ознакомиться с файлами конфигурации сети, которые имеются в любом дистрибутиве Linux, вне зависимости от
его версии (табл. 8.2).
Таблица 8.2. Общие файлы конфигурации сети в Linux
Файл

Описание

/etc/а liases

База данных почтовых псевдонимов. Формат этого файла очень
прост:

псевдоним пользователь
/etc/аliases.db

Системой на самом деле используется не файл /etc/aliases, а файл
/etc/aliases.db, который создается программой newaliases по содер­
жимому файла /etc/aliases. Поэтому после редактирования этого
файла не забудьте выполнить от имени root команду newaliases

/etc/hosts.conf

Содержит параметры разрешения доменных имен. Например, дирек­
тива order hosts,bind означает, что сначала поиск IP-адреса
по доменному имени будет произведен в файле /etc/hosts, а затем
лишь будет произведено обращение к DNS-серверу, заданному
в файле /etc/resolv.conf.
Директива multi on означает, что одному доменному имени
могут соответствовать несколько IP-адресов

/etc/hosts

В этом файле можно прописать IP-адреса и имена узлов
локальной сети, но обычно здесь указывается только IP-адрес
узла localhost (127.0.0.1), потому что сейчас даже в небольшой
локальной сети устанавливается собственный DNS-сервер

/etc/hosts. allow

Содержит IP-адреса узлов, которым разрешен доступ к сервисам
данного узла

/etc/hosts.deny

Содержит IP-адреса узлов, которым запрещен доступ к сервисам
данного узла

/etc/hostname

В Debian/Ubuntu содержит имя узла

/etc/iftab

Содержит таблицу интерфейсов, т. е. соответствие имен интерфей­
сов и их МАС-адресов

/etc/motd

Файл задает сообщение дня (Message of the day). Этот файл
исполь­зуется многими сетевыми сервисами (например,
серверами FTP и SSH), которые при регистрации пользователя
могут выводить сообщение из этого файла

/etc/network/interfaces

В Debian и Ubuntu используется для ручной настройки сетевых
интерфейсов (не с помощью NetworkManager). Вообще-то принято
настраивать сетевые интерфейсы с помощью NetworkManager, но
некоторые администраторы предпочитают отключать NetworkManager
и настраивать сетевые интерфейсы вручную — по старинке

/etc/rc.config

В старых версиях SUSE (не openSUSE) содержит имя компьютера,
IP-адрес интерфейса и другую сетевую информацию

197

Глава 8. Настройка локальной сети

Таблица 8.2 (окончание)
Файл

/etc/resolv.conf

Описание
Задает IP-адреса серверов DNS. Формат файла прост:

nameserver IP-адрес
Всего можно указать четыре DNS-сервера. В Ubuntu этот файл авто­
матически перезаписывается при установке соединения с Интерне­
том — сюда записываются адреса DNS-серверов, полученных от
провайдера, что не совсем хорошо, особенно когда вы настроили
собственный DNS-сервер и желаете его использовать. О моей борь­
бе с перезаписью этого файла можно прочитать статью по адресу:

http://www.dkws.org.ua/index.php?page=show&file=a/ubuntu/static- dnsubuntu9

/etc/rоute.соnf

В старых версиях SUSE этот файл содержит описание статических
маршрутов, в том числе и маршрут по умолчанию

/etc/services

База данных сервисов, задающая соответствие символьного имени
сервиса (например, рорЗ) и номера порта (110/tcp, tcp — это наиме­
нование протокола)

/etc/sysconfig/network

Параметры сетевого интерфейса в Fedora, Red Hat и других дистри­
бутивах, основанных на Fedora/Red Hat

/etc/sysconfig/ staticroutes

Статические маршруты в Fedora/CentOS

/etc/sysconfig/network/
routes

Статические маршруты в современных версиях openSUSE

/etc/sysconfig/networkscripts/ifcfg-имя

Параметры конкретного сетевого интерфейса. Например, параметры
интерфейса ethO хранятся в файле /etc/sysconfig/network-scripts/ ifcfgethO (дистрибутив Fedora)

/etc/sysconfig/network/
ifcfg-имя

Параметры конкретного сетевого интерфейса (имя — имя сетевого
интерфейса). Дистрибутив openSUSE

/etc/NetworkManager/
system-connections/

В дистрибутивах, использующих NetworkManager, в этом каталоге
хранятся настройки соединений: в отдельных файлах — по одному
для каждого соединения. При этом название файла соответствует
названию соединения, введенному при настройке

8.3. Об именах сетевых интерфейсов
Все течет, и все меняется. В мире компьютеров обычно все меняется в лучшую,
более простую и понятную сторону. Взять хотя бы настройку сети с помощью конфигураторов. Раньше у каждого дистрибутива был свой конфигуратор сети, и не
один — это и понятно: свои файлы конфигурации, сервисы настройки сети и т. д.
Сейчас же, благодаря тому что все (или практически все) современные дистрибутивы перешли на единый сервис настройки сети NetworkManager, конфигуратор сети
у всех стал один— nm-connection-editor, и выглядит он примерно одинаково во
всех дистрибутивах. Это как универсальное зарядное USB-устройство, которым
можно зарядить любой современный смартфон любого производителя.

198

Часть I I I . Настройка сети и Интернета

Удобно? Определенно! Но когда я ввел на своем компьютере команду ifconfig, то
обнаружил, что моя единственная сетевая карта стала называться теперь ens33 вме-сто
привычного имени eth0 (рис. 8.4), что не есть хорошо... А в некоторых дистри-бутивах
сетевая карта получила еще менее благозвучное название — enp3s0. В об-щем, в связи с
полным переходом новых дистрибутивов на udev (см. гл аву 4), по-нятная с первого
взгляда строгость в назначении имен сетевых адаптеров (когда первая сетевая плата
называлась eth0, вторая ethl и т. д.) исчезла.

Рис. 8.4. Новые имена сетевых устройств

Впрочем, определенная система в назначении новых имен также имеется, только
она не столь очевидная. Сетевые адаптеры, встроенные в материнскую плату
(id_net_name_onboard), носят теперь название типа enol. Если же сетевая карта подключена к PCI Express (id net name slot), то она будет нести название типа ens33.
Имена устройств, содержащие физическое/географическое расположение коннектора (id net name path), будут выглядеть как enp2s0. А самые сложные и
«страшные» имена у сетевых адаптеров, определяемых через МАС-адрес,—
enx66e7bles34dd.
Как работать с такими именами? Первый способ — использовать их и смириться
с новой схемой именования. Все равно, сетевой интерфейс настраивается не так
часто и, по сути, вы столкнетесь с его настройкой один-два раза (а при использовании DHCP, возможно, его не придется настраивать вовсе).
Второй способ — передать ядру параметр net.ifnames=0 (рис. 8.5) и вернуть старую
схему именования сетевых устройств. Как показано на рис. 8.6, после передачи
ядру параметра net.ifnames=0 сетевая карта стала называться по-старому: eth0.

Глава 8. Настройка локальной сети

Рис. 8.5. Передача ядру параметра net.ifnames=0

Рис. 8.6. Fedora: сетевым устройствам вернулись старые имена

199

200

Часть III. Настройка сети и Интернета

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

8.4. Настройка сети
с помощью конфигуратора nm-connection-editor
Как уже было отмечено ранее, теперь настройка сети осуществляется с помощью
единого конфигуратора сети nm-connection-editor, средствами которого можно создать/настроить любой поддерживаемый тип подключения.
Прежде чем приступить к настройке сети с помощью конфигуратора, посмотрим
сначала на сервис network. Его можно использовать для управления сетью— например, остановить все сетевые интерфейсы, завершив работу этого сервиса. А перезапустив его, можно перезапустить сеть, что полезно при изменении параметров
сетевых адаптеров, — так вам не придется перезапускать компьютер. Управлять
сервисом network можно, как и обычным сервисом:
sudo
sudo
sudo
sudo

service
service
service
service

network
network
network
network

stop
start
restart
status

#
#
#
#

останавливает сеть
запускает сеть
перезапускает сеть
состояние сети

Если в выводе команды ifconfig или service network status (рис. 8.7)
отсутствует интерфейс 1о, значит, сервис network остановлен. Такие случаи — редкость,
но все

Рис. 8.7. Команда service network status выводит список
настроенных и активных сетевых интерфейсов

Глава 8. Настройка локальной сети

201

же с ними иногда приходится сталкиваться. Для запуска сервиса нужно ввести
команду service network start.
Если же в вашей сети работает DHCP-сервер, то настраивать сеть в современных
дистрибутивах вовсе не придется, — Linux автоматически распознает ваш адаптер,
активирует соответствующие модули ядра и установит сетевые параметры, полученные от DHCP-сервера. Сейчас даже в самых небольших домашних сетях действует DHCP-сервер, запущенный на маршрутизаторе Wi-Fi, предоставляющем доступ к Интернету.
Настраивать сеть придется в двух случаях:


если у вас небольшая сеть, использующая статические IP-адреса, — ради всего
двух-трех компьютеров вы не стали настраивать DHCP-сервер;



если вы настраиваете сеть «с нуля», и компьютер, на который вы установили
Linux, как раз и будет тем DHCP-сервером, который потом станет настраивать
остальные узлы сети.
У с т а н о в и т е DHCP- c e p b e p !
Даже если у вас небольшая домашняя сеть из двух-трех компьютеров, присутствие
DHCP-сервера в ней весьма желательно. Во-первых, вам не придется настраивать
сеть на клиентских компьютерах, надо будет настроить только сервер. Во-вторых,
DHCP-сервер поможет избежать конфликтов IP-адресов при расширении сети— вам
не придется вспоминать, какие адреса уже использованы, вы просто подключите но­
вый компьютер к сети, а остальное сделает DHCP-сервер.

Часто DHCP-сервер «крутится» на точке доступа Wi-Fi или на DSL-модеме, совмещающем также и функции коммутатора. Современные сетевые устройства
позволяют существенно снизить стоимость монтажа сети, особенно домашней. Так
вы можете приобрести точку доступа с четырьмя Ethernet-портами (к которым
могут подключаться стационарные компьютеры) и встроенным DSL-модемом. По
сути, такое единое устройство обеспечивает все необходимые функции: ноутбуки
будут подключаться по Wi-Fi, стационарные компьютеры— к встроенным портам
Ethernet, а само подключение к Интернету осуществляется через встроенный DSLмодем.
Вот только на предприятии от подобных устройств толку мало, разве что в самых
небольших офисах, поскольку количество Ethemet-портов в них редко превышает
четыре, чего явно недостаточно для предприятия. Поэтому там понадобятся дополнительные устройства— как минимум еще один коммутатор для подключения
остальных компьютеров.
Вернемся к нашему конфигуратору (запускается он через команду sudo или
gksudo) — кнопка Добавить служит для создания нового соединения (в главе 9 будет показано, как создать DSL-соединение), а Ethemet-соединение, как правило,
уже создано, поэтому для изменения его параметров нужно нажать кнопку Изме­
нить (рис. 8.8), в результате чего откроется соответствующее окно.
Как правило, в большинстве случаев вас будут интересовать в нем вкладка Пара­
метры IPv4 (рис. 8.9), где можно изменить параметры протокола IP, и вкладка
Ethernet (рис. 8.10), позволяющая изменить МAC-адрес устройства.

202

Часть I I I . Настройка сети и Интернета

Рис. 8.8. Конфигуратор nm-connection-editor

Обычно сеть настраивается автоматически, поэтому в поле Способ настройки по
умолчанию выбран автоматический метод настройки. Если же вы хотите указать
IP-адрес вручную, нажмите на вкладке Параметры IPv4 (см. рис. 8.9) кнопку
Добавить и впишите IP-адрес, маску сети и IP-адрес шлюза (gateway). Всю эту
информацию вы можете узнать у администратора сети. Если вы сами ее администратор, то, я надеюсь, вы знаете, что делаете.

Рис. 8.9. Конфигуратор nm-connection-editor, вкладка Параметры IPv4

Глава 8. Настройка локальной сети

203

Рис. 8.10. Конфигуратор nm-connection-editor, вкладка Ethernet

В поле Серверы DNS можно указать IP-адреса DNS-серверов (через пробел), которые будут использоваться при разрешении доменных имен. Если вы не знаете, что
указать, укажите IP-адреса 8.8.8.8 и 8.8.4.4.
Если вы собираетесь использовать DHCP, но хотите указать свои DNS-серверы, то
выберите способ Автоматически (DHCP, только адрес).
На вкладке Параметры IPv6 можно указать параметры, относящиеся к протоколу
IPv6, если вы таковой используете.
Linux поддерживает технологию VLAN (Virtual LAN), что позволяет назначить
одному сетевому адаптеру несколько IP-адресов, однако на практике такая возможность используется редко. Дополнительную информацию о VLAN можно получить
в моих статьях:
□ http://www.xakep.rU/magazine/xa/121/122/l.asp;
□ http://www.dkws.org.ua/index.php?page=show&file=a/ubuntu/network-interfaces.

8.5. Конфигуратор netconfig в Slackware
Конфигуратор netconfig в Slackware можно запускать даже в консоли (рис. 8.11). Он
поочередно задаст вам ряд вопросов: от имени компьютера до IP-адреса шлюза. По
сути, его работа ничем не отличается от работы ранее рассмотренного конфигуратора, просто у него несколько своеобразный интерфейс пользователя.

204

Часть III. Настройка сети и Интернета

Рис. 8.11. Slackware: конфигуратор netconfig

8.6. Утилиты для диагностики соединения
Причинами отказа сети могут быть физические или программные неполадки.
Физические связаны с неработающим сетевым оборудованием или повреждением
среды передачи данных. Программные— с неправильной настройкой сетевого
интерфейса. Как правило, избавиться от программных проблем помогает конфигуратор сети — вы его еще раз запускаете и правильно настраиваете сетевые интерфейсы. Если сомневаетесь в своих действиях, обратитесь за помощью к более
опытному коллеге.
Для диагностики работы сети мы воспользуемся стандартными сетевыми утилитами, которые входят в состав любого дистрибутива Linux. Предположим, что у нас
не работает PPPoE/DSL-соединение. Проверить, «поднят» ли сетевой интерфейс,
МОЖНО С ПОМОЩЬЮ команды ifconfig.
На рис. 8.12 показано, что сначала я предпринял попытку установить соединение
(ввел команду sudo pon dsi-provider), а затем вызвал ifconfig — чтобы убедиться,
установлено ли соединение. В случае, если соединение не было бы установлено,
интерфейс рррО в списке бы осутствовал.
Имена интерфейсов
Интерфейс eth0 относится к первой сетевой плате (вторая называется eth1, третья —
eth2 и т. д.), а интерфейс lo — это интерфейс обратной петли, который служит для
тестирования программного обеспечения (у вас он всегда будет «поднят»).

Итак, если интерфейс не «поднят», нам нужно просмотреть файл протокола
/var/log/messages сразу после попытки установки соединения:
tail -п 10 /var/log/messages
Эта команда просматривает «хвост» файла протокола (выводит последние
10 сообщений). В случае удачной установки соединения сообщения в файле протокола будут примерно следующими:

Глава 8. Настройка локальной сети
Feb
Feb

614:28:33user-desktop
614:28:33user-desktop

205

pppd[5176]: Plugin rp-pppoe.so loaded.
kernel: [17179852.932000] CSLIP: code copyright
198 9 Regents of the University of California
Feb 6 14:28:33 user-desktop kernel: [17179852.944000] PPP generic driver
versio n 2.4.2
pppd[5183]:
pppd
2.4.4Ы
started
by root,uid 0
Feb
614:28:33user-desktop
Feb
614:28:33user-desktop
pppd[5183]: PPP session is 2838
Feb
614:28:33user-desktop
kernel: [17179852.984000] NET: Registeredprotocol
family 24
Feb
614:28:33user-desktoppppd[5183]:
Using interface pppO
Feb
614:28:33user-desktoppppd[5183]:
Connect: pppO ethO
Feb
614:28:33user-desktoppppd[5183]:
Remote message: Login ok
Feb
614:28:33user-desktoppppd[5183]:
PAP authentication succeeded
Feb 6 14:28:33 user-desktop pppd[5183]: peer from calling number 00:15:F2:60:28
:97 authorized
Feb
614:28:33user-desktoppppd[5183]:
local IP
address 193.254.218.243
Feb
614:28:33user-desktoppppd[5183]:
remote IP
address 193.254.218.129
Feb
614:28:33user-desktoppppd[5183]:
primary
DNS address 193.254.218.1
Feb
614:28:33user-desktoppppd[5183]:
secondary
DNS address 193.254.218.27

Рис. 8.12. Вывод команды ifconfig: 3 сетевых интерфейса

Часть I I I . Настройка сети и Интернета

206

Первая строчка — сообщение о том, что загружен модуль поддержки РРРоЕ. Следующие два сообщения информируют нас о поддержке нашим компьютером протоколов CSLIP и РРР. Затем сообщается, что демон pppd запущен, от чьего имени
он запущен (root) и приводится версия самого pppd. Далее приводятся имя используемого интерфейса (ррр0) и имя вспомогательного интерфейса (помните, что про-токол
РРРоЕ подразумевает передачу кадров РРР по Ethernet) — eth0. Следующие два
сообщения свидетельствуют об удачной регистрации:
Feb 6 14:28:33 user-desktop pppd[5183]: Remote message: Login ok
Feb 6 14:28:33 user-desktop pppd[5183]: PAP authentication succeeded

Затем система сообщает нам наш IP-адрес, адрес удаленного компьютера, который
произвел аутентификацию, а также IP-адреса серверов DNS.
А вот пример неудачной попытки соединения:
Feb
Feb
Feb
Feb
Feb

6
6
6
6
6

09:23:48
09:23:48
09:23:48
09:23:48
09:23:48

user-desktop
user-desktop
user-desktop
user-desktop
user-desktop

pppd[6667]:
pppd[6667]:
pppd[6667]:
pppd[6667]:
pppd[6667]:

РРР session is 2336
Using interface pppl
Connect: pppl eth0
Remote message: Login incorrect
Connection terminated.

Причина неудачи понятна: имя пользователя или пароль неправильные, о чем красноречиво свидетельствует сообщение Login incorrect. Чтобы изменить имя пользователя или пароль, можно запустить конфигуратор pppoeconf. Но не спешите это
делать — если в предыдущий раз соединение было установлено (а настройки соединения вы не изменяли), возможно, нужно обратиться к провайдеру — это явный
признак неправильной работы оборудования на его стороне.
Вот еще один пример, характерный для РРРоЕ:
Feb
Feb
Feb
Feb

6
6
6
6

09:23:48
09:23:48
09:23:48
09:23:48

user-desktop
user-desktop
user-desktop
user-desktop

pppd[6667]:
pppd[6667]:
pppd[6667]:
pppd[6667]:

РРР session is 2336
Using interface pppl
Connect: pppl eth0
Connection terminated.

И здесь мы снова видим указание на неправильную работу оборудования провайдера. Иногда в таком случае помогает перезагрузка точки доступа (access point) —
просто выключите и включите ее снова. Если соединение так и не восстановилось,
обращайтесь к провайдеру.
Наиболее простая ситуация, когда сеть вообще не работает — в этом случае очень
легко обнаружить причину неисправности. Если работает устройство, значит, повреждена среда передачи данных (сетевой кабель). В случае с модемной линией
нужно проверить, нет ли ее обрыва. В случае с витой парой обрыв маловероятен
(хотя возможен), поэтому нужно проверить, правильно ли обжат кабель (возможно,
придется обжать витую пару заново).
Намного сложнее ситуация, когда сеть то работает, то нет. Например, вы не можете
получить доступ к какому-либо узлу, хотя пять минут назад все работало отлично.
Если исключить неправильную работу удаленного узла, к которому вы подключаетесь, следует поискать решение в маршруте, по которому пакеты добираются от

Глава 8. Настройка локальной сети

207

вашего компьютера до удаленного узла. Для этого используется команда ping (прервать выполнение команды ping можно с помощью нажатия комбинации клавиш
+). Сначала «пропингуем» удаленный узел:
ping dkws.org.ua
PING dkws.org.ua (213.186.114.75) 56(84) bytes of data.
64
64
64
64
64
64

bytes
bytes
bytes
bytes
bytes
bytes

from
from
from
from
from
from

wdt.org.ru(213.186.114.75):icmp_seq=lttl=58time=30.7ms
wdt.org.ru(213.186.114.75):icmp_seq=2ttl=58time=24.8ms
wdt.org.ru(213.186.114.75):icmp_seq=5ttl=58time=12.2ms
wdt.org.ru (213.186.114.75): icmp_seq=6 ttl=58 time=159 ms
wdt.org.ru(213.186.114.75):icmp_seq=7ttl=58time=19.3ms
wdt.org.ru(213.186.114.75):icmp_seq=9ttl=58time=29.0ms

Здесь все нормально. Но иногда ответы от удаленного сервера то приходят, то не
приходят. Чтобы узнать, в чем причина (где именно теряются пакеты), нужно выполнить трассировку узла:
tracepath dkws.org.ua
Команды трассировки
В некоторых дистрибутивах вместо команды tracepath используется команда

traceroute, а в Windows — tracert.
Из вывода команды tracepath (рис. 8.13) сразу видно, что с прохождением пакетов
до удаленного узла имеются определенные проблемы, т. е. по пути пакеты теряются.
Чтобы выяснить причину этого, вам нужно обратиться к администратору того
маршрутизатора, который не пропускает пакеты дальше, — причина именно в нем.
В нашем случае, как можно видеть, пакеты доходят до маршрутизатора dc-m7i-lge.interfaces.dc.utel.ua, а после него движение пакетов прекращается.
Если соединение установлено (о чем свидетельствует наличие «поднятого» интерфейса в выводе ifconfig) , а Web-страницы не открываются, попробуйте пропинговать любой удаленный узел по IP-адресу. Если вы не знаете, какой узел пинговать
(т. е. не помните ни одного IP-адреса), пропингуйте узел 213.186.114.75. Если вы
получите ответ, а Web-страницы, когда вы вводите символьное имя, по-прежнему
не открываются, значит, у вас проблемы с DNS, — сервер провайдера почему-то не
передал вашему компьютеру IP-адреса DNS-серверов. Позвоните провайдеру, выясните причину этого, а еще лучше, уточните IP-адреса серверов DNS и пропишите
их в файле /etc/resolv.conf. Формат этого файла прост:
nameservr IP-адрес
Например:
nameserver 193.254.218.1
nameserver 193.254.218.27
Всего там можно указать до четырех серверов DNS.

Часть I I I . Настройка сети и Интернета

208

Рис. 8.13. Проблема с прохождением пакетов

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

8.7. Для фанатов, или настройка сети вручную
Иногда мои книги критикуют за то, что при настройке сети я использую только
графические конфигураторы. С одной стороны, такие конфигураторы просты и
удобны, — ведь в Windows вы пользуетесь панелью управления, а не редактором
реестра, хотя можно изменять сетевые настройки и через regedit. С другой стороны,
редактирование конфигурационных файлов позволяет глубже познать Linux. Если
вам интересно, в какие файлы сохраняются сетевые настройки после нажатия
кнопки
в окне конфигуратора, тогда этот раздел — для вас. И самое время сейчас снова обратиться к данным табл. 8.2 — осознанно используя эти данные, вы
быстро вспомните, какой конфигурационный файл нужно редактировать. Далее
в этом разделе мы рассмотрим конфигурационные файлы конкретных дистрибутивов.

ок

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

Глава 8. Настройка локальной сети

209

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

8.7.1. Конфигурационные файлы Fedora/CentOS
Начнем с файла /etc/sysconfig/network — в нем можно задать имя машины, шлюз по
умолчанию и включить IP-переадресацию. Пример этого файла приведен в листинге 8.1.

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=den.dkws.org.ua
# Дополнительно
DHCP_HOSTNAME=den.dkws.org.ua
GATEWAY=192.168.0.1
GATEWAYDEV=eth0
FORWARD_IPV4 =no
В большинстве случаев хватает первых трех параметров:


параметр networking определяет, будет ли включена поддержка сети. Обычно
нужно включить такую поддержку сети (yes), поскольку даже функции печати
в Linux требуют поддержки сети;



параметр networking_IPV6 включает поддержку IPv6. Поскольку этот протокол
еще не используется, то следует задать значение по;

□ параметр hostname задает имя узла.
В ряде ситуаций могут потребоваться и дополнительные параметры:


параметр dhcp hostname задает имя узла при использовании DHCP. Если вы не
задали значение параметра dhcp_hostname, т о DHCP-сервер может назначить
узлу другое имя. Если же значение задано, то DHCP не станет изменять имя узла;



параметр gateway задает шлюз по умолчанию. В этом конфигурационном файле
указывать шлюз по умолчанию не обязательно, поскольку его можно указать
в файле /etc/sysconfig/network-scripts/ifcfg-eth0 — конфигурационном файле сетевого
интерфейса ethO;

□ параметр gatewaydev указывает имя интерфейса для доступа к шлюзу. Часто этот
параметр опускается;
□ последний параметр, forward_ipv4, позволяет превратить ваш компьютер в шлюз.
После редактирования файла /etc/sysconfig/network нужно перейти в каталог
/etc/sysconfig/network-scripts/, где содержатся конфигурационные файлы для каждого
сетевого интерфейса. Например, конфигурация интерфейса eth0 прописана в файле
/etc/sysconfig/network-scripts/ifcfg-eth0. Конфигурации интерфейсов могут различаться

210

Часть III. Настройка сети и Интернета

в зависимости от того, как настраивается интерфейс: автоматически по DHCP или же
сетевая информация присваивается статически. Как правило, на рабочих станциях
сетевая информация присваивается автоматически — по DHCP. А вот на серверах
(в том числе и на DHCP-сервере) сетевая информация указывается статически —
вручную.
В листинге 8.2, а приведена конфигурация интерфейса, настраиваемого по DHCP.

DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=XX: XX: XX: XX: XX: XX
ONBOOT=yes
TYPE=Ethernet
IPV6lNIT=no
Здесь параметр device задает имя устройства (eth0), параметр bootproto— тип
конфигурации (по протоколу DHCP). Параметр hwaddr позволяет изменить аппаратный МАС-адрес сетевого адаптера (как правило, этот параметр указывается
только тогда, когда нужно изменить МАС-адрес, в обычных же условиях он не
нужен). Параметр onboot определяет, будет ли «поднят» интерфейс при загрузке
(yes — да, no — нет). Последние два параметра необязательны (type — задает тип
интерфейса, ipv6init — включает для этого интерфейса протокол IPv6).
Пример статической настройки интерфейса приведен в листинге 8.2, б.

DEVICE=ethO
BOOTPROTO=none
HWADDR=XX:XX:XX:XX:XX:XX
ONBOOT=yes #
NETMASK=255.255.255.0 IPADDR=192.168.0.10
GATEWAY=192.168.0.1
#
NETWORK=192.168.0.0
BROADCASTS92.168.0.255 USERCTL=no
Первые четыре параметра нам знакомы. Разница лишь в том, что параметр
bootproto содержит значение none вместо dhcp. Параметр netmask задает сетевую
маску, параметр ipaddr— IP-адрес узла, gateway— шлюз по умолчанию для этого
сетевого интерфейса.
Можно также задать и необязательные параметры: network (адрес сети), broadcast
(широковещательный IP-адрес) и userctl. Если последний параметр включен (yes),
то интерфейсом могут управлять не-root пользователи. Обычно в этом нет необходимости, поэтому ему присваивается значение по.

Глава 8. Настройка локальной сети

211

С остальными файлами вы знакомы из табл. 8.2:
□ /etc/resolv.conf — конфигурация DNS (здесь указываются DNS-серверы);


/etc/hosts — статическая таблица поиска имен узлов (применяется, если ваша сеть

не использует DNS);


/etc/sysconfig/static-routes—

этот файл по умолчанию отсутствует (он содержит
список статических маршрутов).

8.7.2. Конфигурационные файлы openSUSE
В openSUSE все конфигурационные файлы, относящиеся к настройкам сети, находятся в каталоге /etc/sysconfig/network:


/etc/sysconfig/network/ifcfg-имя — содержит параметры сетевого интерфейса (здесь

имя — это имя сетевого интерфейса);

□ /etc/sysconfig/network/ifroute-имя — содержит маршруты для конкретного интерфейса;
□ /etc/sysconfig/network/routes — список статических маршрутов;
□ /etc/sysconfig/network/config — различные переменные.
Основные файлы — это файлы /etc/sysconfig/network/ifcfg-имя. Рассмотрим пример
файла /etc/sysconfig/network/ifcfg-eth0, задающего параметры сетевого интерфейса eth0
(листинг 8.3).

BOOTPROTO='dhcp'
IPADDR=''
MTU=''
NAME='79c970 [PCnet32 LANCE]'
NETMASK=''
NETWORKS '
STARTMODE='auto'
USERCONTROL='no'
В файле конфигурации сетевого интерфейса может быть множество самых разных
параметров. Все возможные параметры с пояснениями и допустимыми значениями
представлены в файле ifcfg.template. Сейчас же мы рассмотрим только те параметры,
которые показаны в листинге 8.3:
□ параметр bootproto задает протокол конфигурации интерфейса. Для автоматического назначения IP-адреса по DHCP используется значение dhcp. Если нужно
назначить адрес вручную, то используется значение static. Есть еще два полезных значения:
● autoip — производится поиск свободного IP-адреса, найденный IP-адрес на-

значается статически;

Часть I I I . Настройка сети и Интернета

272




dhcp+autoip— основной способ — dhcp, но если DHCP-сервер отсутствует,
то работает вариант autoip;

назначение следующих параметров ясно: это IP-адрес, размер MTU (Maximum
Transmission Unit, максимальный блок передачи), описание устройства (ни на
что не влияет), сетевая маска, адрес сети;

□ параметр startmode


задает режим запуска интерфейса:

auto — автоматический запуск при загрузке системы;

• manual — интерфейс будет «подниматься» вручную;


off — интерфейс не используется.

Есть и другие режимы запуска — о них вы прочитаете в файле ifcfg.template;
□ последний параметр запрещает управление интерфейсом не-root пользователям.
Следует упомянуть полезную опцию: dhclient set hostname. Она определяет, будет
ли DHCP-клиент изменять имя узла, что полезно, если не нужно изменять имя узла
каждый раз при получении нового IP-адреса (значение по).
Также можно установить значение по для опции dhclient set hostname в файле
/etc/sysconfig/network/dhcp. Разница заключается в том, что в первом случае вы изменяете параметр dhclient_set_hostname локально — только для конкретного интерфейса, а во втором случае глобально — для всех интерфейсов.
А где же хранится имя узла? Привычного файла /etc/hostname я не нашел. Пришлось
действовать старым проверенным способом: вызвать конфигуратор, установить
имя узла, а потом смотреть, какой файл изменился. Меня ждал небольшой сюрприз.
Да, файла /etc/hostname нет, но зато есть файл /etc/HOSTNAME (все буквы прописные) — этого файла я просто не заметил. В нем и хранятся имя узла и имя домена.

8.7.3. Конфигурационные файлы Debian/Ubuntu
Основной конфигурационный файл Debian/Ubuntu — /etc/network/interfaces. В нем
можно изменить все: от IP-адреса интерфейса до параметров маршрутизации. Файл
/etc/network/interfaces подробно описан в моей статье http://dkws.org.ua/index.php?
page=show&file=a/ubuntu/network-interfaces, и нет смысла ее сюда переписывать.
Параметры некоторых соединений (например, DSL-соединений) также могут храниться в каталоге /etc/NetworkManager/system-connections.
Кроме файла /etc/network/interfaces вам пригодится и файл /etc/hostname, содержащий
имя узла.
Файл /etc/resolv.conf, как и в других дистрибутивах, содержит параметры DNS. Но
этот файл перезаписывается системой при перезагрузке. Если у вас рабочая система, то такое поведение — оптимально. А вот на сервере хотелось бы больше контроля. О том, как побороть перезапись этого файла, рассказано в другой моей статье:
http://dkws.org.ua/index.php?page=show&file=a/ubuntu/static-dns-ubuntu9.

Глава 8. Настройка локальной сети

213

8.7.4. Кома нда hostnamecti
Как изменить имя узла, не редактируя никакие файлы? Для этого в современных
дистрибутивах служит команда hostnamectl. Вызов этой команды без параметров
выводит имя узла и другую информацию о системе (рис. 8.14). Для установки имени узла нужно выполнить команду:
hostnamectl set-hostname
Удивительно, но в Fedora 22-26 эта команда сработала без прав root, что и показано
на рис. 8.14.

Рис. 8.14. Fedora: установка параметров узла

Существует также команда hostname, но она позволяет лишь изменить имя компьютера до перезагрузки, а после перезагрузки будет восстановлено его старое имя.

8.7.5. Команда mii-tool
Современные сетевые адаптеры поддерживают несколько скоростей передачи данных: 10, 100 и 1000 Мбит/с, а также два режима передачи данных: полудуплексный
и полнодуплексный.
Помню, настраивал как-то РРРоЕ-соединение в Windows ХР. И оно отказывалось
работать на штатной скорости адаптера 100 Мбит/с— происходили постоянные
срывы связи через произвольные интервалы времени с момента установки соединения. Пришлось «зажать» сетевой адаптер до скорости 10 Мбит/с— после этого

214

Часть III. Настройка сети и Интернета

проблема исчезла. На скорости самого соединения это никак не отразилось, поскольку оно было изначально ограничено провайдером до 5 Мбит/с.
До сих пор для меня загадка, почему все не работало по умолчанию. Возможно,
дело в самом сетевом адаптере. А может, даже в коммутаторе. Ведь по умолчанию
и сетевая плата, и порт коммутатора находятся в режиме автоматического согласования, когда оба устройства пытаются подобрать совместимые параметры. И как
следствие — высокая потеря пакетов. Лучший способ в такой ситуации — зафиксировать скорость и режим работы сетевого адаптера и порта коммутатора.
В Windows изменение скорости и режима работы сетевого адаптера производится
в окне изменения его параметров. А в Linux для этого служит команда mii-tooi.
Изменение режима работы порта коммутатора осуществляется через его Webинтерфейс — о том, как это делается, вы сможете прочитать в документации
к коммутатору (а дешевые коммутаторы, как правило, вообще не позволяют изменять свои параметры).
Для просмотра параметров сетевого интерфейса выполните команду:
# mii-tool -v eth0
Вывод будет примерно такой:
eth0: negotiated 100baseTx-ED flow-control, link ok
product info: vendor 88:58:43, model 0 rev 0
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: lOObaseTx-ED lOObaseTx-HD lObaseT-ED lObaseT-HD
advertising: lOObaseTx-ED lOObaseTx-HD 10baseT-ET) lObaseT-HD flow control
link partner: lOObaseTx-FD lOObaseTx-HD lObaseT-FD lObaseT-HD flow control

Сейчас сетевой адаптер работает в режиме автоматического согласования режима
(autonegotiation), текущий статус — автосогласование завершено, связь установлена. Поле capabilities содержит список поддерживаемых режимов, а поле link
partner — список режимов, поддерживаемых коммутатором.
Для установки режима используется опция -force:
# mii-tool -force=режим интерфейс
Например:
# mii-too -force=10baseT-FD eth0

8.8. Еще несколько слов о настройке сети
Напоследок отмечу, что в большинстве случаев вообще сеть настраивать не приходится — ведь DHCP-сервер сейчас не роскошь. Именно из-за этого здесь не рассмотрен конфигуратор сети openSUSE (хотя вы без проблем разберетесь с ним,
запустив Центр управления YaST).

Гпава 8. Настройка локальной сети

215

Спрашивается тогда, зачем была нужна эта глава, если все настраивается автоматически? Да, обычному пользователю, может, и не обязательно все это знать, а вот
администратор обязан разбираться в таких тонкостях. Впрочем, пользователи сейчас немного расслабились, осознав, что Linux — это просто. А расслабляться вредно. И когда требуется присвоить статический IP-адрес (например, при настройке
того же DHCP-сервера, который должен иметь статический адрес), они начинают
«плавать».
Надеюсь, эта глава полностью заполнила пробел в ваших знаниях по настройке
локальной сети в Linux.

ГЛАВА

9

Настройка соединения Wi-Fi
Беспроводные сети Wi-Fi (g/n) стали в последнее время весьма популярны благодаря дешевизне оборудования и стремлению пользователей ко всему мобильному.
Соответственно, подключиться к сети Wi-Fi можно даже с помощью мобильного
телефона. А DSL-провайдеры все чаще и чаще вместо обычных DSL-модемов устанавливают DSL-маршрутизаторы с функциями Wi-Fi, что очень удобно (описание
настройки DSL-соединений вынесено в папку Дополнения сопровождающего книгу
электронного архива— см. приложение). Такой маршрутизатор монтируется при
входе в квартиру и охватывает беспроводным Интернетом всю ее площадь, что позволяет не тянуть кабели внутри квартиры. Даже если у вас не ноутбук, оснащенный адаптером Wi-Fi «из коробки», а стационарный компьютер, можно незадорого
купить к нему внешний адаптер Wi-Fi и пользоваться всеми преимуществами скоростного беспроводного Интернета.
В этой главе мы не станем подробно рассматривать процесс настройки беспроводной сети (об этом читайте в других моих книгах) — да и не имеет этот процесс
прямого отношения к настройке Linux. К тому же, настройки беспроводных маршрутизаторов различаются в зависимости от их производительности и конкретной
модели. При этом, если маршрутизатор устанавливал провайдер, а не вы сами, то
обычно беспроводная сеть уже настроена, и вам не придется изменять какие-либо
настройки маршрутизатора, — достаточно будет только настроить свои компьютеры на подключение к этой беспроводной сети.

9.1. Настройка беспроводного соединения
с помощью NetworkManager
Рад вам сообщить, что наконец-то настройка беспроводного соединения в Linux
упрощена по максимуму. Вам больше не придется вводить команды, похожие на
шаманские заклинания, устанавливать для беспроводных адаптеров эмуляторы
Windows-драйверов, бродить по дебрям конфигурационных файлов.
Современные дистрибутивы Linux поддерживают беспроводные адаптеры так же,
как и обычные сетевые адаптеры. Поэтому все, что вам нужно сделать, — это оказаться в зоне действия беспроводной сети и ввести пароль, если доступ к сети запаролен.

Глава 9. Настройка соединения Wi-Fi

217

Далее мы рассмотрим процесс настройки беспроводного подключения в программе
NetworkManager, которая используется во многих дистрибутивах для управления
сетевыми подключениями.
Щелкните на значке NetworkManager, и вы увидите меню, позволяющее управлять
беспроводными соединениями. В этом же меню будут перечислены беспроводные
сети, в зоне действия которых вы находитесь. В нашем случае в окне менеджера
видны две беспроводные сети: dhsilabs и Shtormik (рис. 9.1).

Рис. 9.1. Ubuntu: меню
NetworkManager

Возле каждой беспроводной сети отображается индикатор уровня сигнала — чем
больше на нем активных полосок, тем ближе вы к беспроводному маршрутизатору.
Моя сеть называется dhsilabs, ее я и выбрал. Посмотрите внимательно на значок
индикатора— если возле него имеется маленький значок замка (смотреть лучше
на своем мониторе, на иллюстрации этот замок виден плохо), то сеть закрыта —
для доступа к ней нужно ввести пароль (рис. 9.2).

Рис. 9.2. Ubuntu: ввод пароля для доступа к сети

Затем (если введенный пароль правильный!) вы увидите уведомление о подключении к сети (рис. 9.3), а в меню NetworkManager появится команда Disconnect
(Отключить) для отключения от сети (рис. 9.4).

218

Часть I I I . Настройка сети и Интернета

Рис. 9.3. Ubuntu: соединение с беспроводной сетью установлено

Рис. 9.4. Ubuntu: команда Disconnect

Рис. 9.5. Ubuntu: сведения о соединении

Выбрав из меню NetworkManager команду Connection Information (Сведения
о соединении), вы сможете просмотреть информацию о вашем беспроводном
соединении (рис. 9.5): МАС-адрес беспроводного адаптера, скорость соединения
и т. д.
Команда Edit Connections (Изменить соединения) позволяет просмотреть и изменить параметры беспроводного соединения— так, на вкладке Wireless (Wi-Fi)
отображаются беспроводные сети, к которым вы когда-нибудь подключались
(рис. 9.6).

Глава 9. Настройка соединения Wi-Fi

219

Рис. 9.6. Ubuntu: список беспроводных соединений

Выберите соединение и нажмите кнопку Edit (Изменить). Какие параметры нужно
изменять? Обычно параметры беспроводного соединения не требуют редактирования, исключение составляет один параметр — пароль доступа к сети, который следует периодически менять, что и можно сделать на вкладке Wireless Security (Защита Wi-Fi), показанной на рис. 9.7.

Рис. 9.7. Ubuntu: изменение пароля доступа к беспроводной сети

Параметры всех ваших соединений хранятся в каталоге /etc/NetworkManager/systemconnections. В нем вы найдете файлы с параметрами конкретного подключения
(название файла соответствует названию подключения). В листинге 9.1 приведен
файл параметров соединения для моей беспроводной сети.

Часть I I I . Настройка сети и Интернета

220

[connection]
id=dhsilabs
uuid=c8b546ed-3el2-4960-bc76-82fc3409cf69
type=802-11-wireless
[802-11-wireless]
ssid=dhsilabs
mode=inf rast ructure
mac-address=0:If:If:83:17:95
security=802-11-wireless-security
[802-11-wireless-security]
key-mgmt=wpa-ps к
auth-alg=open
psk=12345678
[ipv4]
method=auto
[ipv6]
method=auto
Обратите внимание: пароль доступа к сети задается параметром psk (в нашем случае пароль - это строка 12345678).
Примечание
Почему все иллюстрации в этой главе — на английском языке? Мне не сложно вы­
брать русский язык и сделать иллюстрации русифицированной версии программы, но
для некоторых случаев это будет неправильно. Например, Fedora 22 по умолчанию
англоязычна, а русский язык можно доустановить только после настройки соединения.
То есть, настраивать беспроводное соединение вам придется с помощью англоязыч­
ной версии NetworkManager. То же самое касается и Ubuntu, в которой и были сдела­
ны иллюстрации для этой главы. Даже если при запуске выбирается русский язык,
окна программы NetworkManager все равно сначала выводятся на английском.

9.2. Что делать, если сети нет в списке?
Вы точно знаете, что находитесь в зоне действия беспроводной сети Wi-Fi, но ее
нет в списке NetworkManager. Что делать?
Первым делом нужно еще раз убедиться, что вы действительно находитесь в зоне
действия сети. Сделать это достаточно просто. Если вы пытаетесь подключиться
к домашней сети, просто убедитесь, что маршрутизатор включен, и вы находитесь
недалеко от него, — в большинстве случаев находиться рядом с маршрутизатором
не требуется, но счастливым обладателям огромных квартир лучше подойти к нему

Глава 9. Настройка соединения Wi-Fi

221

поближе, чтобы убедиться, что он включен, и что вы находитесь в зоне его действия.
Затем проверьте, можно ли подключиться к этой сети с других устройств (например, с другого компьютера или мобильного телефона) или в другой операционной
системе (например, в Windows). Логика проста— если подключиться удастся, то
дело в Linux...
Иногда сети бывают скрытыми, т. е. они функционируют, но широковещание SSID
(имени сети) выключено, и поэтому ее не видно в списке. Для подключения к такой
сети нужно выбрать команду Connect to Hidden Wireless Network (Подключиться
к скрытой беспроводной сети) из меню NetworkManager (см. рис. 9.4) и ввести SSID
и пароль для доступа к ней.
Самый плохой случай, когда в других ОС подключиться получается, а в Linux —
нет. Такие случаи довольно редки для современных дистрибутивов, и это означает,
что, скорее всего, в Linux нет драйвера для вашего беспроводного адаптера. Что ж,
вам придется поискать в Интернете инструкции по настройке вашего беспроводного адаптера Wi-Fi в вашем дистрибутиве Linux. Сей процесс в книге не рассматривается, поскольку он, к сожалению, будет различен для каждого беспроводного
адаптера.

9.3. Точка доступа Wi-Fi на смартфоне
Ну, и еще один момент. Если вы читали предыдущие издания этой книги, то вам,
наверное, интересно, куда подевался материал о настройке в Linux соединений
GPRS/EDGE/3G. Дело в том, что такая настройка сейчас неактуальна. Практически
у всех пользователей Linux есть смартфон на базе Android (по сути Android — тот
же Linux, и так уж получилось, что пользователи iPhone с iOS на борту выбирают
себе компьютеры на Mac OS, но никак не на Linux). А в любом современном
Android-смартфоне есть возможность включить точку доступа Wi-Fi. В результате
ваше мобильное 3G/ЕDGЕ-соединение будет «расшариваться» по Wi-Fi, и никакого
другого оборудования для этого не потребуется.
Для настройки в смартфоне точки доступа Wi-Fi перейдите в меню Настройки |
Подключения (рис. 9.8).
В разделе Точка доступа и модем перейдите в раздел Мобильная точка доступа
(рис. 9.9) — появится экран с параметрами доступа: именем точки (SSID) и паролем (рис. 9.10).
Все, что вам остается, — включить эту функцию с помощью соответствующего
переключателя. Используя указанные параметры, вы сможете настроить компьютер
под управлением Linux на соединение с этой точкой доступа.

222

Часть I I I . Настройка сети и Интернета

Рис. 9.8. Android 6.1: меню Подключения

Рис. 9.9. Точка доступа и модем

Рис. 9.10. Параметры
мобильной точки доступа

ГЛАВА 10

Настройка VPN-соединения
10.1. Вкратце о выборе VPN-сервера
и тарифного плана
В последнее время многие из нас по тем или иным причинам задумываются о защите своего соединения с Интернетом. Если вы часто путешествуете или ездите
в командировки, вам иногда приходится подключаться к незащищенной сети через
Wi-Fi отеля или кафе, поэтому наличие VPN-доступа для вас будет очень актуальным.

VPN



ВИРТУАЛЬНАЯ ЧАСТНАЯ СЕТЬ

Википедия следующим образом определяет VPN (англ. Virtual Private Network, вирту­
альная частная сеть) — обобщенное название технологий, позволяющих обеспечить
одно или несколько сетевых соединений (логическую сеть) поверх другой сети (на­
пример, Интернет).

В Интернете есть множество различных VPN-сервисов. Все они работают одинаково — вы подключаетесь к VPN-серверу, и после этого весь ваш трафик передается
по зашифрованному туннелю. Даже если он и будет перехвачен злоумышленником,
расшифровать его ему все равно не получится (а если и получится, то лет через
пять, когда информация потеряет актуальность).
Какой из VPN-сервисов выбрать? При выборе VPN-сервиса нужно учитывать следующие факторы:
□ скорость работы — скорость доступа к Интернету через VPN будет ниже, чем
напрямую, но насколько — зависит от VPN-сервиса. Как правило, все платные
сервисы предоставляют вполне нормальную скорость доступа к Сети. Во всяком
случае, ее хватает для полноценного Web-серфинга, просмотра видео онлайн,
видеоразговоров в Skype. А вот при работе через бесплатные сервисы скорость
доступа может оказаться низкой;
□ ограничения на передачу трафика — бесплатные (или условно-бесплатные) сервисы часто имеют ограничения на объем передаваемых данных. Например,
популярный сервис Security KISS при использовании бесплатного аккаунта разрешает передачу всего 300 Мбайт в день;

224

Часть I I I . Настройка сети и Интернета



ограничения на загрузку файлов — некоторые бесплатные сервисы имеют ограничения на размер загружаемых файлов. Например, используя OperaVPN, вы не
сможете загрузить файл размером более 15 Мбайт1;



ограничения на использование портов— некоторые VPN-сервисы закрывают
определенные порты, например, порты отправки почты 25, 465 и т. д. Это означает, что почту можно будет отправлять только с помощью Web-интерфейса,
что не позволит воспользоваться для переписки привычной вам почтовой программой. И хорошо, если у вашего почтового ящика есть Web-интерфейс. А вот
если его нет, это создаст вам реальные неудобства;



стоимость использования — здесь все зависит от ваших финансовых возможностей.

Если вы хотите воспользоваться услугами полностью бесплатного VPN-сервиса,
могу порекомендовать проект FreeOpenVPN (https://www.freeopenvpn.org/), на
сайте которого публикуются списки публичных (бесплатных) VPN-сервисов.
Однако вы должны помнить, что бесплатные сервисы не гарантируют сохранности
ваших данных. То есть нет гарантии, что сам бесплатный VPN-сервис не станет
перехватывать ваши пароли и другую конфиденциальную информацию. Поэтому я
не рекомендовал бы вам использовать такие сервисы. Впрочем, если ваша цель —
только скрыть свой IP-адрес, то можно попробовать использовать и эти сервисы.
Далее будет показано, как настроить соединение с крупнейшим VPN-провайдером
SecurityKISS (https://securitykiss.com/). К преимуществам этого сервиса можно отнести его надежность — защищаемые вами данные точно не будут переданы третьей стороне, а также наличие бесплатного аккаунта. Но есть у него и недостатки:
□ стоимость — самый доступный тариф OLIVINE обойдется вам в 3 евро в месяц, при этом вам будет установлено ограничение в 20 Гбайт трафика в месяц,
то есть примерно 682 Мбайт в день. У бесплатного аккаунта этого сервиса, как
уже отмечалось ранее, ограничение составляет 300 Мбайт в день.

Что 300 Мбайт, что 682,— этого мало для полноценной работы в Интернете.
С другой стороны, все зависит от того, что вы там делаете. Например, сегодня за
10 часов (с 7:00 по 17:00) я израсходовал примерно 450 Мбайт трафика. При
этом я не слушал музыку онлайн, не смотрел видео онлайн, у меня не было
видеоразговоров в Skype, но был один голосовой Skype-разговор длительностью
3 минуты. Остальное — это Web-серфинг по интересующим сайтам и работа
с почтой. Вполне может быть, что вам при таком виде работы 680 Мбайт будет
достаточно.
Впрочем, всегда можно купить тариф MALACHITE (всего за 4 евро в месяц), и
вам будет предоставлено 30 Гбайт трафика в месяц, или ровно 1 Гбайт в день.
Максимальный тариф EMERALD, где нет ограничений на размер передаваемого
трафика, обойдется вам в 10 евро в месяц. Как видите, тарифы у SecurityKISS
весьма демократичные, но платить все равно придется;
По состоянию на 15 августа 2017 года это ограничение снято, но временно или постоянно — пока не
известно.
1

Глава 10. Настройка VPN-соединения

225

□ ограниченное использование почтовых программ— если вы привыкли читать
почту почтовой программой, например, Thunderbird, то вам придется потратиться как минимум на тариф MALACHITE (4 евро в месяц), поскольку в тарифах
FREE и OLIVINE отправить почту с помощью почтовой программы не получится. Впрочем, если у вашего почтового ящика есть Web-интерфейс, это не составит вам проблемы.
На мой взгляд, оптимальным является тарифный план JADEITE, согласно которому
с ежемесячной платой в 6 евро (или за 53,9 евро при оплате за год) вам предоставляется 50 Гбайт в месяц. При этом вам сохраняется возможность использования
привычных почтовых программ, а средний расход трафика в день будет порядка
1700 Мбайт — этого, полагаю, хватит с лихвой даже для видеозвонков и просмотра
видео онлайн.
VPN-сервис SecurityKISS имеет и мобильное приложение, которое можно установить на смартфон, с тарифом, например, FREE. Сужу по своему опыту — я редко
использую более 2 Гбайт мобильного трафика (3G) в месяц, поэтому 300 Мбайт
в день мне вполне хватает.
К о р п о р а т и в н ы й VPN- с е р в и с
Конечно, если ваша организация предоставляет сотрудникам собственный VPN-сер­
вис, то проблема выбора для вас решена сама по себе. А в седьмой части книги бу­
дет показано, как настроить VPN-сервер собственноручно (см. главу 46).

10.2. Настройка VPN-подключения
Настройку VPN-подключения мы рассмотрим на примере провайдера SecurityKISS
и в дистрибутиве Ubuntu, как одном из самых популярных на настольных компьютерах.
Первым делом нужно удостовериться, что вы используете нужные DNS-серверы.
Как бы там ни было, но вам следует установить либо DNS-серверы Google: 8.8.8.8
и 8.8.4.4, либо OpenDNS: 208.67.222.222 и 208.67.220.220.
Для этого установите пакет resolvconf и отредактируйте файл /etc/resolvconf/
resolv.conf.d/base (рис. 10.1), добавив в него эти DNS-серверы (листинг 10.1).

nameserver 8.8.8.8
nameserver 8.8.4.4
Затем настройте систему на использование пакета resolvconf для разрешения доменных имен:
sudo resolvconf -u
/etc/init.d/network-manager force-reload
Теперь все готово к настройке самого VPN-соединения. Зайдите на сайт
https://securitykiss.com/ и зарегистрируйтесь. Перейдите в раздел Download | Linux

Часть I I I . Настройка сети и Интернета

226

Рис. 10.1. Ubuntu: установка пакета resolvconf и редактирование его конфигурационного файла

(рис. 10.2) и загрузите конфигурацию для Network Manager (рис. 10.3). Конкретную
ссылку я здесь не привожу, поскольку она будет разной для разных пользователей.
Распакуйте загруженный файл. В нем вы найдете файл README.txt с данными шлюзов SecurityKISS. Выберите лучший для себя шлюз. Обычно есть смысл выбирать
ближайший (географически) к своему местоположению шлюз, но можно поэкспериментировать с разными шлюзами. Далее мы будем использовать следующий
шлюз:
US Los Angeles 23.19.26.250 udp 5000
Теперь нужно установить плагин Network Manager для OpenVPN:
sudo apt install network-manager-openvpn
Перезапустите сеть и Network Manager:
sudo service network-manager restart
sudo service networking restart
Если команда настройки VPN не появится в меню Network Manager, установите
еще один пакет:
sudo apt-get install network-manager-openvpn-gnome
После этого опять перезагрузите сеть и Network Manager.
Если после перезапуска сети она пропала...
Если после перезапуска сети она у вас пропала (сообщение: Network is unreachable),
выберите в Network Manager используемое вами соединение (например, Wi-Fi) и под­
ключитесь заново!

Глава 10. Настройка VPN-соединения

Рис. 10.2. Ubuntu: раздел загрузок конфигурации

Рис. 10.3. Ubuntu: загрузка файла

227

Часть III. Настройка сети и Интернета

228

Рис. 10.4. Ubuntu: создание VPN-соединения

Откройте окно Network Manager и нажмите кнопку Добавить для создания нового
соединения. Выберите тип соединения OpenVPN (рис. 10.4).
Затем перейдите в папку, в которую вы распаковали настройки OpenVPN, и откройте файл с IP-адресами шлюзов. Выбирая IP-адрес, вы должны понимать, что
именно этот IP-адрес будет появляться в логах сайтов, которые вы будете посещать.
Выполните следующие действия:
1. Введите имя соединения — например: securityKISS.
2. Введите IP-адрес шлюза — в нашем случае: 23.19.26.250.
3. Выберите тип аутентификации Сертификаты TLS.
4. В качестве сертификата пользователя установите файл cert.crt (он находится
в загруженном архиве).
5. В качестве сертификата центра сертификации выберите файл ca.crt.
6. Установите личный ключ — файл client.key.
7. Нажмите кнопку Дополнительно.
8. В открывшемся окне установите порт 5000 (рис. 10.5), а также включите опцию
Использовать для данных сжатие LZO.
9. Нажмите кнопку ОК.
10. После возвращения в окно создания соединения (рис. 10.6) нажмите кнопку
Сохранить.
11. В меню Network Manager выберите созданное соединение для подключения
(рис. 10.7).
12. Если вы все сделали правильно, вы увидите уведомление об успешном подключении (рис. 10.8). Откройте браузер и перейдите на страничку https://

Глава 10. Настройка VPN-соединения

229

2ip.ru, чтобы узнать свой теперешний IP-адрес. Он должен быть таким, кото
рый вы выбрали из файла README.txt (рис. 10.9).
На этом все... Как видите, в установке VPN-соединения нет ничего сложного.

Рис. 10.5. Ubuntu: дополнительные параметры

Рис. 10.6. Ubuntu: параметры VPN-соединения

230

Часть III. Настройка сети и Интернета

Рис. 10.7. Ubuntu: выбор соединения

Рис. 10.8. Ubuntu: уведомление об успешном подключении

Рис. 10.9. Ubuntu: IP-адрес скрыт

ГЛАВА 1 1

Объединение интернет-каналов
11.1. Цели и средства решения задачи
Представим, что существуют два или более канала для доступа к Интернету, работающих на разных интерфейсах. Если объединить эти каналы, то можно увеличить
скорость доступа к Интернету, а также повысить отказоустойчивость интернетсоединения.
Приведенное в этой главе решение будет полезно не только предприятиям, где особенно важна отказоустойчивость соединения, но и обычным пользователям, которые хотели бы увеличить пропускную способность, используя несколько каналов
доступа к Интернету.
Обратите внимание, что интернет-каналы должны находиться на разных интерфейсах, и это важно, — у вас может быть один интерфейс и два интернет-канала, которые вы используете поочередно: доступ к Интернету по локальной сети и через
РРРоЕ. В этом случае вам понадобится еще один сетевой адаптер, чтобы каждый из
интернет-каналов работал на собственном интерфейсе.
Здесь мы рассмотрим два решения: одно более простое, второе — посложнее, но
более гибкое. При этом ни один из способов не требует установки стороннего программного обеспечения— настройка осуществляется стандартными средствами
операционной системы. Выбор решения зависит от поставленной задачи и от ваших предпочтений — сначала ознакомьтесь с обоими способами, а затем сделайте
выбор.

11.2. Простой способ
со статической маршрутизацией
Особенность этого способа— статическая маршрутизация, позволяющая задать
IP-адреса, доступ к которым будет осуществляться только через определенного
провайдера.
Прежде всего нужно отредактировать файл /etc/iproute2/rt_tabies, в котором описываются таблицы для каждого из провайдеров (листинг 11.1).

232

Часть I I I . Настройка сети и Интернета

# Не изменяйте эти значения
255 local
254 main
253 default
0
unspec
#
# local
#
#1
inr.ruhep
# Таблицы интернет-провайдеров
1 ISP1
2 ISP2
Затем создайте файл /etc/iproute2/ISP1.txt и перечислите в нем IP-адреса, путь к которым должен проходить строго через провайдера ISP1 (по одному адресу в строке).
Далее создайте сценарий /etc/iproute2/balance.sh (листинг 11.2). Ясное дело, IP-адреса
и другие переменные в нем нужно соответственно исправить.

#!/bin/sh
ISPl="/etc/iproute2/ISPl.txt"
# Локальная сеть
local_eth=ethl
# Интерфейс
local_ip=192.168.1. 1 # IP-адрес
local_net=192.168.1.0/24# Подсеть
# Сеть локального провайдера
li_net=10.0.0.0/8
# Параметры ISP1
il_eth=ethO
il_ip=l.2.3.104
il_net=1.2.3.0/24
il_gw=l.2.3.1
# Параметры ISP2
i2_eth=eth2
i2_ip=2.2.2.222
i2_net=2.2.2.0/16
i2_gw=2.2.0.1
# Таблицы маршрутизации iproute2 (нужно указать номера, которые указаны
# в файле /etc/iproute2/rt_tables)

Глава 11. Объединение интернет-каналов

233

tablel=l
table2=2
# Сбрасываем iptables
iptables -t mangle -F NEW_OUT_CONN
iptables -t mangle -F PREROUTING
iptables -t mangle -F OUTPUT
iptables -t mangle -X NEW_OUT_CONN
ip route flush table $table2
ip rule del table $table2
ip route flush table $tablel
ip rule del table $tablel
ip route flush cache

# Установка новых правил
iptables -t mangle
iptables -t mangle
iptables -t mangle
0.50 -j RETURN
iptables -t mangle

-N NEW_OUT_CONN
-A NEW_OUT_CONN -j CONNMARK -set-mark 1
-A NEW_OUT_CONN -m statistic —mode random —probability
-A NEW_OUT_CONN -j CONNMARK -set-mark 2

# Обработка адресов из файла ISPl.txt
for file in $ISP1; do
if [ -f "$file" ]; then
{ cat "$file" ; echo ; } I while read ip_addr; do
if [ "$ip_addr" != ,,n ]; then
echo "Static routing for $ip_addr"
iptables -t mangle -A NEW_OUT_CONN -d $ip_addr -j CONNMARK -set-mark 1
fi
done
fi
done
iptables -t mangle -A PREROUTING -d $local_net -j RETURN
iptables -t mangle -A PREROUTING -d $li_net -j RETURN
iptables -t mangle -A PREROUTING -s $local_net -m state —state new,related -j
NEW_OUT_CONN
iptables -t mangle -A PREROUTING -s $local_net -j CONNMARK —restore-mark
iptables -t mangle -A OUTPUT -d $local_net -j RETURN
iptables -t mangle -A OUTPUT -d $li_net -j RETURN
iptables -t mangle -A OUTPUT -s $local_net -m state —state new,related -j
NEW_OUT_CONN
iptables -t mangle -A OUTPUT -s $li_net -j CONNMARK —restore-mark

Часть III. Настройка сети и Интернета

234

ip
ip
ip
ip
ip

route add $local_net dev $local_eth scope link table $tablel
routeadd
$i2_netdev $i2_ethscopelink table $tablel
routeadd
$il_netdev $il_ethscopelink src $il_ip table$table1
route add 127.0.0.0/8 dev lo scope link table $tablel
route add default via $il_gw table $tablel

ip rule add prio 51 fwmark 1 table $tablel
ip rule add from $il_ip table $table1
ip
ip
ip
ip
ip

route add $local_net dev $local_eth scope link table $table2
routeadd
$il_netdev $il_ethscopelink table $table2
routeadd
$i2_netdev $i2_ethscopelink src $i2_ip table$table2
route add 127.0.0.0/8 dev lo scope link table $table2
route add default via $i2_gw table $table2

ip rule add prio 52 fwmark 2 table $table2
ip rule add from $i2_ip table $table2
ip route flush cache
После создания и редактирования сценария назначьте ему право выполнения и запустите. Его также нужно добавить в сценарии загрузки системы, чтобы не запускать его при каждой перезагрузке.
Обратите внимание, что в этом сценарии мы прописываем статические IP-адреса.
Если у вас динамические IP-адреса, сценарий требует модификации, — нужно будет вычислить IP-адреса, которые присвоены DHCP каждому интерфейсу (см. пример из листинга 11.3).

11.3. Сложный способ
с гибкой настройкой отказоустойчивости
Это решение больше подойдет пользователям, желающим обеспечить отказоустойчивость доступа к Интернету. Способ сложнее представленного в разд. 11.2 и не
предполагает статической маршрутизации, хотя вы можете организовать ее по образу и подобию предыдущего способа, — нужно будет лишь незначительно модифицировать его код.
Прежде всего, как обычно, правим файл /etc/iproute2/rtJables. Он будет таким же, как
в предыдущем способе (см. листинг 11.1). Затем в каталоге /etc/iproute2 нужно создать файл config, в котором прописать различные переменные (листинг 11.3).

#!/bin/bash
# Локальный интерфейс ("смотрит" в локальную сеть)
IF0="eth0"

Глава 11. Объединение интернет-каналов

235

# Интерфейс к провайдеру ISP1
IFl="ethl"

# Интерфейс к провайдеру ISP2
IF2="ppp0"
# IP-адрес для первого провайдера задаем статично, для второго - используется
# протокол DHCP, поэтому нам нужно вычислить IP при каждом запуске сценария
1Р1="1.2.3.хх"
IP2="'ip addr show $IF2 | grep inet | awk ’{print $2}’'"

# шлюз 1
GW1=”1.2.3.1"
# шлюз 2
GW2="2.2.2.1"
# Маска локальной сети
LOCAL_NET="192.168.0.0/24"
# Маска сети провайдера ISP1
ISP1_NET="194.9.хх.хх/хх"
# Маска сети провайдера ISP2
IS P2_NET="195.5.хх.хх/хх"
# Таблицы маршрутизации
TBL1="ISP1"
TBL2="ISP2"
# Относительный "вес" каналов (второй канал более важный)
Wl="l"
W2="2"
Теперь создадим сценарий /etc/iproute2/routing, устанавливающий все необходимые
маршруты и правила iptables (листинг 11.4). После редактирования сценария не забываем Сделать его ИСПОЛНИМЫМ: chmod +х routing.

#!/bin/bash
# Импортируем файл конфигурации
. /etc/iprouter2/config
# Включаем IPv4 Forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# Устанавливаем правила маршрутизации и брандмауэра
ip route add $ISP1_NET dev $IF1 src $IP1 table $TBL1 > /dev/null 2>&1
ip route add default via $GW1 table $TBL1 > /dev/null 2>&1

236

Часть III. Настройка сети и Интернета

ip route add $ISP2_NET dev $IF2 src $IP2 table $TBL2 > /dev/null 2>&1
ip route add default via $GW2 table $TBL2 > /dev/null 2>&1

ip route add $ISP1_NET dev $IF1 src $IP1 > /dev/null 2>&1
ip route add $ISP2_NET dev $IF2 src $IP2
ip route add default via $GW1 > /dev/null 2>&1
ip rule add from $IP1 table $TBL1 > /dev/null 2>&1
ip rule add from $GW2 table $TBL2 > /dev/null 2>&1
ip
ip
ip
ip
ip
ip

route add $LOCAL_NET dev $IF0 table $TBL1 > /dev/null 2>&1
routeadd
$ISP2_NET dev $IF2
table$TBL1>/dev/null 2>&1
routeadd
127.0.0.0/8 dev lo
table$TBL1>/dev/null 2>&1
route add $LOCAL_NET dev $IF0 table $TBL2 > /dev/null 2>&1
routeadd
$ISP1_NET dev $IF1
table$TBL2>/dev/null 2>&1
routeadd
127.0.0.0/8 dev lo
table$TBL2>/dev/null 2>&1

iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s $LOCAL_NET -o $IF1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $LOCAL_NET -o $IF2 -j MASQUERADE
Осталось самая малость— написать сценарий, который будет проверять работоспособность того или иного канала и в случае необходимости менять шлюз по
умолчанию. Сценарий работает просто: он отправляет пять «пингов» подряд, и,
если нет ответа, считается, что канал не работает, и он исключается из таблицы
маршрутизации. Код сценария приведен в листинге 11.5.

#!/bin/bash
# Подключаем конфигурацию
. /etc/iproute2/config
OLDIF1=0
OLDIF2=0
# Настраиваеммаршрутизацию
. /etc/iproute2/routing
while true; do
ping -c 5 -s 100 $GW1 -I $IF1 > /dev/null
if [ $? -ne 0 ]; then
echo "Failed ISP1!"
NEWIF1=0
else
NEWIF1=1
fi

Глава 11. Объединение интернет-каналов

237

ping -с 5 -s 100 $GW2 -I $IF2 > /dev/null
if [ $? -ne 0 ]; then
echo "Failed I S P 2 ! "
NEWIF2=0
else
NEWIF2=1
fi
if (( ($NEWIF1!=$OLDIFl) || ($NEWIF2!=$OLDIF2) )); then
echo "Changing default routes"
if (( ($NEWIF1==1) && ($NEWIF2==1) )); then
echo "Both ISP"
ip route delete default
ip route add default scope global nexthop via $GW1 dev $IF1 weight $W1 \
nexthop via $GW2 dev $IF2 weight $W2
e l i f ( ( ($NEWIF1==1) && ($NEWIF2==0) )); then

echo "ISP1"
ip route delete default
ip route add default via $GW1 dev $IF1
e l i f ( ( ($NEWIF1==0) && ($NEWIF2==1) )); then
echo "ISP2"
ip route delete default
ip route add default via $GW2 dev $IF2
fi
else
echo "OK"
fi
0LDIF1=$NEWIF1
OLDIF2=$NEWIF2
sleep 5
done
Теперь рассмотрим, как всем этим пользоваться. Запустите сценарий test_connect —
он сам подключит сценарий routing, настраивающий маршрутизацию. Один раз
в 5 секунд сценарий test__connect станет опрашивать каждый из шлюзов. Если шлюз
не ответил ни на один из пяти «пингов», он исключается из таблицы маршрутизации, а шлюзом по умолчанию назначается работоспособный канал:
ip route delete default
ip route add default via $GW1 dev $IF1
Когда же оба канала работают, то через второй шлюз пойдет в два раза больше
трафика, чем через второй. Если нужно, чтобы больше трафика пошло через первый шлюз, просто измените содержимое переменных W1 и W2, — чем выше «вес»,
тем главнее считается канал.

ЧАСТЬ IV
Linux дома и в офисе
Эта часть книги посвящена домашнему и офисному применению Linux. Первым
делом мы рассмотрим, как добавить поддержку популярных форматов мультимедиа MP3 и DivX в ваш дистрибутив, поскольку разработчики современных дистрибутивов по лицензионным соображениям исключили поддержку форматов мультимедиа из своих продуктов. Затем построим собственный медиацентр. А уже затем
поговорим о настройке графической подсистемы, трехмерном рабочем столе, пакете LibreOffice, программе GIMP и других полезных приложениях.

ГЛАВА 12

Поддержка
форматов мультимедиа
12.1. Что такое кодеки
и почему их нет в Linux?
Существует очень много мультимедиаформатов для хранения звука и видео: MP3,
OGG, WMA, WMV, MP4 и пр. Чтобы ваша система могла воспроизводить каждый
конкретный формат, для этого формата нужен кодек (codec, от COder/DECoder) —
специальная программа, «знающая» как работать с тем или иным форматом. Кодек
можно сравнить с драйвером устройства, только драйвер «обучает» систему, как
работать с определенным устройством, а кодек — как воспроизводить тот или иной
формат мультимедиа.
Практически из всех дистрибутивов Linux исключена поддержка MP3, DivX, WMV,
DVD и других запатентованных форматов. Впрочем, это не означает, что вы не
можете смотреть в Linux фильмы или слушать музыку. Поддержка форматов «из
коробки» (т. е. сразу после установки дистрибутива) исключена лишь для того,
чтобы не нарушать действующие патенты. Конечно, можно включить поддержку
этих форматов в состав дистрибутивов, но тогда разработчикам Linux пришлось бы
покупать лицензию на распространение каждого кодека. Сами понимаете, лицензия
в таких случаях стоит не пару долларов, и чтобы вернуть вложенные средства,
Linux пришлось бы сделать платным, что никому не нужно. Поэтому все остается,
как было: Linux — бесплатен, но без кодеков.
Вы же, как конечный пользователь, можете совершенно бесплатно загрузить кодеки для воспроизведения всех мультимедиаформатов. При этом не будут нарушены
ни действующие патенты, ни чьи-либо авторские права, поскольку вы загружаете
кодеки для личного использования, а не для распространения или получения прибыли.

12.2. Настройка дистрибутива Fedora 25-26
В ранних дистрибутивах Ledora по умолчанию устанавливался проигрыватель
мультимедиа Totem, сейчас же Ledora комплектуется проигрывателем Videos. Это
неплохой проигрыватель, но я бы рекомендовал установить более продвинутый

242

Часть IV. Linux дома и в офисе

проигрыватель — VLC. Для этого нужно сначала установить пакет RPMFusion, а
затем — собственно VLC:
------- Fedora 24 ----sudo rpm -ivh http://downloadl.rpmfusion.org/free/fedora/rpmfusion-freerelease-24.noarch.rpm

------- Fedora 25 ----sudo rpm -ivh http://downloadl.rpmfusion.org/free/fedora/rpmfusion-freerelease-25.noarch.rpm
sudo dnf install vic

Осталось только установить кодеки — просто введите эту длинную команду:
sudo dnf install gstreamer-plugins-bad gstreamer-plugins-bad-free-extras
gstreamer-plugins-ugly gstreamer-ffmpeg gstreamer1-libav gstreamerlplugins- bad-free-extras gstreamer1-plugins-bad-freeworId gstreamerplugins-base-tools gst reamer1-plugins-good-extras gstreamerl-pluginsugly gstreamerl-plugins-bad- free gstreamerl-plugins-good gstreamerlplugins-base gstreamerl

На этом все... Если раньше приходилось «изобретать велосипед», то сейчас проблема решается просто путем установки длинного списка пакетов.

12.3. Установка кодеков в openSUSE
Установить кодеки в openSUSE можно двумя способами: автоматически или вручную, и здесь вам будут наглядно продемонстрированы оба способа.
Первый способ заключается в следующем: перейдите по адресу: http://opensuseguide.org/codecs.php, нажмите кнопку Install Multimedia Codecs и в открывшемся
окне выберите открытие файла в YaST 1-CIick Install (рис. 12.1).
В окне YaST2 - Установка в 1 клик следуйте инструкциям инсталлятора. Кстати,
последний покажет, что он собирается сделать: добавить репозитории Packman и
libdvdcss, а также установить девять пакетов (рис. 12.2).
После нажатия кнопки Далее начнется мучительная установка пакетов. Отходить
от компьютера нельзя, поскольку вам придется то пароль root ввести, то отвечать
на разные бессмысленные вопросы инсталлятора (рис. 12.3).
В процессе установки нужно будет разрешить один из конфликтов пакетов
(рис. 12.4)— выберите опцию 1 и нажмите кнопку ОК - попробовать снова.
Останется подождать, пока будут установлены все пакеты (рис. 12.5), и, получив
сообщение о том, что установка прошла успешно, нажать кнопку Завершить
(рис. 12.6).
Лично меня этот процесс настолько утомил, что напрочь убил желание полностью
его иллюстрировать. Да и вы бы спасибо мне не сказали — ведь я сделал целых
19 скриншотов установки в openSUSE одних только кодеков! Так что, внимательно
читайте все, что предлагает вам инсталлятор, благо, это выводится на русском языке.

Глава 12. Поддержка форматов мультимедиа

Рис. 12.1. openSUSE: открываем загружаемый файл в YaST-Установка в 1 клик

Рис. 12.2. openSUSE: добавление репозиториев и установка пакетов

243

244

Часть IV. Linux дома и в офисе

Рис. 12.3. openSUSE: импортировать непроверенный ключ?

Рис. 12.4. openSUSE: разрешение конфликта пакетов

Глава 12. Поддержка форматов мультимедиа

Рис. 12.5. openSUSE: установка пакетов

Рис. 12.6. openSUSE: установка завершена

245

246

Часть IV. Linux дома и в офисе

А теперь посмотрим, как установить кодеки вручную, — все здесь сводится всего
лишь к трем командам: первые две устанавливают репозитории, третья — необходимые пакеты:
zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_42.3/
packman
zypper addrepo -f http://opensuse-guide.Org/repo/openSUSE_Leap_42.3/dvd
zypper install ffmpeg lame gstreamer-plugins-bad gstreamer-plugins-ugly
gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav libdvdcss2

Как видите, командная строка иногда — более простой и гибкий инструмент. А вот
с количеством всевозможных запросов в инсталляторе openSUSE явно перемудрили — установка называется «за один клик», а этих самых «кликов» пришлось сделать множество.

12.4. Установка кодеков в Ubuntu 16.04-17.04
В Ubuntu также есть два способа установки: автоматический и ручной. Автоматический сводится к установке пакета Расширения Ubuntu, ограниченные патен­
тами или законами (рис. 12.7). К сожалению, этого пакета в версии 17.04 я не
нашел (может, плохо искал), поэтому пришлось устанавливать кодеки вручную.

Рис. 12.7. Ubuntu 16.04: автоматическая установка кодеков

Глава 12. Поддержка форматов мультимедиа

247

А в ручном для установки кодеков нужно выполнить следующие команды:
$ sudo apt-get install ubuntu-restricted-extras
$ sudo apt-get install ffmpeg gxine libdvdread4 icedax tagtool libdvd-pkg
easytag id3tool lame libxine2-ffmpeg nautilus-script-audio-convert libmadO
mpg321 libavcodec-extra gstreamerl.0-libav

12.5. Домашний медиацентр
на основе openELEC
12.5.1. Выбор дистрибутива
На самом деле, мои мучения с мультимедиа не ограничились установкой кодеков
в различных дистрибутивах. Захотелось создать медиацентр, который заменил бы
обычный DVD-проигрыватель. Ведь, если разобраться, в DVD-проигрывателе нет
ничего интересного — примитивное устройство с точки зрения программной части.
А если подключить к телевизору компьютер, то открываются огромные возможности: можно и видео онлайн посмотреть (тот же YouTube), и фильмы из Интернета (чтобы не бегать с болванкой или флешкой от компьютера к DVD-проигрывателю).
Но какой дистрибутив выбрать для медиацентра? С технической точки зрения
можно выбрать любой, который умеет воспроизводить аудио и видео, но, согласитесь, это не столь интересно — интерфейс будет обычный, компьютерный. А хочется чего-то в стиле интерфейса того же DVD-проигрывателя, но, в то же время,
с возможностями обычного компьютера.
Я нашел такой дистрибутив — openELEC. И вся оставшаяся часть главы посвящена
этому дистрибутиву — вы узнаете, как его установить, как настроить, как установить в нем программы и как их использовать. Благо, все это настолько просто, что
даже не заслуживает отдельной главы.
Так что же представляет собой openELEC? Это легкий дистрибутив Linux, инсталляционные файлы которого «весят» чуть больше 120 Мбайт. Для сравнения: та же
Ubuntu после установки всего необходимого программного обеспечения заняла
4,81 Гбайт, a openSUSE (куда из дополнительного программного обеспечения были
добавлены лишь файловый менеджер mc и кодеки) — 5,6 Ебайт. Создавать же какой-то собственный дистрибутив только для видеопросмотров было мне не с руки.
Лично для меня большой интерес заключался в предоставляемой openELEC возможности просмотра фильмов онлайн (благо, скорость доступа к Интернету позволяет), для чего большой жесткий диск не нужен, поэтому и появилась идея сэкономить на нем и поставить медиацентр на флешку. Так вот, на openELEC можно
с легкостью реализовать медиацентр и установить его на 8-гигабайтную флешку,
обойдясь вовсе без жесткого диска, или, по крайней мере, сэкономить за счет такого медиацентра 4-6 Гбайт на жестком диске для пары-тройки фильмов.
В итоге мой медиацентр состоит из компьютера без жесткого диска с приводом
DVD (планируется установка Blu-ray) и подключением к Интернету. Для более

248

Часть IV. Linux дома и в офисе

требовательного пользователя никто не мешает установить жесткий диск (и инсталлировать на него дистрибутив), а также добавить еще и ТВ-тюнер. Процесс
установки openELEC от этого не изменится.
Чем еще хорош openELEC? — его не нужно (ну, практически не нужно) настраивать: вы не заботитесь ни о видеокарте, ни о звуковой плате, ни о кодеках— все
это работает «из коробки». А вам надо только выбрать язык и, возможно, изменить
параметры сети. К тому же, все это и управляется по сети — вы можете удаленно
управлять своим медиацентром, загружать удаленно на него фильмы и т. д.

12.5.2. Установка дистрибутива
Итак, приступим. Если вы решили пойти моим путем и установить дистрибутив на
флешку, вам понадобятся две флешки: на первую вы запишете инсталлятор, а на
вторую — установите дистрибутив. Обе флешки должны быть отформатированы
в FAT.
Первым делом нужно загрузить инсталлятор дистрибутива с официального сайта
http://openelec.tv/. На этом сайте вы найдете несколько сборок openELEC, в том
числе и для процессоров Intel и Apple TV. Если у вас самый обычный компьютер,
можете загрузить сборку Generic Build.
Загруженный архив OpenELEC-Generic.i386-1.0.2.tar.bz2 распакуйте в любой каталог и
перейдите в полученный каталог OpenELEC-Generic.i386-1.0.2. Если вы работаете
в Linux, введите команду:
./create_installstick
В Windows следует запустить на выполнение файл createjnstallstick.bat с правами
администратора (рис. 12.8).
По запросу (рис. 12.9) введите букву накопителя флешки (а для Linux-версии —
имя устройства флешки), на которую нужно установить инсталлятор дистрибутива.
Запись инсталлятора занимает около 20 секунд. Если процесс затянется, можно
завершить его, переформатировать флешку и запустить файл createjnstallstick.bat
заново.
После завершения записи инсталлятора на флешку, о чем вы увидите соответствующее сообщение (рис. 12.10), перезагрузите компьютер, выбрав в его BIOS Setup
загрузку с флешки. Не забудьте также предварительно вставить флешку, на которую собираетесь установить openELEC!
После перезагрузки компьютера в режиме загрузки с флешки загрузится инсталлятор, и вы увидите его меню (рис. 12.11). Честно говоря, не знаю, зачем оно нужно,
если в нем работает только первый пункт — быстрая установка. Поэтому просто
нажмите клавишу для продолжения.
На следующем шаге вам будет предложено выбрать носитель, на который должна
быть установлена openELEC, — заранее приготовленную флешку. Будьте осторожны и не установите ненароком дистрибутив на жесткий диск! Это не openSUSE или
Ubuntu, которые используют для создания Linux-раздела свободное пространство

Глава 12. Поддержка форматов мультимедиа

Рис. 12.8. Windows: запуск файла create_installstick.bat

Рис. 12.9. Windows: введите букву накопителя

249

250

Часть IV. Linux дома и в офисе

Рис. 12.10. Windows: запись инсталлятора завершена

Рис. 12.11. openELEC: меню инсталлятора

диска. Инсталлятор openELEC примитивен до ужаса— он удаляет с выбранного
носителя все, что там имеется, и создает структуру разделов, необходимую для
openELEC.
После выбора носителя вам продемонстрируют процесс установки (рис. 12.12),
правда, недолгий, — установка дистрибутива занимает около минуты, может, даже
меньше.
Теперь загружаемся со второй флешки. Поначалу загрузка меня не порадовала:
сначала я увидел приглашение загрузчика, потом часть сообщений ядра, после чего
пришлось любоваться классикой— черным квадратом Малевича (ну, почти квадратом, — монитор-то у меня 4:3). Я уже собирался было нажать кнопку Reset, как
открылся интерфейс ХВМС, ради которого я и устанавливал этот дистрибутив
(рис. 12.13) — правда, впечатляет? Во всяком случае, для домашнего кинотеатра он
гораздо лучше подходит, чем уже приевшиеся GNOME и KDE.

Глава 12. Поддержка форматов мультимедиа

251

Рис. 12.12. openELEC: установка дистрибутива

Рис. 12.13. openELEC: интерфейс ХВМС

12.5.3. Настройка и использование
Поскольку домашним кинотеатром должны пользоваться близкие, то первым делом следует русифицировать интерфейс, — идем в меню SYSTEM | Settings |
Appearance | International и изменяем параметр Language. Рекомендую выбрать
Russian — думаю, вы уже догадались. Впрочем, никто не запрещает выбрать и
японский (рис. 12.14)— тогда пользоваться кинотеатром станет совсем просто.
Шутка. После выбора языка интерфейс станет еще приятнее — своя рубашка ближе
к телу (рис. 12.15).
Теперь о самом главном— о доступе к Интернету. Есть две новости: хорошая и
плохая. Начну с хорошей — поддержка сети есть. А теперь плохая — поддержка

252

Часть IV. Linux дома и в офисе

Рис. 12.14. openELEC: изменение языка

Рис. 12.15. openELEC: выбран русский язык

Глава 12. Поддержка форматов мультимедиа

253

сети, насколько я понял, только Ethernet. Никакой поддержки ни Wi-Fi, ни РРРоЕ.
Пришлось подключать медиацентр к маршрутизатору Wi-Fi с помощью Ethemetкабеля. Честно говоря, сейчас, когда даже в мобильном телефоне есть поддержка
Wi-Fi, длинный Ethemet-кабель через всю квартиру смотрится немного дико. А тянуть его пришлось именно так, поскольку маршрутизатор у меня установлен
в одной комнате, а телевизор — в другой.
Настройки сети (Система | Сеть | Доступ в интернет) весьма скудны — вы можете установить только параметры HTTP-прокси (рис. 12.16). Ну, с одной стороны,
чего же ожидать от дистрибутива для DVD-проигрывателя? Если хочется универсальности, следует устанавливать универсальный дистрибутив и мириться со скучным интерфейсом.

Рис. 12.16. openELEC: параметры сети

С использованием openELEC разберется даже совсем неопытный пользователь.
Думаю, вам хватит 10 минут, чтобы освоиться. Впрочем, сделаю небольшой экскурс. Начнем с просмотра видео — перейдите только в соответствующий раздел
(рис. 12.17).
Первый источник (Storage) — это собственно флешка. Понятно, что пока вы на нее
фильмы не записывали, они там сами не появятся. Кстати, поскольку флешка форматируется в файловой системе Linux, то прочитать и записать ее можно теперь
только в Linux. А вот команда Добавить источник очень полезна — она не только
позволяет добавить источник видео (скажем, отдельный диск), но и произвести

254

Часть IV. Linux дома и в офисе

Рис. 12.17. openELEC: выбор видеофайлов

поиск видео на YouTube. На рис. 12.18 как раз и отображены результаты поиска на
YouTube ПО ключевому слову Mountains.
Что делать дальше, надеюсь, вы догадались— выбираем фильм и наслаждаемся
просмотром (рис. 12.19). Особенностью проигрывателя openELEC является также и
то, что пока вы явно не остановите просмотр, воспроизведение будет продолжаться
в фоновом режиме, — даже если вы начнете бродить по дебрям меню (рис. 12.20),
все равно ничего не пропустите!
Теперь о плагинах— программах, расширяющих функционал дистрибутива. Бич
openELEC — практическое отсутствие таких программ. Они есть, но их весьма
мало. Стандартных программ вроде офисных приложений вы можете здесь и не
искать. Зато есть Torrent-клиенты, почтовые клиенты, программы для просмотра
ТВ (при наличии ТВ-тюнера) и т. д. Зайдите в раздел Программы (рис. 12.21), и вы
увидите, что из них установлено по умолчанию. Для установки дополнительных
программ нажмите ссылку Еще, выберите программу (я выбрал программу nano),
прочитайте ее описание и, если она вам подходит, нажмите кнопку Установить
(рис. 12.22)— все необходимые файлы загрузятся из Интернета и установятся на
ваш компьютер.
Для завершения работы openELEC нажмите кнопку питания — она находится
в главном меню, в нижнем левом углу рядом с кнопкой плейлиста (см. рис. 12.20), —
вы увидите окошко, позволяющее выключить, перезагрузить или отправить в сон
ваш компьютер (рис. 12.23).

Глава 12. Поддержка форматов мультимедиа

Рис. 12.18. openELEC: результаты поиска на YouTube

Рис. 12.19. openEL.EC: просмотр видео

255

256

Часть IV. Linux дома и в офисе

Рис. 12.20. openELEC: воспроизведение в фоновом режиме

Рис. 12.21. openELEC: раздел Программы

Глава 12. Поддержка форматов мультимедиа

Рис. 12.22. openELEC: установка программы

Рис. 12.23. openELEC: завершение работы

257

258

Часть IV. Linux дома и в офисе

12.5.4. Удаленный доступ
Как уже отмечалось, к нашему домашнему кинотеатру можно получить удаленный
доступ. Для этого откройте на другом компьютере браузер и введите адрес:
http://: 9981, где ip-adpec— это IP-адрес домашнего кинотеатра. Откроется Web-интерфейс, позволяющий управлять медиацентром.

12.5.5. А где же консоль?
Немного поэкспериментировав с графическим интерфейсом, мне захотелось взглянуть на дистрибутив, так сказать, изнутри, и я попытался найти консоль, но так и не
понял, как на нее переключиться. Поиск в Google прояснил, что консоль есть, но
удаленная — по ssh.
Если вы работаете в Windows, скачайте любой ssh-клиент (могу порекомендовать
программу PuTTY, как одну из наиболее удобных). Для доступа к кинотеатру используются такие параметры:
□ IP : IР-адрес вашего медиацентра;
□ имя пользователя: root;
□ пароль: openelec.

12.5.6. Ложки дегтя...
Конечно, мои планы предусматривают дооснастить свой медиацентр ТВ-тюнером
(читайте в следующем издании продолжение истории) и приводом Blu-ray, но я
опасаюсь, что дистрибутив к тому времени подвергнется тем или иным, не всегда
полезным, изменениям.
Кроме того, бочку меда может испортить всего одна ложка дегтя, а в случае
с openELEC их оказалось подмешано несколько:


как уже отмечалось, первая загрузка заняла довольно-таки много времени. Последующие загрузки происходили быстрее, но, все равно, не столь быстро, как
хотелось, — сам по себе небольшой дистрибутив, а загружается примерно как
Fedora 16, может быть, даже медленнее. Я ожидал от него более шустрой работы;



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



огорчает отсутствие поддержки Wi-Fi. Не знаю, как для кого, а для меня это
очень актуально, — уж очень хочется избавиться от лишнего Ethernet-кабеля;



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

Тем не менее, первое впечатление от openELEC — весьма хорошее, хоть и несколько подпорчено этим дегтем...

ГЛАВА 13

Графическая подсистема
Когда-то основным камнем преткновения на пути развития Linux было отсутствие
у нее удобного графического интерфейса. Базовый графический интерфейс, называемый тогда X Window, существовал уже в 1992 году, но по удобству пользования
его нельзя было сравнить с интерфейсом той же Windows 3.11. Помню, даже
в 1997 году, когда вовсю процветала Windows 95, а на подходе была Windows 98,
графический интерфейс Linux все еще оставлял желать лучшего. Однако X.Org —
современная графическая подсистема Linux — может дать фору интерфейсу любой
другой коммерческой операционной системы.
Именно X.Org, через драйверы работающая на низком уровне с видеокартой и монитором, вкупе с графическими оболочками KDE и GNOME создает то многообразие графических возможностей, которыми обладает современный дистрибутив
Linux.

13.1. Настройка X.Org
в современных дистрибутивах
Могу вас заверить, что в большинстве случаев в современном дистрибутиве вам не
придется настраивать X.Org. Вообще, и ни при каких обстоятельствах. Современные дистрибутивы правильно определяют всю конфигурацию графической подсистемы: видеокарту, монитор, несколько мониторов. Максимум, что вам понадобится
сделать, — это установить разрешение монитора. Для этого в окне Параметры
зайдите в раздел Мониторы, выберите монитор (рис. 13.1) и установите его разрешение (рис. 13.2).
Обратите внимание — несмотря на то, что система определила мой монитор как
неизвестный, никаких проблем с ним в дальнейшем не возникло: ни с разрешением
(как можно видеть, оптимальное разрешение было выбрано уже по умолчанию —
в раздел Мониторы я зашел только для того, чтобы сделать иллюстрацию к книге),
ни с отображением информации.

260

Часть IV. Linux дома и в офисе

Рис. 13.1. Fedora 26: список мониторов

Рис. 13.2. Fedora 26: изменение разрешения монитора

13.2. Конфигурационный файл X.Org
Основным конфигурационным файлом X.Org до версии 7.3 являлся /etc/X11/xorg.conf —
в нем хранились все настройки графической подсистемы: параметры видеокарты,
монитора, клавиатуры, мыши, а также параметры самого X.Org. Однако, начиная
с версии 7.3, X.Org может запускаться вообще без файла конфигурации: вы просто
вводите команду startx или настраиваете систему на пятый уровень запуска, и она
запускается безо всяких конфигурационных файлов. Как же настраивать X.Org
в такой ситуации? А никак — в большинстве случаев ее, как и отмечалось ранее,
настраивать не придется, она и так превосходно работает.
Однако иногда может потребоваться указать для X.Org особые параметры. Что ж,
тогда придется создать файл xorg.conf вручную. И чтобы не писать его с нуля, можно воспользоваться следующей командой:
sudo Xorg -configure

Глава 13. Графическая подсистема

261

Учтите при этом, что команду xorg -configure нельзя вводить при запущенной
X.Org— надо сначала завершить ее работу, закрыв менеджер дисплеев gdm, например, с помощью такой команды:
sudo service gdm stop
В современных версиях Ubuntu с оболочкой Unity используется менеджер дисплеев
lightdm, поэтому там нужно завершать работу не gdm, a lightdm:
sudo service lightdm stop
Вот теперь можно запускать конфигуратор X.Org. При этом в домашнем каталоге
пользователя, запустившего конфигуратор, будет создан файл xorg.conf.new, содержащий «скелет» конфигурационного файла X.Org. Отредактируйте его под себя
(чуть позже будет показано, что можно в него добавить), а затем переместите или
скопируйте этот файл в /etc/X11/xorg.conf:
sudo mv xorg.conf.new /etc/Xll/xorg.conf
После этого можно запустить сервис gdm/lightdm:
sudo service gdm start
или
sudo service lightdm start
В современных дистрибутивах принято хранить конфигурацию не в одном большом файле, а в нескольких маленьких, и для X.Org они, как правило, хранятся
в каталоге /etc/X11/xorg.conf.d. Названия этих файлов начинаются с двузначной цифры,
определяющей порядок чтения конфигурации. Например, названия 00-keyboard,
10-videocard, 20-monitor означают, что сначала будет загружена конфигурация клавиатуры, потом видеокарты, а затем — монитора (конечно, это только в том случае,
когда в соответствующих файлах хранится соответствующая конфигурация).
Далее мы рассмотрим синтаксис файла xorg.conf, но — еще раз повторюсь — вряд
ли вам пригодится эта информация. Она была актуальной, скажем, лет десять
назад, когда настраивать X.Org приходилось если не вручную, то хотя бы редактированием некоторых параметров в файле конфигурации.

13.3. Синтаксис файла xorg.conf
Итак, мы уже выяснили, что конфигурационные файлы графической подсистемы
хранятся в каталоге /etc/X11, а основным ее конфигурационным файлом является
xorg.conf. Откройте его или создайте, если в вашей системе он отсутствует. Одного
взгляда на него достаточно, чтобы понять, что этот файл лучше всего редактировать не вручную, а с помощью конфигуратора. Но мы все же попытаемся в нем
разобраться.
Файл состоит из нескольких секций:
□ Files —

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

262

Часть IV. Linux дома и в офисе

□ serverFiags — различные флаги сервера;
□ Module — подключение разных модулей, например, v41 (Video For Linux);


— с помощью этой секции конфигурируются устройства ввода: клавиатура и мышь;



Monitor — здесь задаются параметры монитора;

InputDevice

□ Modes — описывается разрешение монитора;
□ Device — а эта секция содержит параметры видеокарты;


Screen — конфигурационный файл может описывать несколько мониторов и
несколько видеокарт, а в секции Screen задается, какой именно монитор и какая
именно видеокарта будут использоваться в данный момент. Здесь же определяется и текущее разрешение монитора;

□ ServerLayout — задает, какая секция Screen должна использоваться, и описывает
устройства ввода: клавиатуру и мышь;
□ Extensions — служит для указания разных расширений Х-сервера.
Вот пример файла конфигурации, настроенного на 17-дюймовый монитор РнР и
встроенную видеокарту ATI Radeon Xpress 1250. Если у вас такая же конфигурация, а вы нечаянно изменили этот файл, и больше графическая система не работает,
можете использовать листинг 13.1 в качестве образца.

# /.../

# Automatically generated by [ISaX] (8.1)
# PLEASE DO NOT EDIT THIS FILE!
#

Section "Files"
FontPath "/usr/share/fonts/misc:unsealed"
FontPath "/usr/share/fonts/local"
FontPath "/usr/share/fonts/75dpi:unsealed"
FontPath "/usr/share/fonts/100dpi .-unsealed"
FontPath "/usr/share/fonts/Typel"
FontPath "/usr/share/fonts/URW"
FontPath "/us r/share/fonts/Speedo"
Font Path "/us r/share/fonts/PEX"
FontPath "/usr/share/fonts/cyrillic"
FontPath "/usr/share/fonts/latin2/misc:unsealed"
FontPath "/usr/share/fonts/latin2/75dpi:unsealed"
FontPath "/usr/share/fonts/latin2/100dpi:unsealed"
FontPath "/usr/share/fonts/latin2/Typel"
FontPath "/usr/share/fonts/latin7/75dpi:unsealed"
FontPath "/usr/share/fonts/baekmuk:unsealed"
FontPath "/usr/share/fonts/japanese:unsealed"
Font Path "/us r/share/fonts/kwintv"

Глава 13. Гоафическая подсистема

263

FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/uni:unsealed"
FontPath "/usr/share/fonts/CID"
FontPath "/usr/share/fonts/ucs/misc:unsealed"
FontPath "/usr/share/fonts/ucs/75dpi:unsealed"
FontPath "/usr/share/fonts/ucs/100dpi:unsealed"
FontPath "/usr/share/fonts/hellas/misc:unsealed"
FontPath f,/usr/share/fonts/hellas/75dpi:unsealed"
FontPath "/usr/share/fonts/hellas/100dpi:unsealed"
FontPath "/usr/share/fonts/hellas/Typel"
FontPath "/usr/share/fonts/misc/sgi:unsealed"
FontPath "/us r/share/fonts/xtest"
FontPath "/opt/kde3/share/fonts"
InputDevices "/dev/gpmdata"
InputDevices "/dev/input/mice"
EndSection
Section "ServerFlags"
Option
"AllowMouseOpenFail" "on"
EndSection
Section "Module"
Load
"dbe"
Load
"typel"
Load
"freetype"
Load
"extmod"
Load
"glx"
EndSection
Section "InputDevice"
Driver
"kbd"
Identifier "Keyboard[0]"
Option
"Protocol" "Standard"
Option
"XkbLayout" "us,ru"
Option
"XkbModel" "microsoftpro"
Option
"XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
Option
"XkbRules" "xfree86"
Option
"XkbVariant" ",winkeys"
EndSection
Section "InputDevice"
Driver
"mouse"
Identifier "Mouse[1]"
Option
"Buttons" "5"
Option
"Device" "/dev/input/mice"
Option
"Name" "ImPS/2 Generic Wheel Mouse'
Option
"Protocol" "explorerps/2"
Option
"Vendor" "Sysp"
Option
"ZAxisMapping" "4 5"
EndSection

264

Часть IV. Linux дома и в офисе

Section "Monitor"
Option
"CalcAlgorithm""XServerPool"
HorizSync 30-83
Identifier "Monitor[0]"
ModelName "AL1916"
Option
"DPMS"
VendorName "ACR"
VertRefresh
43-75
UseModes "Modes[0]"
EndSection
Section "Modes"
Identifier "Modes[0]"
Modeline "1280x1024" 108 1280 1328 1440 1688 1024 1025 1028 1066 +hsync
+vsync

EndSection
Section "Screen"
Subsection "Display"
Depth
16
Modes
"default"
EndSubSection
Device
"Device[0]"
Identifier "Screen[0j"
Monitor
"Monitor[0]"
EndSection
Section "Device"
BoardName "Framebuffer Graphics"
Driver
"fbdev"
Identifier "Device[0]"
VendorName "VESA"
EndSection
Section "ServerLayout"
Identifier "Layout[all]"
InputDevice "Keyboard[0]" "CoreKeyboard"
InputDevice "Mouse[1]" "CorePointer"
Option
"Clone" "off"
Option
"Xinerama" "off"
Screen
"Screen[0]"
EndSection
Section "DRI"
Group
"video"
Mode
0660
EndSection
Section "Extensions"
EndSection

265

Глава 13. Гоафическая подсистема

Рассмотрим секции этого файла подробнее.


Секция Files, как уже было отмечено, содержит каталоги, в которых системе
нужно искать шрифты и модули графической подсистемы X.Org. Путь к шрифтам задается директивой FontPath, а путь к модулям — директивой ModuiePath.
В листинге 13.1 рассматривается пример файла xorg.conf дистрибутива
openSUSE. Поскольку в этом дистрибутиве нет сервера шрифтов, путь к каждому каталогу со шрифтами задается директивой FontPath. В дистрибутивах, где
имеется сервер шрифтов, система X.Org настраивается на использование сервера
шрифтов вот такой директивой:
FontPath "unix/:-l"

□ Перейдем к секции ServerFiags (ее наличие не является обязательным) — она
может содержать некоторые флаги сервера X. Флаги сервера задаются так:
Option "название флага" "состояние"
Состояние может быть либо on — если флаг установлен, либо off — если флаг
сброшен. Самые полезные флаги Х-сервера приведены в табл. 13.1 (понятно, что
это не все возможные флаги, но остальные редко используются на практике).
Таблица 13.1. Флаги Х-сервера
Флаг

Описание

А1lowMouseOpenFail

Если флаг установлен (on), то Х-сервер продолжит работу
даже в случае неработоспособности мыши (когда мышь
поломана или не подключена)

А11owNonLocalModInDev

Разрешает удаленным пользователям изменять параметры кла­
виатуры и мыши Х-сервера. По умолчанию флаг выключен (off),
и из соображений безопасности его рекомендуется не включать

AIGLX

AIGLX (Accelerated Indirect GLX) нужен для работы трехмерного
рабочего стола Compiz Fusion. Поэтому, если вы планируете ис­
пользовать трехмерный рабочий стол, вам нужно включить этот
флаг. В openSUSE этого делать не стоит, поскольку вместо AIGLX
в SUSE используется собственная разработка — Xgl

DontZap

Запрещает комбинацию клавиш ++,
служащую для аварийной остановки Х-сервера

StandbyTime

Время простоя (в минутах), после которого Х-сервер выключит
монитор. Монитор должен поддерживать DPMS (Display Power
Management Signaling) — систему управления энергопотреблени­
ем дисплеев

NoPM

Запрещает управление питанием монитора — монитор будет
включен всегда

□ Следующая секция — Modules — используется для загрузки дополнительных
модулей. Секция может отсутствовать, если дополнительные модули не загружаются.

266

Часть IV. Linux дома и в офисе

□ В секции inputDevice описываются устройства ввода: клавиатура и мышь:


обратите внимание на опцию xkbvariant в секции inputDevice, описывающей
клавиатуру. Эта опция позволяет указать вариант раскладки клавиатуры.
В нашем случае задана Windows-раскладка ("winkeys"), к которой привыкло
большинство пользователей. Если в секции inputDevice вашего файла нет
строки Option "xkbvariant" ", winkeys", добавьте ее —вам будет удобнее;



опция xkbLayout задает раскладки клавиатуры — сейчас используются две
раскладки: английская (us) и русская (ru);



опция xkbOptions определяет комбинацию клавиш для переключения раскладок — в данном случае задана комбинация клавиш +.
Если вы привыкли к +, то вместо ctrl_shift_toggle укажите
ait_shift_toggle. Если вы не хотите, чтобы при активации русской раскладки на клавиатуре загорался индикатор Scroll Lock, удалите строку
", grp_led: scroll" ИЗ ОПЦИИ XkbOptions.

Как видите, можно настроить параметры клавиатуры, не прибегая к помощи
конфигураторов.


Секция Monitor задает параметры монитора:


Option — различные опции монитора. Например, часто используется опция
что монитор поддерживает DPMS;

dpms, подтверждающая,



HorizSync, vertRefresh — допустимая частота горизонтальной и вертикальной разверток соответственно (в кГц). Обычно значение лучше устанавливать
конфигуратором, поскольку без подробного руководства по вашему монитору вам не обойтись;



identifier — уникальное имя монитора. В файле конфигурации вы можете
описать несколько мониторов, а потом в секции screen указать идентификатор монитора, используемого в данный момент;



useModes — задает массив режимов монитора, описываемый секцией Modes;

• ModeiName, vendorName — наименование модели монитора и название его производителя. Сугубо информационные строки — можете вписать сюда все, что
угодно.


Секция Modes, задающая массив режимов для конкретного монитора, тесно связана с секцией Monitor. Как вы уже догадались, для каждого монитора должен
быть свой массив режимов. Каждый режим описывается так:
Modeline "название режима" 1 2 3 4 5 6 7 8 9

флаги

где:


название режима — обычная строка, сугубо информационная — чтобы вы
знали, какому разрешению соответствует данный режим (вообще-то эта строка может содержать все, что угодно);



1 — частота подачи пикселов на монитор, указывается в мегагерцах;

Глава 13. Гоафическая подсистема



2-5 — значения строчной синхронизации (то же, что и горизонтальная развертка);



6-9 — значения кадровой синхронизации (вертикальная развертка);



флаги — флаги развертки, обычно используются флаги +hsync и +vsync.

267

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


Секция Screen предназначена для описания экрана, главным образом — для
связки видеокарты и монитора. В этой секции представлены используемые
в данный момент видеокарта (ее идентификатор задается директивой Device)
и монитор (директива Monitor).
Также в секции Screen может быть подсекция Display, в которой указывается
параметр Depth, задающий глубину цвета, но главная задача этой секции —
связка монитора и видеокарты воедино.

□ Параметры видеокарты описываются в секции Device.
□ Задача секции serverLayout — связать воедино устройства ввода (клавиатура и
мышь), а также секцию Screen, которая, в свою очередь, связывает секции Device
и Monitor. Как видите, в X.Org все взаимосвязано.


DRI (Direct Rendering Infrastructure) — это платформа, предоставляющая прямой доступ к графическому оборудованию самым безопасным и эффективным
способом. Параметры DRI задаются в секции dri. Как правило, параметры этой
секции приходится редактировать при проблемах с аппаратным трехмерным
ускорением.

□ Секция Extensions, описывающая расширения X.Org, может быть пуста (в большинстве случаев) или вообще отсутствовать.
Сделайте резервную копию редактируемого файла
Помните, что файл конфигурации xorg.conf можно редактировать, обладая полномо­
чиями root. Перед каждым редактированием файла вручную (не с помощью конфигу­
ратора) делайте его резервную копию, чтобы в случае отказа X.Org или ее нестабиль­
ной работы вы могли бы восстановить предыдущее состояние.

13.4. Установка проприетарных драйверов NVIDIA
в Fedora 21-26
Сразу хочу отметить, что если вы не планируете в Fedora использовать трехмерные
эффекты или запускать игры, то проприетарные драйверы NVIDIA вам не понадобятся, — вполне будет достаточно стандартного драйвера.
Внимание!
Изложенные здесь советы подходят для карт GeForce
6/7/8/9/200/300/400/500/600/700/800/900.

268

Часть IV. Linux дома и в офисе

Также предупреждаю— процесс установки проприетарных драйверов не прост
и требует определенного времени. Поэтому, как в Windows — скачать инсталлятор
и установить — здесь не получится. Запасайтесь временем и терпением.
Чтобы не делать лишней работы, проверим сначала, какая у нас видеокарта:
lspci Igrep -i VGA
Вывод может быть примерно таким:
01:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 610]
(rev al)
Найденное наименование видеокарты должно присутствовать в списке, который
можно закачать по ссылке: ftp://download.nvidia.com/XF ree86/Linux-x86_64/
352.63/README/supportedchips.html.
Внимание!
Ваша видеокарта должна найтись в этом списке до секции 173.14.хх— далее пере­
числены устаревшие версии видеокарт NVIDIA, которые рассматривать смысла не
имеет.

Последнюю версию драйверов NVIDIA для Linux можно получить по адресу:
http://www.nvidia.com/Download/Find.aspx?lang=en-us.
Какую версию выбрать? Для выбора правильной версии используйте таблицу,
представленную на рис. 13.3. Поскольку не все версии драйверов протестированы
для работы с той или иной версией дистрибутива, руководствуйтесь этой таблицей,
чтобы загрузить драйвер, который точно в вашем дистрибутиве будет работать.

Fedora 26

Fedora 25

Fedora 24

Fedora 23/22/21

384.59 (July 24, 2017)

384.59 (July 24, 2017)

384.59 (July 24, 2017)

384.59 (July 24, 2017)|

381.22 (May 9,2017)

381.22 (May 9, 2017)

381.22 (May 9, 2017)

381.22 (May 9, 2017)

375.82 (July 24, 2017)

375.82 (July 24, 2017)

375.82 (July 24, 2017)

375.82 (July 24, 2017)

340.102 (February 14,2017)

340.102 (February 14, 2017)

340.102 (February 14, 2017)

340.102 (February 14, 2017)

304.135 (February 14,2017)

304.135 (February 14, 2017)

304.135 (February 14, 2017)

304.135 (February 14, 2017)

Рис. 13.3. Протестированные версии драйверов NVIDIA

Обычно закачиваемый драйвер загружается в папку -/Downloads и носит имя NVIDIALinux-XXXX.run. Сразу, чтобы потом не забыть, установите право выполнения этого
файла:
cd -/Downloads
chmod +х NVIDIA-Linux-*.run

Глава 13. Графическая подсистема

269

Теперь обновим менеджер пакетов — напомню, в Fedora 21 в этом качестве служит
yum, а в Fedora 22 и более новых — dnf:
sudo dnf update
или
sudo yum update
Потом обновим ядро (в Fedora 21 вместо параметра dnf впишите yum):
sudo dnf install kernel-devel kernel-headers gcc dkms acpid
Затем нужно отключить nouveau (бесплатный драйвер для карт NVIDIA с открытым исходным кодом):
echo "blacklist nouveau" » /etc/modprobe.d/blacklist.conf
Отредактируем теперь файл /etc/sysconfig/grub, добавив строку rd.driver.blackiist=
nouveau в конец параметра grub_cmdline_linux:
GRUB CMDLINE_LINUX="rd. lvm. lv=fedora/swap rd. lvm. lv=fedora/root rhgb quiet

rd.driver.blacklist=nouveau"
Обновим конфигурацию GRUB2:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Правда, если у вас UEFI, то команда будет другой:
sudo grub2-mkconfig -о /boot/efi/EFI/fedora/grub.cfg
Удалим с чистой совестью стандартный драйвер:
sudo dnf remove xorg-xll-drv-nouveau
Сгенерируем другой initramfs:
sudo mv /boot/initramfs-$ (uname -r).img /boot/initramfs-$ (uname -r)-nouveau.img

sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)
Отключим SELinux — для этого откройте файл /etc/sysconfig/selinux и добавьте строку:
SELINUX=disabled
Переключитесь на то, что раньше называлось третьим уровнем выполнения
(runlevel, т. е. многопользовательский режим без поддержки графики):
sudo systemctl set-default multi-user.target
reboot
После перезагрузки запустите инсталлятор драйвера (хххх — здесь версия драйвера
и его модификация, например, х86_64):
cd ~/Downloads
sudo ./NVIDIA-Linux-ХХХХ.run
Установка драйвера проста— на все вопросы инсталлятора отвечайте Yes или ОК
(рис. 13.4), а по окончании процесса вы должны получить соответствующее сообщение (рис. 13.5).

270

Часть IV. Linux дома и в офисе

Рис. 13.4. Нажмите Yes

Рис. 13.5. Драйвер установлен

Глава 13. Графическая подсистема

271

Восстанавливаем запуск графического интерфейса:
sudo systemctl set-default graphical.target
reboot
После перезагрузки нужно включить видеоускорение (для этого нужна карта
GeForce 8 или выше):
sudo dnf install vdpauinfo libva-vdpau-driver libva-utils
Собственно, на этом и все — теперь можно пользоваться полноценными проприетарными драйверами для карт NVIDIA. Можно также запустить NVIDIA X Server
Settings (вы найдете эту настройку в списке приложений), чтобы просмотреть
версию установленного драйвера. На рис. 13.6 показано, что драйверы корректно
установлены в Fedora 26.

Рис. 13.6. Fedora 26: драйверы NVIDIA установлены

ГЛАВА 14

Офисные пакеты

14.1. Выбор офисного пакета
Для Linux, как и для любой другой операционной системы, предполагающей использование на так называемых настольных компьютерах (стационарные персональные компьютеры, ноутбуки, нетбуки), доступно несколько офисных пакетов,
и пользователь вправе выбрать тот, который ему больше нравится. Наш небольшой
обзор мы начнем со стандартного офисного пакета LibreOffice, доступного по
умолчанию в большинстве дистрибутивов Linux.

14.1.1. LibreOffice
Пакет LibreOffice основан на пакете OpenOffice.org (о нем мы поговорим в разд. 14.3),
в том или ином варианте входит в состав всех современных дистрибутивов Linux
и представляет собой полноценный офисный пакет, содержащий средства для работы с текстом, электронными таблицами и презентациями, — как раз с тем, ради
чего в большинстве случаев и устанавливают Microsoft Office. LibreOffice поддерживает форматы файлов Microsoft Office, в том числе и его последних версий
(2007/2010/2013).
Внешне LibreOffice похож на Microsoft Office 2003, что в некоторых случаях даже
хорошо, учитывая, что интерфейс 2003 весьма прост, и лишь необходимость поддержки новых форматов документов вынуждает пользователей использовать последние версии Microsoft Office. Здесь же вы получаете два в одном: и привычный
интерфейс (рис. 14.1), и поддержку новых форматов (рис. 14.2).
Программы, входящие в состав LibreOffice, не сложнее аналогичных программ из
других офисных пакетов. Да, они несколько своеобразные, и к ним нужно немного
привыкнуть. Не стоит ожидать также, что LibreOffice — это точная копия
MS Office 2003, хоть он во многом и похож на него.
Учитывая полную русификацию LibreOffice, с ним без проблем смогут разобраться
даже самые начинающие пользователи.

Глава 14. Офисные пакеты

Рис. 14.1. Программа LibreOffice Writer—аналог MS Word

Рис. 14.2. Программа LibreOffice Writer: поддерживаемые форматы

273

274

Часть IV. Linux дома и в офисе

14.1.2. Calligra Suite
Если вы работали со старыми дистрибутивами, то наверняка помните неказистый
офисный пакет KOffice, созданный командой KDE и устанавливаемый вместе
с графической средой KDE. В 2010 году от проекта KOffice отделилась ветка, названная Calligra Suite.
В состав пакета Calligra Suite входят программы Words, Sheets и Stage, которые
являются функциональными эквивалентами Microsoft Word, Excel и PowerPoint.
Имеются в этом пакете еще и оболочка для работы с базами данных, векторный
графический редактор, программа для рисования блок-схем, а также программа
управления проектами (есть там и более мелкие программы — вроде нотного редактора и пр.).
Как видите, пакет Calligra Suite достаточнобогат по функционалу, вот только его
программы не очень удобные, я бы даже сказал — просто неудобные, если сравнивать с тем же LibreOffice: в меню, например, достаточно мало команд, и большая их
часть перенесена в панель инструментов с вертикальными вкладками (рис. 14.3) —
такая организация меню требует некоторой привычки. Оставляет желать лучшего и
локализация пакета.

Рис. 14.3. Программа Calligra Words — аналог MS Word

Да и некоторые функции в Calligra Suite работают немного не так, как вы бы ожидали. Например, попробуйте создать в Calligra Sheets график по какому-либо набору данных. Сначала вы обнаружите, что сам график строится довольно долго, а

Глава 14. Офисные пакеты

275

если выяснится, что вы допустили ошибку, то отредактировать таблицу данных для
него не удастся, — придется удалять график и строить его заново. Раздражает также и принятый в Sheets способ перемещения между ячейками — вы не можете просто использовать клавиши управления курсором, и приходится каждый раз нажимать клавишу . Похоже, что разработчики Calligra пытались в своем офисном пакете создать «изюминку», и у них это получилось...

14.1.3. Kingsoft Office
Этот офисный пакет наверняка знаком пользователям Android, поскольку является
лучшим офисным пакетом для смартфонов и планшетов. Существуют версии этого
офисного пакета также и для Linux и Windows. Единственным дистрибутивом
Linux, в котором установлен этот пакет «из коробки», является Linux Deepin. Скачать офисный пакет Kingsoft Office можно по адресу: http://www.kingsoftstore.com/
software/kingsoft-office-freeware.
В состав пакета Kingsoft Office входят текстовый процессор, электронная таблица и
программа для создания презентаций, поэтому Kingsoft Office называют также WPS
Office. Здесь WPS — аббревиатура входящих в состав офисного пакета компонентов: Writer, Presentation и Spreadsheet.
Внешне Kingsoft Office напоминает последние версии Microsoft Office (рис. 14.4),
но вы можете переключиться и на классический интерфейс. Любопытно, что выбрать скин можно для каждого компонента пакета по отдельности.

Рис. 14.4. Программа Kingsoft Office Spreadsheet — аналог MS Excel

Часть IV. Linux дома и в офисе

276

Программы пакета Kingsoft Office весьма удобны в работе, а их интерфейс наиболее дружественный из рассмотренных в этой главе офисных пакетов. Особых недостатков у него нет (если не считать отсутствия локализации). Он поддерживает
как собственный формат файлов, так и формат файлов MS Office, однако не поддерживает формат ODF, поэтому вы не сможете открыть в нем документы, созданные в LibreOffice. Впрочем, к недостаткам это отнести сложно, поскольку в большинстве случаев из соображений совместимости все документы, как правило, сохраняются в формате MS Office. А наличие Android-версии делает его еще более
привлекательным.
***
Конечно, LibreOffice (OpenOffice.org), WPS Office и Calligra Suite— далеко не
единственные офисные пакеты. Например, есть еще офисный пакет SoftMaker
Office и ряд других, однако они не нашли широкого распространения. Стандартом
де-факто в мире Linux является офисный пакет OpenOffice.org и его клон
LibreOffice.

14.2. Кроссплатформенная совместимость
При выборе офисного пакета для организации следует учитывать два фактора: совместимость с Microsoft Office и совместимость с остальным компьютерным парком. Если вы выбираете офисный пакет для себя любимого и только для одного
компьютера, можете взять любой офисный пакет. А вот если вы выбираете пакет
программ для предприятия, важно, чтобы этот пакет можно было установить на все
его компьютеры. Информация о поддерживаемых операционных системах теми
или иными пакетами приведена в табл. 14.1.
Таблица 14.1. Информация о кроссплатформенной совместимости офисных пакетов
Офисный пакет

Linux

Windows

MacOS

Android

LibreOffice/OpenOffice.org

+

+

+

-

Kingsoft (WPS) Office

+

+

-

+

Calligra Suite

+

-

-

-

Наиболее универсальным вариантом, как можно видеть, для настольных компьютеров является LibreOffice. Пакет Calligra из-за отмеченных ранее его особенностей
вы использовать вряд ли станете. Ради справедливости нужно отметить, что поддержка Windows и Mac OS в нем предусмотрена, но она сильно ограничена, поэтому в таблице и стоят соответствующие прочерки. Если же вам нужна поддержка
Android, то следует посмотреть в сторону Kingsoft Office. Впрочем, для Android
существует приложение AndrOpen Office, которое является первой в мире попыткой портировать OpenOffice на Android, но оно пока далеко от идеала.

Глава 14. Офисные пакеты

277

14.3. Вкратце об OpenOffice.org
Изначально этот офисный пакет был разработан компанией Sun и назывался
StarOffice. Я еще успел застать его первые версии, и поверьте — на фоне того, что
в то время было написано для Linux, он стал настоящим прорывом.
Позже, когда компания Sun была куплена компанией Oracle, пакет переименовали в
Oracle Open Office.
Непосредственно OpenOffice.org появился как Open-Source версия (версия с открытым исходным кодом) пакета StarOffice в 2002 году. Пакет LibreOffice отделился от
OpenOffice.org в 2010 году. По сути, это тот же OpenOffice, но с небольшими изменениями.
В 2011 году компания Oracle (которая является собственником OpenOffice.org) объявила о прекращении поддержки коммерческой версии пакета и передала проект
организации ASF (Apache Software Foundation). Именно поэтому с 2011 года
OpenOffice.org называется Apache OpenOffice.
Как вы уже, наверное, поняли, OpenOffice.org, LibreOffice и Apache OpenOffice —
это братья-близнецы. Выбор того или иного пакета в большей степени будет
зависеть только от того, какой пакет входит в состав вашего дистрибутива. Если
в вашем дистрибутиве по умолчанию используется LibreOffice (как, например,
в Debian 8), вряд ли вы станете устанавливать Apache OpenOffice и наоборот.
Есть и другие клоны OpenOffice.org, например, NeoOffice — это специальный форк
OpenOffice.org, доступный только для Mac 0S.
Эта книга, хоть и рассчитана на разную аудиторию: от новичков до профессионалов, но трудно назвать абсолютным новичком пользователя, который сумел и не
побоялся установить Linux на свой компьютер. Поэтому, думаю, ему будет несложно разобраться, какие кнопки в офисном пакете нужно нажимать, чтобы отформатировать текст или создать диаграмму. Именно поэтому я, прислушавшись
к критике читателей, решил удалить подробное описание офисного пакета из пятого
издания этой книги, чем сэкономил несколько десятков страниц. А если вы считаете, что оно, все же, в книге присутствовать должно, свяжитесь со мной на форуме
сайта dkws.org.ua, а я подумаю, что с этим можно сделать.

ГЛАВА 15

Графический редактор GIMP
Графический редактор GIMP, особенно его вторая версия,— достойный Linuxаналог известной программы Photoshop.
В большинстве случаев работа обычных пользователей с тем же Photoshop — поскольку созданием профессиональных шедевров двумерной графики они, как правило, не занимаются, — сводится к нескольким несложным операциям с фотографиями: изменению размера, повороту, кадрированию и размытию отдельных их
участков. Именно эти операции мы здесь и рассмотрим. Кстати, в фотостудиях их
выполнение не столь уж и дешево. Например, печать стандартной фотографии открыточного формата с цифрового носителя в среднем стоит 8-10 рублей, а за кадрирование с вас потребуют рублей 40. Если фотография одна, то это не слишком
обременительно, а вот если их 10, то неразумно платить лишние деньги за то, что
можно сделать самому с помощью GIMP, потратив 5-10 минут.
Цель этой главы — коротко познакомить вас с программой GIMP. Если вы заинтересовались, то для более подробного знакомства рекомендую свою книгу
«GIMP 2 — бесплатный аналог Photoshop для Windows/Linux/Mac OS, 2-е изд.», ее
страница на сайте издательства: http://bhv.ru/books/book.php?id=186881.

15.1. Начало работы
Ранее при первом запуске GIMP запрашивал, сколько оперативной памяти можно
выделить под нужды приложения. В версии GIMP 2.8.x, которая входит в состав
всех современных дистрибутивов Linux, размер кэша установлен по умолчанию
в 1024 Мбайт (рис. 15.1). Конкретная величина требуемого кэша зависит от объема
имеющейся оперативной памяти и от размера фотографий, с которыми вам приходится работать, однако установленного по умолчанию резерва, как правило,
вполне достаточно. Если вы по каким-то соображениям захотите изменить размер
кэша, сделать это можно с помощью команды меню Правка | Параметры | Окру­
жение.
После запуска программы вы увидите три окна GIMP: панель инструментов,
основное окно (находится по центру экрана и содержит меню) и окно Слои, Кана­
лы, Контуры (рис. 15.2).

Глава 15. Гоафический редактор GIMP

Рис. 15.1. Ubuntu: настройка кэша GIMP

Рис. 15.2. Ubuntu: GIMP в работе

279

280

Часть IV. Linux дома и в офисе

15.2. Обработка фотографий
Чтобы открыть фотографию, выполните команду меню Файл | Открыть или просто нажмите комбинацию клавиш +. Окно открытия файла содержит область предварительного просмотра, что позволяет быстро выбрать нужный снимок
(рис. 15.3).

Рис. 15.3. Ubuntu: открытие фотографии в GIMP

15.2.1. Изменение размера (масштабирование)
Давайте попробуем для начала изменить размер изображения. Это весьма важная
операция. Предположим, вы снимаете цифровым фотоаппаратом с матрицей на
6 мегапикселов, что обеспечивает размер файла фотографии в 3-4 Мбайт. Для печати фотоснимка это, конечно, хорошо. А вот если вы захотите отправить такой
файл кому-то по Интернету для просмотра на компьютере, получатель будет не
очень доволен. Во-первых, размер файла для пересылки великоват, а, во-вторых,
просматривать картинку окажется неудобно— придется уменьшать ее масштаб,
чтобы фотография поместилась на экране целиком. Уменьшив размер до пересылки, мы автоматически и прямо пропорционально уменьшим и размер файла.
Итак, приступим к изменению размера изображения, которое в GIMP называется
масштабированием. После открытия файла картинка появится в новом окне.
Щелкните по ней правой кнопкой мыши и из открывшегося меню выберите команду Изображение | Размер изображения (рис. 15.4).

Глава 15. Гоафический редактор GIMP

281

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

Рис. 15.4. Ubuntu: выбор в GIMP команды изменения размера изображения

Рис. 15.5. Ubuntu:
окно масштабирования
GIMP

282

Часть IV. Linux дома и в офисе

15.2.2. Вращение
Теперь попробуем вращать изображение. Для этого предусмотрено меню Инстру­
менты | Преобразование | Зеркало, позволяющее отражать картинку по вертикали
и горизонтали, а также вращать ее на 90 и 180 градусов (рис. 15.6).

Рис. 15.6. Ubuntu: меню Преобразование GIMP

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

Рис. 15.7. Ubuntu: инструмент Вращение GIMP

Глава 15. Гоафический редактор GIMP

283

15.2.3. Кадрирование (обрезка)
Рассмотрим теперь операцию кадрирования. Она заключается в вырезании части
изображения: сначала вы выделяете нужную вам область, затем выполняете операцию, после чего все, что находится за пределами выделенной вами области, будет
удалено.

Рис. 15.8. Ubuntu: выделение в окне GIMP области для кадрирования

Для кадрирования нажмите комбинацию клавиш + — указатель мыши
примет форму скальпеля. Выделите им прямоугольную область (рис. 15.8) и установите на панели инструментов (рис. 15.9) дополнительные параметры кадрирования, если в них будет необходимость. Чтобы обрезать выделенную часть изображения, нажмите клавишу или щелкните по выделению двойным щелчком.
Результат кадрирования представлен на рис. 15.10.
Если у вас что-то не получилось, нажмите комбинацию клавиш + для отмены последней операции.

Рис. 15.9. Ubuntu:
параметры

Панель инструме

Рис. 15.10. Ubuntu: результат кадрирования в окне GIMP

284
Часть IV. Linux дома и в офисе

Глава 15. Гоафический редактор GIMP

285

15.2.4. Инструмент Размывание-Резкость
Иногда нужно «размыть» некоторые участки картинки или же, наоборот, придать
некоторым участкам больше резкости.
Но чаще все-таки используется размывание — для сокрытия некоторых участков фотографии, которые совсем необязательно видеть посторонним. Например, довольно
часто можно встретить объявления о продаже автомобилей с фотографиями, на которых «размыт» государственный номер.
Для размывания можно использовать инструмент Размывание-Резкость (рис. 15.11) —
активируйте его, выберите кисть (обычно используется круглая кисть), установите
режим (резкость или размывание) и скорость. Теперь вам остается только «размыть»
участок изображения. Результат размывания представлен на рис. 15.12.
Видеоурок по GIMP
На страничке http://dkws.org.ua/novice/ вы найдете небольшой пятиминутный видео­
урок по GIMP, в котором продемонстрированы описанные здесь основные операции.

Рис. 15.11. Ubuntu: параметры
инструмента GIMP
Размывание-Резкость

286

Часть IV. Linux дома и в офисе

Рис. 15.12. Ubuntu: результат размывания в окне GIMP

15.3. Работа в G I M P с помощью скриптов
Стоит отметить, что кроме обычного редактирования фотографий GIMP позволяет
изменять изображения с помощью сценариев (скриптов). Загрузите любое изображение, щелкните на нем правой кнопкой мыши и выберите команду меню Фильт­
ры | Скрипт-Фу — вы увидите, что в состав GIMP входит много различных интересных скриптов. Если же вам чего-то не хватит, поищите требуемое в Сети или
создайте самостоятельно — в Интернете при желании вы найдете руководство по
созданию собственных скриптов и уже готовые их коды. Много разных скриптов
можно также скачать по адресу http://gug.sunsite.dk/scripts.php. Особо останавливаться мы на этом не станем — поэкспериментируйте с имеющимися скриптами, и
результат вас не разочарует: лучше один раз увидеть, чем 100 раз услышать.

15.4. Windows-версия G I M P
Далеко не у всех получается полностью перейти на Linux — пока еще для Linux не
созданы аналоги всех Windows-программ. Например, в Linux нет полноценных
CAD-систем, популярная программа бухгалтерского учета «1C» запускается только
в эмуляторе, не говоря уже об отсутствии для Linux полноценных игр.

Глава 15. Гоафический редактор GIMP

287

Что делать, если вы практически всегда работаете в Windows, например, из-за той
же CAD-системы, но вам понадобилось отредактировать фотографии? Перезагружаться в Linux из-за пары фотографий не хочется. Использовать пиратские версии
Photoshop тоже. А лицензионные стоят хороших денег. Но выход есть — это
Windows-версия программы GIMP, которую можно бесплатно скачать по адресу:
http://gimp-win.sourceforge.net/.

Рис. 15.13. Windows-версия GIMP

288

Часть IV. Linux дома и в офисе

Про Windows-версию GIMP (рис. 15.13) вам нужно знать следующее:
□ она абсолютно бесплатна, поэтому вы можете ее использовать безо всяких ограничений;
□ она аналогична Linux-версии по функциональности;


для работы Windows-версии нужна операционная система Windows 2000/ХР/
Vista/7 и старше. На более древних версиях Windows GIMP работать не станет;



антивирус Касперского в программе установки GIMP ошибочно определяет наличие вируса, поэтому на момент установки GIMP этот антивирус лучше отключить. Не беспокойтесь — это ошибка антивируса Касперского, никаких вирусов
в дистрибутиве GIMP нет.

ГЛАВА 16

Лазерные диски
и программы для их «прожига»
16.1. Что нужно для записи CD и DVD?
Что же необходимо для комфортной записи CD и DVD? Давайте подумаем вместе.


Компьютер — это само собой разумеется. С одной стороны, ультрасовременный компьютер никогда не помешает, а с другой, CD и даже DVD можно записывать далеко не на самых мощных компьютерах.



Свободное место на жестком диске — это самое важное условие. Ведь перед
«прожитом» на винчестере компьютера создается образ диска, который будет
потом записан на болванку. Учитывая, что системе необходимо место под этот
образ, для записи одного CD на жестком диске потребуется минимум 700 Мбайт
свободного пространства (если вы записываете обычный диск объемом
700 Мбайт).
При записи DVD требуемый объем свободного пространства зависит от его емкости (4,7; 9,0 или 17 Гбайт). Так, для записи двустороннего двухслойного DVD
вам понадобится около 18 Гбайт свободного места на винчестере, если, конечно,
вы планируете записать DVD полностью.

□ Привод для записи CD/DVD — перед записью убедитесь, что ваш привод поддерживает носитель выбранного типа. Иногда встречаются так называемые ком­
бинированные приводы— они могут читать и CD, и DVD, а вот записывают
только CD. Перед покупкой привода нужно уточнить, может ли он записывать
DVD, чтобы отсутствие этой возможности потом не стало для вас неприятным
сюрпризом. Если у вас привод, который не может записывать ни CD, ни DVD,
лучше приобрести тот, что пригоден для записи дисков обоих типов, даже если
вы не планируете пока записывать DVD. Разница в цене небольшая, а дополнительные возможности никогда не помешают.
□ Программное обеспечение для записи дисков — в Linux есть программы, позволяющие записывать диски как из командной строки, так и в графическом режиме, что, безусловно, намного удобнее. Какую программу выбрать — личное дело
каждого, а в этой книге будет описана очень удобная, на мой взгляд, программа
К3b.

290

Часть IV. Linux дома и в офисе

□ Чистые диски — главное, не забывать заранее покупать так называемые «болванки». Обычные компакт-диски бывают двух типов: CD-R и CD-RW. Первые
служат для однократной записи, вторые можно перезаписывать многократно.
А вот о дисках DVD стоит поговорить особо.

16.2. Отдельно о DVD
DVD заслуживают отдельного разговора. А как может не заслужить этого с виду
обычный компакт-диск, но емкостью от 4,5 до 17 Гбайт? Итак, отвлечемся немного
и подробнее поговорим о DVD.
Ранее под аббревиатурой DVD подразумевали Digital Video Disc, т. е. цифровой
видеодиск. Но поскольку на DVD можно записывать не только видео, но и музыку,
фотографии, а также обычные файлы, со временем DVD «переименовали» в Digital
Versatile Disc — цифровой универсальный диск.
Размеры диска и центрального отверстия в нем для CD и DVD совпадают, однако,
если присмотреться, заметно, что DVD немного толще.

16.2.1. История создания DVD
Нужно отметить, что технология DVD развивалась значительно быстрее, чем в свое
время технология CD. Объяснить это можно тем, что компакт-диск тогда был чемто новым и, возможно, ему не так доверяли, как другим проверенным носителям
данных (дискетам и магнитным лентам). Да и стоили первые CD-приводы совсем
не дешево. А когда появился DVD, весь мир уже знал, что такое компакт-диск. Поэтому DVD был воспринят как компакт-диск большого объема. По сути, так оно
и есть.
Если бы не Голливуд, то, возможно, сейчас у нас не было DVD, или он появился бы
значительно позже. Именно Голливуд подтолкнул в 1994 году крупнейшие компании (Sony, Phillips и Toshiba) к созданию нового формата записи и хранения данных. Во-первых, сами понимаете, оптический диск гораздо надежнее, чем магнитная лента видеокассеты, а 700 Мбайт, помещавшихся на обычном CD, для качественной записи фильма слишком мало. Во-вторых, в то время на Западе (как,
наверное, сейчас у нас) процветало видеопиратство. Доходило до анекдотических
ситуаций — фильм еще не вышел, а у пиратов уже была в продаже кассета с ним.
Видеокассеты не предусматривали никакой защиты от копирования, поэтому потребовался цифровой формат, позволяющий защитить информацию (прежде всего,
видео) от нелегального копирования и хранить на одном носителе большие объемы
данных.
Спустя два года, в 1996 году, были разработаны первые спецификации DVD: DVDROM (для хранения данных) и DVD-Video (для видеофильмов). Именно поэтому
DVD сначала и назывались цифровыми видеодисками (Digital Video Disc).
Еще через два года появилась спецификация DVD-RW, а также организация
DVD Forum, призванная координировать действия всех производителей DVD и

Глава 16. Лазерные диски и программы для их «прожига»

291

приводов для них. В 1998 году в состав этой организации входило более
120 компаний, так или иначе связанных с разработкой DVD. В этом же году вышел
в свет стандарт DVD-Audio, а емкость обычных DVD была увеличена до 4,7 Гбайт.
В 2000 году были созданы первые проигрыватели DVD-Audio. Стоили они дорого,
и поначалу купить их можно было только в США, — в Европе они появились
в продаже ближе к концу года. В это же время были разработаны и более быстрые
DVD-приводы для компьютера.
В 2002 году состоялся анонс формата Blu-ray, позволяющего хранить до 50 Гбайт
информации на одном диске. Хотя приводы и диски этого формата сейчас в продаже имеются, они не пользуются серьезной популярностью среди пользователей,
даже несмотря на то, что их цена уже вполне приемлема. Подробную информацию
о формате Blu-ray можно найти в Википедии по адресу: http://ru.wikipedia.org/
wiki/Blu-ray_Disc
Основная проблема этого формата заключается в том, что он немного опоздал со
своим появлением. Blu-ray хоть и был анонсирован в 2002 году, но вышел в 2006-м,
и поначалу широкого распространения не получил из-за высокой стоимости устройств чтения/записи, а также самих дисков. А сейчас все идет к тому, что от оптических дисков пользователи отказываются все чаще и чаще. А зачем, когда есть
флешка? Флешку можно подключить к чему угодно: к автомобильной магнитоле,
к домашнему DVD-проигрывателю и даже просто к телевизору. И записать данные
на флешку гораздо удобнее, чем на лазерный диск.
Ранее CD/DVD-диски служили для хранения данных (у самого множество дисков
с резервными копиями десятилетней давности), музыки и видео. Затем приоритет
их использования сместился в сторону музыки и видео, т. к. не все устройства поддерживали работу с флешками. А что же резервные копии? Их сейчас домашние
пользователи (как и маленькие предприятия) хранят на внешних жестких дисках,
а предприятия (средние и крупные) — на сетевых хранилищах (NAS) с RAID.
Таким образом, в 2016-м году эта глава выглядит жизнеописанием вымерших динозавров. Именно поэтому мною было принято решение несколько ее подсократить.
Информация о форматах дисков останется (см. далее), а вот из всего обилия программ для их «прожига» мы познакомимся только с КЗЬ (для KDE) и Brasero (для
GNOME), — это отличные программы, и нет смысла рассматривать какие-либо их
аналоги, при том, что сами они работают без нареканий. Программа Brasero несколько простовата, зато КЗЬ по своему функционалу способна полностью заменить Nero for Linux, поэтому описания проприетарной программы Nero в этом издании вы не найдете.

16.2.2. Преимущества и недостатки DVD
У всего есть свои преимущества и свои недостатки. Есть они и у DVD. Начнем
с преимуществ:
□ большая емкость диска— лишнего места не бывает! Но, с другой стороны,
4,7 Гбайт хорошо для записи фильма в цифровом качестве (или коллекции

292

Часть IV. Linux дома и в офисе

фильмов в MPEG-4). Для хранения данных такой объем слишком велик.
Мне пока еще не удавалось сразу заполнить всю DVD-болванку своими документами. В лучшем случае диск заполняется постепенно,— просто дописываешь в «конец» всю нужную информацию на протяжении какого-то времени.
И все же один DVD удобнее, чем шесть обычных CD;


поддержка различных видеоформатов — DVD-Video совместим с экранными

форматами 4:3 и 16:9. Опять-таки— это важно для видео, а для других целей
несущественно;

□ многоканальный звук — на DVD можно записать до 8 различных аудиопотоков.
Это очень ценная возможность, например, для диска, где есть 3 аудиопотока:
оригинал (без перевода), перевод на русский язык и перевод «от Гоблина». Фактически мы получаем как бы три фильма в одном. Ведь в случае с CD пришлось
бы записывать все это на три разных диска: на одном был бы фильм в «оригинале», на втором — фильм с переводом, а на третьем — небольшая пародия, которую, тем не менее, интересно посмотреть, особенно если до этого видел обычный фильм. Так же имеет место и запись аудиопотоков на разных языках —
ведь диск может распространяться, например, по всей Европе, где в каждой
стране свой язык;




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

нравившуюся сцену под другим углом, например, с противоположной стороны?
DVD-позволяет и это. Главное, чтобы такая возможность была предусмотрена
при записи фильма;
совместимость со звуковыми форматами Dolby Digital, Dolby Digital Pro и
Dolby Surround (многоканальный звук 5+1) — если у вас есть домашний киноте-

атр, то вы оцените это преимущество. Если же смотреть фильм на компьютере,
то особой разницы между звуком DVD-фильма и звуком фильма в MPEG-4 вы
не почувствуете;


интерактивное управление — даже на DVD-проигрывателе (не говоря уже
о компьютере) вы можете полностью управлять просмотром фильма. Нет, это не
просто пауза, останов, воспроизведение и перемотка. Это вызов меню фильма,
переключение звуковых каналов, управление последовательностью сцен, изменение камер обзора, чтение записанных на DVD текстов, вызов субтитров, просмотр записанных картинок и т. д.;



поддержка «закладок» — предположим, вы смотрели фильм, но вам потребовалось куда-то срочно уехать (или просто захотелось спать). Тогда можно сделать
«закладку», а потом продолжить просмотр с того же самого места. Согласитесь,
удобно, а на CD такого нет;

□ надежность, дешевизна и компактность DVD в сравнении с VHS-кассетами;


дешевизна DVD-проигрывателей— сейчас DVD-проигрыватель, который в состоянии читать даже MPEG-4, стоит от 800 рублей. Обычный DVD (без поддержки MPEG-4) — еще дешевле.

Глава 16. Лазерные диски и программы для их «прожига»

293

А недостатка всего два:


некоторые проблемы с совместимостью — существуют два несовместимых
между собой формата DVD: DVD-R/-RW и DVD+R/+RW. Не все проигрыватели могут воспроизводить оба типа дисков. Есть трудности и с поддержкой редкого формата DVD-RAM;



все DVD-проигрыватели привязаны к региону, в котором они продаются, — это
сделано в целях борьбы с видеопиратами. Поэтому покупать проигрыватель
нужно там, где вы живете. Были случаи, когда проигрыватель, привезенный,
скажем, из Азии, не мог читать диски, которые распространяются на территории
РФ. При записи DVD-Video прописывается регион, в котором должен распространяться диск. DVD-проигрыватель прежде всего считывает с диска код
региона, и если он не совпадает с кодом самого проигрывателя, просмотреть мы
ничего не можем. Обидно, но ради этого и разрабатывался DVD.

16.2.3. Форматы и маркировка DVD-дисков
Как уже было отмечено, DVD— это всего лишь улучшенная модификация CD.
При разработке технологии DVD решили пойти не по качественному пути, а по количественному — просто повысили плотность записи. Конечно, при этом были
разработаны более совершенные методы коррекции ошибок, дополнительные способы оптимизации дискового пространства, но суть от этого не меняется.
Приведем классификацию DVD-дисков:
□ DVD-5 — односторонний однослойный диск емкостью 4,7 Гбайт;
□ DVD-9 — односторонний двухслойный 8,54 Гбайт;
□ DVD-10 — двусторонний однослойный 9,4 Гбайт;
□ DVD-18 — двусторонний двухслойный 17 Гбайт.
Наиболее распространены диски DVD-5 и DVD-10. Диски DVD-9 встречаются реже, a DVD-18 вообще сложно найти в продаже. Большинство современных проигрывателей способны работать с односторонними одно- и двухслойными дисками
(для чтения второй стороны диск нужно перевернуть). Иногда еще встречаются аппараты, предназначенные для чтения только однослойных DVD. Впрочем, приводы
DVD постоянно совершенствуются.
Теперь перечислим форматы DVD:


DVD-ROM — базовый формат для массового производства дисков, например,
дисков с фильмами. Этот формат поддерживает файловые системы UDF и
ISO 9660 (как для обычных CD), однако порядок физического размещения файлов задается спецификацией DVD-Audio и DVD-Video;



DVD-Video — предназначен для хранения фильмов и представляет собой «логическую надстройку» над DVD-ROM. Формат задает порядок расположения
файлов на диске. Кроме записи фильмов и сопровождающих их звуковых потоков, на такие диски допускается записывать картинки (которые можно будет

294

Часть IV. Linux дома и в офисе

просматривать с помощью средств навигации DVD-проигрывателя), субтитры
на разных языках и диалоговые окна. Не возбраняется записать и любые другие
файлы — они будут проигнорированы домашним DVD-проигрывателем, однако
доступ к ним можно получить, вставив диск в компьютер.
Особенности DVD-Video:


на односторонний однослойный диск в этом формате можно записать
133 минуты фильма со звуком. Если фильм не умещается на таком носителе,
можно выбрать DVD большей емкости;

• многоканальный звук (до 8 каналов);


surround-звук — это отдельный канал для баса;



стандартные экранные форматы 4:3 (обычное телевидение) и 16:9 (широкоформатное видео);

• защита от нелегального копирования;


кодирование регионов распространения;

• субтитры на 32 языках;
• интерактивное управление;


DVD-Audio — формат для записи высококачественного звука. Известно, что
звук в формате MP3 при воспроизведении на профессиональном проигрывателе звучит хуже, чем в формате AudioCD. Так вот, качество звукового потока
формата DVD-Video намного лучше, чем AudioCD, а звучание DVD-Audio
превосходит даже DVD-Video. Чувствуете, насколько хорош этот формат?
Появился он не так давно — в 1999 году. Правда, в течение первого года DVDAudio существовал только в лаборатории — проигрыватели, поддерживающие
этот формат, появились в 2000 году, а еще через год мир увидел первый коммерческий диск DVD-Audio. На сегодняшний день DVD-Audio признан
лучшим аудиоформатом. Высокое качество звучания достигается благодаря
сжатию без потерь (алгоритм LPCM) — таким образом все пространство в
4,7 Гбайт используется исключительно для звука, что позволяет сохранить
оригинальное качество звучания;



DVD-R — это однократно записываемый диск, позволяющий записывать все,
что угодно: музыку, документы, фильмы, картинки или все сразу. Лишь бы у вас
был привод, поддерживающий запись DVD. Существуют две разновидности
DVD-R: обычный (для некоммерческого использования) и для продюсеров
(DVD-Authoring, позволяющий создавать мастер-диски и обладающий возможностями защиты от нелегального копирования). Технически разница заключается в различной длине волны лазера при записи (635 нм для обычных DVD и
650 нм — для DVD-Authoring). Кроме того, для записи DVD-Authoring нужен
специальный привод, не совместимый с обычным. Но оба типа приводов могут
читать оба типа дисков. Этот факт нужно учитывать при покупке привода DVDRW или при покупке «болванок» (если привод у вас уже есть) — нет смысла
приобретать более дорогой DVD-Authoring, поскольку все равно вы не сможете
его записать. Впрочем, не думайте, что на DVD-R можно записывать только

Глава 16. Лазерные диски и программы для их «прожига»

295

файлы. Из чистого DVD-R вы сможете создать диск любого формата: DVDVideo, DVD-Audio, DVD-ROM, но без защиты диска от нелегального копирования;


DVD-RW и DVD-RAM — перезаписываемые диски. На такой диск вы можете
записать информацию, затем стереть все, потом заново записать и т. д. — как и
в случае с дисками CD-RW. Перезаписываемые диски маркируются DVD-RW,
иногда встречается маркировка DVD-RAM, — отличие у них в числе циклов перезаписи: DVD-RW можно перезаписывать сотни раз, a DVD-RAM — сотни тысяч раз. Хотя DVD-RAM намного надежнее, но процесс перезаписи такого диска
весьма длительный (в среднем, на запись диска нужен I час). Есть и неоспоримое преимущество — для записи таких дисков не требуется создавать образ на
жестком диске, можно сразу писать прямо на носитель. Это очень важно — ведь
не всегда на жестком диске есть 5 (или более) Гбайт свободного места. Так что,
если на винчестере свободно хотя бы 200 Мбайт, вы сможете записать диск
DVD-RAM полностью. С другой стороны, DVD-RAM подходит только для компьютера, поскольку пока нет DVD-проигрывателей, которые читают диски этого
формата.
В целом, перезаписываемые диски не столь надежны, как DVD-R. Если вам
нужно записать диск для многократного чтения (например, фильм, который вы
потом одолжите всем своим друзьям, и они по несколько раз его просмотрят), то
лучше выбрать DVD-R, поскольку есть вероятность, что когда он к вам вернется, его все еще можно будет прочитать. А вот если вы хотите перенести файлы
из офиса домой или наоборот, то DVD-RW — лучшее решение (не DVD-RAM, а
именно DVD-RW, поскольку в случае с DVD-RAM вам придется уйти с работы
на час позже, ожидая, пока диск запишется);

□ DVD+R/+RW — новый формат. Получил знак + в маркировке, чтобы подчеркнуть его превосходство над старыми форматами. Преимущество этого формата
заключается в более высокой скорости чтения и записи. Например, для DVD+R
скорость записи на момент появления этого формата составляла 4х, в то время как
обычные диски записывались максимум со скоростью 2х. Помните, что устаревшие приводы для чтения (и DVD-проигрыватели) не способны работать с дисками
этого формата, поэтому, если вы покупали свой DVD до 2003 года (или даже в
2003 году, когда появился этот формат), скорее всего, он не будет читать такие
диски. Что же касается приводов для записи DVD, то раньше они могли записывать диски или только с «минусом», или только с «плюсом». Современные приводы умеют записывать оба формата. Сейчас можно смело покупать диски и
с «плюсом», и с «минусом». Если же вам больше нравится классика, покупайте
диски DVD-R— они стоят немного дешевле DVD+R, а скорость их записи составляет на сегодняшний день 16х и более.

16.2.4. Регионы DVD-Video
О регионах мы уже упоминали, рассмотрим этот вопрос подробнее. Регионы придумали для защиты от несанкционированного распространения дисков. Отчасти это
так. Но основная цель— это управление рынком сбыта. Например, состоялась

296

Часть IV. Linux дома и в офисе

премьера фильма, и его начали тиражировать на DVD. Понятно, что в Китае, России, в некоторых других регионах диски будут стоить дешевле— мы просто не
будем их покупать по европейским ценам. Чтобы в ту же Европу или Америку не
импортировали дешевые диски из бедных регионов (где они продаются по более
низкой цене), ввели коды регионов, — европейцы просто не смогут посмотреть
диски, предназначенные для сбыта в России, и наоборот.
Всего существует 8 основных регионов:
1. США и Канада.
2. Европа, Япония и Южная Африка.
3. Тайвань и Южно-Восточная Азия.
4. Южная и Центральная Америка (в т. ч. Мексика), Австралия и Новая Зеландия.
5. Россия, Пакистан, Центральная и Северная Африка.
6. Китай.
7. Не задан.
8. Используется авиалиниями.
Существует и так называемый нулевой регион, который предназначен для некоммерческих записей. Диски, принадлежащие этому «региону», можно просмотреть
на любом проигрывателе.
Помните, что регион DVD-диска (как и проигрывателя) нельзя изменить. Регион
DVD-проигрывателя устанавливается по первому воспроизведенному диску. Если вы
купили DVD-проигрыватель, которым до вас никто не пользовался (абсолютно новый), то, вставив в него диск какого-либо региона, вы переведете проигрыватель
в режим, при котором он сможет воспроизводить диски только этого региона. Что же
касается компьютерных DVD-приводов, то они официально позволяют 5 раз менять
код региона. Нужно быть очень внимательным, чтобы не забыть общее число изменений, — ведь в случае ошибки придется покупать новый DVD-привод. Впрочем,
в Интернете можно найти специальные программы, решающие и эту проблему.
А можно просто скопировать содержимое DVD на жесткий диск и после этого изменить значение региона.

16.2.5. Некоторые рекомендации относительно DVD
Одни разработчики DVD заявляют, что их диски могут хранить информацию до
50 лет, другие называют цифру в 100 лет. Я им не верю по одной простой причине:
первый DVD появился в 1996 году, следовательно, самому «старому» DVD на момент написания этих строк— 20 лет. О каких 100 годах может идти речь, если
только за последние годы информационные технологии кардинально изменились, и
я не уверен, что еще через 10 лет вы вообще сможете прочитать даже современные
DVD, не говоря уже о первых. Не знаю, как будут выглядеть сменные носители будущего, но уж точно не так, как сегодня. Возможно, сменных носителей вовсе не
будет, поскольку необходимость в них отпадет. Высокоскоростной Интернет и сегодня доступен любому желающему — намного проще передать файл по Сети, чем

Глава 16. Лазерные диски и программы для их «прожига»

297

записывать на Flash (или DVD) и через весь город отправлять его адресату (или
курьеру, который бы доставил его в другой город), улавливаете логику?
Учитывая механический износ, а также неблагоприятное воздействие окружающей
среды (вдруг вы случайно оставите диск на солнышке), рекомендуется перезаписывать диски один раз в год. Диски, которыми вы практически не пользуетесь, можно
перезаписывать реже — раз в два года. Но помните, что лучше, когда диск лежит
в прохладном (только не в морозилке!) помещении, без прямого воздействия солнечных лучей.
Рекомендуется все свои CD-диски переписать на несколько DVD — так вам будет
проще их контролировать. Если, например, у вас было 25 компакт-дисков, то после
такой реорганизации станет всего 4-5 DVD. Удобнее, правда?

16.3. Программа КЗb
В состав многих дистрибутивов входит очень удобная и простая программа КЗЬ,
предназначенная для записи компакт-дисков и DVD. Ее возможности сравнимы
с популярной Windows-программой Nero. Программа входит в состав репозиториев
openSUSE, Fedora и др., а в openSUSE устанавливается по умолчанию.
Каждая программа — для своей среды
Программа КЗЬ предназначена для работы в графической среде KDE, поскольку она ис­
пользует ее библиотеки. Если на вашем компьютере установлена графическая среда
GNOME, то для установки КЗЬ вам придется также установить и библиотеки KDE, кото­
рые в таком случае, по сути, больше ни для чего не понадобятся. Так что, если вы пред­
почитаете графическую среду GNOME, и использование КЗЬ для вас не принципиально,
лучше установить программу, написанную с использованием библиотек GNOME, на­
пример GnomeBaker или Brasero, — так вы сэкономите место на диске.

Итак, если программы К3b у вас еще нет, установите все пакеты К3b*, кроме пакета k3b-dev, предназначенного для разработчиков.
На рис. 16.1 представлено основное окно К3b, в нижней части которого можно выбрать предполагаемое действие:
□ Новый проект с данными — записывает CD/DVD с данными;
□ Новый проект Audio CD — позволяет записать аудиодиск;
□ Копирование диска — создает копию диска.
Нажав кнопку Больше действий, вы увидите список дополнительных действий
программы К3b (рис. 16.2):
□ Новый проект с данными — как уже было отмечено, создает диск с данными;
□ Продолжить мультисессию — позволяет дозаписать данные на диск, если вы
не закрыли сессию в прошлый раз;
□ Новый проект Audio CD — создает аудиодиск;
□ Новый проект универсального CD— создает проект диска, позволяющего
хранить как данные, так и аудиодорожки. Раньше на таких дисках распростра-

298

Часть IV. Linux дома и в офисе

Рис. 16.1. openSUSE: основное окно К3b

Рис. 16.2. openSUSE: список дополнительных действий К3b

Глава 16. Лазерные диски и программы для их «прожига»

299

нялись альбомы некоторых исполнителей. В области аудио были композиции, а
в области данных — фотографии и другая дополнительная информация. Область
данных можно было просмотреть на компьютере, а музыку прослушать на любом CD-проигрывателе. Таким образом, проект универсального диска (рис. 16.3)
в рабочей области имеет две секции: секцию звука и проект данных К3b;

Рис. 16.3. openSUSE: в К3b создан проект универсального диска



Новый проект Video CD/Новый проект Video DVD — создает видеодиск
в форматах CD/DVD;



Новый проект eMovix — eMovix представляет собой небольшой дистрибутив,
основанный на Slackware, и содержит средства воспроизведения фильмов, записанных на этом же диске. То есть, это действие создает загрузочный диск с мини-дистрибутивом, проигрывателем и фильмом. Дистрибутив поддерживает
форматы DivX, MPEG-1, MPEG-2, MPEG-4, RealVideo и много других. Само
программное обеспечение занимает всего 8 Мбайт, поэтому все остальное место
на «болванке» будет доступно для фильма. Иногда такой проект полезно создать, чтобы была полная уверенность, что фильм удастся просмотреть на любом
компьютере даже при отсутствии кодеков. Для воспроизведения фильма нужно
просто загрузиться с диска eMovix;

300

Часть IV. Linux дома и в офисе

□ Копирование диска — название действия говорит само за себя;


Форматировать/Стереть перезаписываемый диск— это действие тоже не
нуждается в комментариях;

□ Записать образ — записывает образ диска на «болванку»;


Считать Audio CD/Считать Video CD/Считать Video DVD — помните, раньше были популярны программы-грабберы, позволяющие сохранить дорожки
звукового диска на винчестер? В состав КЗЬ входят целых три граббера, позволяющих поместить на винчестер содержимое звукового CD и видеодисков (CD
и DVD).

Попробуем записать DVD с данными.
Возьмите перезаписываемый диск
Настоятельно рекомендую в первый раз взять DVD-RW, а не DVD-R — если при запи­
си вы ошибетесь, DVD-RW можно всегда стереть, a DVD-R — только выбросить.

После выбора действия откроется рабочая область программы (рис. 16.4). В верхней части окна находится файловый менеджер, позволяющий выбрать файлы для
записи на DVD. Чтобы записать нужные файлы, просто перетащите их мышью
в нижнюю область (рис. 16.5).

Рис. 16.4. openSUSE: рабочая область КЗЬ

Глава 16. Лазерные диски и программы для их «прожига»

301

Рис. 16.5. openSUSE: все готово для начала «прожига» диска

Теперь нажмите кнопку Записать— откроется окно, позволяющее установить параметры записи (рис. 16.6). Рекомендую выбрать только скорость записи, не полагаясь на значение Автоматически.
Обратите внимание на поле Записать диск — сейчас в дисководе находится пустой диск, но если в дисковод будет помещен уже заполненный DVD-RW, программа предложит вам сначала его очистить.
Записанный DVD/CD-RW с закрытой сессией (т. е. без возможности дозаписи)
можно также очистить с помощью опции Быстрое форматирование команды
Сервис | Форматировать (рис. 16.7).
Вернемся к окну записи диска (см. рис. 16.6). Если вы сейчас не будете записывать
диск полностью, но в целях экономии «болванок» планируете в скором времени
дозаписать данные на этот диск (я раньше так делал, когда создавал резервные
копии данных), перейдите на вкладку Разное (рис. 16.8) и в разделе Режим муль­
тисессии выберите опцию Начать мультисессию. В этом случае у вас потом будет
возможность дозаписать данные на этот диск— выберите тогда режим Продол­
жить мультисессию.

302

Часть IV. Linux дома и в офисе

Рис. 16.6. openSUSE: осталось нажать кнопку Записать

Рис. 16.7. openSUSE:форматирование DVD-RW

На вкладке Образ можно задать имя файла и расположение ISO-образа, который
создается перед записью диска. По умолчанию образ создается в каталоге /tmp, но
вы можете изменить папку, например, указав свой домашний каталог (по умолчанию пользователь в Linux может записывать только в свой домашний каталог).
Изменение расположения ISO-образа полезно, если на корневом разделе осталось
мало дискового пространства, а каталог /home монтируется к другому разделу, на
котором место есть. Чтобы каждый раз не указывать расположение ISO-образа,
нужно указать в настройках программы каталог для временных файлов (см. далее).

Глава 16. Лазерные диски и программы для их «прожига»

303

Рис. 16.8. openSUSE: режим многосессионной записи КЗЬ

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

Рис. 16.9. openSUSE: вкладка КЗb Файловая система

304

Часть IV. Linux дома и в офисе

Закрытие сессии
Помните, что при закрытии сессии дописать информацию на диск DVD/CD-RW уже не­
возможно — придется сначала его полностью стирать, а если у вас диск DVD/CD-R, то
вы больше вообще не сможете ничего на него записать. Закрытие сессии имеет
смысл, если вы записали диск целиком и не планируете его изменять.

Рассмотрим теперь окно параметров КЗb, которое вызывается командой меню
Настройка | Настроить кЗb. В разделе Разное (рис. 16.10) можно задать каталог
для временных файлов — на диске, где находится каталог /tmp, может не быть достаточно свободного места, поэтому иногда приходится задать иной каталог, к которому подмонтирован другой носитель.
В разделе Приводы можно посмотреть информацию об имеющихся в вашей системе приводах CD/DVD. Как можно видеть на рис. 16.11, в системе имеется пишу-

Рис. 16.10. openSUSE: параметры КЗb, раздел Разное

Глава 16. Лазерные диски и программы для их «прожига»

305

щий привод VMware. В данном случае это не какой-то там виртуальный привод, а
физическое устройство, просто Linux сейчас запущена в виртуальной машине
(см. главу 18), и если в свойствах виртуальной машины в качестве CD/DVDпривода выбрать параметр Физический диск, то можно производить запись
CD/DVD прямо из виртуальной машины.

Рис. 16.11. openSUSE: параметры КЗb, раздел Приводы

В разделе Дополнительно (рис. 16.12) можно (если вам это необходимо) включить
параметры Не извлекать диск после завершения записи и Автоматически очищать CD-RW и DVD-RW. Если первый параметр — дело вкуса, то второй довольно опасен — диск будет очищен без предупреждения. А что, если на диске были
важные данные?

306

Часть IV. Linux дома и в офисе

Рис. 16.12. openSUSE: параметры КЗb, раздел Дополнительно

16.4. Программа Brasero
В Ubuntu и ряде других дистрибутивов для записи дисков используется программа
Brasero. В отличие от КЗb, эта программа основана на библиотеках GNOME, и ее
лучше не устанавливать, если вы работаете с библиотеками KDE.
Установка программы Brasero
В Ubuntu 17.04 программа не устанавливается по умолчанию, и для ее установки нуж­
но ввести команду: sudo apt install brasero.

Для записи CD/DVD в Brasero запустите программу и укажите тип проекта
(рис. 16.13):
□ Звуковой диск — используется для создания диска формата Audio CD, который
можно воспроизвести на компьютере, музыкальном центре и автомагнитоле;

Глава 16. Лазерные диски и программы для их «прожига»

307

□ Диск с данными — служит для создания диска с данными;
□ Видеодиск — позволяет создать DVD Video или SVCD;
□ Копирование диска — создает копию диска;
□ Записать образ — делает копию диска, но не записывает ее на CD/DVD, а сохраняет в виде файла-образа на жестком диске. Позже образ можно записать на
CD/DVD. Этот тип проекта полезен, если нужно скопировать диск, а чистой
«болванки» под рукой нет.

Рис. 16.13. Ubuntu: выбор типа проекта в Brasero

Выберем опцию Диск с данными— вы увидите (рис. 16.14) основное окно программы Brasero (оно зависит от типа проекта).
Просто перетащите файлы, которые вы хотите записать на диск, в окно Brasero
(можно также нажать кнопку Добавить и выбрать необходимые файлы) и нажмите
кнопку Записать. Кстати, слева от кнопки Записать имеется список выбора привода (если у вас их несколько), в этом же списке можно выбрать Файл образа для
создания ISO-образа, который можно будет потом записать на «болванку».
После нажатия кнопки Записать откроется окно (рис. 16.15), в котором придется
еще раз нажать кнопку Записать. При этом, если вы не вставили диск в привод,
Brasero предложит создать ISO-образ записываемого диска.

308

Часть IV. Linux дома и в офисе

Рис. 16.14. Ubuntu: основное окно Brasero

Рис. 16.15. Ubuntu: в Brasero все готово для записи — нажмите кнопку Записать

Глава 16. Лазерные диски и программы для их «прожига»

309

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

Рис. 16.16. Ubuntu: изменение скорости записи в программе Brasero

Вставив многосессионный диск (на котором уже были записаны файлы), вы получите предупреждение, что ранее записанные файлы не будут доступны. А вот если
на диске имеется запись, и сессия закрыта, то Brasero предложит вам очистить
диск. Вы можете или отказаться от записи (кнопка Отмена), или сменить диск
(кнопка Сменить диск), или очистить его (кнопка Очистить диск). После очистки
диска начнется процесс записи, а по окончании записи диск будет извлечен из привода.

16.5. Запись CD/DVD из консоли
Иногда нет возможности запустить графическую программу из-за того, что
Х-сервер не доступен (произошел сбой, или просто не установлена графическая
подсистема X.Org). Тогда можно воспользоваться текстовыми программами записи
CD/DVD типа cdrecord.
Особые операции при работе с файловой системой
Подобные ситуации весьма редкие, поэтому их описание вынесено в материал «Осо­
бые операции при работе с файловой системой», который вы найдете в папке Допол­
нения сопровождающего книгу электронного архива (см. приложение), а также по ад­
ресу: http://www.dkws.org.ua/novice/pdf/fs.pdf.

16.6. Чтение «битых» компакт-дисков
К сожалению, компакт-диски иногда портятся. Чаще всего причиной становится
чисто механическое повреждение— например, царапина. Прочитать все данные
с такого диска полностью уже нельзя, но если потеря некоторых данных некритич-

310

Часть IV. Linux дома и в офисе

на (например, это диск с фильмом), можно попытаться извлечь оставшуюся информацию.
Сначала нужно создать образ компакт-диска как есть (с пропуском ошибок):
# dd if=/dev/cdrom of=~/cd.iso conv=noerror,sync
Потом подмонтировать созданный образ к каталогу /mnt/iso (если такого каталога не
существует, создайте его):
mount -о loop ~/cd.iso /mnt/iso
Затем скопировать фильм из этого каталога в домашний каталог:
ср /mnt/iso/film.avi ~
После чего размонтировать и удалить образ:
# umount /mnt/iso
# del -/cd.iso
В результате в вашем домашнем каталоге появится файл с фильмом film.avi. Качество фильма иногда (в местах, где были ошибки) будет резко ухудшаться (возможно,
пропадет звук или картинка), но это все же лучше, чем полная потеря данных.
Заметьте, в Windows средствами самой операционной системы, не прибегая к помощи посторонних программ, мы бы вообще не скопировали этот файл с компактдиска.

ГЛАВА

17

Популярные программы
для работы с Интернетом
17.1. Браузер Firefox
Как пользоваться этим браузером, надеюсь, знают все— по умолчанию им комплектуются многие дистрибутивы, поэтому здесь мы поговорим только об его усовершенствовании.
Как известно, браузер Firefox из-за различных лицензионных «препятствий» не
поддерживает Java-апплеты и Flash-ролики. Что касается Java, то его бум уже прошел, — сейчас редко встречаются сайты, разработанные с использованием Java, а
вот Flash-ролики присутствуют чуть ли не на каждом втором сайте. Еще полбеды,
когда вы не видите шапку сайта или какую-то ее часть, разработанную в виде Flashролика, но вот когда целый сайт построен с использованием Flash, то вы там вовсе
ничего не сможете увидеть, кроме сообщения, что для просмотра этого сайта вам
нужно установить Macromedia Flash Player. К сожалению, многие дизайнеры, занимающиеся разработкой Flash-сайтов, напрочь забывают об обычных их HTMLверсиях, доступных абсолютно всем пользователям без ограничений. Поэтому,
чтобы ничего ни на каких сайтах не упустить, желательно установить в браузере
поддержку Flash-роликов.
Еще о технологии Flash
В последнее время наблюдается активный отказ от технологии Flash. Возможно, это
издание будет последним, в котором объясняется, как установить Flash в Linux.

Если при инсталляции дистрибутива была выбрана установка стороннего программного обеспечения, тогда Flash у вас уже установлен. Чтобы убедиться в этом,
откройте браузер и в строке адреса введите:
about:plugins.
На рис. 17.1 видно, что в Ubuntu 17.04 плагин Shockwave Flash установлен. Если
при установке системы вы забыли отметить соответствующий флажок, то для установки Flash нужно выполнить команду:
sudo apt-get install flashplugin-installer

312

Часть IV. Linux дома и в офисе

Рис. 17.1. Ubuntu 17.04: плагин Shockwave Flash установлен

Также можно установить и браузер Google Chrome (http://help.ubuntu.ru/wiki/
google_chrome), который по умолчанию умеет воспроизводить Flash-контент.
Теперь разберемся, как установить поддержку Flash в Fedora 26. Перейдите по следующей ссылке:
https://get.adobe.com/flashplayer/
и скачайте RPM-пакет. Открывать его в программе, как предложит Firefox, не нужно. Просто сохраните его (рис. 17.2), затем перейдите в папку загрузок и щелкните
на загруженном плагине двойным щелчком— откроется окно с информацией
о плагине (рис. 17.3). Нажмите в нем кнопку Установить— перед запуском установки у вас будет запрошен пароль пользователя (установку нужно производить от
имени пользователя, включенного в файл sudoers, а это, как правило, пользователи,
созданные во время установки системы).
После установки плагина перезапустите Firefox и откройте страницу с информацией о плагинах— на ней вы увидите информацию об установленном плагине
(рис. 17.4).
Раньше установка Flash Player была гораздо сложнее — приходилось производить
множество лишних действий: подключать репозитории, устанавливать определенным образом пакеты, редактировать конфигурацию самого плагина. Сейчас же все
гораздо проще — скачали и установили один пакет.

Глава 17. Популярные программы для работы с Интернетом

Рис. 17.2. Fedora 26: загрузка плагина Flash Player

Рис. 17.3. Fedora 26: информация о плагине

313

314

Часть IV. Linux дома и в офисе

Рис. 17.4. Fedora 26: плагин Shockwave Flash установлен

17.2. Браузер Chromium
Браузер Google Chrome становится все популярнее и популярнее. Так, по данным
http://www.itrew.ru (2017 год) браузер Google Chrome с огромным отрывом (63%)
опережает своих конкурентов. Второе место у Firefox — 14,5%.
Понятно, что Windows-пользователь, попавший в Linux, испытывает определенный
дискомфорт — мало того, что интерфейс другой, так и браузер другой. Здесь все
другое!
Чтобы пользователям Windows жизнь в Linux казалась проще, я рекомендую
им установить браузер Chromium (рис. 17.5)— это тот же самый браузер,
что и Chrome, но с открытым исходным кодом: оба браузера похожи, как две капли
воды.
Браузер Chromium входит в состав репозиториев большинства современных дистрибутивов, поэтому его не составит труда установить стандартными средствами
(рис. 17.6).

Глава 17. Популярные программы для работы с Интернетом

Рис. 17.5. Браузер Chromium

Рис. 17.6. Ubuntu: установка браузера Chromium с помощью менеджера пакетов Synaptic

315

316

Часть IV. Linux дома и в офисе

17.3. Почтовый клиент
Для Linux разработано очень много почтовых клиентов. Ранее выбор почтового
клиента навязывала графическая среда: если при установке системы вы выбирали
KDE, то устанавливался почтовый клиент KMail, разработанный с использованием
тех же библиотек (Qt), что и KDE, а если вы выбирали GNOME, то автоматически
устанавливался почтовый клиент Evolution, использующий те же библиотеки, что и
GNOME (GTK).
Теоретически можно было в GNOME установить KMail и в KDE— Evolution, но
практически никто так не делал, поскольку при установке «чужого» почтового клиента «тянулись» тяжелые библиотеки «чужой» графической среды, которые занимали много места на диске и, фактически, использовались только одной программой.
Сейчас же практически во всех современных дистрибутивах устанавливается удобный почтовый клиент Mozilla Thunderbird, чем-то напоминающий The Bat! Такое
решение весьма оправданно: во-первых, пользователям не приходится загружать
лишние библиотеки, а, во-вторых, обеспечивается определенная унификация,
облегчающая переход с одного дистрибутива на другой.
В использовании Thunderbird нет никаких секретов: вы просто запускаете программу, вводите параметры доступа к почтовому ящику (имя пользователя, имя сервера,
пароль) и работаете со своей электронной почтой. Поэтому подробно рассматривать Thunderbird в этой книге мы не станем— не думаю я, что пользователь,
сумевший установить и настроить Linux, не разберется со столь простым почтовым
клиентом.
А если вы ранее использовали Evolution или KMail и успели к ним привыкнуть, то
можете их установить самостоятельно, — они никуда не делись, и все еще присутствуют в репозиториях дистрибутивов.

17.4. Skype
В предыдущих изданиях этой книги в качестве клиента для обмена мгновенными
сообщениями рассматривался Pidgin, который в основном использовался как ICQклиент. Вот только незадача— популярные ранее сервисы мгновенного обмена
сообщениями, в том числе и ICQ, больше уже не пользуются популярностью
у пользователей, — все перекочевали на более современные приложения вроде
Skype, Viber и пр. Оно и понятно — здесь можно не только обмениваться мгновенными сообщениями, но и совершать видеозвонки. И все это тоже бесплатно.
Нужно отметить, что установка Skype в Linux более чем проста, — достаточно зайти на www.skype.com и скачать версию для своего дистрибутива. Несмотря на то,
что в списке на сайте самой старшей Ubuntu оказалась только версия 12.04
(рис. 17.7), загруженный DEB-пакет нормально установился в Ubuntu 17.04— последней версии на момент написания этих строк.

Гпава 17. Популярные программы для работы с Интернетом

317

Рис. 17.7. Ubuntu: загрузка Skype

Интересно, что при загрузке DEB-пакета с сайта Skype браузер Chromium определяет его как вредоносный (рис. 17.8). Отчасти могу с ним согласиться, учитывая,
сколько памяти потребляет современная версия Skype.
Далее все просто: перейдите в папку загрузок и щелкните на пакете двойным щелчком — откроется окно, в котором нужно нажать кнопку Установить (рис. 17.9).
Установив пакет, можете запустить Skype (рис. 17.10). Вот оно и свершилось —
Microsoft добралась до Linux ☺.

Рис. 17.8. Ubuntu: браузер определил пакет со Skype как вредоносный —
игнорируйте это предупреждение

318

Часть IV. Linux дома и в офисе

Рис. 17.9. Ubuntu: установка Skype

Рис. 17.10. Ubuntu: Skype запущен

Глава 17. Популярные программы для работы с Интернетом

319

17.5. FTP-клиенты
Для Linux разработано очень много FTP-клиентов. Кроме того, работу с FTP
поддерживают практически все браузеры Linux. Впрочем, FTP-возможности браузеров ограниченны и не дотягивают до возможностей даже самого простого FTPклиента.
Основной задачей FTP-клиента является обмен файлами с FTP-сервером (с помощью FTP-клиента можно не только скачать файл, но и закачать его на сервер).
Стандартным для многих операционных систем является простенький текстовый
клиент ftp. Зная, как работать с этим клиентом, вы в любой операционной системе
будете чувствовать себя «в своей тарелке».
Нужно отметить, что в некоторых современных дистрибутивах— например,
в Fedora 26, команда ftp недоступна, поскольку пакет ftp по умолчанию в них не
установлен. Для установки этого пакета в Fedora надо ввести команду:
sudo dnf install ftp
После установки пакета для открытия соединения с любым FTP-сервером введите
команду:
ftp
Можно также просто ввести команду ftp, а в ответ на приглашение:
ftp>
ввести команду:
open
Лично мне больше нравится первый вариант, поскольку он позволяет сэкономить
время.
В процессе подключения к серверу вам будет предоставлена возможность ввести
имя пользователя и пароль (рис. 17.11).
Подключившись к серверу, вы можете ввести команду help, чтобы просмотреть
список доступных команд. Для получения справки по той или иной команде введите help . Наиболее популярные команды FTP-клиента приведены
в табл. 17.1.
Из графических FTP-клиентов самым лучшим, на мой взгляд, FTP-клиентом является FileZilla, версии которого существуют как для Linux (рис. 17.12), так и для
Windows. Linux-версия FileZilla входит в состав многих современных дистрибутивов — для ее установки нужно установить пакет filezilla.

320

Часть IV. Linux дома и в офисе

Рис. 17.11. Fedora: команда ftp

Рис. 17.12. Ubuntu: FTP-клиент FileZilla

Глава 17. Популярные программы для работы с Интернетом

321

Таблица 17.1. Некоторые команды FTP-клиента
Команда

Описание

ls

Вывод содержимого каталога

get

Загрузить файл с сервера

put

Загрузить файл на сервер

mget

Получить несколько файлов с сервера. Допускается использование масок
файлов — например: *.rpm

mput

Загрузить несколько файлов на сервер

cd

Изменить каталог

mkdir

Создать каталог

rmdir

Удалить пустой каталог

delete

Удалить файл

17.6. Р2Р-клиенты
В январе 1999 года Шон Фэннинг, восемнадцатилетний студент одного из американских вузов, написал программу, позволяющую обмениваться MP3-файлами по
Интернету. Программа была создана, так сказать, для внутреннего пользования —
Шон делал ее для себя и своих друзей. Автор программы даже и не подозревал, что
совершит настоящий прорыв в компьютерных технологиях.
Что же сделал Шон Фэннинг? Им была создана так называемая пиринговая сеть
(Peer-to-peer, peer2peer, P2P). Не нужно путать ее с обычной одноранговой сетью,
которая существовала с самого начала развития сетевых технологий. Но у пиринговой сети есть и кое-что общее с обычной одноранговой сетью — каждый участник
такой сети может выступать и как клиент, и как сервер. Все мы привыкли, что есть
сервер, с которого скачиваются файлы. А здесь каждый пользователь может предоставить доступ к собственным файлам (не ко всем, а только к избранным), и все
остальные участники пиринговой сети смогут скачать эти файлы. Ясно, что этот
пользователь должен находиться в сети, иначе файлы скачать будет невозможно.
Существуют две модели пиринговых сетей: централизованные и децентрализованные. Первая пиринговая сеть была как раз централизованной. В этом случае файлы
хранятся на компьютерах пользователей, но их поиск (как и регистрация новых
пользователей сети) осуществляется через центральный сервер. Понятно, что если
его прикрыть, то вся пиринговая сеть будет разрушена. Поэтому следующий виток
в развитии пиринговых сетей — это децентрализованные сети. Здесь нет выделенного сервера, и нейтрализация одного из компьютеров сети никак не скажется на
функционировании всей сети в целом. Теоретически, чтобы закрыть такую сеть,
нужно нейтрализовать все ее компьютеры. Впрочем, «чистые» децентрализованные
сети встречаются редко. Намного чаще появляются пиринговые сети, представ-

322

Часть IV. Linux дома и в офисе

ляющие собой нечто среднее между централизованной и децентрализованной моделями.
В пиринговых сетях можно найти очень много интересной информации: музыку,
видео, ключи к программам (я вам этого не говорил), а также сами программы.
Конечно, ни сами программы, ни ключи к ним Linux-пользователям не нужны, поскольку в большинстве случаев в пиринговых сетях выложены Windows-программы, а
программы для Linux и так можно вполне официально бесплатно скачать и установить.
Так что, в основном вы будете использовать такие сети для закачки музыки и видео
(если ваше интернет-соединение это позволяет).
Наиболее популярным пиринговым протоколом является BitTorrent. Для работы с ним
во всех дистрибутивах Linux используется программа Transmission (рис. 17.13), которая устанавливается по умолчанию. Именно с помощью этой программы можно качать
с «торрентов» музыку, фильмы и видео.

Рис. 17.13. Ubuntu: программа Transmission

ГЛАВА 18

Виртуальная машина VirtualBox
18.1. Зачем нужна виртуальная машина?
Наверняка многие из вас знакомы с виртуальной машиной VMware. Прелесть виртуальной машины заключается в том, что вы можете установить в ней любую операционную систему, работая при этом в основной операционной системе. Другая
(гостевая) операционная система будет запущена в отдельном окне эмулятора, и вы
сможете работать с ней в обычном режиме.
Зачем нужна виртуальная машина? По большому счету она нужна в основном разработчикам программного обеспечения. Так они могут работать в своей привычной
операционной системе, а в виртуальной машине запускать ту операционную систему, под которой они хотят протестировать свое приложение. Иногда для проверки
процесса сетевого взаимодействия может понадобиться еще один компьютер — тут
тоже на помощь придет виртуальная машина. Налицо экономия и комфорт — ведь
для тестирования программных продуктов и сетей можно обойтись без дополнительного компьютера. Да и переключение на «другой компьютер», пусть даже и
виртуальный, осуществляется с помощью одного щелчка мышью.
Обычному пользователю тоже может пригодиться виртуальная машина. Предположим, вы хотите установить новый дистрибутив Linux или вообще другую операционную систему— например, Windows 8/10 или FreeBSD. Но вы еще не знаете,
понравится вам эта система или нет. Тогда установите ее в виртуальную машину и
попробуйте с ней поработать. Заметьте, вам не придется изменять разметку диска и
размер разделов, а также создавать новые разделы, чтобы установить вторую операционную систему. При использовании виртуальной машины на вашем жестком
диске будет создан файл образа жесткого диска, служащий в качестве жесткого
диска виртуального компьютера. Если установленная операционная система вам не
понравится, смело удаляйте файл образа — снова изменять разметку жесткого диска и рисковать работоспособностью своего компьютера в случае, если что-то при
установке пойдет не так, не понадобится.
Честно говоря, каждый новый дистрибутив Linux я сначала устанавливаю в виртуальную машину, а только затем на физический компьютер. Во-первых, я вижу,
какие проблемы могут возникнуть при установке, и если они возникнут в вирту-

324

Часть IV. Linux дома и в офисе

альной машине, ничего страшного не случится, сами понимаете. Во-вторых, я могу
сделать снимки экрана (скриншоты) процесса установки операционной системы,
чтобы потом показать их друзьям.
Конечно, для работы эмулятора нужен соответствующий компьютер — понадобится как минимум 1 Гбайт оперативной памяти: 512 Мбайт останется для основной
операционной системы, а 512 Мбайт будет отдано виртуальной машине. Конечно,
это самый минимум. Для реальной работы с виртуальной машиной, а не только для
ее запуска, понадобится как минимум 2 Гбайт оперативной памяти: один — для
основной ОС, один — для виртуальной. Опять-таки многое зависит еще и от гостевой ОС. Одно дело запускать в виртуальной машине Linux, которая нетребовательная к ресурсам, совсем другое, если вы надумаете запустить, скажем, Windows 10.
Если у вашего компьютера мало оперативной памяти, а нужно запускать в виртуальной машине Windows, в качестве гостевой ОС выбирайте 32-разрядные ее сборки — они гораздо менее требовательны к ресурсам.
Место на жестком диске также зависит от устанавливаемой ОС, и пара десятков
свободных гигабайтов у вас должна быть.
Во время работы виртуальной машины производительность основной операционной системы, понятно, понизится. Гостевая ОС будет также работать медленнее,
чем на реальном компьютере, но все-таки она будет работать!
«Настольная» виртуализация
В этой главе рассматривается решение так называемой «настольной» виртуализации,
предназначенное для использования конечным пользователем. В главе 38 будет рас­
смотрено решение виртуализации для сервера — OpenVZ.

18.2. Установка эмулятора VirtualBox
Для установки эмулятора виртуальной машины VirtualBox нужно установить пакет
virtualbox, а все остальные пакеты менеджер пакетов установит автоматически.
Если пакет virtualbox не входит в состав дистрибутива, и его нет в репозиториях
дистрибутива, вы всегда сможете его скачать с сайта разработчиков http://
www.virtualbox.org/. Программа абсолютно бесплатная и распространяется по
лицензии GPL.
После установки VirtualBox перезагрузите компьютер, чтобы был загружен модуль
ядра vboxdrv, или введите от имени root команду:
modprobe vboxdrv
Затем добавьте в группу vboxusers всех пользователей, которым разрешено использовать VirtualBox.
Запустите эмулятор с помощью соответствующей команды меню GNOME/KDE
или выполните команду:
/usr/bin/VirtualBox

Глава 18. Виртуальная машина Virtual Box

325

18.3. Создание новой виртуальной машины
В открывшемся окне менеджера виртуальных машин (рис. 18.1) нажмите кнопку
Создать (New)— вы увидите окно мастера создания новой виртуальной машины.
Первый шаг здесь сугубо информационный, поэтому просто нажмите кнопку Далее
(Next), выберите гостевую операционную систему (ту, которую хотите установить)
и введите название для новой виртуальной машины (рис. 18.2).

Рис. 18.1. Ubuntu: менеджер виртуальных машин VirtualBox

Нажатие кнопки Далее (Next) откроет следующее окно VirtualBox, где нужно установить для этой виртуальной машины размер оперативной памяти. Обычно
VirtualBox самостоятельно определяет рекомендуемый размер ОЗУ, исходя из выбранной операционной системы и объема физической оперативной памяти. В моем
случае VirtualBox порекомендовал 512 Мбайт. Я выбрал Windows 7 (в последней на
момент написания этих строк версии VirtualBox уже присутствует также поддержка
Windows 10), а для нее минимальный размер ОЗУ равен 512 Мбайт, т. е. меньше —
нельзя. Поскольку у моего компьютера всего 1 Гбайт оперативной памяти, то
больше тоже нельзя, иначе ничего не останется для реальной операционной системы. Отсюда рекомендуемый размер оперативной памяти — 512 Мбайт (рис. 18.3).
Следующий шаг— это выбор файла образа жесткого диска (рис. 18.4). Поскольку
мы ранее не создавали такие файлы, то выберите опцию Создать новый вирту­
альный жесткий диск (Create new hard disk). В дальнейшем для использования

326

Часть IV. Linux дома и в офисе

Рис. 18.2. Ubuntu: выбор гостевой ОС в VirtualBox

Рис. 18.3. Ubuntu: установка размера оперативной памяти в VirtualBox

Глава 18. Виртуальная машина Virtual Box

327

Рис. 18.4. Ubuntu: создание нового виртуального жесткого диска в VirtualBox

уже существующего файла можно выбрать его из списка по варианту Использо­
вать существующий виртуальный жесткий диск (Use existing hard disk).
Следующий шаг— выбор формата виртуального диска (рис. 18.5). По умолчанию
используется формат VDI (VirtualBox Disk Image). Если нужно обеспечить
совместимость с виртуальной машиной VMware, выберите VMDK (Virtual
Machine Disk).
Нажав кнопку Вперед (Next), мы попадем в окно (рис. 18.6), где нужно определить,
как будет задан размер жесткого диска:


Динамический виртуальный жесткий диск (Dynamically allocated) — размер
файла будет увеличиваться по мере необходимости, но не превысит заданного
вами предела;



Фиксированный виртуальный жесткий диск (Fixed size) — размер четко зафиксирован вне зависимости от того, сколько места реально занимает операционная система.

Обычно первый вариант наиболее приемлем — ведь вы можете установить размер,
например, 20 Гбайт, а реально операционная система займет из них всего лишь 8.
Выходит, что 12 Гбайт просто не будут использоваться.
С другой стороны, установив фиксированный размер, вы можете не беспокоиться,
что другие приложения «скушают» свободное место, и гостевой ОС ничего не
останется, -— ведь нужное дисковое пространство уже зарезервировано. Поразмыслив, выберем первый вариант и нажмем кнопку Вперед.

328

Часть IV. Linux дома и в офисе

Рис. 18.5. Ubuntu: выбор формата файла виртуального диска в VirtualBox

Рис. 18.6. Ubuntu: выбор метода резервирования дискового пространства в VirtualBox

Глава 18. Виртуальная машина VirtualBox

Рис. 18.7. Ubuntu: задание размера виртуального диска в VirtualBox

Рис. 18.8. Ubuntu: созданная виртуальная машина в окне VirtualBox

329

330

Часть IV. Linux дома и в офисе

Сразу после выбора метода резервирования места на диске нужно установить
размер виртуального диска (рис. 18.7). В моем случае эмулятор рекомендует установить размер 25 Гбайт. Очевидно, он полагает, что я буду устанавливать
Windows 7 Максимальную, которая занимает около 15 Гбайт. Однако та же
Windows 7 Профессиональная занимает около 8-9 Гбайт, поэтому я и выбрал динамический образ в надежде, что сэкономлю место на диске — ведь диск-то не
резиновый.
Установив требуемый размер виртуального диска, нажмите кнопку Создать
(Create)— VirtualBox создаст виртуальную машину, и вы увидите основное окно
эмулятора (рис. 18.8).
Ранее перед этим шагом было еще два промежуточных: сводки по создаваемому
диску и по виртуальной машине. В современной версии VirtualBox этого нет —
сразу создается жесткий диск и открывается основное окно эмулятора, в котором
представлены параметры созданной виртуальной машины: тип гостевой операционной системы, объем памяти, размер жесткого диска и т. д.

18.4. Изменение параметров
виртуальной машины
Не спешите нажимать кнопку Запустить (Start) для запуска созданной виртуальной
машины (далее в тексте — ВМ) — нажмите сначала кнопку Настроить (Settings)
для корректировки ее параметров.

18.4.1. Общие параметры
В разделе Общие на вкладке Основные вы можете изменить общие параметры
ВМ: название, тип гостевой ОС, версию гостевой ОС (рис. 18.9), а на вкладке
Дополнительно — задать различные дополнительные параметры: например, определить папку для снимков с экрана, включить общий буфер обмена и т. д.

18.4.2. Раздел система
В разделе Система на вкладке Материнская плата можно установить объем оперативной памяти, выбрать порядок загрузки и установить другие параметры — для
работы некоторых ОС приходится, например, включать EFI (рис. 18.10). На вкладке
Процессор задается число процессоров виртуального компьютера.

18.4.3. Виртуальные жесткие диски
Раздел Носители позволяет изменить образы жестких дисков (рис. 18.11). В предыдущей версии VirtualBox допускалось только добавить образы дисков, а в новой — можно даже выбрать контроллер (IDE или SATA), к которому будет «подключен» виртуальный носитель. По умолчанию здесь к SATA-контроллеру будет
подключен всего один образ — тот, который вы организовали при создании ВМ.

Глава 18. Виртуальная машина Virtual Box

Рис. 18.9. Ubuntu: общие параметры виртуальной машины в VirtualBox

Рис. 18.10. Ubuntu: раздел Система в VirtualBox

331

332

Часть IV. Linux дома и в офисе

Рис. 18.11. Ubuntu: параметры жестких дисков в VirtualBox

Также ранее в VirtualBox существовал раздел CD/DVD-ROM, в котором можно
было установить параметры виртуального привода DVD. Сейчас эти параметры
устанавливаются в разделе Носители — по умолчанию DVD-привод подключен
к IDE-контроллеру и соответствует физическому приводу DVD.
Впрочем, обычно при работе с виртуальными машинами никто не устанавливает
гостевую операционную систему с записанного на болванку дистрибутива —
в большинстве случаев установочный образ диска гостевой ОС мы загружаем из
Интернета и записываем на винчестер, поэтому хотелось бы использовать именно
его, не расходуя лишнюю болванку. Для этого щелкните по диску Пусто (Empty)
в дереве носителей (рис. 18.12) и нажмите кнопку выбора диска, а из открывшегося
меню выберите команду Выбрать образ оптического диска (Choose a virtual
CD/DVD disk file) — откроется диалоговое окно выбора файлов, в котором нужно
выбрать записанный на винчестер образ диска.

18.4.4. А нужен ли звук?
Обычно звук в виртуальной машине не нужен, но если сильно хочется, то почему
бы и нет? Для установки параметров звука перейдите в раздел Аудио (рис. 18.13).
Linux обычно использует звуковую систему ALSA, поэтому в параметрах ВМ нужно выбрать именно ее.

Глава 18. Виртуальная машина Virtual Box

Рис. 18.12. Ubuntu: выбор образа оптического диска в VirtualBox

Рис. 18.13. Ubuntu: параметры звука в VirtualBox

333

334

Часть IV. Linux дома и в офисе

18.4.5. Параметры сети
В разделе Сеть (рис. 18.14) вы можете определить, как будет гостевая операционная система взаимодействовать по сети с основной.

Рис. 18.14. Ubuntu: параметры сети в VirtualBox

Вот основные варианты взаимодействия:
□ NAT — будет использовано преобразование сетевых адресов, т. е. реальный
компьютер станет выступать в качестве шлюза для виртуального;


Виртуальный адаптер хоста (Host-only Adapter)— виртуальный компьютер
будет подключен к локальной сети как самый обычный компьютер и станет виден остальным компьютерам сети. Недостаток этого способа — необходимость
в двух сетевых интерфейсах: один сетевой интерфейс будет использован для
подключения к локальной сети реальным компьютером, а второй — виртуальным. Если вы выберете эту опцию, то вам следует указать, какой интерфейс (например, ethl) станет использоваться для подключения к сети;

□ Не подключен — у виртуального компьютера вообще не будет сетевого адаптера и, следовательно, не получится никакого сетевого взаимодействия с основным компьютером;

Глава 18. Виртуальная машина Virtual Box

335

□ Внутренняя сеть — виртуальный компьютер будет подключен к собственной
внутренней сети, о которой ничего не будет знать основной компьютер. Так что,
никакого сетевого взаимодействия с основным компьютером не получится и
в этом случае.
Если у вас всего один сетевой адаптер, тогда оптимальным является первый вариант — NAT.
Остальные вкладки раздела Сеть позволяют добавить в ВМ дополнительные виртуальные сетевые адаптеры.

18.4.6. Последовательные порты
Раздел СОМ-порты позволяет определить, как ВМ будет получать доступ к последовательным портам физического компьютера (рис. 18.15). Обычно последовательные порты отключены.
Остальные параметры настройки нам не интересны, и теперь вы можете нажать
кнопку ОК для возврата в основное окно VirtualBox.

Рис. 18.15. Ubuntu: использование последовательных портов в VirtualBox

336

Часть IV. Linux дома и в офисе

18.5. Запуск виртуальной машины
и установка гостевой операционной системы
Нажмите кнопку Запустить (Start) — начнется запуск виртуальной машины
(рис. 18.16). Теперь в ее окне все нажатия клавиш будут перехватываться и передаваться виртуальному компьютеру (в том числе и комбинация клавиш +
+)— пока вы не нажмете «горячую» клавишу (хост-клавишу). Этой «горячей» клавишей по умолчанию является правый — обычно это самый удобный вариант, и он не требует изменений.
Собственно, на этом все. Осталось только установить гостевую операционную систему и приступить к ее использованию.

Рис. 18.16. Ubuntu: запуск виртуальной машины в VirtualBox

ГЛАВА 1 9

Эмулятор Wine:
запуск Windows-игр в Linux
19.1. Эмуляторы, эмуляторы...
Как все мы знаем, в мире практически нет достойных Linux-игр. А те, что есть,
можно пересчитать по пальцам. В мире Windows все иначе — игрушек намного
больше. Вот и хочется иногда поиграть в любимую игрушку в любимой операционной системе, не запуская Windows. Понятно, что исполняемые файлы Windows не
запускаются в Linux, поэтому линуксоидам остается одно — искать эмулятор
Windows.
Различные эмуляторы виртуального компьютера, вроде VMware или VirtualBox,
для этой цели непригодны — все они работают по принципу установки гостевой
операционной системы: вы устанавливаете Windows, которая работает в эмуляторе,
а потом в «виртуальной» Windows запускаете игру. Понятно, что страдает производительность, да и пропадает в этой затее весь смысл — ведь хочется отказаться от
«пиратской» Windows и работать с чистой совестью. А в случае с подобным эмулятором уж проще перезагрузиться в Windows и запустить игру там — будет и удобнее, и быстрее.
Итак, нам нужен эмулятор, позволяющий запускать Windows-приложения без установки самой Windows. Таким эмулятором является бесплатный эмулятор Wine.
Но вот беда — Wine не позволяет запускать игры. Все, что можно запустить с его
помощью, — это обычные приложения, не использующие DirectX.
Эмулятор Wine — далеко не новинка мира OpenSource. Проект Wine был основан
Бобом Амстадтом (Bob Amstadt) в 1993 году, т. е. 23 года назад! Развивался он сначала медленно (тогда просто не было острой необходимости в запуске из-под Linux
Windows-приложений), а потом стал стремительно набирать обороты,— начали
даже появляться основанные на Wine дистрибутивы с «прозрачной» поддержкой
W indows-приложений.
В какой-то момент эмулятором Wine заинтересовалась компания TransGaming
Technologies, и вскоре появился эмулятор Winex, позволяющий запускать Windowsигры. Первая его версия еще распространялась бесплатно, но ее функциональность
оставляла желать лучшего: некоторые игры не запускались, некоторые работали нестабильно, в некоторых были проблемы со звуком или изображением. Да и работал
эмулятор откровенно медленно.

338

Часть IV. Linux дома и в офисе

Но компания TransGaming не останавливалась на достигнутом и постоянно совершенствовала свой эмулятор. И вот, начиная с четвертой версии (это произошло
в 2004 году), эмулятор был переименован в Cedega и стал намного проще в использовании. Теперь в нем запускается большинство игр (проще указать, какие не
запускаются, чем перечислить запускаемые), и можно действительно играть, а не
наслаждаться фактом запуска игры под Linux.
Все бы хорошо, но, как всегда, есть одно «но» — эмулятор Cedega не бесплатный.
Месячная подписка (лицензия) стоит 5 долларов, а лицензия на год — 50 долларов.
Помню, как-то попробовал взломанную версию Cedega— эмулятор работал достойно, но использовать «пиратское» программное обеспечение, да еще и в Linux...
Впрочем, разработчики Wine тоже не стояли на месте. Некоторое время назад я
снова установил Wine и обнаружил, что он теперь поддерживает DirectX, а, следовательно, в нем можно запускать игры — разумеется, абсолютно законно и бесплатно. Что мы и попытаемся сделать.

19.2. Установка Wine
Установите Wine— или через Synaptic (рис. 19.1), или с помощью apt-get
вам удобнее.

Рис. 19.1. Ubuntu: установка Wine

как

Глава 19. Эмулятор Wine: запуск Windows-игр в Linux

339

Работаем в Ubuntu
В этой главе рассматривается работа с Wine на примере Ubuntu, но в других дистри­
бутивах все будет происходить точно так же, кроме самого процесса установки
Wine, — для установки пакета wine придется использовать менеджер пакетов дистри­
бутива.

После установки Wine в меню Приложения появится группа Wine. В ней вы найдете:

группу Programs— сюда помещаются установленные в Wine Windowsпрограммы. По умолчанию доступно только приложение Notepad — да, это знаменитый Блокнот;
□ опцию Browse С:\ Drive — просмотреть «виртуальный» диск С: (на него и устанавливаются Windows-программы). Отредактировав конфигурационный файл
Wine (по умолчанию ~/.wine), можно создать и другие диски, но, как правило,
в этом нет необходимости;
□ опцию Configure Wine — настроить Wine;
□ опцию Uninstall Wine Software — удалить установленные Windows-программы.
Эту группу вы найдете в любом дистрибутиве Linux, но не в Ubuntu, — начиная
с Ubuntu 11, с появлением интерфейса Unity, главное меню системы видоизменено,
и обычных программных групп в нем нет. Поэтому проще всего ввести wine в поле
поиска — тогда вы увидите значки, относящиеся к Wine (рис. 19.2).

Рис. 19.2. Ubuntu: значки группы Wine

340

Часть IV. Linux дома и в офисе

19.3. Настройка Wine
и прозрачного запуска Windows-приложений
Перед тем как приступить к установке Windows-приложений, Wine необходимо
настроить. Выберите команду Настройка Wine (Configure Wine) или запустите
программу winecfg (см. рис. 19.2). В открывшемся окне (рис. 19.3) на вкладке При­
ложения вы можете выбрать версию Windows. Пока еще Wine не поддерживает
самую новую версию— Windows 10, однако поддержка Windows 7 и 8 имеется,
чего на данный момент более чем достаточно.

Рис. 19.3. Ubuntu: выбор версии Windows в Wine

Загляните на вкладку Графика — там можно увидеть, что Wine поддерживает
DirectX, Direct3D и даже Pixel Shader (если, конечно, Pixel Shader поддерживается
вашей видеокартой).
Теперь перейдите на вкладку Аудио (рис. 19.4) и нажмите кнопку Проверить звук.
Если звука не слышно (хотя у меня все работало по умолчанию), выберите другой
драйвер и снова проверьте звук.
Закройте окно настроек — оно нам более не понадобится. И осталось только обеспечить прозрачный запуск Windows-приложений — чтобы Wine по щелчку на
ЕХЕ-файле в файловом менеджере запускался автоматически и начинал игру.
Единственное условие — ЕХЕ-файл должен быть исполнимым, иначе Wine откажется его запустить.

341

Глава 19. Эмулятор Wine: запуск Windows-игр в Linux

Рис. 19.4. Ubuntu: проверка звука в Wine

Рис. 19.5. Ubuntu:
каталог с Windows-играми

Рис. 19.6. Ubuntu: связываем ЕХЕ-файлы с Wine

342

Часть IV. Linux дома и в офисе

Чтобы это условие обеспечить, откройте каталог с ЕХЕ-файлами игр (рис. 19.5),
щелкните на ЕХЕ-файле правой кнопкой мыши и выберите команду Свойства. Затем перейдите на вкладку Открыть в программе (рис. 19.6), выберите там Wine и
нажмите кнопку Закрыть.

19.4. Использование Wine
Поскольку мы связали Wine с ЕХЕ-файлами, то для запуска Windows-программы
достаточно щелкнуть на ее ЕХЕ-файле двойным щелчком. Если вы при запуске
программы увидите сообщение, показанное на рис. 19.7, щелкните на ЕХЕ-файле
правой кнопкой мыши, выберите команду Свойства, перейдите на вкладку Права
(рис. 19.8) и установите флажок Разрешить исполнение файла как программы.

Рис. 19.7. Ubuntu: файл не помечен как исполнимый

Рис. 19.8. Ubuntu: изменение прав доступа к файлу

Глава 19. Эмулятор Wine: запуск Windows-игр в Linux

343

После этого все должно заработать нормально — программа запустится. Для примера на рис. 19.9 показан запуск инсталлятора игры Quake III Arena, а на
рис. 19.10 — завершение ее установки.

Рис. 19.9. Ubuntu: установка Quake III Arena в Wine

Рис. 19.10. Ubuntu: установка Quake III Arena в Wine завершена

344

Часть IV. Linux дома и в офисе

Установленную программу можно найти с помощью экрана поиска приложений.
Если вы там ее не найдете, нажмите на этом экране кнопку Обзор диска С:
(рис. 19.11, а), и откроется каталог виртуального диска С:, в который вы установили программу (рис. 19.11, б).

а

б
Рис. 19.11. Ubuntu: а — экран поиска приложений; 6—каталог с установленной игрой

Все, что вам остается — это запустить программу. Я сделал несколько иллюстраций (рис. 19.12-19.14), чтобы вы могли убедиться, что Windows-игры в Linux —
это реальность.
Чтобы игра перешла в полноэкранный режим (рис. 19.15), нужно включить этот
режим в настройках игры, а не в настройках Wine.

Гпава 19. Эмулятор Wine: запуск Windows-игр в Linux

Рис. 19.12. Ubuntu: основное меню игры в Wine

Рис. 19.13. Ubuntu: выбор уровня игры в Wine

345

346

ЧастьIV. Linux дома и в офисе

Рис. 19.14. Ubuntu: игра запущена в Wine

Рис. 19.15. Ubuntu: игра запущена в Wine в полноэкранном режиме

Гпава 19. Эмулятор Wine: запуск Windows-игр в Linux
Параметр Разрешить

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

347
Wine

Некоторые пользователи рекомендуют отключить параметр Разрешить менеджеру
окон управлять окнами Wine. Не стоит этого делать, поскольку потом менеджер
окон Ubuntu не сможет закрыть окно, когда вы нажмете на заветный крестик. А если
Windows-игра зависнет, то, чтобы избавиться от окна, вам придется «убивать» про­
цесс Wine или даже перезагружать Х-сервер.

И в завершение хочется сказать пару слов о производительности Windows-игр
в Linux. Как ни крути, a Wine — это, все-таки, эмулятор, поэтому производительность игры будет ниже, чем в родной ОС. Но на мощных современных компьютерах с 8 Гбайт и более оперативной памяти разницы почти не замечается. Ради эксперимента я запускал Linux в эмуляторе VMware, а затем в работающем из-под
эмулятора Linux запускал эмулятор Wine и уже в нем — Windows-игру. Да, игра
запустилась. Да, тормозило. В стрелялки и гонки не поиграешь, но в стратегию
и в ролевые игры (типа «Diablo»), как оказалось, вполне можно играть даже в двойном эмуляторе, а просто в Wine — и подавно.

ЧАСТЬ V
Системные трюки,
или Linux изнутри
Пятая часть книги посвящена различным «системным трюкам»: перекомпиляции
ядра и передаче ему различных параметров, управлению системами инициализации
и процессами, настройке загрузчиков, межпроцессному взаимодействию— в общем, всему тому, без чего не может и дня прожить настоящий линуксоид. Впрочем,
не нужно думать, что Linux — такая неудобная операционная система, что в ней вы
каждый день будете перекомпилировать ядро, — кстати, когда-то компиляция ядра
была любимым видом «спорта» энтузиастов Linux. Нет, каждый пользователь найдет в Linux то, что искал: кто-то предпочтет спокойно работать, а кто-то не успокоится, пока не узнает, как устроена система изнутри. Таким пользователям и посвящена эта часть книги, хотя некоторые главы (особенно 21 и 25) нужно прочитать
всем пользователям в обязательном порядке.

ГЛАВА

20

Ядро
20.1. Процесс загрузки ядра
Загрузка Linux начинается с вывода сообщений ядра: информационных (об имеющемся оборудовании, поддерживаемых протоколах и технологиях и т. д.) и диагностических (например, об ошибках). Однако современные компьютеры настолько быстры,
что вы просто не успеваете проследить за их появлением на экране. Не беда, все сообщения всегда можно прочитать после загрузки системы с помощью команды:
# dmesg | less
Итак, сначала нам сообщат версию ядра и версию компилятора gcc, с помощью
которого ядро было откомпилировано. Как можно видеть, у нас имеется дистрибутив Fedora 26 и версия ядра 4.11.8-300.fc26.x86_x64:
[ 0.000000] Linux version 4.11.8-300.fc26.x86_64
(mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 7.1.1 20170622 (Red Hat 7.1.1-3)
(GCC) ) #1 SMP Thu Jun 29 20:09:48 UTC 2017

Затем выводится карта физической памяти, предоставляемая BIOS:
[ 0.000000] е820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009f7ff| usable
[ 0.000000] BIOS-e820: [mem 0x0000000000091800-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000ca000-0x00000000000cbfff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003feeffff] usable
[ 0.000000] BIOS-e820: [mem 0x000000003fef0000-0x000000003fefefff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000003feff000-0x000000003fefffff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x000000003ff00000-0x000000003fffffff| usable
[ 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff| reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec0ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff| reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffe0000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active

Часть V. Системные трюки, или Linux изнутри

352

Обратите внимание: функция запрета исполнения вредоносного кода (NX pro­
tection) включена.
Запрет исполнения вредоносного кода
Современные процессоры поддерживают функцию NX-защиты (NX — сокращение от
No execute). Это защита областей памяти, которая используется для предотвращения
распространения вирусов, «троянских коней» и других вредоносных программ. До­
вольно часто вредоносные программы нарочно вызывают переполнение буфера, по­
сле чего записывают свой код в область данных и передают ему управление. Функция
NX-защиты как раз предотвращает развитие такого сценария на аппаратном уровне.
Если ваше ядро и процессор поддерживают NX-бит, то вы увидите примерно такое
сообщение: Using х86 segment limits to approximate NX protection.

Далее ядро проверит наличие DM1 (Direct Media Interface). Правда, этого момента я
не понял. DM1 — это изобретение Intel, и представляет собой шину соединения
южного и северного мостов материнской платы. По сути, DMI должно относиться
только к процессорам Intel, а откуда ядро нашло DMI на материнской плате для
процессора AMD Athlon Х2, мне представить трудно. Видимо, нашелся какой-то
аналог, и ядро сочло его за DMI. В любом случае для нас это не существенно, зато
интересно, что ядро полностью выводит модель материнской платы вместе с версией BIOS, что поможет, если вы потеряли диск с драйверами для Windows ХР ©:
[| 0.000000] DMI present.
[ 0.000000] DMI: MICRO-STAR INTERANTIONAL CO.,LTD MS-7367/MS-7367,
BIOS VI.0 06/11/2007
Далее выводится информация о диапазонных регистрах памяти (MTRR). Впрочем,
если вы не профи в железе, то эта информация вам интересной не покажется:
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-EFFFF uncachable
[ 0.000000] F0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0000000000 mask FF80000000 write-back
[ 0.000000] 1 disabled
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
| 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
| 0.000000] 7 disabled
Полезные ссылки
Допускаю, что если вы не уделяли особого внимания теории аппаратных средств ПК,
то все эти термины (РАЕ, NX, MTRR) вам мало о чем говорят. Описывать их в книге не
вижу смысла, поскольку книга эта о Linux, а не об аппаратных средствах. Но, к счастью,

Гпава 20. Ядро

353

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


http://ru.wikipedia.org/wiki/PAE;



http://ru.wikipedia.org/wiki/NX_bit;



http://ru.wikipedia.org/wiki/MTRR,

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

Следующая строка:
[ 0.0000001 found SMP MP-table at [c00ff780] ff780
скажет нам, что найдена таблица SMP (Symmetrical Multiprocessing) МР
(Multiprocessing). Это означает, что у нас или двухпроцессорный компьютер, или
у нашего компьютера двухъядерный процессор.
Далее ядро сообщает объем оперативной памяти:
[ 0.000000] 1163MB HIGHMEM available.
[| 0.000000] 883MB LOWMEM available.
Складываем, округляем результат до ближайшей степени двойки и получаем
2048 Мбайт, или 2 Гбайт, — вроде бы, все правильно.
Мы не будем далее рассматривать абсолютно все сообщения ядра — их слишком
много, а обратим внимание только на значимые.
Следующая строка сообщает нам параметры ядра, которые были переданы при
загрузке системы:
[ 0.000000] Kernel command line: BOOT_IMAGE= /vmlinuz-4.11.8-300.fc26.x86_x64
root=/dev/sdal ro rhgb quiet LANG=ru_RU.UTF-8
Параметр ro говорит ядру о необходимости смонтировать корневую файловую систему в режиме «только чтение» (в процессе загрузки она будет перемонтирована
в режим «чтение/запись» — rw). Корневая файловая система задается меткой label .
Помните, мы говорили о способах адресации разделов? Чтобы идентифицировать
раздел, можно указать его короткое имя — вроде /dev/sda1, длинное имя или метку.
Fedora сейчас использует как раз первый вариант. Впрочем, способ указания имени
в зависимости от версии Fedora различен, — в более ранних версиях разделы идентифицировались как раз по последнему варианту (метка), а в 26-й версии, видимо,
разработчики решили не усложнять пользователям жизнь и используют обычные
имена. Имя устройства зависит и от разметки диска. Например, при использовании
LVM имя root-устройства может выглядеть так:
root=/dev/mapper/fedora-root rd.Ivm.lv=fedora/root rd.Ivrn.lv=fedora/swap

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

354

Часть V. Системные трюки, или Linux изнутри

ские сообщения, а не графический индикатор загрузки, тогда уберите параметр
rhgb — это можно сделать в настройках загрузчика Linux (см. главу 21).
Параметр quiet вообще выключает сообщения, выводимые ядром, — если ядру
передан этот параметр, сообщений ядра при загрузке системы вы вообще не увидите. Зато их можно потом получить командой dmesg.
Следующая серия значимых сообщений—
точнее, первого ядра процессора:

инициализация

первого

процессора,

[ 0.000000] Initializing СРU#0
[ 0.000000] allocated 8387584 bytes of pagecgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don’t want memory cgroups
[ 0.000000] Initializing HighMem for node 0 (000373fe:0007ffd0)
И подробная информация об использовании памяти:
[ 0.000000] Memory: 2051560k/2096960k available (4189k kerne! code, 44948k reserved,
2691k data, 592k init, 1191752k highinem)
Итак, у нас «всего» 2 096 960 Кбайт, из которых доступно 2 051 560 Кбайт, а в
скобках приведен отчет о том, куда ядро израсходовало память: сколько килобайт
зарезервировано для кода ядра, данных и т. д.
После этого вы увидите информацию о выделении виртуальной памяти ядра:
[ 0.000000] virtual kernel memory layout:
[ 0.000000] fixmap : 0xffa95000 — OxfffffOOO (5544 kB)
[ 0.000000] pkmap : 0xff400000 — 0xff800000 (4096 kB)
[ 0.000000] vmalloc : 0xf7bfe000 — OxfOfeOOO (120 MB)
[ 0.000000] lowmem : 0xc0000000 — 0xf73fe000 ( 883 MB)
[ 0.000000] .init: 0xc0ab9000 — 0xc0b4d00Q ( 592 kB)
[ 0.000000] .data : 0xc081754a — 0xc0ab8200 (2691 kB)
[ 0.000000] .text: 0xc0400000 — 0xc081754a (4189 kB)
Пропустим пару бесполезных строк и перейдем к частоте процессора и значению
BogoMIPS:
[ 0.000000] tsc: Detected 2194.599 MHz processor.
[ 0.000127] Calibrating delay loop (skipped) preset value.. 4389.19 BogoMIPS (lpj=2194599)
Из всего этого можно сделать вывод, что процессор у нас частотой 2194 МГц и
производительностью в 4389,19 BogoMIPS.
B o g o MIPS
Ядро вычисляет производительность процессора в так называемых BogoMIPS. Здесь
MIPS— аббревиатура от Millions of Instructions Per Second, a Bogo— происходит от
bogus (фальшивый, поддельный). Префикс Bogo ставит под сомнение актуальность
вычисленной ядром величины, поэтому Линус Торвальдс (кстати, BogoMIPS — это его
изобретение) и назвал ее фальшивой. В Интернете можно найти довольно точное оп­
ределение BogoMIPS: «сколько миллионов раз в секунду процессор может ничего не
делать». О производительности процессора по BogoMIPS можно судить лишь косвен­

Гkава 20. Ядро

355

но. Понятно, что чем производительнее процессор, тем больше будет сделано «пус­
тых» операций, но одно дело, когда процессор просто ничего не делает, и совсем дру­
гое, когда он работает под «нагрузкой», т. е. выполняет арифметические и мультимедий­
ные инструкции. Например, Duron 1,6 ГГц показывал результат в 3193,85 BogoMIPS, а
Athlon Х2 4200 — «всего» 4389,19, несмотря на большую частоту и два ядра. На прак­
тике же Athlon Х2 намного быстрее, чем Duron 1,6 ГГц.

Сразу после вычисления бесполезных BogoMIPS инициализируется система контроля доступа SELinux. SELinux может быть или выключена, или работать в одном
из двух режимов: принудительном (permissive) или режиме предупреждений. В нашем случае SELinux инициализируется и переходит в принудительный режим:
[ 0.004114] Security Framework initialized
[ 0.004126] SELinux: Initializing.
[ 0.004145] SELinux: Starting in permissive mode
С и с т е м а у п р а в л е н и я д о с т у п о м SEL i n u x
Описание системы управления доступом SELinux вы найдете в папке Дополнения со­
провождающего книгу электронного архива (см. приложение).

Еще через несколько строк вы увидите полное наименование процессора:
CPU0: AMD Athlon(tm) 64 Х2 Dual Core Processor 4200+ stepping 02
Далее ядро Linux перейдет к инициализации второго процессора или второго ядра
процессора (в зависимости от того, какая у вас машина: многопроцессорная или
многоядерная):
[ 0.004999] Initializing СРU#1
[ 0.093074] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.093103] Brought up 2 CPUs
[ 0.093106] Total of 2 processors activated (8778.70 BogoMIPS).
Потом будет выведена дата и время загрузки:
[ 0.095261] RTC time: 10:15:50, date: 01/13/12
А затем — строки, относящиеся к инициализации шины PCI и распределению PCIресурсов (их мы подробно рассматривать не станем).
Далее я позволю себе еще существеннее сократить представление вывода ядра,
поскольку полный вывод занимает целых 18 страниц, и я не думаю, что вам будет
интересна каждая его строчка. Вместо этого мы рассмотрим, как ядро предоставляет информацию о жестком диске, приводе DVD, мышке, клавиатуре и некоторых
других устройствах.
Начнем с жесткого диска (устройство /dev/sda):
[ 1.641443] atal.00: ATA-7: SAMSUNG HD251HJ, 1AC01113, max UDMA7
[ 1.641446] atal.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 1.641452] atal.00: SB600 AHCI: limiting to 255 sectors per cmd
[ 1.647882] atal.00: SB600 AHCI: limiting to 255 sectors per cmd
[ 1.647886] atal.00: configured for UDMA/133

356

Часть V. Системные трюки, или Linux изнутри

[ 1.648134] scsi 0:0:0:0: Direct-Access АТА SAMSUNG HD251HJ 1АС0 PQ: О ANSI: 5
[ 1.648334] sd 0:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB)
На компьютере установлен жесткий диск (SATA) небольшого размера— всего
250 Гбайт, производства Samsung. Ядро выводит полную информацию о диске,
включая модель, режшм работы и геометрию.
А

вот информация о DVD-приводе LG (устройство /dev/srO):

[ 2.577336] ata5: РАТА max UDMA/100 cmd 0xlf0 ctl 0x3f6 bmdma 0xff00 irq 14
[ 2.577340] ata6: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xff08 irq 15
[ 2.731559] ata5.01: ATAPI: HL-DT-ST DVDRAM GSA-4167B, DL11, max UDMA/33
[ 2.737449] ata5.01: configured for UDMA/33
[ 2.743264] scsi 4:0:1:0: CD-ROM HL-DT-ST DVDRAM GSA-4167B DL11 PQ: 0 ANSI: 5
[ 2.747420] sr0: scsi3-mmc drive: 78x/78x writer dvd-ram cd/rw xa/form2 cdda tray
[ 2.747423] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 2.747567] sr 4:0:1:0: Attached scsi CD-ROM sr0
Информация об USB-мышке выводится так:
[ 2.194399] input: USB Optical Mouse as /devices/pci0000:00/0000:00:13.2/usb4/4-2/42:1.0/input/input2
[ 2.194609] generic-usb 0003:1BCF:0007.0001: input,hiddev0,hidraw0: USB HID vl.10
Mouse [USB Optical Mouse] on usb-0000:00:13.2-2/input0
А вот клавиатура самая обычная (PS/2):
[ 2.187238] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
[ 2.207257] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input3
Также может выводиться информация о различных периферийных устройствах —
например, о Web-камере:
[ 58.516805] Linux video capture interface: v2.00
[ 58.518197] udevd[508]: renamed network interface eth0 to p6pl
[ 59.206723] uvcvideo: Found UVC 1.00 device Webcam C110 (046d:0829)
Информация о сетевой плате (устройство eth0):
[ 57.002826] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 57.002847] r8169 0000:02:00.0: PCI INT A -> GSI19 (level, low) -> IRQ 19
[ 57.002877] r8169 0000:02:00.0: setting latency timer to 64
[ 57.002935] r8169 0000:02:00.0: irq 42 for MSI/MSI-X
[ 57.004154] r8169 0000:02:00.0: ethO: RTL8168b/8111b at 0xf8410000, 00:19:db:c7:el:b5,
XID 18000000 IRQ 42
На устройство /dev/sda7 добавлен своп-раздел размером 530 104 Кбайт:
[ 99.788922] Adding 530108k swap on /dev/sda7. Priority:-! extents:! across:530108k

357

Глава 20. Ядро

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

20.2. Параметры ядра
Параметры ядра позволяют управлять его поведением. Как уже говорилось, мы
можем передать ядру параметры непосредственно при загрузке, используя меню
загрузчика, или же прописать параметры ядра в файлах конфигурации загрузчика.
Первый случай подходит для «одноразового» использования того или иного параметра, а второй — если параметр нужен для корректной работы системы. Поэтому,
чтобы не указывать его каждый раз при загрузке Linux, намного проще прописать
его в файле конфигурации загрузчика.
Если вы используете загрузчик GRUB/GRUB2, то передать параметры ядру можно
так: сначала надо выбрать образ (метку), а затем нажать клавишу — появится
поле, в котором вы можете отредактировать параметры ядра, указанные в файлах
конфигурации загрузчика.
Внешний вид меню загрузчика GRUB/GRUB2 определяется его конфигурацией: на
рис. 20.1, а показано, как выглядит меню загрузчика GRUB2 в Ubuntu 17.04, а на
рис. 20.1, б — в Fedora 26. Как видите, в разных дистрибутивах меню может выглядеть по-разному.

Рис. 20.1. Меню загрузчика GRUB2: а — в Ubuntu 17.04

358

Часть V. Системные трюки, или Linux изнутри

Рис. 20.1. Меню загрузчика GRUB2: б— в Fedora 26

На рис. 20.2, а показан процесс редактирования параметров ядра в Ubuntu. Параметры ядра указываются после служебного слова linux — вы можете добавить свои
собственные параметры или же отредактировать имеющиеся. На рис. 20.2, б показан процесс редактирования параметров ядра в Fedora 26. Принцип, как видите, тот
же, но используется другая версия ядра.

Рис. 20.2. Редактирование параметров ядра: а — в Ubuntu 17.04

359

Глава 20. Ядро

Рис. 20.2. Редактирование параметров ядра: б— в Fedora 26

После редактирования параметров ядра для продолжения загрузки нужно нажать
клавишу или комбинацию клавиш +. Помните, что переданные
таким образом ядру параметры не сохраняются. О том, как сохранить параметры
ядра в файле конфигурации загрузчика, мы поговорим в главе 21.
Параметров ядра очень много, и чтобы не перегружать вас излишней информацией,
в табл. 20.1 собраны самые полезные.
Таблица 20.1. Некоторые параметры ядра Linux
Параметр

Описание

root=устройство

Позволяет указать корневую файловую систему.
Например, root=/dev/sda5

rootdelay=N

Ждать N секунд перед монтированием корневой файловой
системы

rootflags=флаги

Задает флаги корневой файловой системы (см. главу 4)

rootfstype=тип

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

rootwait

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

ro

Монтирует корневую файловую систему в режиме "только чтение".
Используется по умолчанию. После проверки файловой системы
программой fsck корневая файловая система перемонтируется

в режим rw

358

Часть V. Системные трюки, или Linux изнутри
Таблица 20.1 (продолжение)

Параметр

Описание

rw

Монтирует корневую файловую систему в режиме «чтение/запись».
При использовании этого параметра нельзя запускать программы
типа fsck. Перед запуском fsck нужно перемонтировать корневую
файловую систему в режиме ro

mem=

Определяет объем памяти, установленной в компьютере. Иногда
ядро неправильно определяет объем оперативной памяти. Вы
можете помочь ему в этом, указав параметр mem. Только указывать
его нужно правильно, например:

mem=768M
После числа обязательно должна следовать буква M, иначе ядро
«подумает», что объем оперативной памяти 768 байтов.
В современных дистрибутивах дела с памятью обстоят лучше.
Скорее всего, параметр mem указывать вы не будете, но есть шанс
столкнуться с иной неприятной ситуацией. Компьютерная индуст­
рия не стоит на месте, и вы можете купить компьютер с оператив­
ной памятью более 4 Гбайт, а потом обнаружить, что ваш дистри­
бутив видит только первые 4 Гбайт. В этом случае вам нужно пере­
компилировать ядро с поддержкой РАЕ (Physical Address Extension)
или же установить ядро, изначально поддерживающее РАЕ

init =

Позволяет задать программу инициализации. По умолчанию
используется программа /sbin/init, но вы можете задать другую

reboot=

Позволяет задать тип перезагрузки компьютера. Возможные значе­
ния: cold и warm, т. е. «холодная» или «горячая» перезагрузка

single

Однопользовательский режим для администрирования системы —
например, в случае отказа

nodmraid

Отключает программные RAID-массивы, организованные на уровне
BIOS

noapic

Полезен, если вы при загрузке увидите сообщение:
kernel panic — not syncing: IO-APIC + timer doesn't work! Подробнее
об этом параметре вы можете прочитать по адресу:
http://www.d kws.org. ua/phpbb2//viewtopic.php?topic=2973&forum=5

nopcmcia

Отключает PCMCIA-карты (для ноутбуков). Полезен, если вы
подозреваете, что у вас проблемы с PCMCIA-картой

nodma

Отключается DMA (Direct Memory Access, прямой доступ к памяти)
для всех IDE-устройств

noapm

Отключает АРМ (Advanced Power Management) — расширенное
управление питанием

nousb

Отключает поддержку USB

noscsi

Отключает поддержку SCSI

pci=noacpi

Не использовать ACPI для управления PCI-прерываниями

apci=off

Полностью отключает ACPI (Advanced Configuration and Power
Interface). Полезен на некоторых ноутбуках, когда не удается
установить (а потом загрузить) Linux

361

Гпава 20. Ядро

Таблица 20.1 (окончание)
Параметр

Описание

edd=off

Отключает EDD (Enhanced Disk Drive). Если при загрузке Linux вы
видите сообщение Probing EDD, и загрузка на этом останавлива­
ется, тогда вам поможет параметр ядра edd=off

boot delay=N

Сообщения ядра выводятся так быстро, что вы не успеваете их
прочитать? С помощью этого параметра вы можете установить
задержку в N секунд перед выводом следующего сообщения ядра

elevator=планировщик

Позволяет выбрать планировщик ввода/вывода. Подробно о нем
мы поговорим в главе 30

vga=peжим

Позволяет задать VGA-режим. Подробнее см. файл
Documentation/svga.txt. Можно также задать значение ask, чтобы
ядро спросило, какой режим нужно использовать:
vga=ask

quiet

«Тихий» режим, отключает большинство сообщений ядра

Дополнительные параметры ядра
Повторюсь: у ядра очень много параметров, и нет смысла приводить здесь их все. Па­
раметры, с которыми, возможно, вам доведется столкнуться на практике, представ­
лены в табл. 20.1. С дополнительными параметрами ядра вы можете ознакомиться по
адресу: http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt.

20.3. Компиляция ядра в дистрибутиве Ubuntu
Linux, в отличие от многих других операционных систем, позволяет обычному
пользователю проникнуть в святая святых— в собственное ядро. Любой желающий может загрузить исходные коды ядра и откомпилировать ядро операционной
системы.
Вообще, перекомпиляция ядра — весьма специфическая операция. Раньше ее приходилось делать довольно часто — практически каждый Linux-пользователь со
стажем хотя бы раз в жизни перекомпилировал ядро. Зачем? Например, чтобы
включить дополнительные функции. Или наоборот, выключить поддержку некоторых устройств и некоторые ненужные функции — так ядро окажется компактнее, и
система будет работать быстрее.
Сейчас я уже и не знаю, зачем может понадобиться перекомпиляция ядра. Это настолько в наше время редкая операция, что даже исходные коды ядра перестали
поставляться на дистрибутивных дисках, — исходники ядра теперь можно установить из репозитория дистрибутива или же скачать с сайта www.kernel.org.
Далее в этом разделе будет рассмотрена сборка ядра на примере дистрибутива
Ubuntu 17.04. Но прежде чем продолжить, хочу отметить, что для компиляции ядра
вам понадобится довольно много дискового пространства. Во-первых, нужно установить дополнительное программное обеспечение (1,65 Гбайт). Во-вторых, скачать

362

Часть V. Системные трюки, или Linux изнутри

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

20.3.1. Установка дополнительных пакетов
Первым делом нужно установить пакеты, которые нам понадобятся для компиляции ядра (рис. 20.3):
$ sudo apt-get install git build-essential ncurses-base ncurses-dev fakeroot
kernel-package xz-utils

Рис. 20.3. Ubuntu 17.04: установка дополнительного программного обеспечения

20.3.2. Загрузка исходных текстов ядра
Затем надо загрузить исходные тексты ядра. Для этого введите команду:
$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.8.tar.xz

На момент написания этих строк версия ядра 4.12.8 была последней, хотя, возможно, уже появилась и новая версия. Просто откройте браузер и просмотрите содержимое
каталога
https://cdn.kernel.Org/pub/linux/kernel/v4.x/.
Впрочем,
если
вы сделаете, как здесь предлагается, то все равно установите более новую версию
ядра, чем 3.19, которую предлагает Ubuntu 17.04 по умолчанию.

363

Глава 20. Ядро

Рис. 20.4. Ubuntu 17.04: загрузка исходников ядра

После загрузки архива нужно его распаковать:
$ tar xvf linux-4.12.8.tar.xz
$ cd linux-4.12.8

20.3.3. Настройка ядра
Настало время настроить ядро— создать свою собственную его конфигурацию.
Ведь вы перекомпилируете ядро не просто так — наверняка вам нужно включить
дополнительные возможности или же, наоборот, отключить какие-либо функции,
чтобы сделать ядро компактнее. Впрочем, если вы хотите откомпилировать ядро
эксперимента ради, путеводителем вам послужит табл. 20.2, в которой описаны
основные разделы опций ядра.
Итак, поскольку вы уже последней выполненной командой перешли в каталог linux4.12.8, введите теперь команды:
$ ср /boot/config-$(uname -г) .config
$ make menuconfig
Первая команда копирует текущую конфигурацию ядра в файл .config, а вторая —
запускает конфигуратор ядра. Существует и графическая версия конфигуратора,
но, на мой взгляд, make menuconfig — наиболее удобный (рис. 20.5).
Меню конфигуратора содержит как разделы с опциями (куда можно попасть, нажав
клавишу с подсвеченной в меню буквой или клавишу на выделенном разделе), так и отдельные опции конфигурации. Назначение разделов и опций корневого раздела конфигуратора ядра представлены в табл. 20.2.

364

Часть V. Системные трюки, или Linux изнутри

Рис. 20.5. Ubuntu 17.04: конфигуратор make menuconfig

Раздел/опция

Таблица 20.2. Обзор корневого раздела конфигуратора ядра
Описание

64-bit kernel

Если включена, скомпилированное ядро будет 64-битным

General setup

Общие параметры — например, поддержка своп-памяти, межпро­
цессного взаимодействия System V, Sysctl. Если не знаете, для чего
нужна та или иная опция, выделите ее и нажмите клавишу .
А уж если не знаете английского, то до его изучения лучше опции
не выключать!
Поддержка загружаемых модулей. Драйверы устройств в Linux раз­
работаны в виде модулей ядра. Здесь вы можете указать, нужна ли
вам поддержка модулей. Отключать поддержку модулей на обыч­
ных машинах не рекомендуется.

Enable loadable module
support

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

Enable the block layer

В этом разделе вы можете включить поддержку больших блочных
устройств размером более 2 Тбайт

Processor type
and features

Здесь вы можете выбрать тип вашего процессора
и включить/выключить различные функции процессора

Глава 20. Ядро

365
Таблица 20.2 (окончание)

Раздел/опция

Описание

Power management and
ACPI options

Опции управления питанием (ACPI, АРМ)

Bus options

Здесь вы можете включить/выключить поддержку различных
системных шин, а также определить их функции

Executable file formats/
Emulations

Параметры поддержки форматов исполнимых файлов

Networking support

Сетевые опции ядра

Device drivers

Драйверы устройств. Здесь вы можете определить, какие
устройства должна поддерживать ваша система, а какие — нет

Firmware drivers

Драйверы микропрограммного обеспечения (поддержка различных
BIOS)

File systems

Здесь вы можете определить, какие файловые системы должна
поддерживать ваша система, а какие — нет

Kernel Hacking

Различные параметры, относящиеся непосредственно к ядру

Security options

Параметры безопасности

Cryptographic API

Параметры криптографии (поддержка различных алгоритмов
шифрования данных)

Virtualization

Параметры виртуализации

Library routines

Поддержка различных библиотечных функций (но если заглянуть
в этот раздел, то вы увидите, что все эти функции связаны
с вычислением контрольной суммы CRC)

Опции ядра могут быть либо включены, либо выключены. Если опция выключена,
то ее код исключается из ядра (не будет учитываться при его компиляции), а если — включена, то код ее будет включен в состав ядра. Но есть еще третье состояние опции — М. Это означает, что опция будет включена в ядро как модуль. После
сборки ядра и модулей все опции, скомпилированные в режиме М, будут «лежать»
на диске, пока не понадобятся ядру. А как только это произойдет, нужный модуль
будет загружен.
Для включения той или иной опции нужно выделить ее и нажать клавишу , для
отключения — выделить и нажать клавишу . Если опция нужна как модуль
(как модуль можно включить не все опции), нажмите клавишу .
При выходе из конфигуратора он спросит вас, хотите ли вы сохранить изменения
в конфигурации ядра (рис. 20.6)? Конечно, хотим!

366

Часть V. Системные трюки, или Linux изнутри

Рис. 20.6. Ubuntu 17.04: сохранить изменения в конфигурации ядра?

20.3.4. Компиляция ядра
После настройки ядра конфигуратор сообщит, что для построения ядра нужно
ввести команду make (рис. 20.7), а для вывода справки — make help.
Спешить с вводом команды make мы пока не будем — это можно сделать всегда.
Гораздо правильнее сначала очистить дерево исходного кода и сбросить параметры
kernel-package, а затем собрать ядро, используя команду fakeroot, что позволит откомпилировать ядро от имени обычного пользователя, а не root (рис. 20.8 и 20.9):
$ make-kpkg clean
$ fakeroot make-kpkg —initrd —revision=l.0.DEN kernel_image kernel_headers

Разберемся, какие параметры мы передаем команде make-kpkg (именно она компилирует ядро):


--initrd — создает initrd-образ;



--revision — версия вашего ядра (можете указать здесь все, что вам хочется);



kernei image— создает Debian-пакет, содержащий образ ядра и все модули,
сконфигурированные в файле .config (файл конфигурации ядра, созданный
командой make menuconfig);

□ kernei headers — создает Debian-пакет, содержащий образ заголовков ядра Linux.
Позволю себе еще несколько замечаний относительно предлагаемого мною решения:
□ мы не просто компилируем ядро на этой машине, как нам предложил конфигуратор (если бы мы ввели команду make), а создаем пакет с ядром, который может

367

Глава 20. Ядро

Рис. 20.7. Конфигурация сохранена

быть установлен на нескольких однотипных машинах, где нужно такое же ядро.
Это существенно экономит время, поскольку не придется «собирать» ядро на
каждой из машин;
□ мы используем команду fakeroot, чтобы откомпилировать ядро от имени обычного пользователя, а не root. Если вы заметили, мы также не задействуем каталог
/usr/src/linux, как требовалось ранее. Все действия происходят в домашнем каталоге пользователя, поэтому собрать собственное ядро может любой пользователь, и для этого ему не нужны права root, и он даже не должен быть вписан
в файл sudoers. По сути, права root понадобятся вам только при установке полученных пакетов.
Время, необходимое для сборки ядра, зависит от производительности компьютера
и конфигурации ядра. Так, на четырехъядерной машине с 4 Гбайт оперативной памяти компиляция ядра заняла около двух часов, а на двухъядерной машине
с 2 Гбайт оперативки — примерно 4,5 часа. Если машина слабее, то процедура эта,
соответственно, займет больше времени. Так что, запасайтесь терпением. В любом
случае, у вас есть как минимум час свободного времени, чтобы заняться чем-либо
полезным.
По окончании процесса компиляции в вашем домашнем каталоге будет создано два
Debian-пакета: linux-headers и linux-image. Точное название этих пакетов зависит от
версии ядра, архитектуры и указанного названия релиза.
Файлы получились довольно большими: пакет с ядром (linux-image) — 42 Мбайт,
а пакет с заголовками (linux-headers) — 770 Мбайт.

368

Часть V. Системные трюки, или Linux изнутри

Рис. 20.8. Ubuntu 17.04: команда make-kpkg clean в действии

Рис. 20.9. Ubuntu: компиляция ядра

Глава 20. Ядро

369

Сначала нужно установить пакет linux-’neaders, а затем — linux-image:
$ cd ~
$ sudo dpkg -i iinux-headers-4.12.8_1.0.DEN_i386.deb
$ sudo dpkg -i linux-image-4.12.8_1.0.DEN_i386.deb
После чего перезагрузить компьютер:
$ reboot
Чтобы убедиться, что загрузилось именно скомпилированное ядро, введите команду:
$ uname -а
В выводе команды должна присутствовать примерно такая строка:
Linux den-vm 4.12.8-1.0.DEN #1 SMP Thu Aug 17 23:33:44 UTC 2017 \86_x64 GNU/Linux

Поздравляю! Вы успешно справились с перекомпиляцией ядра.
И в завершение этого раздела мне бы хотелось вернуться к разговору о дисковом
пространстве, необходимом для компиляции ядра. Ранее было сказано, что для
сборки ядра его потребуется «довольно много». На самом деле, если до компиляции ядра объем занятого на диске пространства составлял 5,5 Гбайт, то после
компиляции эта величина возросла до 18 Гбайт,— получается, что 12,5 Гбайт понадобилось на компиляцию ядра, и из них только 1,65 Гбайт — на дополнительные
пакеты.
Соответственно, файловая система /home должна содержать примерно 10,9 Гбайт
доступного пространства:
18 Гбайт (после компиляции) - 5,5 Гбайт (до компиляции) - 1,65 Гбайт (пакеты,
установленные в корневой каталог) = (примерно) 10,85 Гбайт
и все это дисковое пространство должно быть доступно в вашем домашнем каталоге.
Именно поэтому после компиляции ядра для освобождения дискового пространства вам нужно перейти в каталог linux-4.12.8 и ввести команду:
$ make-kpkg clean
Эта команда очищает дерево исходного кода от скомпилированных файлов — они
нам более не нужны, поскольку уже включены в состав созданных пакетов. После
очистки дерева исходников используется всего 9 Гбайт, но никак не 18.

20.4. RT-ядро
Помню, как-то в качестве операционной системы установил QNX — систему реального времени (RT, Real Time). Работала она очень быстро, еще бы — реакции от
компьютера можно было ожидать в реальном времени. Существует очень простой
способ превратить Linux в такую операционную систему, и есть надежда, что после
этого Linux будет реагировать в предсказуемое время на появление непредсказуе­
мых событий — это одно из определений системы реального времени.

370

Часть V. Системные трюки, или Linux изнутри

Что такое система реального времени, мы разбираться здесь и сейчас не станем. Если вы про нее ничего не знаете, и не уверены, нужна ли она вам, посмотрите
в Википедии:
http://ru.wikipedia.org/wiki/Операционная_система_реального_времени.
Я лишь расскажу, как превратить в систему реального времени Linux. Оказывается,
все очень просто. Запустите менеджер пакетов и найдите RT-ядро. В зависимости
от дистрибутива пакет с ядром реального времени может называться по-разному:
например, в ALT Linux он называется kemel-image-rt-up, в Ubuntu — linux-image-rt.
Просто установите этот пакет и перезагрузите компьютер, а при перезагрузке
выберите новое ядро.
Если результат вас не впечатлил, тогда загрузите исходный код ядра и перекомпилируйте его. При компиляции ядра в menuconfig включите следующие опции:
□ General setup - Choose SLAB allocator;
□ Block layer -- Default I/O scheduler (CFQ);
□ Processor type and - [*] Tickless System (Dynamic Ticks);
□ Processor type and features
□ Processor type and features

RCU implementation type: (Preemptible RCU);

Preemption Mode (Complete Preemption

(Real-Time)).
Если вы уже настраивали ядро, то наверняка все эти опции видели. Правда, от системы с RT-ядром вы не всегда получите желаемый результат. Мне приходилось
видеть в Интернете отзывы, что система после установки этого ядра «тормозила»
еще больше, чем с обычным ядром. На чудо надеяться тоже не нужно — однопроцессорная машина не заработает под управлением RT-ядра быстрее.

20.5. Особенности компиляции ядра
в других дистрибутивах Linux
В этой главе мы описали сборку собственного ядра в дистрибутиве Ubuntu. Инструкции, описанные здесь, действительны для любого дистрибутива, но есть некоторые нюансы.
Например, в Gentoo в каталоге /boot не появятся файлы initrd (диск в памяти, т. е.
RAM Disk), пока вы не введете команду:
# genkernel initrd
Подробно процесс сборки ядра в этом дистрибутиве описан на следующей странице (кстати, на русском языке): http://www.gentoo.org/doc/ru/genkernel.xml.
С особенностями компиляции ядра в Fedora можно познакомиться по адресу:
https://fedoraproject.org/wiki/Building_a_custom_kernel/ru.
Особенности сборки ядра в openSUSE описаны на страницах:
□ http://ru.opensuse.org/How_To_Compile_A_Kernel_-_The_SuSE_Way;

□ http://www.bloged.org/2008/10/opensuse-11.html.

ГЛАВА 21

Загрузчики Linux
21.1. Основные загрузчики
Главное назначение загрузчика — запуск выбранной пользователем операционной
системы. Наиболее популярными загрузчиками сейчас являются GRUB и GRUB2,
которые мы здесь подробно рассмотрим.
З а г р у з ч и к LILO
В старых дистрибутивах по умолчанию использовался загрузчик LILO, описание кото­
рого из этого издания исключено. Впрочем, если он вам зачем-то нужен, информацию
о нем всегда можно найти в Интернете. Кроме того, описывающий загрузчик LILO (раз­
дел главы 21 из 2-го издания книги) вы найдете в папке Дополнения сопровождающе­
го книгу электронного архива (см. приложение).

Кроме LILO и GRUB/GRUB2 некоторые дистрибутивы могут включать собственные загрузчики— например, в ASPLinux использовался ASPLoader. Подобные
загрузчики мы также рассматривать не станем, поскольку в большинстве случаев
в дистрибутивах, использующих собственные загрузчики, имеется возможность
установки GRUB/GRUB2 или того же LILO.
Время не стоит на месте. В свое время загрузчик GRUB (GRand Unified Bootloader)
пришел на смену LILO, поскольку последний не поддерживал загрузку с разделов,
начинающихся после 1024-го цилиндра. Об этой проблеме знал тогда, наверное,
каждый Linux-пользователь, — ведь всего несколько лет назад, пока все дистрибутивы не перешли на GRUB, она была весьма актуальной. Загрузчик GRUB оказался
также более гибким, чем LILO, — благодаря иной схеме загрузки операционных
систем GRUB «понимал» больше файловых систем, нежели LILO, а именно:
FAT/FAT32, ext2, ext3, ReiserFS, XFS, BSDFS и др.
Точно такая же участь постигла и GRUB — на его место пришел GRUB2, умеющий
загружаться с файловой системы ext4, что просто-таки необходимо современному
дистрибутиву. GRUB2 — это не просто набор патчей для GRUB, а полностью новая разработка, созданная с «нуля». Именно поэтому у GRUB2 совершенно другой
формат конфигурационного файла (хотя лучше бы оставили старый).
Разработка загрузчика GRUB сейчас полностью прекращена, к нему выпускаются
лишь патчи. Впрочем, даже в 2017 году можно установить обычный GRUB, если

372

Часть V. Системные трюки, или Linux изнутри

очень хочется, — он присутствует в составе популярных дистрибутивов, хотя по
умолчанию в них используется GRUB2.

21.2. Конфигурационные файлы
GRUB и GRUB2
21.2.1. Конфигурационный файл GRUB
Конфигурационным файлом GRUB является файл /boot/grub/grub.conf (в старых версиях: /boot/grub/menu.lst (впрочем, menu.1st в новых версиях— это ссылка на файл
grub.conf). Рассмотрим пример этого файла (листинг 21.1).
Редактирование конфигурационных файлов загрузчика
Думаю, не стоит и говорить о том, что конфигурационные файлы загрузчика нужно ре­
дактировать только с правами root. В некоторых дистрибутивах конфигурационный
файл grub.conf обычный пользователь не может даже просмотреть. И это правильно,
поскольку в этом файле могут содержаться незашифрованные (если администратор
поленился их зашифровать) пароли загрузчика.

# Следующие параметры будут описаны далее:
boot=/dev/hda
default=0
timeout=10
fallbacks
splashimage= (hd0, 1) /grub/mysplash.xpm.gz
# по умолчанию скрывает меню (для,того чтобы увидеть меню,
# нужно нажать )
#hiddenmenu
# Главное загрузочное устройство GRUB (можно не указывать)
#groot=(hd0, 1)
# Опции загрузчика по умолчанию (более подробно см. man menu.lst)
# defoptions=quiet splash
# опции ядра по умолчанию
# kopt=root=/dev/hda2 rо
# Предпочитаемые цвета
#color cyan/blue white/blue
title MDK
root (hd0,l)

Гпава 21. Загрузчики Linux

373

kernel /vmlinuz-2.6.14-1.1263 го root=/dev/hda2
initrd /initrd-2.6.14-1.1263.img
title WinXP
rootnoverify (hd0,0)
makeactive
chainloader+1
Различия в именах устройств
Как вы уже успели заметить, в листинге 21.1 (параметр boot и далее) до сих пор ис­
пользуются устаревшие номера устройств /dev/hd*, в то время, когда во многих со­
временных дистрибутивах даже IDE-диски именуются как /dev/sd* (исключение могут
составить разве что некоторые дистрибутивы, например openSUSE, где даже в со­
временных версиях используется обычный GRUB, а не GRUB2). Так что, здесь все
правильно— во времена использования GRUB еще применялась старая схема име­
нования жестких дисков. Поэтому если вам попался дистрибутив с загрузчиком GRUB,
то в большинстве случаев IDE-диски будут называться /dev/hd*. В тех же современных
дистрибутивах, где используется загрузчик GRUB2, IDE-диски называются /dev/sd*.

При работе c GRUB вам поначалу будет трудно разобраться с именами разделов
диска. GRUB вместо привычных /dev/hd* (или /dev/sd* — для SCSI-дисков) использует свои собственные имена. Перевести имя /dev/hd* в имя в формате GRUB просто. Во-первых, опускается /dev/. Во-вторых, устройства отсчитываются не с буквы
«а», как в Linux, а с нуля. Разделы на дисках отсчитываются не с единицы, а тоже
с нуля, причем номер раздела указывается через запятую. Потом все имя берется
в скобки. Так, раздел /dev/hda1 в GRUB будет выглядеть как (hd0,0), а раздел
/dev/hdb2— как (hd 1,1). Впрочем, об именах разделов в GRUB мы еще поговорим,
но чуть позже, а сейчас разберемся со структурой файла /boot/grub/grub.conf.
Параметр boot указывает загрузочное устройство, а параметр default — загрузочную метку по умолчанию. Метка начинается параметром title и продолжается до
следующего title. Нумерация меток начинается с 0. Параметр timeout задает количество секунд, по истечении которых будет загружена операционная система по
умолчанию.
Параметр default полезно использовать с параметром fallback. Первый задает операционную систему по умолчанию, а второй — операционную систему, которая
будет загружена в случае, если с загрузкой операционной системы по умолчанию
произошла ошибка.
Задать графическое изображение позволяет параметр spiashimage. Чуть позже мы
разберемся, как самостоятельно создать такое изображение.
Параметр rootnoverify указывается для Windows (точнее, для всех операционных
систем не типа Linux). Параметр chainioader указывается для операционных систем, поддерживающих цепочечную загрузку. Если Windows на вашем компьютере
установлена в неактивном разделе, с которого Windows загружаться не может,
перед параметром chainioader нужно указать параметр makeactive.

374

Часть V. Системные трюки, или Linux изнутри

Рис. 21.1. Fedora: редактирование файла grub.conf

На рис. 21.1 изображен процесс редактирования конфигурационного файла загрузчика grub.conf.

21.2.2. Конфигурационный файл GRUB2
Основным конфигурационным файлом загрузчика GRUB2 является файл /boot/grub/
grub.cfg. Он довольно большой (и с каждым годом становится все больше и больше),
поэтому в книге я приводить его не стану. Если вам захочется его увидеть, вы
можете сделать это на своем компьютере.
Конфигурационный файл /boot/grub/grub.cfg не редактируется вручную, поскольку
для его создания используется утилита /usr/sbin/grub-mkconfig, которая генерирует его
файл на основе шаблонов, хранящихся в каталоге /etc/grub.d, и настроек из файла
/etc/default/grub.
Впрочем, при особом желании и понимании того, что делаете, можно редактировать этот файл и без каких-либо утилит.
В конфигурационном файле /boot/grub/grub.cfg содержится описание поведения
GRUB2 (что нам совсем не интересно), а также элементов загрузочного меню. Собственно, ради элементов загрузочного меню часто и возникает необходимость
отредактировать этот файл. Например, вы установили еще один дистрибутив Linux,
и его инсталлятор не «прописал» новый дистрибутив в файле конфигурации загрузчика (или вы сами отказались от этого при установке).

Глава 21. Загрузчики Linux

375

Открыв файл grub.cfg, вы заметите, что его синтаксис весьма напоминаетсинтаксис
bash-сценариев. Как уже было отмечено ранее, параметры GRUB2 задаются в файле /etc/default/grub, а сами элементы меню описаны в файлах, хранящихся в каталоге
/etc/grub.d. Потом утилита grub-mkconfig «собирает» из этих файлов единый файл
grub.cfg, корректируя поведение загрузчика на основании параметров из /etc/default/
grub.
Рассмотрим описание типичного элемента меню:
menuentry 'Ubuntu' —class ubuntu —class gnu-linux —class gnu —class os
$menuentry_id_option 'gnulinux-simple-0cfcfdfc-d3e4-4755-a0ea-5d44470dee4f' {

recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi

insmod partjnsdos
insmod ext2
set root= 'hdO,msdosl1
if [ x$feature_platform_search_hint = xy ]; then
search —no-floppy —fs-uuid —set=root —hint-bios=hdO,msdosl —hintefi=hdO,msdosl —hint-baremetal=ahciO,msdosl 0cfcfdfc-d3e4-4755a0ea-5d44470dee4f
else
search —no-floppy —fs-uuid —set=root 0cfcfdfc-d3e4-4755-a0ea-

5d44470dee4f
fi
linux /boot/vmlinuz-З.19.0-15-generic root=UUID=0cfcfdfc-d3e4-4755-

a0ea-5d44470dee4f ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.19.0-15-generic
}

В кавычках после menuentry находится описание элемента меню — можете заменить этот текст на все, что вам больше нравится. После названия элемента меню
следуют различные необязательные параметры— в других дистрибутивах (не
Ubuntu), они, как правило, могут не указываться.
Далее следуют команды GRUB2. Например, команда insmod ext2 загружает модуль
ext2. Но это не модуль ядра Linux! Это модуль GRUB2 — файл ext2.mod, находящийся в каталоге /boot/grub.
Команда set root устанавливает загрузочное устройство. Формат имени устройства
такой же, как в случае с GRUB.
В н у т р е н н е е и м я у с т р о й с т в а GRUB
Мы знаем, что даже АТА-диски в новых дистрибутивах имеют имена вида /dev/sda*
Но команда set root загрузчика GRUB2 содержит имя hd. Это не опечатка! Это внут­
реннее имя устройства GRUB, а не имя системного устройства.

После служебного слова linux задается ядро (файл ядра) и параметры, которые
будут переданы ядру. Служебное слово initrd указывает на файл initrd.

376

Часть V. Системные трюки, или Linux изнутри

Теперь рассмотрим файл /etc/default/grub, содержащий параметры GRUB2 (листинг 21.2). Поскольку этот файл вы будете редактировать чаще, чем grub.cfg, то
комментарии для большего удобства я перевел на русский язык.

# Если вы измените этот файл, введите команду 'update-grub1
# для обновления вашего файла /boot/grub/grub.cfg.
# Элемент по умолчанию, нумерация начинается с О
GRUB_DEFAULT=0
# Чтобы увидеть меню GRUB, надо или закомментировать следующую
# опцию, или установить значение больше 0, но в этом случае
# нужно изменить значение GRUB_HIDDEN_TIMEOUT_QUIET на false
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
# Тайм-аут (в секундах)
GRUB_TIMEOUT="10"
# Название дистрибутива - вывод команды lsb_release или просто Debian
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null | | echo Debian'

# Параметры ядра по умолчанию
GRUB_CMDLINE_LINUX_DEFAULT= "quiet splash"
GRUB_CMDLINE_LINUX=""
# Раскомментируйте для отключения графического терминала
# (только для grub-pc)
#GRUB_TERMINAL=console
# Разрешение графического терминала
#GRUB_GFXMODE=640x4 8 0
# Раскомментируйте следующую опцию, если вы не хотите передавать
# параметр "root=UUID=xxx" ядру Linux
#
GRUB_DISABLE_LINUX_UUID=t rue
# Раскомментируйте, если нужно отключить генерацию элемента меню
# режима восстановления
#GRUB_DISABLE_LINUX_RECOVERY="true"
# Раскомментируйте, чтобы получить гудок при запуске GRUB
#GRUB_INIT_TUNE="480 440 1"
После изменения файла /etc/default/grub не забудьте выполнить команду update-grub
для обновления вашего файла /boot/grub/grub.cfg. Команда update-grub— это просто
сценарий, вызывающий утилиту grub-mkconfig и передающий ей параметр —
имя выходного файла (по умолчанию /boot/grub/grub.cfg). Ничто не мешает вам вызвать утилиту grub-mkconfig вручную, но использовать команду update-grub более
удобно.

Глава 21. Загрузчики Linux

377

Редактирование вручную файла grub.cfg
Чуть ранее было сказано, что файл grub.cfg не следует редактировать вручную. От­
части это так и есть — если не знаешь, что делаешь, лучше использовать утилиту
grub-mkconfig или команду update-grub, но когда понимаешь о чем речь... В любом
случае, при желании его редактировать можно, но только если вы уверены в своих
силах...

Таким образом, при редактировании конфигурации GRUB2 нужно придерживаться
одной стратегии из двух возможных:


согласно первой вы редактируете файл grub.cfg вручную и не используете команд
вроде grub-mkconfig или update-grub;



вторая стратегия заключается в использовании вспомогательных программ, но
тогда не нужно редактировать файл grub.cfg вручную, иначе при последующем
изменении файла grub.cfg утилитой grub-mkconfig или командой update-grub все
изменения, внесенные вручную, будут уничтожены. Поступая согласно второй
стратегии, нужно редактировать файлы из каталога /etc/grub.d (там содержатся
файлы, формирующие загрузочное меню) и файл /etc/default/grub, содержащий
общие параметры GRUB2.
В ы з о в КОМАНДЫ GRUB-MKCONFIG
По умолчанию команда grub-mkconfig генерирует конфигурационный файл на кон­
соль, поэтому вызывать ее нужно так:

sudo grub-mkconfig > /boot/grub/grub.cfg

21.3. Команды установки загрузчиков
Установить GRUB/GRUB2, если вы это еще не сделали, можно следующей командой:
/sbin/grub-install
Например:
/sbin/grub-install /dev/sda
После изменения конфигурационного файла переустанавливать загрузчик, как это
требовалось в случае с устаревшим LILO, не нужно.

21.4. Установка собственного фона загрузчиков
GRUB и GRUB2
Вы хотите создать собственный фон для загрузчика GRUB? Это очень просто: создайте или найдите в Интернете понравившуюся вам картинку, уменьшите ее до
размера 640x480 и конвертируйте в формат ХРМ. Все это можно сделать одной
командой:
# convert image.jpg -colors 14 -resize 640x480 image.xpm
Затем сожмите картинку с помощью команды gzip:
# gzip image.xpm

Часть V. Системные трюки, или Linux изнутри

378

Скопируйте сжатую картинку в каталог /boot/grub и пропишите в конфигурационном файле /boot/grub/grub.conf:
splashimage=(hd0,1)/grub/image.хрш.gz
Теперь разберемся, как установить графический фон в GRUB2. Убедитесь, что
установлен пакет grub2-splashimages — этот пакет содержит графические заставки
для GRUB2, которые будут установлены в каталог /usr/share/images/grub. Если вам не
нравятся стандартные картинки, множество фонов для GRUB2 вы можете скачать
с сайта http://www.gnome-look.org/ или создать вручную, как было только что
показано. Кстати, GRUB2 уже поддерживает форматы PNG и TGA, поэтому можно
не конвертировать файл фона в формат ХРМ.
Итак, будем считать, что картинка у нас уже выбрана. Осталось только установить
ее как фон. Для этого откройте файл темы GRUB2— он находится в каталоге
/etc/grub.d (в Ubuntu и Debian этот файл называется /etc/grub.d/05_debian_theme).
Н а з в а н и е ф а й л а т е м ы GRUB2
В других дистрибутивах файл темы GRUB2 может называться иначе. Точное его на­
звание для каждого дистрибутива указать сложно.

Найдите в файле темы строку:
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-

grub.{png,tga} ; do
Замените ее на следующую строку:
for i in {/boot/grub,/usr/share/images/desktopbase,/usr/share/images/grub}/имя_файла.{png,tga} ; do
Как видите, мы просто прописали выбранную вами картинку. Далее нужно обновить GRUB2:
sudo update-grub

21.5. Постоянные имена устройств
Как было отмечено ранее, все современные дистрибутивы перешли на так называемые постоянные («длинные») имена. Раньше, когда еще никто не знал о длинных
именах, запись в файле grub.conf могла выглядеть так:
kernel /boot/vmlinuz26 root=/dev/hdal vga=0x318 ro
Эта запись указывает имя ядра (/boot/vmiinuz26). Все, что после него, — параметры, которые будут переданы ядру. Один из них (параметр root) указывает имя корневой файловой системы. Здесь оно приведено еще в старом формате. Сейчас вы
такие имена в grub.conf не увидите (если, конечно, сами не пропишете). Варианты
указания длинных имен выглядят так:
root=/dev/disk/by-uuid/2d781b26-0285-421a-b9d0-d4a0d3b55680
root=/dev/disk/by-id/scsi-SATA_WDC_WDl600JB-00_WD-WCANM7959048-part5

root=LABEL=/

Глава 21. Загрузчики Linux

379

Какой вариант будет использоваться у вас, зависит от дистрибутива. Например,
в Fedora применяют третий способ, а в openSUSE — второй.

21.6. Восстановление загрузчика GRUB/GRUB2
Что делать, если вы переустановили Windows, а она установила в MBR свой загрузчик, и теперь вы не можете загрузить Linux? Не переустанавливать же еще и
Linux из-за такой мелочи!
Для восстановления загрузчика GRUB/GRUB2 нужно загрузиться с LiveCD (подойдет любой LiveCD с любым дистрибутивом Linux) и ввести следующие команды:
mkdir /old
mkdir /оld/dev
mount /dev/sdaN /old
Все команды следует вводить от имени root, для чего использовать команды su или
sudo.
В частности, в LiveCD Ubuntu нужно вводить все команды с использованием
команды sudo — например, так:
sudo mkdir /old
sudo mkdir /old/dev
Разберемся, что означают эти команды:
□ первая из них создает каталог /old, который будет использоваться в качестве точки монтирования;
□ вторая — создает в этом каталоге подкаталог dev, который пригодится для монтирования devfs — псевдофайловой системы;


третья — служит для монтирования корневой файловой системы дистрибутива
Linux, установленного на жестком диске в разделе /dev/sdaN (где N— номер раздела), к каталогу /old. Предположим, что на вашем компьютере дистрибутив
Linux был установлен в раздел /dev/sda5. Тогда вам нужно ввести следующую
команду:
mount /dev/sda5 /old

После этого надо подмонтировать каталог /dev к каталогу /old/dev — это делается
с помощью все той же команды mount, но с параметром --bind:
mount —bind /dev /old/dev
chroot /old
Команда chroot заменяет корневую систему нашего LiveCD на корневую систему
дистрибутива, установленного на винчестере. Вам остается лишь ввести команду:
/sbin/grub-install /dev/sda

380

Часть V. Системные трюки, или Linux изнутри

Эта команда установит загрузчик GRUB/GRUB2 так, как он был установлен до переустановки Windows. После установки загрузчика следует перезагрузить компьютер командой reboot.
Дополнительная информация
Дополнительную информацию о восстановлении загрузчика GRUB вы можете полу­
чить на моем форуме: http://www.dkws.org.ua/phpbb2/viewtopic.php?t=3275.

21.7. Загрузка с ISO-образов
Предположим, вы скачали ISO-образ новой версии Ubuntu, но у вас нет «болванки», чтобы записать на нее образ и загрузиться с полученного диска. Могу вас обрадовать: «болванка» вам для этого не понадобится — GRUB2 умеет использовать
ISO-образы в качестве загрузочных устройств. Просто пропишите ISO-образ в конфигурационном файле GRUB2 и перезагрузите компьютер. Новая загрузочная метка появится в меню GRUB2, и, если ее выбрать, система загрузится с ISO-образа.
Итак, создайте в каталоге /boot подкаталог iso (название, сами понимаете, может
быть любым) и загрузите в него ISO-образ дистрибутива. Теперь вам осталось
лишь отредактировать конфигурационный файл /boot/grub/grub.cfg, добавив в него
вот такую загрузочную запись (выделенный полужирным шрифтом текст нужно
записать в одну строку):
menuentry "Ubuntu LiveCD" {
loopback loop /boot/iso/ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper isoscan/filename=/boot/iso/ubuntu.iso noeject noprompt -initrd (loop)/casper/initrd.Iz
}
Перезагружаемся и выбираем пункт меню Ubuntu LiveCD.

21.8. Установка пароля загрузчика
Теперь самое время защитить наш загрузчик. По умолчанию любой желающий может изменить параметры ядра. Достаточно злоумышленнику передать ядру параметры rw, signle или rw, init=/bin/bash, и после загрузки он сможет сделать с системой все, что захочет, — например, изменить пароль root. А получив root-доступ,
сможет настроить систему так, как ему это выгодно, или полностью уничтожить ее
(хотя это можно было бы сделать и на этапе загрузки).
Поэтому мы должны защитить загрузчик паролем. Загрузка операционных систем
будет осуществляться без пароля, однако если кто-то захочет изменить параметры
ядра, то у него ничего не получится — загрузчик попросит ввести пароль. Для
самых «продвинутых» доброжелателей, которые смогут подключить жесткий диск
к Windows-системе и с помощью Total Commander просмотреть конфигурационный
файл GRUB, мы закодируем наш пароль с помощью алгоритма MD5 — это самый

Гпава 21. Загрузчики Linux

381

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

21.8.1. Загрузчик GRUB
Введите команду grub. Появится приглашение:
grub>
В ответ на приглашение введите команду:
md5crypt
Программа запросит у вас пароль (придумайте и введите пароль в ответ на запрос),
закодирует его и выведет на экран шифр введенного вами пароля:
Password: ******
Итак, вы получили зашифрованный пароль (рис. 21.2). Перепишите этот шифр
(а еще лучше выделите его и выполните команду меню терминала Правка | Копи­
ровать) и введите команду Quit.
На всякий случай сделайте копию конфигурационного файла загрузчика:
sudo ср /boot/grub/grub.conf /boot/grub/grub.conf_backup

Рис. 21.2. openSUSE: шифрование пароля GRUB

Часть V. Системные трюки, или Linux изнутри

382

Теперь откройте файл /boot/grub/grub.conf (или /boot/grub/menu.lst— в зависимости от
дистрибутива) в любом текстовом редакторе (рис. 21.3):
gksudo gedit /boot/grub/grub.conf
ИЛИ

gksudo gedit /boot/grub/menu.lst

Рис. 21.3. openSUSE: редактирование файла /boot/grub/menu.lst

Найдите секцию пароля:
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the

# command 'lock'
# e.g. password topsecret
#
password --md5 $l$gLhU0/$aW78kHKlQfV3P2b2znUoe/
# password topsecret
После нее вставьте строку:
password --md5 ваш-шифр

Гпава 21. Загрузчики Linux

383

Параметр ваш-шифр здесь — это тот шифр, который вы получили в ответ на введенный пароль.
Таким образом мы задали пароль, с помощью которого можно редактировать
загрузочное меню GRUB. И пока не будет указан заданный пароль, GRUB не разрешит редактировать загрузочное меню.

21.8.2. Загрузчик GRUB2
По сравнению с GRUB, загрузчик GRUB2 одновременно и проще в обращении,
и сложнее в настройке. Настраивать GRUB2 придется реже, но к его сложной настройке надо привыкнуть, — практически все современные дистрибутивы перешли
на GRUB2.
В GRUB можно было задать общий пароль для всех загрузочных меток, а также
установить пароль только на некоторые загрузочные метки. В GRUB2 можно сделать то же самое, но кроме самого пароля понадобится указать еще и имя пользователя (логин), что усложняет злоумышленнику взлом системы, поскольку ему нужно
будет знать не только пароль, но и кому он принадлежит. Защита отдельных загрузочных меток, как правило, используется редко, — чаще устанавливается пароль
на все метки сразу, что и будет продемонстрировано далее.
Сначала установим простой (незашифрованный) пароль, а затем зашифруем его,
чтобы никто не смог его прочитать, загрузившись с LiveCD. Прежде всего откройте
файл /etc/grub.d/00_header:
sudo nano /etc/grub.d/00_header
В конец файла добавьте строки:
cat « EOF
set superusers="den"
password den 1234
EOF
Здесь имя пользователя den, пароль мы придумали для примера такой: 1234.
Теперь обновите GRUB2:
sudo update-grub
Можно также напрямую редактировать grub.cfg— файл конфигурации GRUB2.
В него следует добавить вот такие строки:
set superusers="userl"
password userl passwordl
password user2 password2
Обратите внимание, что командами password заданы два пользователя: userl
и user2 с паролями passwordl и password2 соответственно. Но пользователь userl
является суперпользователем, т. е. может редактировать загрузочные метки GRUB2,
а обычный пользователь (user2) может только загружать метки. Таким образом,

384

Часть У, Системные трюки, или Linux изнутри

у пользователя user1 получится передать ядру новые параметры, а пользователь
user2 сможет только загрузить Linux с параметрами по умолчанию.
Можно даже задать условие, что метку Windows будет загружать только пользователь user2:
menuentry "Windows" --users user2 {
set root=(sd0,2)
chainloader +1
}
Теперь разберемся с шифрованием пароля. Команда password поддерживает только
незашифрованные пароли. Если вы хотите использовать зашифрованные пароли,
нужно применить команду password_pbkdf2. Например:
password_pbkdf2 den зашифрованный_пароль
Получить зашифрованный пароль можно командой:
grub-mkpasswd-pbkdf2
Программа запросит у вас пароль (придумайте и введите пароль в ответ на запрос),
закодирует его и выведет на экран хэш (шифр) введенного вами пароля:
Your PBKDF2 is grub.pbkdf2.зaшифpoвaнный_пapoль
Пример такого шифра:
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F2D28FE
FD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D7 9080136.887С
FF169EA8 3352 35D8 00424 2AA7D6187A41Е3187 DF0CE14E256D85ED97A97357AAA8FF0A3871AB9EE
FF458392F462F4 95487387F685B7472FC6C29E293F0A0

Весь этот хэш нужно скопировать в конфигурационный файл GRUB2:
password_pbkdf2 den
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659211B7FC076F2D28FE
FD71784BB8D8F6FB244A8CC5C06240631B97008565A120764C0EE9C2CB0073994D79080136.887C
FF169EA8335235D8004242AA7D6187A41E3187DF0CE14E256D85ED97A97357AAA8FF0A3871AB9EE
FF458392F4 62F4 95487387F685B7472FC6C29E293F0A0

Если вы не использовали файл 00_header, а редактировали непосредственно файл
grub.cfg, то команду update-grub вводить не нужно!
Дополнительную информацию по вопросам шифрования загрузчика GRUB2 вы
сможете получить по адресам:
□ http://ubuntuguide.net/how-to-setup-boot-password-for-grub2-entries;
□ http://grub.enbug.org/Authentication.

ГЛАВА

22

Системы инициализации
22.1. Начальная загрузка Linux
В этой книге мы уже упоминали о начальной загрузке компьютера, поэтому сейчас
начнем с того момента, когда загрузчик BIOS нашел загрузочное устройство, —
например, жесткий диск. Далее загрузчик BIOS считывает первый (нулевой) сектор
диска и передает ему управление. На этом работа загрузчика BIOS заканчивается.
В первом секторе находится главная загрузочная запись (Master Boot Record, MBR),
состоящая из трех частей: первичного загрузчика, таблицы разделов диска (partition
table) и флага загрузки.
Сначала из первой части MBR вызывается первичный загрузчик— что и как он
делает, прописано в нем самом. Работу первичного загрузчика мы рассмотрим на
примере двух загрузчиков: LILO и GRUB/GRUB2.
Е щ е р а з о з а г р у з ч и к е LILO
Загрузчик LILO, хоть и устарел безнадежно (см. главу 21), но очень прост и поэтому
идеально подходит для использования в «академических целях» — для изучения са­
мого процесса загрузки. A GRUB/GRUB2 — это современные загрузчики, без понимая
принципов работы которых сегодня просто нельзя.

Загрузчик LILQ состоит из двух частей: первая содержится в MBR, а вторая размещена на диске в виде файла /boot/boot.b. По аналогии с LILO загрузчик
GRUB/GRUB2 (далее— просто GRUB) тоже состоит из двух частей: stage 1 и
stage2. Первая часть (stage1) помещается в MBR, а вторая хранится на диске в каталоге /boot/grub. Фактическое расположение stage2 указывается при установке GRUB
примерно вот такой командой:
grub> install (hdO,4)/boot/grub/stagel (hdO) (hdO,4)/boot/grub/stage2 p (hd0,4)
/boot/grub/menu.conf

Кроме stage1 и stage2 у загрузчика GRUB есть еще несколько промежуточных частей — * stage 1 _ 5 — помогающих загрузчику найти stage2 и выполняющих другие
подготовительные действия, — в частности, обеспечивающих поддержку разных
файловых систем.
Задача первой части — запуск вторичного загрузчика (второй части), который и
производит дальнейшую загрузку системы. Дело в том, что первая часть ничего не

Часть V. Системные трюки, или Linux изнутри

386

знает о файловых системах, поэтому местонахождение второй части записано в ней
в «физических координатах»: явно указаны цилиндр, головка и сектор жесткого
диска.
Вторая часть загрузчика более интеллектуальна. Она уже «знает», что такое файловая система, и что карта размещения файлов записана в файле /boot/System.map. По
аналогии с картой размещения файлов имеется в GRUB и карта устройств — файл
/boot/grub/device.map. Оба этих файла используются для поиска ядра и образа виртуального диска.
Виртуальный диск
Для чего нужен виртуальный диск? Представим, что мы еще не установили Linux, а
только собираемся это сделать. Вставляем загрузочный диск, и загрузчик запускает не
просто инсталлятор — на самом деле запускается операционная система Linux, ясно
виден процесс загрузки ядра, а потом уже запускается программа установки. Но ядру
нужно же откуда-то прочитать модули поддержки устройств и файловой системы —
ведь корневая файловая система еще не создана. Вот все эти модули и находятся на
виртуальном диске. Виртуальный диск загружается в память, ядро монтирует его, как
обычную файловую систему, и загружает с него все необходимые модули. После это­
го виртуальный диск размонтируется и — в случае нормальной загрузки, а не установ­
ки Linux, — вместо него монтируется обычная корневая файловая система.

Работа с виртуальным диском основана на технологии initrd (INITial Ram Disk).
Файл образа виртуального диска находится в каталоге /boot и носит название initrd.
В процессе запуска ядра монтируется корневая файловая система и запускается
программа init, которая и выполняет дальнейшую инициализацию системы. Программа init — часть init, самой надежной и распространенной системы инициализации Linux. Увы, она уже устарела. Даже самые консервативные дистрибутивы,
такие как Debian, отказались от нее. Но нужно заметить к чести самой init, «жила»
она очень долго (в Debian она продержалась до седьмой версии, а в Fedora — до 14-й).
Кроме системы инициализации init (см. разд. 22.2) существуют и другие системы — в частности: initng, upstart и systemd:


система initng позволяет существенно ускорить запуск Linux, но, к сожалению,
она так и осталась экспериментальной и не прижилась в дистрибутивах Linux.
Заинтересовавшиеся могут прочитать о системе initng в моей статье по адресу :
http://www.dkws.org.ua/articIe.php?id==12 — на тот случай, если вам захочется
создать собственный дистрибутив на ее основе;



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

Глава 22. Системы инициализации

387

к предыдущим изданиям этой книги (вы с легкостью найдете их на Play Market),
или же к сторонним источникам в Интернете;
□ система systemd (см. разд. 22.3)— современная система инициализации, заменившая init в последних версиях дистрибутивов Fedora, openSUSE, Ubuntu и некоторых других.
Немного истории
Прежде чем перейти к рассмотрению систем инициализации, позволю себе неболь­
шой исторический экскурс, чтобы вы понимали, who is who. С самого начала (т. е. со
времен UNIX, когда о Linux еще никто не слышал) существовало две системы инициа­
лизации; SysV (использовалась, начиная с System V) и BSD (разработанная для соб­
ственной версии UNIX университетом Беркли). Во всех Red Hat-совместимых дистри­
бутивах (Red Hat, Mandrake, Fedora Core, Mandriva, Fedora, openSUSE и др.) исполь­
зовалась система инициализации SysV, т. е. привычная всем нам программа init. Но
время шло, новые компьютеры становились существенно мощнее старых, a Linux
продолжала загружаться на быстрых компьютерах примерно с той же скоростью, что и
на медленных... Вот тогда и задумались о смене системы инициализации. Были пред­
ложены различные варианты систем: initng (так и осталась экспериментальной),
upstart (действует на «старых» Ubuntu, а в современных заменена на systemd) и
systemd, которая стала применяться в Fedora, начиная с ее 15-й версии. Основная
цель всех этих систем — сделать запуск Linux быстрее. С тем, как они это осуществ­
ляют, мы разберемся позже. А начнем рассмотрение систем инициализации мы, всетаки, с традиционной системы init.

22.2. Система инициализации init
Сначала я вообще хотел удалить описание системы init из этого издания, но понял,
что сбрасывать со счетов ее еще рано. Ведь не все спешат отказываться от старых
дистрибутивов, — так, многие до сих пор используют Debian 7, — зачем менять то,
что прекрасно работает? Да и не всегда есть возможность установить самую последнюю версию дистрибутива— например, при использовании виртуализации
OpenVZ вообще придется ограничиться дистрибутивами с версией ядра 2.6, а в таких дистрибутивах будет доступна только init. Вообще, если вы работаете со старыми версиями дистрибутивов, то без init — никак (на многих серверах, организованных даже всего несколько лет назад, работает именно init, поскольку общая миграция на systemd произошла не так давно). Система инициализации init не была и
не будет удалена из этой книги, поскольку — это классика. И на ее примере проще
показать, чем лучше система systemd, — контраст уж больно заметен.
Итак, программа init читает конфигурационный файл /etc/inittab и запускает другие
процессы, согласно инструкциям этого файла (листинг 22.1).

id:5:initdefault:
# Инициализация системы
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0

388

11:l:wait:/etc/rc.d/rc
12:2:wait:/etc/rc.d/rc
13:3:wait:/etc/rc.d/rc
14 : 4 .-wait:/etc/rc.
15:5:wait:/etc/rc.d/rc
16:6:wait:/etc/rc.d/rc

Часть V. Системные трюки, или Linux изнутри

1
2
3
d/rc 4
5
6

# Что делать при нажатии CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# От UPS была получена команда, что пропало питание.
# Немного ждем и выключаем компьютер
pf: :powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# От UPS получена команда, что питание возобновилось
# Отменяем shutdown
pr:12345rpowerokwait:/sbin/shutdown -с "Power Restored; Shutdown Cancelled"

# Запуск gettys
1:2345:respawn:/sbin/mingetty
2:2345:respawn:/sbin/mingetty
3:2345:respawn:/sbin/mingetty
4:2345:respawn:/sbin/mingetty
5:2345:respawn:/sbin/mingetty
6:2345:respawn:/sbin/mingetty

ttyl
tty2
tty3
tty4
tty5
tty6

# Однопользовательский режим
:S:wait:/bin/sh
Одна из главных инструкций файла /etc/inittab выглядит так:
id::initdefault:
Эта инструкция задает уровень запуска по умолчанию. Уровень запуска определяет, какие действия будут выполнены программой init (т. е., какие процессы будут
запущены). Всего предусмотрено шесть уровней запуска:
□ 0 — останов системы (ясно, что в качестве уровня по умолчанию этот уровень
быть не может);
□ 1 — однопользовательский режим (в него можно перейти сразу при загрузке,
передав ядру параметр single);
□ 2 — многопользовательский режим без поддержки сети;
□ 3 — многопользовательский режим с поддержкой сети;
□ 4 — не используется;
□ 5 — многопользовательский графический режим с загрузкой X11 и поддержкой
сети;
□ 6 — перезагрузка системы.

Гпава 22. Системы инициализации

389

В большинстве случаев в качестве уровня запуска по умолчанию устанавливается 3
или 5.

22.2.1. Команда init
Перейти на тот или иной уровень можно и после загрузки системы. Для этого используется команда:
# /sbin/init
Напомню, что решетка (#) перед командой означает, что команда должна быть выпол­
нена от имени пользователя root.

«Вычислив» уровень запуска, init поочередно запускает сценарии из каталога
/etc/rc.d/rcX.d, где X — это номер уровня запуска. Если зайти в один из этих каталогов, например в /etc/rc.d/rc3.d, то можно увидеть ссылки формата:
S
Параметр определяет порядок запуска сценария (например, siOnetwork запустится раньше, чем S11internet), а параметр — задает имя сценария. Сами
сценарии находятся в каталоге /etc/rc.d/init.d.
Ссылки, начинающиеся на символ S, — это ссылки запуска (от start), при запуске
соответствующих сценариев им будет передан аргумент start. Например, если init
обнаружила в /etc/rc.d/rc3.d файл S10network, то она выполнит команду:
/etc/rc.d/init.d/network start
Если имя ссылки начинается на букву к (от kill), то это ссылка останова сервиса, —
например: KOiservice. Эта ссылка указывает на команду:
/etc/rc.d/init.d/service stop
Вы можете запустить любой сценарий из каталога init.d непосредственно, передав ему
параметры start (запуск), stop (останов) и другие (зависит от сервиса).

22.2.2. Команда service
А можете воспользоваться командой service:
# service
Здесь — это имя файла в каталоге /etc/rc.d/init.d.
В openSUSE имеется удобная команда:
rc
Так, для запуска Apache можно использовать команду:
# rcapache start

390

Часть V. Системные трюки, или Linux изнутри

22.2.3. Редакторы уровней запуска
Редактировать уровни запуска можно вручную, а можно и с помощью программконфигураторов :
□ в Fedora — конфигуратором system-config-services (см. разд. 22,3.6);
□ в openSUSE — конфигуратором YaST;
□ в Ubuntu до версии 9.04 применялся конфигуратор services-admin, а с версии 9.10 следует использовать конфигуратор bum, устанавливаемый отдельно:
sudo apt-get install bum

22.2.4. Параллельная загрузка сервисов,
или как сделать старый init быстрее
Система инициализации init довольно неповоротлива. А все из-за того, что она запускает сервисы последовательно — в имени ссылки на сервис даже есть номер,
задающий порядок запуска сервиса. Запустив сервис A, init ждет, пока он запустится, и только после этого запускает сервис Б. Но ведь сервисы А и Б можно запускать параллельно — возможности современных процессоров это позволяют. В результате можно достичь существенного сокращения времени загрузки. Так, на моей
тестовой системе (правда, запущенной в VMware), я получил сокращение загрузки
до 20 секунд, — мелочь, а приятно.
Откройте файл /etc/rc.d/rc и найдите строку вида:
$i start
Возможно, там будет такая строка (все зависит от дистрибутива и версии init):
exec $i start
После команды start добавьте символ
деть так:

&

— строка запуска сервисов станет выгля-

$i start &
или так:
exec $i start &
Символ & здесь разрешает запуск программы в фоновом режиме — при этом следующая команда будет выполнена без ожидания завершения предыдущей.
Однако эта схема работает не всегда. Представим, что нужно запустить сервисы А,
Б, В и Г. Однако сервис В — довольно нерасторопный и запускается медленно, а
сервис Г зависит от сервиса В. Получается, что сервис Г не сможет быть корректно
запущен, покуда не запустится сервис В. В результате время загрузки системы
только увеличится. Что делать? Или отказаться от сервиса Г, если он вам не гак и
нужен, или же использовать более совершенную систему инициализации, параллельно запускающую сервисы на основе информации о зависимости сервисов.
Такой системой является cinit, прочитать о настройке которой можно по адресу:
http://nico.schottelius.org/documentations/speeches/metarheinmain-chaosdays110b/cinit/view.

Гпава 22. Системы инициализации

391

22.3. Система инициализации systemd
22.3.1. Идеальная система инициализации
А теперь начнем наше знакомство с новой системой инициализации. Но прежде
еще раз остановимся на моментах, которые не устраивали нас (как пользователей
Linux) в старой системе init.
Как мы знаем, init (точнее, процесс системы инициализации) — это процесс с UID 1,
он первым запускается ядром и выступает родителем для всех процессов, у которых нет собственного родителя. Основная задача такого процесса (помимо всех остальных задач) — инициализация системы. А значит, он должен это сделать быстро. Как запустить систему быстро? Во-первых, запускать не все, что можно, а только самое необходимое. Во-вторых, запускать сервисы параллельно. Существует
еще одна система инициализации, запускающая сервисы параллельно, — это upstart
(о ней мы говорили в начале главы — она, правда, больше не используется, но от
этого ее возможности не стали хуже).
Давайте разберемся теперь, как запустить минимум сервисов, а запуск всех остальных отложить до тех пор, пока они не понадобятся. В некоторых случаях мы знаем,
какие сервисы нам понадобятся заранее. Как правило, это syslog, dbus и т. д. Но
представьте, что на своем ноутбуке мы хотим передавать и принимать файлы по
Bluetooth. Нужен нам демон bluetoothd? Да, потому что мы хотим использовать
Bluetooth. Но в данный момент, пока мы ничего не передаем и не принимаем, — он
не нужен. То есть, пока не включен Bluetooth-адаптер (и пока одно из пользовательских приложений не захочет с ним общаться через D-Bus), загружать bluetoothd
не требуется. Аналогично и для системы печати cups — хоть принтер и подключен
к компьютеру, но сервис cupsd нужен лишь тогда, когда происходит печать. То же
и для сетевых сервисов— пока никто не обращается к вашему Web- или FTPсерверу, нет необходимости их запускать, что сэкономит не только лишние секунды при запуске системы, но и снизит нагрузку на процессор в процессе работы системы. Да и память сбережет.
Теперь поговорим о параллельном запуске нужных нам сервисов. Современные
процессоры настолько мощны, что система инициализации может попытаться запустить все нужные сервисы одновременно. Этим она полностью загрузит имеющиеся ресурсы, но и сократит время запуска системы.
Однако запустить все и сразу нельзя — необходимо синхронизировать запуск сервисов. Иначе получится, что сервису Б требуется сервис А, который еще не запустился. «Вес» сервисов разный, действия, выполняемые при запуске, — тоже разные. Даже если вы сначала запустите сервис А, а потом — Б, сервис Б может запуститься быстрее базового сервиса А. Приведу для конкретности некоторые примеры:
практически всем службам нужен syslog (иначе, как они будут вести протоколирование?), поэтому им необходимо дождаться его запуска. Многим службам (например, тому же Avahi) нужен D-Bus, поэтому, пока D-Bus не будет запущен, сервису
Avahi приходится ждать.

392

Часть V. Системные трюки, или Linux изнутри

В результате на практике получается, что большая часть сервисов запускается все
равно последовательно, а не параллельно, и выигрыш времени по сравнению
с init — мизерный.
Как снять ограничения синхронизации? Для этого нам надо понять, что нужно сервису Б от сервиса А, и как он вообще проверяет, что сервис А запущен? Оказывается, сервису Б всего лишь нужен сокет сервиса A (socket service). А что такое сокет
сервиса? Это всего лишь файл. Например, все сервисы, которым нужен D-Bus,
ждут возможности подключения к файлу /var/run/dbus/system__bus_socket. Всем, кому
нужен syslog, ждут возможности подключения к устройству /dev/log и т. д.
По сути, все, что нужно, — это сделать доступными сокеты сервисов до запуска
самих сервисов. А когда сервис фактически запустится, мы можем передать ему
сокет с помощью команды ехес ().
Получается, что для параллельного запуска всех демонов нам сначала необходимо
создать для них все сокеты, а потом параллельно запустить все демоны.
Что произойдет в нашей ситуации, когда сервис Б требует запуска сервиса А?
Ничего страшного — сервис Б станет в очередь и будет ждать, пока сервис А запустится. Главное, что сокет сервиса открыт.
А что, если сервис А (пусть это будет syslog) требуется сразу нескольким сервисам:
Б, В, Г и Д? Тоже не страшно. Каждый из этих сервисов отправит свое сообщение
в буфер сокета /dev/log, затем запустится syslog и обработает все эти сообщения.
Как видите — все гениальное просто. Но не нужно думать, что это какое-то совсем
новое изобретение. Подобная система инициализации работает в Mac OS —- там
она называется launchd. Но поскольку не все знакомы с Mac OS, эти идеи Apple известны не многим.
Суперсервер inetd
Впрочем, сама идея — еще старше. Подобным образом работал древнейший супер­
сервер inetd. Если вы его помните — хорошо, но останавливаться на нем мы здесь не
будем.

22.3.2. systemd — основные понятия
Система инициализации systemd контролирует всю систему — отсюда ее название.
В настоящее время она используется в последних версиях дистрибутивов, рассматриваемых в этой книге: Fedora, openSUSE и Ubuntu.
Система systemd построена на концепции модулей (units). У каждого модуля есть
свое имя и тип. Например, модуль типа nsed.service управляет сервисом (демоном)
nsed. Основными типами модулей являются:
□ service (сервис)— демоны, которые можно запустить, перезапустить, остановить. Для совместимости с SysV (пока еще не все привыкли к systemd) в системе
есть возможность чтения традиционных сценариев управления демонами. Как
обычно, они находятся в каталоге /etc/init.d. Ради справедливости нужно отметить, что в openSUSE 12.1 содержимое каталога init.d такое же, как и было раньше (при использовании init), поэтому сразу и не заметишь, что используется но-

Глава 22. Системы инициализации

393

вая система инициализации. А вот в Fedora 161 сценариев в init.d гораздо меньше
и сразу видно — что-то тут не так;


socket (сокет) — реализует сокет, расположенный в файловой системе или Интернете. Поддерживаются сокеты AF_INET, AFINET6, AF UNIX. У каждого
сокета есть связанный с ним сервис. Например, при попытке установки соединения с сокетом nscd.socket будет запущен сервис nscd.service. Вам это ничего
не напоминает? А я вспоминаю старый суперсервер inetd и его более новую версию xinetd — они работали именно так;

□ device (устройство) — реализует устройство в дереве устройств. Если устройство описано через правила udev, то его можно представить в systemd как модуль
типа device;


mount (точка монтирования) — реализует точку монтирования в файловой системе. Демон systemd контролирует все точки монтирования, их подключение и
отключение. Теперь файл /etc/fstab не главный, а служит дополнительным источником информации о точках монтирования, хотя вы по-прежнему можете описывать в нем свои точки монтирования;



automount (автоматическая точка монтирования)— реализует автоматическое
монтирование файловой системы. Такой модуль имеет соответствующий ему
модуль типа mount, который будет запущен, как только файловая система станет
доступной;

□ target (цель) — служит для логической группировки модулей других типов. Этот
тип модуля очень важен, но в то же время он ничего не делает, а просто группирует другие модули. В systemd больше нет уровней запуска (которые были
в init), вместо них используются цели. Например, цель multi-user.target описывает, какие сервисы (точнее модули, а не только сервисы) должны быть запущены
во многопользовательском режиме. По сути, цель multi-user.target аналогична
3-му уровню запуска;
□ snapshot (снимок) — также ничего не делает, а только ссылается на другие модули. Снимки используются в двух случаях: первый случай — временный перевод системы в какое-то состояние (например, в однопользовательский режим) и
последующий возврат из этого состояния, второй — поддержка режима suspend.
Многие демоны не могут правильно переходить в этот режим, поэтому в ряде
случаев их лучше остановить и запустить заново, после того как система проснется.

22.3.3. Основные особенности systemd
Перечислим основные особенности systemd:


1

позволяет контролировать для каждого процесса: среду исполнения, ограничение ресурсов, рабочий каталог, корневой каталог, umask, параметр nice, ID пользователя и группы и многое другое;

openSuSE 12.1 и Fedora 16 — первые версии дистрибутивов openSUSE и Fedora с systemd.

394



Часть V. Системные трюки, или Linux изнутри

синтаксис файлов конфигурации systemd очень похож на синтаксис файлов
.desktop и поэтому будет знаком многим Linux-пользователям;

П наличие совместимости со сценариями SysV (правда, не могу пока сказать —
временной или постоянной). Если есть старая (например, /etc/init.d/avahi) и новая
(/etc/systemd/system/avahi.service) конфигурации, то используется новая1;


для удобства и обратной совместимости поддерживается и обрабатывается файл
/etc/fstab;



совместимость с /dev/initctl. На практике это означает, что многие системные
команды вроде poweroff, shutdown будут работать с новой системой systemd;

□ монтирование виртуальных файловых систем, установка имени узла — все это и
многое другое делается теперь без shell-сценариев;
□ состояние сервиса может контролироваться через D-Bus.
Конечно, это далеко не все особенности systemd, но остальные знать и не обязательно. Далее мы рассмотрим основные отличия init и systemd, а потом уже перейдем к практическому использованию последней.

22.3.4. Сравнение init, upstart и systemd
Сотрудник компании Red Hat Леннарт Поттеринг опубликовал развернутое сравнение трех основных систем инициализации: init, upstart и systemd. С оригиналом
статьи можно ознакомиться по адресу: http://Opointer.de/blog/projects/why.html.
Информации там довольно много, поэтому самое основное я вычленил и представил в табл. 22.1.
Таблица 22.1. Сравнение систем инициализации
Возможность

Init

Upstart

Systemd

Совместимость с SysV

+

+

+

Управление SysV-сервисами как родными сервисами

+

-

+

Управление сервисами с помощью /dev/initctl

+

-

+

Контролируемый останов сервисов

-

-

+

Перезапуск сервисов с сериализацией состояния

+

-

+

Отключение сервисов без редактирования файлов

+

-

+

Отправка сигналов сервисам

-

-

+

Перезапуск сервисов при их крахе без потери
соединения

-

-

+

Сервисы

Даже в самых новых версиях дистрибутивов— например, в той же Ubuntu 17.04, поддерживается
совместимость с init, и если вы зайдете в каталог /etc/init.d, то увидите там немало соответствующих
сценариев.
1

Гпава 22. Системы инициализации

395
Таблица 22.1 (продолжение)

Возможность

Init

Upstart

Systemd

Поддержка сервисов типа «instantiated»

-

+

+

Показывает все процессы, принадлежащие сервису

-

-

+

Идентификация процессов сервиса

-

-

+

Активация сервисов на основе сокетов

-

-

+

Запуск без shell/bash-сценариев

-

-

+

Сервисы ранней стадии загрузки написаны на С

-

-

+

Поддержка D-Bus

-

+

+

Упреждающее чтение данных с диска

-

-

+

Активация на основе «железа» компьютеров

-

-

+

Настройка зависимостей устройств с использованием
правил udev

-

-

+

Активация по времени

-

-

+

Управление точками монтирования, в том числе
и автомонтирование

-

-

+

Запуск fsck

-

-

+

Управление квотами

-

-

+

Управление swap-разделами

-

-

+

Управление локалью, изменение настроек клавиату­
ры и консоли

-

-

+

Поддержка контейнеров (как замена chroot())

-

-

+

Сохранение снимков состояния системы (snapshots)

-

-

+

Средства создания, удаления и чистки временных
файлов

-

-

+

Система

Ядро и протоколирование
Поддержка статической загрузки модулей ядра

-

-

+

Поддержка перезапуска ядра на лету (кехес ())

-

-

+

Минимальный демон протоколирования на базе kmsg
для встраиваемых систем

-

-

+

Поддержка протоколирования в utmp/wtmp

+

+

+

Поддержка раннего протоколирования через /dev/log

-

-

+

-

+

Безопасность
Интеграция с Linux Control Groups (cgroups)
Генерация событий аудита для запускаемых сервисов

-

-

+

Поддержка РАМ

-

-

+

396

Часть V. Системные трюки, или Linux изнутри
Таблица 22.1 (окончание)

Возможность

Init

Upstart

Systemd

Поддержка SELinux

-

-

+

Управление зашифрованными разделами и дисками
(LUKS)

-

-

+

Сохранение и восстановление последовательности
генератора случайных чисел (random seed)

-

-

+

Интеграция с PolicyKit

-

-

+

Обработка паролей к LUKS и SSL-сертификатам

-

-

+

Управление loopback

-

-

+

Управление уникальным ID компьютера

-

-

+

Управление динамическим именем компьютера

-

-

+

Совместимость с inetd

-

-

+

Сеть

Исходя из данных таблицы, видно, что systemd — современная система инициализации для современного дистрибутива Linux. При этом, если взглянуть на некоторые возможности, которые есть у init и отсутствуют у upstart, становится понятно,
почему init так долго оставалась «в деле».

22.3.5. Немного практики
Теперь, когда вы знакомы с основами systemd и с типами ее модулей, можно посмотреть на нее изнутри, а именно — глазами пользователя дистрибутива Fedora 26.
В качестве подопытного дистрибутива я выбрал Fedora не просто так— systemd
появилась в нем раньше, чем вдругих дистрибутивах. В том же openSUSE все будет примерно так же, за исключением более богатого состава каталога /etc/init.d, но,
по сути, эти сценарии относятся к старой системе SysV и не имеют отношения
к systemd.
Начнем с файла /etc/inittab, который в случае с systemd представляет собой обычный
текстовый файл (рис. 22.1) — простой набор комментариев, никак не влияющий на
поведение системы (листинг 22.2).

# inittab is no longer used.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#

Глава 22. Системы инициализации

397

# systemd uses ’targets' instead of runlevels. By default, there are two main
targets:
#

# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current target, run
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

Первые две строки здесь сообщают, что этот файл больше не используется systemd,
и добавление в него конфигурации никак не повлияет на систему. Прошу заметить,
что в других дистрибутивах — например, в Ubuntu, этого файла может вообще не
быть.
Далее (в строке 3) сообщается, что реакция на комбинацию клавиш +
++ содержится в файле /usr/lib/systemd/system/ctrl-alt-del.target. Но по
умолчанию нажатие комбинации ++ обрабатывается на уровне
GNOME 3 и теперь трактуется как завершение сеанса, а не просто перезагрузка.

Рис. 22.1. Fedora 26: реакция в GNOME 3 на комбинацию клавиш ++

398

Часть V. Системные трюки, или Linux изнутри

Откройте Параметры системы, запустите апплет Клавиатура, перейдите на
вкладку Комбинации клавиш, а затем в группу Система (рис. 22.1) — вы увидите
описание действия (Завершить сеанс) и соответствующую ему комбинацию клавиш. По ее нажатию откроется окошко, предлагающее перезагрузить компьютер
или завершить его работу (рис. 22.2). На мой взгляд, такое поведение системы
более предпочтительно, чем просто перезагрузка. Чтобы запретить реакцию на эту
комбинацию клавиш, щелкните по действию и нажмите клавишу .

Рис. 22.2. Fedora 26: система отреагировала на нажатие ++

Вернемся к файлу inittab. В строке 4 там сказано, что вместо уровней запуска
systemd использует цели. Существуют две основные цели: multi-user.target — аналогичная уровню запуска 3, и graphical.target — аналогичная 5-му уровню запуска.
Чтобы установить цель по умолчанию, нужно использовать команду:
# systemctl set-default TARGET.target
По сути, эта команда создает ссылку:
# ln —s /lib/systemd/system/имя_цели.target /etc/systemd/system/default.target

По умолчанию default.target ссылается на /Iib/systemd/system/runlevel5.target. В свою очередь,
runlevel5.target — это просто ссылка на graphical.target.
Исследуем systemd дальше. Зайдите в каталог /etc/systemd/system — в нем вы найдете ряд каталогов вида .wants. В этих каталогах имеются ссылки на дру-

399

Глава 22. Системы инициализации

гие модули системы systemd, и все они ссылаются на файлы в каталоге
/lib/systemd/system. Зайдите в каталог multi-user.target.wants — в нем вы найдете список
ссылок на файлы NetworkManager.service, abrt-ccpp.service, atd-service и т. д. Вам это
ничего не напоминает? Похоже на содержимое 3-го уровня запуска. Как видите,
никаких сложностей.
Далее предлагаю вам продолжить знакомство с системой самостоятельно. Там
все очень просто, даже проще, чем вы думаете. Откройте, к примеру, файл
graphical.target из /lib/systemd/system (листинг 22.3).

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
After=multi-user.target rescue.service rescue.target display-manager.service

Conflicts=rescue.service rescue.target
AllowIsolate=yes
Рассмотрим самые важные параметры этого файла:
□ параметр Requires указывает, что описываемая цель требует выполнения цели
multi-user.target (заменяет 3-й уровень запуска);
□ описываемая цель должна быть выполнена после multi-user.target (параметр
After);
□ параметр Conflicts указывает на цель (или цели — в этом случае они перечисляются через пробел), с которой конфликтует описываемая цель.
Теперь откройте цель multi-user.target и посмотрите, от какой цели зависит она. Вы
обнаружите, что она зависит от basic.target, которая, в свою очередь, зависит от других целей. Просмотрите файлы целей— файл за файлом. Так вы существенно
глубже сможете понять новую систему инициализации.

22.3.6. Команды системного администратора
Многие администраторы привыкли использовать команды service и chkconfig. Они
по-прежнему работают в мире systemd, но правильнее все же использовать команды systemd, представленные в табл. 22.2.
Таблица 22.2. Команды администратора systemd
Команда init

Команда systemd

Описание

service s start

systemctl start s.service

Разовый запуск сервиса s

service s stop

systemctl stop s.service

Остановить сервис s

service s restart

systemctl restart s.service

Перезапуск сервиса s

400

Часть V. Системные трюки, или Linux изнутри
Таблица 22.2 (окончание)

Команда init

Команда systemd

Описание

system s status

systemctl status s.service

Статус сервиса s

Is /etc/rc.d/init.d

ls /lib/systemd/system/*.service
/etc/systemd/system/*.service

Получение списка служб

chkconfig s on

systemctl enable s.service

Включает запуск сервиса
после перезагрузки (сервис s
будет загружаться автомати­
чески)

chkconfig s off

systemctl disable s.service

Отключает автоматический
запуск сервиса s

chkconfig s

systemctl is-enabled s.servive

Проверяем, запускается ли s
автоматически

ls
/etc/systemd/system/*.wants/
s.service

Выводит список целей (уров­
ней запуска), на которых сер­
вис будет запускаться авто­
матически

chkconfig

s

--list

___________________

Если вас удручают все эти команды, и хочется быстрого и простого средства
управления службами, то лучше управляющего службами конфигуратора systemconfig-services (рис. 22.3) пока еще никто не придумал.

Рис. 22.3. Fedora 22: конфигуратор system-config-services

Глава 22. Системы инициализации

401

В старых версиях Fedora такой конфигуратор присутствовал по умолчанию, а в

Fedora 22-25 для его установки нужно ввести команду:

$ sudo dnf install system-config-services
К сожалению, в версии 26 этот конфигуратор был упразднен. Вместо него предлагается только использовать команду systemctl.

22.4. Система инициализации Slackware
Система инициализации Slackware отличается от привычной системы init, используемой в SysV-системах. Она больше похожа на систему инициализации BSDсистем, хотя некоторые сходства с SysV все же есть.
Еще немного истории
В историческом отступлении в начале главы уже были упомянуты системы инициали­
зации: SysV и BSD. Уточним здесь некоторые связанные с ними моменты. Считается,
что UNIX «родилась» в 1969 году. В то время над проектом работали ряд сотрудников
компании Bell Labs (одно из подразделений AT&T). Позже UNIX заинтересовались дру­
гие организации и, в частности, институт Беркли (Калифорния, США). В 1975 году по­
явилась слегка модифицированная версия UNIX от института Беркли, которая полу­
чила название BSD (Berkeley Software Distribution), а версия от AT&T (Bell Labs) стала
называться System V (SysV). Обе системы были очень похожи друг на друга, но в то
же время имели и свои особенности. Например, BSD содержала собственную систему
инициализации, которая очень напоминает ту, что сейчас используется в Slackware
Linux.

Если говорить о сходстве систем инициализации в стиле SysV и в стиле BSD. то
у обеих систем присутствуют уровни запуска, имеется и файл /etc/inittab — таблица
инициализации (см. ранее). Однако имена файлов системы инициализации BSDстиля немного отличаются от имен файлов SysV-стиля.
Система инициализации Slackware построена таким образом, что вне зависимости от
уровня запуска первым всегда запускается сценарий /etc/rc.d/rc.S. Он монтирует псевдофайловые системы /ргос, sysfs и devfs, запускает систему hotplug (драйвер устройств, обеспечивающий их «горячее» подключение, т. е. подключение без выключения компьютера, — например USB-устройств), подключает разделы свопинга,
монтирует и проверяет корневую файловую систему, монтирует другие файловые
системы и т. д. Как видите, сценарий /etc/rc.d/rc.S выполняет большую часть действий
по инициализации системы. Обычно этот файл не требует изменения, но иногда, все
же, его приходится редактировать. Например, если вы создали файл подкачки и хотите, чтобы он подключался при загрузке системы, то команду swapon
нужно добавить в файл /etc/rc.d/rc.S после команды /sbin/swapon -а.
Сценарий /etc/rc.d/rc.S проверяет наличие файла /etc/rc.d/rc.modules.local, обеспечивающего загрузку модулей при старте системы. При условии, что файл
rc.modules.local существует, он запускается. В противном случае происходит поиск
файла /etc/rc.d/rc.modules, а если и его нет, тогда сценарий /etc/rc.d/rc.S
пытается запустить файл /etc/rc.d/rc.modules. Один из этих файлов должен существо-

402

Часть V. Системные трюки, или Linux изнутри

вать, иначе система будет загружена без модулей, а это означает, что не будут работать некоторые устройства и поддерживаться некоторые файловые системы.
Кроме файла /etc/rc.d/rc.modules.local или другого файла загрузки модулей (см. ранее)
также используется файл /etc/rc.d/rc.netdevice — он служит для загрузки модулей
сетевых карт (точнее, сетевых интерфейсов).
Как уже было отмечено, файл /etc/rc.d/rc.S запускается вне зависимости от уровня
запуска. Кроме этого файла в каталоге etc/rc.d вы найдете серию файлов rc.N, где
N— номер уровня запуска. Эти файлы запускаются в зависимости от выбранного
уровня запуска— например, на третьем уровне запуска будет запущен файл
/etc/rc.d/гс.3. Каждый такой файл подготавливает систему к работе на выбранном
уровне запуска. Уровень запуска по умолчанию, как и в случае с системой инициализации в стиле SysV, задается в файле /etc/inittab.
Сценарий /etc/rc.d/rc.inet1 отвечает за инициализацию сетевых интерфейсов и построение таблицы маршрутизации. Конфигурация сетевых интерфейсов хранится
в файле /etc/rc.d/rc.inet1.conf. Вот фрагмент этого файла:
IPADDR [0] ="192.168.1.1"
NETMASK[0]="255.255.255.0”
USE_DHCP[0]=""
DHC P_HOS TNAME[0]=""
Сценарий /etc/rc.d/r.inet2 управляет запуском сетевых служб и подключением сетевых файловых систем. Именно в этом файле происходит попытка монтирования
файловых систем NFS и smbfs. Таюке из этого файла происходит запуск сетевых
служб. Сценарии для запуска сетевых служб называются /etc/rc.d/rc. например, /etc/rc.d/rc.sshd — сценарий запуска SSH-сервера. Однако некоторые
сетевые сервисы, например sendmail и samba, в силу своих особенностей запускаются из файлов rc.N.
Иногда нужно обеспечить запуск сетевой службы, для которой нет собственного
RC-файла. Тогда ее запуск можно или описать в файле /etc/rc.d/rc.local (что довольно
просто), или создать собственный RC-файл и добавить его вызов в один из файлов
rc.N. Шаблон собственного RC-файла приведен в листинге 22.4.

#! /bin/bash
start()
{
echo "Service started"
service_start
}
stop()
{
echo "Service stoped"
killall service
}

Глава 22. Системы инициализации

case $1 in
start)
start ;;
stop)
stop ;;
restart)
stop
sleep 2
start ;;
*)
echo "Usage: service start|stop | restart"
esac

403

ГЛАВА

23

Процессы
23.1. Аварийное завершение процесса
Каждому процессу в Linux присваивается уникальный номер— идентификатор
процесса (PID. Process ID). Зная ID процесса, вы можете управлять процессом, а
именно — завершить процесс или изменить его приоритет. Принудительное завершение процесса необходимо, если процесс завис и его нельзя завершить обычным
образом. А изменение приоритета может понадобиться, если вы хотите, чтобы процесс доделал свою работу быстрее.
Предположим, у вас зависла какая-то программа — например, пусть это будет файловый менеджер mc. Хоть это и маловероятно (не помню, чтобы он когда-нибудь
зависал), но для примера пусть будет так. Принудительно завершить («убить»)
процесс можно с помощью команды kill. Формат ее вызова следующий:
kill [параметры] PID
pid здесь — это идентификатор процесса (Process ID), который присваивается процессу системой и уникален для каждого процесса. Но мы знаем только имя процесса (имя команды), но не знаем идентификатор процесса. Узнать идентификатор
процесса позволяет команда ps. Предположим, что mc находится на первой консоли. Поскольку он завис, вы не можете более использовать консоль, и вам нужно
переключиться на вторую консоль (что можно сделать клавиатурной комбинацией
+). Зарегистрировавшись на второй консоли, введите команду ps — она
выведет список процессов, запущенных на второй консоли, — это будут bash и сам
ps (рис. 23.1).

Чтобы добраться до нужного нам процесса (тс), который запущен на первой консоли, введите команду ps -а или ps -и root. В первом случае вы получите список
процессов, запущенных вами, а во втором — список процессов, запущенных от вашего имени (здесь мы предполагаем, что вы работаете под именем root).
Обратите внимание— вы сами запустили процессы mc и ps (рис. 23.2), а от вашего
имени (root) система запустила еще множество процессов. Следует заметить, что
команда ps выводит также имя терминала (tty1), на котором запущен процесс. Это
очень важно— если на разных консолях у вас запущены одинаковые процессы,
можно легко ошибиться и завершить не тот процесс.

405

Гпава 23. Процессы

Рис. 23.1. Список процессов на текущей консоли

Рис. 23.2. Определение PID программы тс

Теперь, когда мы знаем PID нашего процесса, мы можем его «убить»:
# kill 2484
Перейдите на первую консоль после выполнения этой команды — mc на ней уже не
будет. Если выполнить команду ps -а, то в списке процессов тс тоже не будет.
Проще всего вычислить PID процесса с помощью следующей команды:
# ps -ах | grep
Например, # ps -ах | grep firefox.
Вообще-то все эти действия, связанные с вычислением PID процесса, мы рассмотрели только для того, чтобы познакомиться с командой ps.
Так что, если вы знаете только имя процесса, гораздо удобнее использовать команду:
# killall
Но имейте в виду, что такая команда завершит все экземпляры этого процесса.
А вполне может быть, что у вас на одной консоли находится mc, который нужно
«убить», а на другой— нормально работающий mc. Команда killall «убьет» оба
процесса.

406

Часть V. Системные трюки, или Linux изнутри

При выполнении команд kill и kiiLall нужно помнить, ч|то если вы работаете от
имени обычного пользователя, они могут завершить только те процессы, которые
принадлежат вам. А если вы работаете от имени пользователя root, то можете
завершить любой процесс в системе.

23.2. Программа top: кто больше всех расходует
процессорное время?
Иногда бывает, что система ужасно тормозит, — весь день работала нормально, а
вдруг начала притормаживать.
Если вы даже не догадываетесь, из-за чего это случилось, вам нужно использовать
команду top (рис. 23.3) — она выводит список процессов с сортировкой по процессорному времени. То есть, на вершине списка будет находиться процесс, который
занимает больше процессорного времени, чем сама система. Вероятно, из-за него и
происходит эффект «торможения».
На рис. 23.3 показано, что больше всего процессорного времени (0,662%) занимает
программа kworker.

Рис. 23.3. Вывод команды top

407

Глава 23. Процессы

Выйти из программы top можно, нажав клавишу . Кроме команды действуют следующие клавиши:


— показывает только пользовательские процессы (т. е. те процессы, которые запустил пользователь, под именем которого вы работаете в системе);

□ — изменяет интервал обновления;
□ — изменяет столбец, по которому сортируются задачи. По умолчанию задачи сортируются по столбцу %CPU, т. е. по процессорному времени, занимаемому процессом;
□ — получить справку по остальным командам программы top.
Назначение столбцов программы top указано в табл. 23.1.
Таблица 23.1. Назначение столбцов программы top
Столбец

Описание

PID

Идентификатор процесса

USER

Имя пользователя, запустившего процесс

PR

Приоритет процесса

Nl

Показатель nice (см. разд. 23.3)

VIRT

Виртуальная память, использованная процессом (в Кбайт)

RES

Размер процесса, не перемещенный в область подкачки (в Кбайт).
Этот размер равен размерам сегментов кода и данных,
т. е. RES = CODE + DATA

S

Состояние процесса:


R — выполняется;



S — «спит» (режим ожидания), в этом состоянии процесс выгружен
из оперативной памяти в область подкачки;



D — «непрерываемый сон» (uninterruptible sleep), из такого состояния
процесс может вывести только прямой сигнал от оборудования;



Т — процесс в состоянии трассировки или остановлен;



Z (зомби) — специальное состояние процесса, когда сам процесс
уже завершен, но его структура еще осталась в памяти

%CPU

Занимаемое процессом процессорное время

%MEM

Использование памяти процессом

TIME+

Процессорное время, израсходованное с момента запуска процесса

COMMAND

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

408

Часть V. Системные трюки, или Linux изнутри

23.3. Изменение приоритета процесса
Предположим, что вы работаете с видео, и вам нужно перекодировать файл из одного
видеоформата в другой. Конвертирование видео занимает много процессорного времени, а хотелось бы все сделать как можно быстрее и уйти пораньше домой. Тогда вам
поможет программа nice — она позволяет запустить любую программу с указанным
приоритетом. Ясно— чем выше приоритет, тем быстрее будет выполняться программа. Формат вызова команды следующий:
nice -n команда аргументы
Максимальный приоритет задается числом -20, а минимальный — числом 19. Приоритет по умолчанию равен 10.
Если процесс уже запущен, тогда для изменения его приоритета можно использовать команду renice:
renice -n -р PID

ГЛАВА

24

Псевдофайловые системы
sysfs и proc
Особую роль в Linux играют так называемые псевдофайловые системы. Слово
«псевдо», как мы знаем, означает «почти», т. е. псевдофайловая система — не совсем файловая система в прямом смысле этого слова. Псевдофайловые системы
также называются виртуальными, поскольку работают они на уровне виртуальной
файловой системы (Virtual File System layer). Для большинства пользователей виртуальная файловая система выглядит как обычная файловая система— можно
открыть тот или иной файл и посмотреть, что в нем записано, можно записать
информацию в файл. Ради интереса зайдите в каталог /рrос (это каталог псевдофайловой системы рrос) и посмотрите на размер любого файла— например,
/рrос/filesystems. Его размер будет равен 0, как и остальных файлов этой файловой
системы, но если открыть сам файл, то вы увидите, что информация в нем есть. Это
объясняется тем, что содержимое файла формируется при обращении к нему, т. е.
«на лету». Другими словами, виртуальная файловая система находится в оперативной памяти, а не на жестком диске. Информация попадает в файл на основании
сведений, полученных от ядра.
В большинстве современных дистрибутивов используются виртуальные файловые
системы sysfs и рrос. Откройте файл /etc/fstab, и вы увидите строки монтирования
этих файловых систем:
sysfs
рrос

/sys
/рrос

sysfs
рrос

defaults
defaults

0 0
0 0

24.1. Виртуальная файловая система sysfs
Виртуальная (псевдофайловая) система sysfs экспортирует в пространство пользователя информацию о ядре Linux, об имеющихся в системе устройствах и их драйверах. Впервые sysfs появилась в ядре версии 2.6. Зайдите в каталог /sys — названия подкаталогов говорят сами за себя:
□ block — содержит каталоги всех блочных устройств, имеющихся в системе в текущее время (под устройством подразумевается совокупность физического устройства и его драйвера). Когда вы подключаете Flash-диск, то в любом случае
в каталоге /sys/devices/ появляется новое устройство, но в каталоге /sys/block это

410

Часть V. Системные трюки, или Linux изнутри

устройство появится только при наличии соответствующих драйверов (в указанном случае — драйвера usb-storage);


bus — перечень шин, поддерживаемых ядром (точнее, зарегистрированных в
ядре). В каждом каталоге шины есть подкаталоги devices и drivers. В каталоге
devices находятся ссылки на каталоги всех устройств, которые описаны в системе (т. е. находящихся в каталоге /sys/devices);

□ class — по этому каталогу можно понять, как устройства формируются в классы.
Для каждого устройства в каталоге class есть свой отдельный каталог (под устройством, как и в случае с каталогом block, подразумевается совокупность устройства и его драйвера);
□ devices — содержит файлы и каталоги, которые полностью соответствуют внутреннему дереву устройств ядра;
□ drivers — каталоги драйверов для загруженных устройств. Подкаталог drivers каталога шины содержит драйверы устройств, работающих на этой шине.

24.2. Виртуа льна я фа йлова я система proc
Виртуальная (псевдофайловая) система proc — это специальный механизм, позволяющий получать информацию о системе, ядре или процессе и изменять параметры ядра
и его модулей «на лету» (кстати, ее название — это сокращение от process).
Файлы, позволяющие получать информацию, мы можем только просмотреть, а
файлы, с помощью которых можно изменять некоторые параметры системы,—
просмотреть и, если нужно, изменить.
Просмотреть информационный файл можно командой cat:
cat /рrос/путь/
Записать значение в один из файлов рrос можно так:
echo "данные" > /рrос/путь/название_файла

24.2.1. Информационные файлы
В табл. 24.1 представлены некоторые (самые полезные) информационные рrосфайлы — с их помощью вы можете получить информацию о системе.
Таблица 24.1. Информационные рroc-файлы
Файл

Описание

/proc/version

Содержит версию ядра

/proc/cmdline

Список параметров, переданных ядру при загрузке

/proc/cpuinfo

Информация о процессоре

/proc/meminfo

Информация об использовании оперативной памяти (почти то же, что и
команда free)

Глава 24. Псевдофайловые системы sysfs и рroc

411
Таблица 24.1 (окончание)

Файл

Описание

/proc/devices

Список устройств

/proc/filesystems

Файловые системы, которые поддерживаются системой

/proc/mounts

Список подмонтированных файловых систем

/proc/modules

Список загруженных модулей

/proc/swaps

Список разделов и файлов подкачки, которые активны в текущий момент

24.2.2. Файлы,
позволяющие изменять параметры ядра
Каталог /рrос/sys/kernel содержит файлы, с помощью которых вы можете изменять
важные параметры ядра. Конечно, все файлы мы рассматривать здесь не будем, а
остановимся лишь на тех, которые используются на практике (табл. 24.2).
Таблица 24.2. Файлы каталога /proc/sys/kemel
Файл

Каталог

/рroc/sys/kernel/ctrl-alt-deI

Если этот файл содержит значение 0, то при нажатии клавиа­
турной комбинации ++ будет выполнена так
называемая «мягкая перезагрузка», когда управление переда­
ется программе системы инициализации и последняя «разгру­
жает» систему, как при вводе команды reboot. Если этот файл
содержит значение 1, то нажатие ++ равно­
сильно нажатию кнопки Reset. Сами понимаете, значение 1
устанавливать не рекомендуется

/рrос/sys/kernel/domainname Здесь находится имя домена — например, dkws.org.ua
/рrос/sys/kernel/hostname

Содержит имя компьютера, например den

/proc/sys/kernel/panic

При критической ошибке ядро «впадает в панику» — работа
системы останавливается, а на экран выводится надпись kernel
panic и текст ошибки. Указанный файл содержит значение
в секундах, в течение которого система подождет, пока пользо­
ватель прочитает это сообщение, после чего компьютер будет
перезагружен. Значение 0 (по умолчанию) означает, что переза­
гружать компьютер вообще не нужно

/рrос/sys/kernel/printk

Этот файл позволяет определить важность сообщения об
ошибках. По умолчанию файл содержит значения 6 4 17. Это
означает, что сообщения с уровнем приоритета 6 и ниже (чем
ниже уровень, тем выше важность сообщения) будут выводить­
ся на консоль. Для некоторых сообщений об ошибках уровень
приоритета не задается. Тогда нужно установить уровень по
умолчанию. Это как раз и есть второе значение — 4. Третье
значение — это номер самого максимального приоритета, а
последнее значение задает, значение по умолчанию для перво­
го значения. Обычно изменяют только первое значение, чтобы
определить, какие значения должны быть выведены на консоль,
а какие — попасть в журнал демона syslog

Часть V. Системные трюки, или Linux изнутри

412

24.2.3. Файлы, изменяющие параметры сети
В каталоге /proc/sys/net вы найдете файлы, изменяющие параметры сети (табл. 24.3).
Таблица 24.3. Файлы каталога /proc/sys/net
Файл

Описание

/proc/sys/net/core/message_burst

Опытные системные администраторы используют этот
файл для защиты от атак на отказ (DoS). Один из при­
меров DoS-атаки — когда система заваливается сооб­
щениями атакующего, а полезные сообщения системой
игнорируются, потому что она не успевает реагировать
на сообщения злоумышленника. В указанном файле
содержится значение времени (в десятых долях секун­
ды), необходимое для принятия следующего сообще­
ния. Значение по умолчанию — 50 (5 секунд). Сообще­
ние, попавшее в «перерыв» (в эти 5 секунд), будет
проигнорировано

/proc/sys/net/core/message_cost

Чем выше значение в этом файле, тем больше сооб­
щений будет проигнорировано в перерыв, заданный
файлом message_burst

/proc/sys/net/core/netdev_max_backlog Задает максимальное число пакетов в очереди.
По умолчанию — 300. Используется, если сетевой
интерфейс передает пакеты быстрее, чем система
может их обработать

/proc/sys/net/core/optmem_max

Задает максимальный размер буфера для одного
сокета

24.2.4. Файлы, изменяющие параметры
виртуальной памяти
В каталоге /proc/sys/vm вы найдете файлы, с помощью которых можно изменить параметры виртуальной памяти:
□ в файле buffermem находятся три значения (разделяются пробелами): минимальный, средний и максимальный объем памяти, которую система может использовать для буфера. Значения по умолчанию: 2 10 60;
□ в файле kswapd тоже есть три значения, которые можно использовать для управления подкачкой:


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



второе значение — минимальное количество попыток освобождения той или
иной страницы памяти;

• третье значение задает количество страниц, которые можно записать за один
раз. Значения по умолчанию: 512 32 8.

Глава 24. Псевдофайловые системы sysfs и рrос

413

24.2.5. Файлы, позволяющие изменить
параметры файловых систем
Каталог /proc/sys/fs содержит файлы, изменяющие параметры файловых систем.
В частности:
□ файл file-max задает максимальное количество одновременно открытых файлов
(по умолчанию: 4096);
□ в файле inode-max содержится максимальное количество одновременно открытых
индексных дескрипторов — инодов (максимальное значение также равно 4096);
□ в файле super-max находится максимальное количество используемых суперблоков;
Пояснение
Поскольку каждая файловая система имеет свой суперблок, легко догадаться, что ко­
личество подмонтируемых файловых систем не может превысить значение из файла
super-max, которое по умолчанию равно 256, чего в большинстве случаев вполне дос­
таточно. Наоборот, можно уменьшить это значение, чтобы никто не мог подмонтировать больше файловых систем, чем нужно (если монтирование файловых систем раз­
решено обычным пользователям).

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

24.3. Сохранение произведенных изменений
Итак, вы изменили некоторые параметры системы с помощью файлов каталога
/рrос. Чтобы сохранить измененные параметры, их следует прописать в файле
/etc/sysctl.conf. Вот только формат этого файла следующий: надо отбросить /proc/sys/
в начале имени файла, все, что останется, записать через точку, а затем через знак
равенства указать значение параметра. Например, для изменения параметра
/proc/sys/vm/buffermem нужно в файле etc/sysctl.conf прописать строку:
vm.buffermem = 2 11 60
Если в вашем дистрибутиве нет файла /etc/sysctl.conf, тогда пропишите команды
вида echo "значение" > файл в сценарий инициализации системы.

ГЛАВА

25

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

25.1. Общие команды
25.1.1. Команда arch — вывод архитектуры компьютера
Эта команда поможет узнать тип аппаратной платформы— например: i386, i586,
i686 и др.
Пример использования:
$ arch
i686

25.1.2. Команда clear— очистка экрана
Команда clear очищает экран при работе в консоли (терминале).
Пример использования:
$ clear

25.1.3. Команда date
Команда date служит для вывода текущей даты. Эта команда может применяться
также для установки даты, если запущена от имени администратора.
Пример использования:
$ date
# date 1609161707
Первая команда выводит дату, а вторая — устанавливает дату (при условии, что
команда запущена от имени root) 16 сентября (1609) 2016 года (16) и время 17:17.

Глава 25. Команды Linux, о которых нужно знать каждому линуксоиду

415

Как видите, установка даты осуществляется в формате MMddhhmmYY (ММ — месяц, dd число, hh часы, mm минуты, YY год).
—г







Команда date может вывести дату и в указанном вами формате. Чтобы посмотреть
варианты возможных форматов даты, введите команду man date.

25.1.4. Команда echo
Команда echo выводит текстовую строку, указанную в качестве аргумента — например:
$ echo "Hello world!"
Hello world!
Обычно эта команда используется в сценариях командного интерпретатора для вывода сообщений на экран.

25.1.5. Команда exit — выход из системы
Для завершения сеанса работы в системе (при условии, что вы работаете в консоли)
нужно использовать команду exit. Не забывайте отдавать эту команду, уходя со
своего рабочего места, — если не завершить сеанс работы, во время вашего отсутствий за компьютером кто угодно сможет работать в системе под вашим именем.

25.1.6. Команда man — вывод справки
Команда man служит для получения справки о любой команде системы. Например,
команда man ls выведет справку об использовании команды is, которая выводит
содержимое каталога. О том, как правильно пользоваться самой справочной системой, вам расскажет команда man man.

25.1.7. Команда passwd — изменение пароля
С этой командой мы уже знакомы. Она обеспечивает изменение пароля пользователя, который ее запустил. Суперпользователь root имеет право изменить пароль
любого пользователя:
# passwd имя_пользователя

25.1.8. Команда startx —
запуск графического интерфейса X.Org
Linux может запускаться на разных уровнях запуска. На пятом уровне запуска графический интерфейс X.Org (старое название: X Window) запускается автоматически (если он вообще был установлен). На третьем же уровне запуск графического
интерфейса не производится. Если он вам, тем не менее, нужен, то его можно запустить с помощью команды startx. Никаких параметров не требуется.

416

Часть V. Системные трюки, или Linux изнутри

25.1.9. Команда uptime —
информация о работе системы
Команда uptime (рис. 25.1) выводит статистическую информацию о работе системы: сколько времени прошло с момента последней перезагрузки (собственно, это и
есть время «uptime»), сколько пользователей в текущий момент подключено к системе, и среднюю загрузку системы за последние 1, 5 и 15 минут.

Рис. 25.1. Команда uptime

25.1.10. Команда users —
информация о пользователях
Команда users выводит информацию о пользователях, подключенных к системе
в текущий момент.
На рис. 25.2 видно, что пользователь den подключился к системе двумя способами:
вошел в консоли и в графическом режиме (или по FTP, ssh, telnet — способы подключения к системе могут быть разными).

Рис. 25.2. Команда users

25.1.11. Команды w, who и whoami —
информация о пользователях
Эти три родственные команды выводят следующую информацию (рис. 25.3):


команда w — список пользователей, подключенных к системе, виртуальный
терминал, с которого работает пользователь, время входа в систему для каждого
пользователя, статистику использования системы (IDLE — время простоя,
JCPU — использование процессора), выполняемые каждым пользователем задачи;



команда who — список пользователей, подключенных к системе, время и дату
входа каждого пользователя;

□ команда whoami — имя пользователя, который ввел команду.

Глава 25. Команды Linux, о которых нужно знать каждому линуксоиду

417

Рис. 25.3. Команды w, who и whoami

25.1.12. Команда xf86config —
настройка графической подсистемы
Текстовый конфигуратор системы X.Org. Использовать его нужно, только если
в вашем дистрибутиве нет более удобных графических или псевдографических
конфигураторов.

25.2. Команды для работы с текстом
25.2.1.

Команды diff и стр — сравнение файлов

Команда diff служит для сравнения двух файлов. Формат вызова команды:
diff параметры файл1 файл2
В выводе команды отличающиеся строки помечаются символами > и /proc/sys/net/ipv4/ip_forward
# Удаляем все цепочки и правила
$IPT -F
$IРТ -X
# Действия по умолчанию.
$IPT -Р INPUT DROP
$IPT -Р FORWARD ACCEPT
$IPT -P OUTPUT DROP

491

Глава 31. Маршрутизация. Настройка брандмауэра

# Разрешаем все пакеты по интерфейсу 1о (обратная петля)
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# Запрещаем любые новые соединения с нашим компьютером
# с любых интерфейсов, кроме 1о
$IPT -A INPUT -m state ! -i lo --state NEW -j DROP
$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
# Отбрасываем все пакеты со статусом INVALID
$IPT -A
INPUT -mstate
--stateINVALID -j DROP
$IPT -A
FORWARD
-mstate
--stateINVALID -j DROP
# Принимаем все пакеты из уже установленного соединения
# Состояние ESTABLISHED
$IPT -A INPUT -m state --stateESTABLISHED,RELATED -jACCEPT
$IPT -A FORWARD
-mstate
--stateESTABLISHED,RELATED

-jACCEPT

# Мой провайдер использует IP-адреса из сети 10.0.0.0 для
# доступа к своим локальным ресурсам. Ничего не поделаешь,
# нужно разрешить эти адреса, иначе мы даже не сможем войти в
# билинговую систему. В вашем случае, может и не нужно будет
# добавлять следующее правило, а, может, у вас будет такая же
# ситуация, но адрес подсети будет другим
$IPT -t nat -I PREROUTING -i $INET -s 10.0.0.1/32 -j ACCEPT
# Защищаемся от SYN-наводнения (довольно популярный вид атаки)
$IPT -A INPUT -р tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Защищаемся от UDP-наводнения
$IPT -AINPUT-p UDP-s 0/0 --dport
138 -j
DROP
$IPT -AINPUT-p UDP-s 0/0 --dport
113 -j
REJECT
$IPT -AINPUT-p UDP-s 0/0 --sport
67 --dport 68 -j ACCEPT
$IPT -AINPUT-p UDP-j RETURN
$IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT
# Защищаемся от ICMP-перенаправления
# Этот вид атаки может использоваться злоумышленником для
# перенаправления своего трафика через вашу машину
$IPT -A INPUT --fragment -р ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP
# Но обычные ICMP-сообщения мы разрешаем
$IPT -A INPUT -p icmp -m icmp -i $INET --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET --icmp-type source-quench -j ACCEPT

492

Часть VI. Linux на сервере

# Разрешаем себе "пинговать" интернет-узлы
$IPT -A INPUT -р icmp -m icmp -i $INET —icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET —icmp-type echo-request -j ACCEPT

# Разрешаем передачу ICMP-сообщения "неверный параметр"
$IPT -A INPUT -p icmp -m icmp -i $INET —icmp-type parameter-problem -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET —icmp-type parameter-problem -j ACCEPT

# Запрещаем подключение к X.Org через сетевые интерфейсы.
$IPT -A INPUT -р tcp -m tcp -i $INET —dport 6000:6063 -j DROP --syn
# Указываем порты, открытые в системе, но которые должны быть
# закрыты на сетевых интерфейсах. Я пропишу только порт 5501:
$IPT -A INPUT -р tcp -m tcp -m multiport -i $INET -j DROP --dports 5501
# Разрешаем DNS
$IPT
$IPT
$IPT
$IPT

-A
-A
-A
-A

OUTPUT -p udp -m udp -o $INET --dport 53 --sport $UPORTS -j ACCEPT
OUTPUT -p tcp -m tcp -o $INET --dport 53 --sport $UPORTS -j ACCEPT
INPUT -p .udp -m udp -i $INET --dport $UPORTS --sport 53 -j ACCEPT
INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 53 -j ACCEPT

# Разрешаем AUTH-запросы к удаленным серверам, но запрещаем такие
# запросы к своему компьютеру
$IPT -A OUTPUT -р tcp -m tcp -о $INET --dport 113 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 113 -j ACCEPT ! --

syn
$IPT -A INPUT -p tcp -m tcp -i $INET —dport 113 -j DROP
# Далее мы открываем некоторые порты, необходимые для
# функционирования сетевых служб
# FTP-клиент (порт 21)
$IPT -A OUTPUT -р tcp -m tcp -о $INET --dport 21 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 21 -j ACCEPT ! --

syn
# SSH-клиент (порт 22)
$IPT
$IPT
syn
$IPT
$IPT

-A OUTPUT -p tcp -m tcp -o $INET --dport 22 --sport $UPORTS -j ACCEPT
-A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 22 -j ACCEPT ! --A OUTPUT -p tcp -m tcp -o $INET --dport 22 --sport 1020:1023 -j ACCEPT
-A INPUT -p tcp -m tcp -i $INET --dport 1020:1023 —sport 22 -j ACCEPT ! --

-syn
# SMTP-клиент (порт 25)
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 25 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 25 -j ACCEPT ! --syn

493

Глава 31. Маршрутизация. Настройка брандмауэра

# HTTP/HTTPS-клиент (порты 80, 443)
$IPT -A OUTPUT -р top -ш top -ш multiport -о $INET --sport $UPORTS - j ACCEPT -dports 80,443
$IPT -A INPUT -p top -m top -m multiport -i $INET --dport $UPORTS -j ACCEPT -sports 80,443 ! --syn

# POP-клиент (порт 110)
$IPT -A OUTPUT -p top -m top -o $INET --dport 110 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p top -m top -i $INET --dport $UPORTS --sport 110 -j ACCEPT ! --

syn
# Разрешаем прохождение DCHP-запросов через iptables
# Необходимо, если IP-адрес динамический
$IPT -A OUTPUT -р udp -m udp -о $INET --dport 67 --sport 68 -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET --dport 68 --sport 67 -j ACCEPT

Вот, практически, и все... Конечно, приведенное здесь описание iptables нельзя назвать полным. Но для полного описания iptables пришлось бы создать отдельную
книгу под названием «Брандмауэр в Linux».
Полное руководство по iptables
В Интернете я нашел одно из наиболее полных руководств по iptables на русском язы­
ке. Так вот, если его распечатать, оно займет 121 страницу формата А4. Учитывая
размер полосы набора страницы книжного формата, которая обычно меньше А4, сме­
ло можно говорить, что объем такой книги составил бы около 200 страниц.
Адрес указанного руководства: http://www.opennet.ru/docs/RUS/iptables/.

Вот еще одна
wiki/Iptables.

очень

хорошая

статья

по

iptables:

http://ru.wikipedia.org/

А для пользователей Debian и Ubuntu будет полезным следующее руководство:
http://www.linux.by/wiki/index.php/Debian_Firewall.

ГЛАВА 32

Безопасный удаленный доступ.
OpenSSH
32.1. Протокол SSH
Для организации удаленного доступа к консоли сервера ранее использовался протокол telnet, и в каждую сетевую операционную систему, будь то FreeBSD или
Windows 95 (которую, впрочем, сложно впрямую назвать сетевой), включался
telnet-клиент. Эта программа так и называется — telnet (в Windows — telnet.exe).
Подключившись с помощью telnet к удаленному компьютеру, вы можете работать
с ним как обычно. В окне telnet-клиента представлена как бы консоль удаленного
компьютера: вы будете вводить команды и получать результат их выполнения —
все так, как если бы вы работали непосредственно за удаленным компьютером.
Но технологии не стоят на месте, и протокол telnet устарел. Сейчас им практически
никто не пользуется. На смену ему пришел протокол SSH (Secure Shell), который,
как видно из названия, представляет собой безопасную оболочку. Главное отличие
SSH от telnet состоит в том, что в соответствии с этим протоколом все данные
(включая пароли доступа к удаленному компьютеру, отдельные файлы и пр.) передаются в зашифрованном виде. Причиной создания SSH стало то, что во времена
telnet участились случаи перехвата паролей и другой важной информации.
SSH использует для шифрования передаваемых данных следующие алгоритмы:
Blowflsh, 3DES (Data Encryption Standard), IDEA (International Data Encryption
Algorithm) и RSA (Rivest-Shamir-Adelman algorithm). Самыми надежными из них
считаются IDEA и RSA. Поэтому, если вы передаете действительно конфиденциальные данные, лучше использовать один из этих алгоритмов.
В состав любого дистрибутива Linux входит SSH-сервер (программа, которая и
обеспечивает удаленный доступ к компьютеру, на котором она установлена)
и SSH-клиент (программа, позволяющая подключаться к SSH-серверу). Для установки SSH-сервера нужно установить пакет openssh (это разновидность SSHсервера), а для установки SSH-клиента — пакет openssh-clients.
Если у вас на рабочей станции установлена система Windows, и вам нужно подключиться к SSH-серверу, запущенному на Linux-машине, то по адресу http://
www.cs.hut.fi/ssh/ вы можете скачать Windows-клиент для SSH. Нужно отметить,
что Windows-клиент, в отличие от Linux-клиента, не бесплатен.

495

Глава 32. Безопасный удаленный доступ. OpenSSH

32.2. Использование SSH-клиента
Работать с SSH-клиентом очень просто. Для подключения к удаленному компьютеру введите команду:
ssh [опции]
В качестве адреса можно указать как IP-адрес, так и доменное имя компьютера.
В табл. 32.1 приведены часто используемые опции команды ssh.
Таблица 32.1. Опции команды ssh
Опция

Описание

-с blowfish|3des|des

Используется для выбора алгоритма шифрования при условии,
что применяется первая версия протокола SSH (об этом позже).
Можно указать blowfish, des или 3des

-с шифр

Задает список шифров, разделенных запятыми в порядке пред­
почтения. Опция используется для второй версии SSH. Можно
указать blowfish, twofish, arcfour, cast, des и 3des

-f

Переводит SSH в фоновый режим после аутентификации пользо­
вателя. Рекомендуется использовать для запуска программы Х11.
Например:

ssh -f server xterm
-1 имя_пользователя

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

-р порт

Определяет порт SSH-сервера (по умолчанию используется
порт 22)

-q

«Тихий режим» — будут отображаться только сообщения о фа­
тальных ошибках. Все прочие предупреждающие сообщения
в стандартный выходной поток выводиться не будут



Отключает перенаправление Х11

-X

Включает перенаправление Х11. Полезна при запуске
Х11 -программ

-1

Использовать только первую версию протокола SSH

-2

Использовать только вторую версию протокола SSH. Вторая вер­
сия протокола более безопасна, поэтому при настройке
SSH-сервера нужно использовать именно ее

32.3. Настройка SSH-сервера
Если вы используете OpenSSH (а в большинстве случаев так оно и есть), все настройки SSH-сервера хранятся в одном-единственном файле: /etc/ssh/sshd_config
(в старых версиях: /etc/sshd_config), а настройки программы-клиента— в файле

496

Часть VI. Linux на сервере

/etc/ssh/ssh_config (в старых версиях: /etc/ssh_config). Настройки программы клиента
обычно задавать не нужно, поскольку они приемлемы по умолчанию. На всякий
случай вы можете заглянуть в файл /etc/ssh_config — его формат, как и назначение
опций (большая часть из них закомментирована), вы поймете и без моих подсказок.
Сейчас нас больше интересует файл sshd_config, содержащий конфигурацию SSHсервера. Рассмотрим пример такой конфигурации (листинг 32.1). Чтобы понять назначение директив, внимательно читайте комментарии, приведенные в листинге.

#

$OpenBSD: sshd_config,v 1.72 2005/07/25 11:59:40 markus Exp $

# Задает порт, на котором будет работать SSH-сервер. Если директива
# не указана (закомментирована), то по умолчанию используется порт 22

# Port 22
# Директива Protocol позволяет выбрать версию протокола,
# рекомендуется использовать вторую версию
# Protocol 2,1
Protocol 2
# Директива AddressFamily задает семейство интерфейсов, которые должен

# прослушивать SSH-сервер
# AddressFamily any
# Локальный адрес, который должен прослушиваться SSH-сервером
# ListenAddress 0.0.0.0
# Ключевой файл для протокола SSH версии 1
# HostKey for protocol version 1
HostKey /etc/ssh/ssh_host_key
# Ключевые файлы для второй версии протокола SSH
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# Время жизни ключа протокола первой версии. Время можно задавать
# в секундах или в часах (постфикс h, например, lh — это 1 час или
# 3600 секунд). По истечении указанноговремени ключевой файл будет

# сгенерирован заново
# KeyRegenerationlnterval lh
# Разрядность ключа сервера в битах (только для первой версии протокола

# SSH)
# ServerKeyBits 768
# Директивы управления протоколированием (можно не изменять)
# SyslogFacility AUTH
# LogLevel INFO

Глава 32. Безопасный удаленный доступ. OpenSSH

497

# Директивы аутентификации
# Время, предоставляемое клиенту для аутентификации. Задается в секундах

# или минутах (lm = 60 секунд). Если за это время клиент не
# аутентифицировал себя, соединение будет прекращено
# LoginGraceTime 2m
# Директива разрешает (yes) удаленный доступ пользователя root
РеrmitRootLogin yes
# Максимальное количество попыток аутентификации
# MaxAuthTries 6
#
#
#
#
#

Использование RSA (yes)
RSAAuthentication yes
Аутентификация с открытым ключом (при значении yes)
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# Использование .rhosts-аутентификации с поддержкой RSA.
# Rhosts-аутентификацию использовать не рекомендуется, поэтому по
# умолчанию для этой директивы указано значение по. Если вы все-таки

# установите значение yes для этой директивы, то не
# забудьте указать в файле /etc/ssh/ssh_known_hosts IP-адреса
# компьютеров, которым разрешен доступ к SSH-серверу. Только для первой

# версии протокола
# RhostsRSAAuthentication по
# Если вы используете вторую версию протокола и хотите разрешить Rhosts# аутентификацию, то вам нужно включить директиву HostbasedAuthentication,

# а разрешенные узлы указываются в файле ~/.ssh/known_hosts
# HostbasedAuthentication no
#
#
#
#
#

Если вы не доверяете пользовательским файлам ~/.ssh/known_hosts,
установите значение yes для директивы IgnoreUserKnownHosts.
Тогда будет использован только
файл /etc/ssh/ssh_known_hosts
IgnoreUserKnownHosts no

# Игнорировать файлы ~/.rhosts и ~/.shosts (рекомендуется установить yes)

# IgnoreRhosts yes
# Следующие директивы не рекомендуется изменять из соображений
# безопасности — они включают аутентификацию по паролю (а не IP-адресу
# компьютера, указанному в файле /etc/ssh/ssh_known_hosts)
# и запрещают использование пустых паролей
# PasswordAuthentication yes
# PermitEmptyPasswords no
# Параметры протокола аутентификации Kerberos
# Рекомендуется использовать RSA-аутентификацию
# KerberosAuthentication no
# KerberosOrLocalPasswd yes
# KerberosTicketCleanup yes
# KerberosGetAFSToken no

498

Часть VI. Linux на сервере

# Параметры GSSAPI
# GSSAPIAuthentication no
# GSSAPICleanupCredentials yes
# Использовать для аутентификации модули РАМ (по умолчанию они
# не используются)
# UsePAM по
# Разрешить ТСР-форвардинг
# AllowTcpForwarding yes
# Использовать порты шлюза
# GatewayPorts по
# Использовать Xll-форвардинг (для запуска XII-приложений)
X11Forwarding yes
# Выводить сообщение дня (содержится в файле /etc/motd)
# PrintMotd yes
# Выводить время последней регистрации пользователя
# PrintLastLog yes
# Не обрывать TCP-соединения после выполнения команды по SSH
# TCPKeepAlive yes
# Отключение (значение по) этой опции позволяет немного ускорить работу
# SSH, поскольку DNS не будет использоваться для разрешения доменных имен

# UseDNS yes
# Остальные параметры рекомендуется оставить как есть
# UseLogin no
UsePrivilegeSeparation yes
# PermitUserEnvironment no
# Compression delayed
# ClientAlivelnterval 0
# ClientAliveCountMax 3
# PidFile /var/run/sshd.pid
# MaxStartups 10
# Banner /some/path
Subsystem sftp /usr/lib/ssh/sftp-server
Итак, установив пакеты openssh и openssh-clients, приступим к тестированию работы SSH-сервера. Для его запуска следует использовать команду:
# service sshd start
А для останова — ту же команду, но с параметром stop:
# service sshd stop

Глава 32. Безопасный удаленный доступ. OpenSSH

499

В openSUSE для запуска/останова сервера используются команды (соответственно):
# rcssh start
# rcssh stop
Запустите также конфигуратор управления сервисами и убедитесь, что сервис sshd
запускается при запуске системы. В Fedora таким конфигуратором является systemconfig-services, а в openSUSE для управления службами используется конфигуратор
YaST: YaST | Система | Системные службы. В современных версиях Ubuntu конфигуратор, управляющий службами, отсутствует по умолчанию, и при особом желании вы можете самостоятельно установить графический конфигуратор bum
(рис. 32.1).

Рис. 32.1. Ubuntu: конфигуратор служб bum

После этого для подключения к локальному компьютеру можно ввести команду:
ssh 127.0.0.1
К SSH-серверу можно также подключиться и с удаленного компьютера— если
сеть на локальном и удаленном компьютере настроена правильно, проблем возникнуть не должно.

ГЛАВА

33

Web-сервер.
Связка Apache + РНР + MySQL
33.1. Самый популярный Web-сервер
Apache — это Web-сервер с открытым исходным кодом. История его развития началась в 1995 году — тогда Apache был всего лишь «заплаткой», устраняющей ошибки
популярного в то время Web-сервера NCSA HTTPd 1.3. Считается, что отсюда произошло и название Apache (a patchy — заплатка). Сейчас Apache — самый популярный Web-сервер в Интернете.
Основные достоинства Apache — надежность, безопасность и гибкость настройки.
Apache позволяет подключать различные модули, добавляющие в него новые возможности — например, можно подключить модуль, обеспечивающий поддержку
РНР или любого другого Web-ориентированного языка программирования.
Но есть у Apache и недостатки — без этого никак, у любой медали всегда есть
обратная сторона. Основной недостаток— отсутствие удобного графического интерфейса администратора. Да, настройка Apache осуществляется путем редактирования его конфигурационного файла. В Интернете можно найти простые конфигураторы Apache, но их возможностей явно не хватает для настройки всех функций
Web-сервера.

33.2. Установка Web-сервера
и интерпретатора РНР. Выбор версии
Долгое время в репозиториях большинства дистрибутивов параллельно содержались две версии Apache: 1.3 и 2.2. Сейчас версия 1.x более не поддерживается, а
вместо версии 2.2 обычно используется версия 2.4. Поэтому теперь можно не ломать себе голову вопросом, какую версию лучше установить.
Итак, приступим к установке Apache. Запустите менеджер пакетов (например,
Synaptic, используемый в Ubuntu), произведите поиск пакета apache (в некоторых
дистрибутивах нужный нам пакет называется apache2, а, например, в Fedora —
httpd) и выберите пакет apache2. Менеджер пакетов сообщит вам, что нужно установить дополнительные пакеты (рис. 33.1).

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

501

Рис. 33.1. Ubuntu: дополнительные пакеты для установки Apache

Чтобы сразу «убить двух зайцев», выберите еще и пакет libapache2-mod-php5 — он
устанавливает РНР5 и добавляет его поддержку в Apache. Менеджер снова предложит вам установить дополнительные пакеты, но теперь для РНР (рис. 33.2).

Рис. 33.2. Ubuntu: дополнительные пакеты для установки РНР5

502

Часть VI. Linux на сервере

О ВЕРСИЯХ РНР
На момент написания этих строк уже была доступной версия РНР 7.1, но поскольку
версия 7.x пока редко используется в производственных окружениях, настройка Webсервера производится на примере 5-й версии, которая пока еще является стандартом
де-факто. При желании вы можете установить и 7-ю версию — просто установите па­
кеты, относящиеся к 7-й версии. Помните, что РНР 7 не поддерживает расширение
mysql, поэтому не пытайтесь найти пакет php-mysql7 в вашем дистрибутиве — его не
будет. Работа с СУБД MySQL будет осуществляться или посредством расширения
PDO или расширения mysqli. Если у вас есть старые сценарии, написанные с исполь­
зованием расширения mysql, их придется переписать, иначе они не будут работать
в РНР 7.

Нажмем кнопку Применить, и машина установит все выбранное (рис. 33.3). В зависимости от требуемой конфигурации возможно понадобится установить также
пакеты php5-imap, php5-gd, php5-mysql, php5-xmlrpc, обеспечивающие поддержку,
соответственно, протоколов IMAP/POP, графической библиотеки GD, СУБД
MySQL и XML-RPC. Есть и другие расширения РНР, однако вряд ли имеет смысл
устанавливать все возможные расширения (если, конечно, вы не настраиваете
сервер хостинг-провайдера, где нужно обеспечить максимум возможностей для
клиентов).

Рис. 33.3. Ubuntu: за миг до начала установки Web-сервера и всего необходимого

33.3. Тестирование настроек
Теперь протестируем Web-сервер. По идее, после установки сервер должен запуститься автоматически, но в некоторых дистрибутивах его придется запустить вручную (см. разд. 33.5).

Гпава 33. Web-cepeep. Связка Apache + РНР + MySQL

503

Запустите сервер или убедитесь, что он запущен (см. разд. 33.5), откройте браузер
и введите адрес:
http://localhost
Должна открыться тестовая страница Apache (рис. 33.4).

Рис. 33.4. Ubuntu: тестовая страница Apache

Теперь протестируем поддержку РНР. Для этого поместите в каталог /var/www/html/
файл test.php (листинг 33.1). Учтите — чтобы создать файл в этом каталоге, нужны
права root.


Создав файл, введите в строке браузера следующий адрес:
http://localhost/test.php

504

Часть VI. Linux на сервере

Рис. 33.5. Ubuntu: информация о Web-сервере и о РНР

Рис. 33.6. Ubuntu: тестовый сценарий

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

505

В окне браузера вы должны увидеть информацию о своем сервере и о РНР
(рис. 33.5), а на рис. 33.6 показан сам тестовый сценарий.
СОВЕТ
Если вместо отображения тестовой страницы, изображенной на рис. 33.4, браузер
предложит вам сохранить файл test.php, перезапустите Web-сервер (см. разд. 33.5).

Как вы уже догадались, каталог /var/www/html является корневым для нашего сервера, и если создать в нем файл test.html, то он будет доступен по адресу
http://localhost/test.html.

33.4. Файл конфигурации Web-сервера
33.4.1. Базовая настройка
В зависимости от версии Apache и вашего дистрибутива, конфигурационные файлы
Apache могут находиться в следующих каталогах: /etc/apache, /etc/apache2, /etc/httpd
или /etc/httpd2. Основные конфигурационные файлы Web-сервера при этом называются httpd.conf, httpd2.conf или apache.conf и apache2.conf. Названия каталогов и файлов, содержащих слово «apache», характерно для дистрибутивов Debian и Ubuntu, а
содержащих слово «httpd» — для Fedora. В любом случае найти конфигурационные
файлы не сложно: ищите или apache, или httpd — и не промахнетесь!
Внимание!
После каждого изменения конфигурационных файлов сервера его нужно перезапус­
тить (см. разд. 33.5)!

В предыдущих версиях Linux все настройки хранились в одном огромном файле
конфигурации. Сейчас этот файл чаще содержит Include-инструкции подключения
других файлов конфигурации (более компактных). Все это сделано для удобства
администраторов— проще работать с несколькими компактными файлами, чем
с одним огромным, поэтому смотрите на все такие дополнительные файлы как на
части основного файла конфигурации. Синтаксис у них такой же.
Итак, первым делом откройте основной конфигурационный файл (для определенности будем считать, что он называется httpd2.conf) и найдите директиву:
#ServerName new.host.паше
Ее следует раскомментировать и указать имя сервера, которое будут задавать пользователи в строке браузера. Это имя должно быть зарегистрировано в DNS-сервере
вашей сети (или указано в файле /etc/hosts каждого компьютера сети). Обычно здесь
указывается имя компьютера, например:
ServerName user-desktop
После этого можно будет обращаться к серверу по адресу http://user-desktop/.
Кроме файла apache2.conf в подкаталогах каталога /etc/apache2 находятся дополнительные файлы, которые подключаются в основном файле конфигурации. Так,
в файле ports.conf содержится описание портов, которые должен прослушивать сер-

Часть Vi Linux на сервере

506

вер, в подкаталоге conf-enabled — вспомогательные файлы конфигурации (и все они
с «расширением» .conf), а описание различных модулей Apache находится в файлах
из подкаталога mods-enabled.

33.4.2. Самые полезные директивы
файла конфигурации
Понятно, что для полноценной настройки сервера одной директивы ServerName недостаточно. В табл. 33.1 приведены самые полезные директивы файла конфигурации Apache. Нужно отметить, что в таблице не рассматриваются некоторые директивы (например, Port, BindAddress), которые не используются во второй версии
Apache.
Таблица 33.1. Директивы файла конфигурации

Директива

Описание

ServerName имя

Задает имя Web-сервера — оно должно быть зарегистрирова­
но на DNS-сервере, т. е. обычно — это доменное имя сервера

ServerAdmin e-mail

Задает e-mail администратора сервера

ServerRoot каталог

Определяет каталог с конфигурационными файлами сервера

PidFile файл

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

DocumentRoot каталог

Позволяет задать каталог, в котором хранятся документы
Web-сервера, — это корневой каталог документов. Обычно это
/var/www

StartServers N,
MaxSpareServers N,
MinSpareServers N,
MaxClients N

Директивы, непосредственно влияющие на производитель­
ность сервера. Мы их рассмотрим отдельно в разд. 33.6

KeepAlive On | Off,
KeepAliveTimeout N

Управляют постоянными соединениями (будут рассмотрены
в разб. 33.6)

Directorylndex список

Задает имена файлов, которые могут использоваться
в качестве главной страницы (индекса). Значение
по умолчанию index.html index.cgi index.pl index.php

index.xhtml
HostnameLookups On|Off

Если директива включена (On), то IP-адрес клиента перед
записью в журнал будет разрешен (т. е. Web-сервер вычислит
доменное имя клиента перед записью информации о попытке
доступа в журнал). Выключение (Off) этой опции позволяет
повысить производительность сервера, поскольку ему не нуж­
но будет тратить время на разрешение IP-адресов в доменные
имена

ErrorLog файл

Задает журнал ошибок

TransferLog файл

Задает журнал обращений к серверу

507

Гпава 33. Web-cepeep. Связка Apache + РНР + MySQL

Таблица 33.1 (окончание)
Директива

Описание

Timeout N

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

User пользовательGroup
группа

Директивы User и Group задают имя пользователя и группы,
от имени которых запускается Web-сервер

FancyIndexing on | off

Если пользователь в запросе не укажет имя документа,
а только каталог, но в нем не окажется главной страницы,
заданной директивой Directorylndex, сервер передаст поль­
зователю оглавление каталога. Эта директива определяет,
в каком виде будет передано оглавление каталога: в более
красивом, со значками каталогов и описаниями файлов
(значение On), или в более простом (Off)

Addlcon картинка список

Если Fancyindexing включена, то Addlcon позволяет связать
графическую картинку с типом файла, например:

Addlcon /images/graphics.gif .gif, .jpeg, .bmp, .png,
.tiff
DefaultIcon картинка

Позволяет задать картинку по умолчанию (Addlcon,
Fancyindexing)

ErrorDocument N файл

Позволяет задать файл, содержащий сообщение об ошибке.
Для ошибки с номером N, например:
ErrorDocument 404 /еггоrs/file_not_found.html

Directory, Limit, Location,Это так называемые блочные директивы, которые нельзя
описать одной строкой, поэтому о них мы поговорим отдельно
Files
(см. разд. 33.4.3)

33.4.3. Директивы Directory, Limit, Location, Files
Рассмотрим сначала блочные директивы Directory и Limit.
□ С помощью блочной директивы Directory можно установить параметры отдельного каталога. Внутри директивы Directory могут использоваться директивы
AllowOverride, Limit, Options. Вот пример определения параметров корневого
сервера:

AllowOverride None
Options None

Значения None для обеих директив (AllowOverride и Options) считаются самыми
безопасными. None для AiiowOverride запрещает использование файлов .htaccess,
которые могут переопределять директивы конфигурационного файла Apache.
К тому же, AllowOverride None позволяет повысить производительность сервера.

508

Часть VI. Linux на сервере

Допустимые опции каталога (значения директивы Options) указаны в табл. 33.2.
Таблица 33.2. Опции каталога
Опция

Описание

None

Запрещены все опции

All

Все опции разрешены

Indexes

Если указана эта опция, при отсутствии файла, заданного
Directory Index, будет выведено оглавление каталога. Если Options
установлена в None (или Indexes не указана в списке опций), то ог­
лавление каталога выводиться не будет

Includes

Разрешает использование SSI (Server Side Includes)

IncludesNoExec

Более безопасный режим SSI: разрешает SSI, но запрещает запускать
из включений внешние программы

ExecCGI

Разрешает выполнение CGI-сценариев

FollowSymLink

Разрешает использование символических ссылок. Довольно опасная
опция, поэтому лучше ее не использовать

□ Блочная директива Limit позволяет ограничить доступ. Внутри этой директивы
можно использовать директивы order, deny и allow (вообще-то, есть еще и
директива require, но она очень редко используется). Директива order задает
порядок выполнения директив deny и allow:
# сначала запретить, потом разрешить
order deny, allow
# сначала разрешить, потом запретить
order allow, deny
Директивы allow и deny нужно использовать так:
# запрещаем доступ всем
deny from all
# разрешаем доступ только нашей сети
allow from firma.ru
Пример использования директив Directory и Limit представлен в листинге 33.2.


AllowOverride None
Options None

order deny, allow
# запрещаем доступ всем
deny from all

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

509

# разрешаем доступ только нашей сети
allow from firma.ru


В качестве параметра директиве Limit можно передать метод передачи данных
(get, post), например:


Теперь обратимся К блочным директивам Location и Files.


Директива Location очень похожа на директиву Directory. Только если
ограничивает доступ к каталогу, то Location предназначена для ограничения доступа к отдельным адресам (URL) сервера:
Directory


директивы ограничения доступа

К директивам ограничения досту па относятся order, deny, allow.
□ Директива Files предназначена для ограничения доступа к отдельным файлам:

директивы ограничения доступа

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

order deny, allow
deny from all
allow from firma.ru

# запрещаем доступ к файлам . ht* всем

Order allow,deny
Deny from all

Мы рассмотрели все самые полезные директивы конфигурационного файла Apache.
Напомню, что директивы, непосредственно влияющие на производительность сервера, рассмотрены в разд. 33.6.

510

Часть VI. Linux на сервере

33.5. Управление запуском сервера Apache
Для управления Web-сервером можно использовать команду service:
□ sudo service httpd start — запуск сервера;
□ sudo service httpd stop — останов сервера;
□ sudo service httpd restart — перезапуск сервера.
Понятно, что Web-сервер запускается автоматически, поэтому каждый день вам не
придется вводить команду service httpd start.
Как уже отмечалось ранее, в разных дистрибутивах служба Web-сервера называется по-разному: httpd, httpd2, apache или apache2. В последней версии Ubuntu служба
называется именно apache2, а в Fedora— httpd. Поэтому, если система сообщила,
что в ней нет вызванного вами сервиса, попробуйте просто использовать другое
название.
В новых версиях Ubuntu команда service присутствует, поэтому управлять Apache
можно так, как здесь и показано. В старых версиях Ubuntu и Debian команды
service нет, поэтому управлять Apache надо так:
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart

33.6. Оптимизация Apache
В конфигурационном файле сервера Apache httpd.conf, находящемся в каталоге
/etc/apache или в каталоге /etc/httpd/conf (в зависимости от дистрибутива и версии
Apache), имеется ряд директив, позволяющих оптимизировать работу сервера.
□ Директива MaxClients позволяет ограничить число одновременно работающих
клиентов.
Чтобы правильно установить это значение, нужно знать, сколько пользователей
может одновременно зайти на сервер. При небольшой посещаемости вполне
хватит значения 30-50, при большой загрузке количество одновременно работающих клиентов может исчисляться сотнями. Следите за посещаемостью вашего сервера и корректируйте это значение, иначе какая-то часть пользователей
может остаться «за бортом», а им это очень не понравится (или же, наоборот,
ресурсы сервера будут использоваться нерационально).
□ Директива StartServers задает количество экземпляров сервера, которые будут
созданы при запуске исходной копии сервера.
Для этой директивы можно установить значение, равное 10% от MaxClients.
Устанавливать большое значение не следует во избежание нерационального
использования ресурсов компьютера.

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

511

Рассмотрим обычную ситуацию. Для MaxClients вы установили значение 200,
а для StartServers — 20. Запросы первых 20 клиентов будут обрабатываться
очень быстро, поскольку сервисы уже запущены. Запрос 21-го клиента будет
обслужен чуть медленнее, поскольку понадобится запустить еще одну копию Apache. И тем не менее, не нужно устанавливать в нашем случае
(MaxClients = 200) для StartServers значение больше 20 — ведь не всегда даже
20 человек одновременно заходят на сервер. Если же на сервере постоянно находится как минимум 20 человек, тогда нужно увеличить значения и MaxClients,
и StartServers.
Впрочем, бывают и исключения— например, если сервер обслуживает внутреннюю корпоративную сеть. В этом случае вы точно знаете, сколько клиентов
в вашей сети, а следовательно, можете точно определить, какое значение установить для MaxClients и StartServers. Но, все равно, для MaxClients нужно установить чуть большее значение, чем для StartServers — на всякий случай:
MaxClients 150
StartServers 100


Чтобы еще эффективнее оптимизировать работу Web-сервера, нужно понимать,
как он работает: клиент посылает запрос, Web-сервер его обрабатывает и посылает клиенту ответ. После этого соединение можно закрывать и завершать копию Apache, обслуживающую это соединение. Но зачем завершать копию Webсервера, если сейчас же на сайт зайдет другой пользователь, и опять нужно
будет запускать еще одну копию сервера, что только увеличит загрузку процессора. Поэтому с помощью директивы MaxSpareServers можно установить максимальное число серверов, которые останутся в памяти уже после закрытия
соединения с пользователем, — они будут просто ждать своего пользователя.
Теоретически, чтобы сбалансировать нагрузку, значение для MaxSpareServers
можно установить таким же, что и для StartServers, е.е. 10% от MaxClients

□ Вы не задумывались, что если Web-сервер будет работать в режиме постоянного
соединения, то это повысит его производительность? Если вы об этом подумали,
то мыслите в правильном направлении. Представим, что у нас на сайте есть форум. Человек редко заходит на форум, чтобы посмотреть одну страничку,—
обычно он может находиться на форуме часами. Так зачем же закрывать соединение? Чтобы потом опять тратить время и ресурсы на его открытие? Разрешить
постоянные соединения можно с помощью директивы KeepAlive. Она задает
максимальное число таких соединений:
KeepAlive 5


А директива KeepAliveTimeout задает тайм-аут для постоянного соединения
в секундах:
KeepAliveTimeout 15

Используя все упомянутые в этом разделе директивы, вы сможете добиться существенного повышения производительности своего Web-сервера.

512

Часть VI Linux на сервере

33.7. Пользовательские каталоги
Если вы когда-нибудь настраивали сервер Apache, то наверняка знакомы с директивой userDir. Я специально ее не описал в табл. 33.1, потому что она заслуживает
отдельного разговора.
По умолчанию директива UserDir отключена:
UserDir disabled
Включить ее можно, указав вместо disabled любое другое значение, — обычно указывается значение public_html:
UserDir public_html
Затем в пользовательском каталоге /1"юте/ создается каталог public_html и в него
помещаются HTML/PHP-файлы персонального сайта пользователя. Обращение
к сайту пользователя происходит по URL:
httр://имя_сервера/~имя_пользователя
Например, если при включенной директиве UserDir вы поместили в каталог
/home/den/public_html файл reportxml, то обратиться к нему можно по адресу:
http://server/~den/report.xml
Недавно, настраивая сервер на базе openSUSE, я столкнулся с небольшой проблемой. Ранее, во времена огромного конфигурационного файла, достаточно было раскомментировать эту директиву в конфигурационном файле. Сейчас, когда конфигурация сервера состоит из нескольких небольших файлов, добавление этой опции
в основной конфигурационный файл не привело ни к каким изменениям. Оказалось, опцию UserDir нужно добавить (точнее, просто раскомментировать) в файл
/etc/apache2/mod_userdir.conf1. А затем добавить следующую строку в самый конец
файла /etc/apache2/default-server.conf:
Include /etc/apache2/mod_userdir.conf
После всего этого следует перезапустить сервер.

33.8. Установка сервера баз данных MySQL
33.8.1. Установка сервера
Для организации связки Apache + РНР + MySQL нам осталось установить последний компонент — сервер баз данных MySQL. Для установки MySQL-сервера установите следующие пакеты:
□ mysql-server-5.0;
□ mysql-client-5.0;
□ mysql-admin.
1 Не забывайте указывать свой путь к файлу конфигурации, поскольку каталог с файлами конфигурации может отличаться в зависимости от версии дистрибутива и самого Apache.

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

513

Первый пакет содержит последнюю версию MySQL-сервера (на данный момент —
это пятая версия), во втором пакете находится MySQL-клиент, т. е. программа,
которая будет подключаться к MySQL-серверу, передавать ему SQL-запросы и
отображать результат их выполнения. Третий пакет содержит программу для администрирования MySQL-сервера. Все необходимые дополнительные пакеты будут
установлены автоматически.

33.8.2. Изменение пароля root
и добавление пользователей
Сразу после установки пакетов введите следующие команды:
# mysql_install_db
# mysqladmin -u root password ваш_пароль
ЕСЛИ ЧТО-ТО ПОЙДЕТ HE ТАК...
В процессе выполнения команды mysql_install_db вы можете получить сообщение:
[ERROR] /usr/libexec/mysqld: Can't find file: './mysql/help_relation.frm' (errno: 13)
Поможет команда chown -r mysql /var/lib/mysql. После ее выполнения нужно заново
выполнить команду mysql_install_db.

Первая команда (# mysqi_install_db) создаст необходимые таблицы привилегий, а
вторая (# mysqladmin -u root password ваш_пароль) — задаст пароль пользователя
root для сервера MySQL. Этот пароль вы будете использовать для администрирования сервера (заданный пароль может и должен отличаться от того, который вы используете для входа в систему). Для обычной работы с сервером рекомендуется
создать обычного пользователя. Для этого введите команду:
mysql -u root -р mysql
Программа mysql является клиентом MySQL-сервера. В указанном случае она
должна подключиться к базе данных mysql (служебная база данных), используя имя
пользователя root (-u root). Поскольку вы только что указали пароль для пользователя root (до этого пароль для root не был задан), вам нужно указать параметр -р.
После того как программа mysql подключится к серверу, вы увидите приглашение
программы. В ответ на него нужно ввести следующий SQL-оператор:
insert into user(Host, User, Password, Select_priv, Insert_priv, Update_priv,

Delete_priv)
values ( ' % ' , ’ u s e r n a m e ' , p a s s w o r d ( ' 1 2 3 4 5 6 ' ) , ' Y ' , ' Y ' , ' Y ' , ' Y ' ) ;

Таким оператором мы создали пользователя с именем username и паролем 123456.
Этот пользователь имеет право использовать SQL-операторы select (выборка из
таблицы), insert (добавление новой записи в таблицу), update (обновление записи),
delete (удаление записи). Если нужно, чтобы ваш пользователь имел право создавать и удалять таблицы, тогда добавьте привилегии Create_priv и Drop_priv:
insert into user(Host, User, Password, Select_priv, Insert_priv, Update_priv,
Delete_priv, Create_priv, Drop_prov)
values ( ' % ' , ' u s e r n a m e ' , p a s s w o r d ( ' 1 2 3 4 5 6 ' ) , ' Y ' , ' Y ' , ' Y ' , ' Y ' , ' Y ' , ' Y ' ) ;

514

Часть VI. Linux на сервере

Помните про точку с запятой!
Приведенный здесь SQL-оператор можно записать в одну строку, можно разбить на
несколько строк — как вам будет удобно. Но в конце каждого SQL-оператора должна
быть точка с запятой!

Для выхода из программы mysql нужно ввести команду quit.
Кроме программы mysql, в состав MySQL-клиента входит одна очень полезная
программа— mysqlshow, которая может вывести список таблиц, находящихся в
той или иной базе данных. Кроме этого, она еще много чего может, но сейчас нам
нужен пока список таблиц — чтобы вы знали, какие таблицы есть в базе данных:
mysqlshow -р

33.8.3. Запуск и останов сервера
Для управления MySQL-сервером служит программа /etc/init.d/mysql. Чтобы запустить сервер, нужно передать этой программе параметр start, для останова — stop,
а для перезапуска — restart:
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql restart
В Fedora можно воспользоваться командой service:
# service mysql start
# service mysql stop
# service mysql restart
Также для управления сервером можно использовать
узнать больше о ней можно с помощью команды:
man mysqladmin

программу

mysqladmin,

33.8.4. Программа MySQL Administrator
При установке сервера мы установили программу MySQL Administrator (пакет
mysql-admin). Запустите программу командой меню Приложения | Программиро­
вание | MySQL Administrator. Укажите адрес сервера locaihost, имя пользователя — root, пароль, который вы указали при установке сервера (рис. 33.7), и нажмите кнопку Connect.
Далее управлять сервером будет существенно проще (рис. 33.8). Пройдемся по основным разделам программы MySQL Administrator:
□ Server Information — общая информация о сервере;
□ Service Control — управление запуском сервиса MySQL (здесь вы можете перезапустить сервер);
□ Startup Parameters — параметры, указываемые при запуске сервера;
□ User Administration— здесь можно добавить новых пользователей MySQL и
установить права пользователей;

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

Рис. 33.7. Ubuntu: вход на сервер MySQL

Рис. 33.8. Ubuntu: основное окно программы MySQL Administrator

515

516

Часть VI. Linux на сервере

□ Server Connections — позволяет просмотреть текущие соединения с сервером;
□ Server Logs — журналы сервера;
□ Backup — создание резервной копии сервера;
□ Restore Backup — восстановление из резервной копии;
□ Replication Status — состояние репликации сервера;
□ Catalogs — позволяет просмотреть имеющиеся базы данных и таблицы внутри
них.

33.9. Обеспечение безопасности сайта
от вирусов
33.9.1. Как вирусы попадают на сайт?
В последнее время замечена стойкая тенденция распространения интернет-вирусов,
и в этом издании я не мог не затронуть этот вопрос. Только в текущем, 2017-м, году
ко мне обратились более 20 знакомых с просьбой удалить вирус с их сайта, и при
этом в нескольких случаях это были сайты крупных и известных компаний.
Первым делом нужно понять, как вирус попадает на сайт, а потом уже разрабатывать стратегию защиты сайта. Как правило, вирус проникает в сайты, разработанные с использованием готовых т. н. систем управления содержимым (от англ.
Content Management System, CMS): Joomla!, WordPress, Magento и np.
Код таких CMS открыт и доступен всем, в том числе и злоумышленникам. Все, что
им остается, — это найти уязвимость или в коде самой CMS, или в стороннем плагине/скине, а затем найти сайт, имеющий эту уязвимость. С последним отлично
справится Google или другой поисковик.
У злоумышленников, как правило, есть специальные боты, производящие поиск
в сети сайтов с уязвимостями. После того, как сайт найден, происходит внедрение
вируса.
Как с этим бороться? Если есть возможность, нужно отдать предпочтение не готовым CMS, а так называемым «кастомным». Код, написанный вами лично или приглашенным программистом, не будет содержать общеизвестных уязвимостей, поэтому боты просто не «увидят» ваш сайт.
Конечно, вы тоже можете допустить ошибку при написании сценариев, и в вашем
коде тоже могут оказаться уязвимости. Но они будут отличаться от тех, которые
имеются в стандартных CMS, поэтому стандартные методы взлома на ваш сайт уже
действовать не будут
Взломать можно любой сайт. Но тогда злоумышленнику придется взламывать
именно ваш сайт, тратить время на поиск уязвимости, что не так просто сделать, не
имея кода под рукой (а он будет закрыт, ясное дело).
Конечно, не всегда есть возможность по тем или иным причинам написать код самому. Тогда нужно обезопасить то, что есть.

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

517

33.9.2. Установка прав доступа
Прежде всего следует с помощью файла .htaccess закрыть доступ к панели управления сайтом. В случае с WordPress нужно ограничить доступ к сценарию wp-login.php.
Делается это так:

order deny,allow
deny from all
allow from Bam_ip

Даже если у вас динамический IP-адрес, то проще его изменить в файле .htaccess,
чем дождаться взлома вашего сайта.
Если жестко ограничить доступ невозможно, в качестве выхода из ситуации для
защиты Web-, SSH- и почтового сервера можно использовать программу Fail2ban.
Эта программа, если обнаружит подозрительное поведение, — например, попытку
брутфорса пароля, просто заблокирует нарушителя. Блокировка осуществляется
посредством iptables. Подробное рассмотрение Fail2ban выходит за рамки этой
книги, но могу посоветовать неплохое руководство на русском языке:
https://vps.ua/wiki/install-linux-vps/security/configuring-fail2ban/.
Вторая часто встречающаяся проблема — неправильные и слишком высокие права
доступа к файлам и каталогам вашего сайта. В идеале нужно предоставить доступ
«только чтение» ко всем файлам и каталогам сайта пользователю www-data (от его
имени в современных дистрибутивах запускается Apache).
Для этого перейдите в каталог DocumentRoot (обычно это /var/www/html, но точный
путь зависит от настроек сервера) и введите команду:
chown -R www-data:www-data .
Эта команда рекурсивно меняет владельца всех файлов и каталогов сайта на
www-data.
Затем установите права доступа «только чтение» (500 — для каталогов и 400 — для
файлов):
find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;
Для файлов и каталогов, которым необходим доступ «чтение запись» (600 и 700
соответственно), чтобы обеспечить нормальное функционирование сайта (а это
каталоги, в которые загружаются служебные данные, изображения и т. д.), нужно
изменить права так:
find
find
find
find

var/ -type f
media/ -type
var/ -type d
media/ -type

-exec chmod 600 {} \;
f -exec chmod 600 {} \;
-exec chmod 700 {} \;
d -exec chmod 700 {} \;

518

Часть VI. Linux на сервере

33.9.3. Антивирус ClamAV
Не будет лишним и применить антивирус, для чего установите пакет clamav. В результате будет создана группа и пользователь с таким же именем, поэтому в средстве мониторинга (вроде Zabbix) вы можете получить уведомление об изменении
файла /etc/passwd.
После установки антивируса нужно сразу же обновить антивирусные базы:
# freshclam
Не забудьте также добавить задание cron для обновления баз, выполнив команду:
# crontab -е
Добавьте в задание строку:
0 0 * * *

/usr/local/bin/freshclam -quiet -1 /var/log/clam-update.log

Она обеспечит запуск обновления в 0 часов и 0 минут каждый день.
А н т и в и р у с C l a m AV
Более подробное описание антивируса ClamAV вы найдете в папке Дополнения со­
провождающего книгу электронного архива (см. приложение).

Теперь о сканировании. Для сканирования можно использовать либо сканер
clamscan, либо демон clam-daemon. Последний устанавливается отдельно (пакет
clam-daemon).
Запускать сканер нужно так:
clamscan -r -i [каталог]
Если каталог не задан, то проверка начнется с текущего каталога. Ключ -i обеспечивает вывод информации только об инфицированных файлах. На рис. 33.9 показан
вывод отчета о сканировании — как видите, антивирус обнаружил один инфицированный файл (полный путь здесь я, естественно, затер, чтобы не демонстрировать
имя узла, файлы которого проверял).
При желании можно запланировать проверку (если вы не хотите по каким-то причинам использовать демон clam-daemon), скажем, раз в сутки так:
clamscan -г -i /var/www/html | mail user@example.com
Эту команду нужно добавить в задание планировщика cron.

Рис. 33.9. Отчет о проверке

Глава 33. Web-cepeep. Связка Apache + РНР + MySQL

519

33.9.4. Сценарий scanner
Для собственного использования я написал простенький bash-сценарий, который
ищет файлы, содержащие подозрительные РНР-инструкции, а также файлы .html и
.php, изменившиеся за последние 20 дней (рис. 33.10). Не обязательно, что все найденные файлы заражены вирусами, но такие файлы нужно держать на контроле,
особенно те, которые вы не изменяли.

#!/bin/bash
fld="/var/www/html"
echo "Следующие файлы содержат подозрительный код (инструкции eval,

base64_decode, preg_replace):"
grep -RE 'preg_replace\(|eval\(Ibase64_decode\(' —include=1 *.php' $fld |

cut -d: -f 1 | sort -u
echo "Файлы, модифицированные за последние 20 дней:"
find $fld -паше f*.phpf -type f -mtime -20 ! -mtime -1 -printf '%TY-%Tm-%Td
%TT %p\n'
find $fld -name '*.htmlf -type f -mtime -20 ! -mtime -1 -printf ,%TY-%Tm-%Td
%TT %p\n'

Рис. 33.10. Результат работы сценария scanner

ГЛАВА 34

FTP-сервер
Сервер FTP (File Transfer Protocol) обеспечивает обмен файлами между пользователями Интернета. Осуществляется это следующим образом: на FTP-сервере размещается какой-нибудь файл, а пользователи с помощью FTP-клиента (в любой
операционной системе имеется стандартный FTP-клиент— программа ftp) подключаются к FTP-серверу и скачивают этот файл.
Права пользователя FTP-сервера определяются его администратором. Одним пользователям разрешается загружать файлы в свои личные каталоги на сервере, другие
имеют полный доступ к FTP-серверу (имеют право загружать файлы в любые каталоги — как правило, это администраторы FTP-сервера), третьи могут только скачивать публично доступные файлы. Третья группа пользователей самая большая —
это так называемые анонимные пользователи. Чтобы не создавать учетную запись
для каждого анонимного пользователя, все они работают под так называемой ано­
нимной учетной записью, когда вместо имени пользователя указывается имя
anonymous, а вместо пароля — адрес электронной почты пользователя.
В локальной сети обмен файлами можно организовать с помощью сервера Samba,
имитирующего работу рабочей станции под управлением Windows, в Интернете же
для обмена файлами надо использовать только FTP-сервер. С другой стороны, ничего не мешает вам организовать FTP-сервер для обмена файлами внутри локальной сети, — это дело вкуса и предпочтений администратора.
Все необходимое для организации FTP-сервера программное обеспечение входит
в состав дистрибутива или же бесплатно доступно для скачивания в Интернете.
Здесь мы рассмотрим самый удобный, на мой взгляд, FTP-сервер ProFTPD. Это не
единственный FTP-сервер для Linux, есть еще и другие FTP-серверы, — например,
wu-ftpd, но ProFTPD является одним из самых защищенных и удобных в настройке.

34.1. Установка FTP-сервера
Для установки FTP-сервера нужно инсталлировать пакет profitpd (рис. 34.1). Хорошо бы также установить и конфигуратор gproftpd, если он доступен в вашем дистрибутиве.

521

Глава 34. FTP-cepeep

Рис. 34.1. Fedora 26: установка ProFTPD

Запуск и останов сервера осуществляется командой service:
sudo service protfpd start
sudo service protfpd stop
Для получения информации о состоянии сервера и его перезапуска обычно используются команды status И restart:
sudo service protfpd status
sudo service protfpd restart

34.2. Конфигурационный файл
Основным
конфигурационным
файлом
сервера
ProFTPD
является
файл
/etc/proftpd/proftpd.conf. В листинге 34.1 представлен его простейший пример. В зависимости от дистрибутива и версии ProFTPD файл конфигурации ProFTPD может
отличаться от приведенного в листинге 34.1.

# Подключаем файл с модулями
Include /etc/proftpd/modules.conf
ServerName

"My server"

# можно написать все,
# что угодно

522

Часть VI. Linux на сервере

ServerType
DeferWelcome

standalone
off

MultilineRFC2228
DefaultServer
ShowSymlinks

on
on
on

# автономный
# вывести приветствие до
# аутентификации
# поддержка RFC2228
# сервер по умолчанию
# показывать символическиессылки

# настройка таймаутов
TimeoutNoTransfer600
TimeoutStalled 600
Timeoutldle
1200
DisplayLogin
DisplayFirstChdir

welcome.msg
.message

# файл с приветствием
# отобразить этот файл при
# каждой смене каталога

# запрещает использовать это выражение в FTP-командах
# (все файлы (маска *.*) вы уже не сможете удалить, придется удалять
# поодиночке!)
DenyFilter
\*.*/
Port

21

# стандартный порт

Maxlnstances
30
# количество копий proftpd
# пользователь и группа, от имени которых работает proftpd
User
proftpd
Group
nogroup
Umask
022 022
# cm. man umask
AllowOverwrite

on

# можно перезаписыватьфайлы

# Журналы сервера
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
# Параметры подключаемых модулей. Изменять не нужно

TLSEngine off


QuotaEngine on


Ratios on


523

Глава 34. FTP-cepeep


DelayEngine on


ControlsEngine
on
ControlsMaxClients
2
ControlsLog
/var/log/proftpd/controls.log
ControlsInterval
5
ControlsSocket
/var/run/proftpd/proftpd.sock


AdminControlsEngine on

В конфигурационном файле profptd.conf вы можете использовать как обычные директивы, задающие одиночные свойства, так и блочные директивы, определяющие
группы свойств (параметров). Например, директива ServerName — обычная, она
задает одно свойство, а директива Directory — блочная, позволяющая задать
несколько параметров для одного каталога.
Самые полезные директивы файла конфигурации сведены в табл. 34.1. С остальными вы всегда можете ознакомиться, прочитав документацию по ProFTPD.
Таблица 34.1. Директивы файла конфигурации profptd.conf
Директива

Описание

AccessGrantMsg "сообщение"

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

Allow from all | узел | сеть
[,узел | сеть [, . . . ] ]

Используется только в блоке Limit. Разрешает доступ
к серверу. По умолчанию в ней задается значение all,
которое разрешает доступ к серверу всем узлам со всех
сетей

AllowAll

Разрешает доступ всем. Может использоваться в блоках

Directory, Anonymous, Limit
AllowForeignAddress on | off

Разрешает узлу при подключении к серверу указывать
адрес, не принадлежащий ему. По умолчанию задается
значение off (т. е. доступ запрещен), рекомендуется не
изменять его. Директива может использоваться в блоках
Anonymous,

AllowGroup список групп

Разрешает доступ к серверу указанным группам пользо­
вателей (группы должны быть зарегистрированы на этом
сервере)

AllowOverwrite on | off

Разрешает (on) перезаписывать существующие файлы

524

Часть VI. Linux на сервере
Таблица 34.1 (продолжение)

Директива

Описание

AllowUser список пользователей

Разрешает доступ к серверу указанным группам пользо­
вателей (пользователи должны быть зарегистрированы
на этом сервере)



Разрешает анонимный доступ к указанному каталогу.
Указанный каталог будет корневым каталогом анонимно­
го FTP-сервера

AuthGroupFile файл

Задает альтернативный файл групп. По умолчанию
/etc/group

AuthUserFile файл

Задает альтернативный файл паролей. По умолчанию
/etc/passwd

Bind IP-адрес

Выполняет привязку дополнительного адреса
к FTP-серверу

DeferWelcome on | off

Разрешает вывести приветствие после аутентификации
(on) или до нее (off)

Deny from all | узел | сеть

Запрещает доступ к FTP-серверу. Используется в блоке

Limit
DenyAll

Запрещает доступ всем к объектам, указанным
в Directory, Anonymous, Limit

DenyUser список пользователей

Запрещает доступ указанным пользователям

DefaultRoot каталог

Определяет корневой каталог FTP-сервера. В качестве
значения этого параметра полезно указать значение ~,
тогда в качестве корневого каталога будет использовать­
ся домашний каталог пользователя, который зашел
на сервер

DisplayLogin файл

Указанный текстовый файл будет отображен, когда
пользователь зайдет на сервер

DisplayFirstChdir файл

Отображает указанный файл при каждой смене каталога



Задает параметры доступа к каталогу и его подкаталогам



Задает глобальные параметры FTP-сервера



Накладывает ограничение на выполнение некоторых
FTP-команд — например: read, write, stor, login

MaxClients число сообщение

Максимальное количество одновременно работающих
клиентов. Если указанное число будет превышено,
FTP-сервер отобразитуказанное сообщение

MaxLoginAttempts

Максимальное количество попыток регистрации на сер­
вере. По умолчанию 3. Указывается в блоке Global

Maxlnstances

Максимальное количество одновременно работающих
экземпляров демона proftpd

ServerType тип

Задает тип запуска сервера. Значение по умолчанию —
standalone (автономный запуск). Не нужно его изменять

ServerName "имя"

Задает имя сервера. Можете написать все, что угодно —
например: Му server

525

Глава34. FTP-cepeep

Таблица 34.1 (окончание)
Директива

Описание

ServerAdmin e-mail

Позволяет указать адрес электронной почты администра­
тора сервера

ShowSymlinks on | off

Разрешает показывать символические ссылки (on) или
сразу результирующие файлы (off)

Order allow, deny | deny,
allow

Задает порядок выполнения директив Allow и Deny
в блоке Limit

TimeoutIdle секунды

Определяет тайм-аут простоя. Если пользователь
не проявит активности за указанное время, соединение
будет разорвано. По умолчанию используется значение 60

TimeoutNoTransfer секунды

Тайм-аут начала передачи. Определяет, сколько времени
нужно ждать до разъединения, если пользователь вошел,
но не начал передачу

TimeoutStalled секунды

«Замирание» во время передачи файла. Бывает так, что
клиент начал передачу (или прием) файла, но связь
оборвалась. Этот тайм-аут определяет, сколько нужно
ждать до разъединения в такой ситуации. Такой тайм-аут
нужен, потому что бывает другая ситуация — когда
у пользователя очень медленный канал

Umask маска

Задает права доступа для созданного файла

User имя пользователя

Пользователь, от имени которого работает демон
ProFTPD

34.3. Настройка FTP-сервера
В этом разделе мы настроим реальный FTP-сервер, к которому смогут получить
доступ как обычные (зарегистрированные) пользователи, так и анонимные.
Приведенная в листинге 34.1 конфигурация вполне работоспособна. Однако для
создания обычного (не анонимного) FTP-сервера в этот конфигурационный файл
нужно добавить две директивы:
DefaultRoot
MaxClients

~
20 "Server is f u l l ! ! ! "

Первая директива делает корневым домашний каталог пользователя (при этом
пользователь не может выйти за пределы своего домашнего каталога — следовательно, он не в состоянии навредить системе, если администратор неправильно установил права доступа к каким-нибудь системным каталогам), а вторая — ограничивает число одновременно работающих клиентов во избежание перегрузки сервера. Остальные параметры вы можете задать по своему усмотрению.
Рассмотрим несколько примеров использования блоков Directory и Login:



526

Часть VI. Linux на сервере

DenyAll


AllowAll


Директива Directory определяет две директивы Limit для каталога upload: первая
запрещает всем читать этот каталог, а вторая — разрешает всем записывать новые
файлы в этот каталог. Каталог upload, таким образом, полностью оправдывает свое
название — только для закачки файлов.
А вот еще один пример, запрещающий доступ к серверу всех узлов из подсети
192.168.1.0:

DenyAll
Deny from 1 9 2 . 1 6 8 . 1 .

Если надо, наоборот, разрешить доступ к серверу только пользователям из сети
192.168.1.0, то нужно использовать следующий блок Limit:

Order deny, allow
DenyAll

#
#
Allow from 1 9 2 . 1 6 8 . 1 . 0 #
#


порядок действия deny-allow
запрещаем доступ всем
разрешаем доступ только из сети
192.168.1.0

Для организации анонимного доступа на FTP-сервер нужно добавить в файл конфигурации следующую директиву Anonymous:

User
Group

ftp
nogroup

# Определяем псевдоним "anonymous" для пользователя "ftp"
# Клиенты смогут войти под обоими именами
UserAlias

anonymousftp

# Все файлы принадлежат пользователю ftp
DirFakeUser on ftp
DirFakeGroup on ftp
# He нужно требовать "правильную" оболочку
# "Правильной" считается оболочка, указанная в файле /etc/shells
RequireValidShell
off

527

Глава 34. FTP-cepeep

# Максимальное число анонимных пользователей
MaxClients
10
# Файлы с сообщениями
DisplayLogin
DisplayFirstChdir

welcome.msg
.message

# Ограничим WRITE для анонимных пользователей


DenyAll