Внутреннее устройство Linux
Брайан Уорд
Книга, которую вы держите в руках, уже стала бестселлером на Западе. Она описывает все тонкости работы с операционной системой Linux, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах этой книги вы приобретете базовые знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей. В книге также затрагиваются вопросы программирования сценариев оболочки и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи.
Издательство: Питер, Серия: Для профессионалов, 2016 г.
ISBN 978-5-496-01952-1
Количество страниц: 384.
Содержание книги «Внутреннее устройство Linux»:
- 18 Предисловие
- 18 Кому следует читать книгу
- 18 Необходимые условия
- 18 Как читать книгу
- 19 Практический подход
- 19 Как устроена эта книга
- 20 Что нового во втором издании
- 20 Примечание о терминологии
- 21 Благодарности
- 22 От издательства
- 23 Глава 1. Общая картина
- 24 1.1. Уровни и слои абстракции в операционной системе Linux
- 25 1.2. Аппаратные средства: оперативная память
- 26 1.3. Ядро
- 27 1.3.1. Управление процессами
- 28 1.3.2. Управление памятью
- 28 1.3.3. Драйверы устройств и управление ими
- 29 1.3.4. Системные вызовы и поддержка
- 30 1.4. Пространство пользователя
- 31 1.5. Пользователи
- 32 1.6. Заглядывая вперед
- 33 Глава 2. Основные команды и структура каталогов
- 33 2.1. Оболочка Bourne shell: /bin/sh
- 34 2.2. Использование оболочки
- 34 2.2.1. Окно оболочки
- 35 2.2.2. Команда cat
- 35 2.2.3. Стандартный ввод и стандартный вывод
- 36 2.3. Основные команды
- 36 2.3.1. Команда ls
- 37 2.3.2. Команда cp
- 37 2.3.3. Команда mv
- 37 2.3.4. Команда touch
- 37 2.3.5. Команда rm
- 38 2.3.6. Команда echo
- 38 2.4. Перемещение по каталогам
- 38 2.4.1. Команда cd
- 39 2.4.2. Команда mkdir
- 39 2.4.3. Команда rmdir
- 39 2.4.4. Универсализация файловых имен (джокерные символы)
- 40 2.5. Вспомогательные команды
- 40 2.5.1. Команда grep
- 41 2.5.2. Команда less
- 42 2.5.3. Команда pwd
- 42 2.5.4. Команда diff
- 42 2.5.5. Команда file
- 42 2.5.6. Команды find и locate
- 43 2.5.7. Команды head и tail
- 43 2.5.8. Команда sort
- 43 2.6. Изменение вашего пароля и оболочки
- 44 2.7. Файлы с точкой
- 44 2.8. Переменные окружения и оболочки
- 45 2.9. Командный путь
- 45 2.10. Специальные символы
- 46 2.11. Редактирование командной строки
- 47 2.12. Текстовые редакторы
- 48 2.13. Получение интерактивной справки
- 49 2.14. Ввод и вывод с помощью оболочки
- 50 2.14.1. Стандартная ошибка
- 51 2.14.2. Перенаправление стандартного ввода
- 51 2.15. Объяснение сообщений об ошибках
- 51 2.15.1. Структура сообщений об ошибке в Unix
- 52 2.15.2. Общие ошибки
- 53 2.16. Получение списка процессов и управление ими
- 54 2.16.1. Параметры команды ps
- 54 2.16.2. Завершение процессов
- 55 2.16.3. Управление заданиями
- 55 2.16.4. Фоновые процессы
- 56 2.17. Режимы файлов и права доступа
- 57 2.17.1. Изменение прав доступа
- 59 2.17.2. Символические ссылки
- 59 2.17.3. Создание символических ссылок
- 60 2.18. Архивирование и сжатие файлов
- 60 2.18.1. Команда gzip
- 60 2.18.2. Команда tar
- 62 2.18.3. Сжатые архивы (.tar.gz)
- 62 2.18.4. Команда zcat
- 62 2.18.5. Другие утилиты сжатия
- 63 2.19. Основные сведения об иерархии каталогов Linux
- 65 2.19.1. Другие корневые подкаталоги
- 65 2.19.2. Каталог /usr
- 66 2.19.3. Местоположение ядра
- 66 2.20. Запуск команд с правами пользователя superuser
- 66 2.20.1. Команда sudo
- 66 2.20.2. Файл /etc/sudoers
- 67 2.21. Заглядывая вперед
- 68 Глава 3. Устройства
- 68 3.1. Файлы устройств
- 70 3.2. Путь устройств sysfs
- 71 3.3. Команда dd и устройства
- 72 3.4. Сводка имен устройств
- 72 3.4.1. Жесткие диски: /dev/sd*
- 73 3.4.2. Приводы CD и DVD: /dev/sr*
- 74 3.4.3. Жесткие диски PATA: /dev/hd*
- 74 3.4.4. Терминалы: /dev/tty*, /dev/pts/* и /dev/tty
- 75 3.4.5. Последовательные порты: /dev/ttyS*
- 75 3.4.6. Параллельные порты: /dev/lp0 и /dev/lp1
- 76 3.4.7. Аудиоустройства: /dev/snd/*, /dev/dsp, /dev/audio и другие
- 76 3.4.8. Создание файлов устройств
- 77 3.5. Менеджер устройств udev
- 77 3.5.1. Файловая система devtmpfs
- 78 3.5.2. Работа и настройка менеджера udevd
- 80 3.5.3. Команда udevadm
- 81 3.5.4. Отслеживание устройств
- 82 3.6. Подробнее: интерфейс SCSI и ядро Linux
- 85 3.6.1. USB-хранилища и протокол SCSI
- 86 3.6.2. Интерфейсы SCSI и ATA
- 87 3.6.3. Обобщенные устройства SCSI
- 87 3.6.4. Методы коллективного доступа к одному устройству
- 89 Глава 4. Диски и файловые системы
- 90 4.1. Разделы дисковых устройств
- 92 4.1.1. Просмотр таблицы разделов
- 93 4.1.2. Изменение таблиц разделов
- 94 4.1.3. Диск и геометрия раздела
- 96 4.1.4. Твердотельные накопители (диски SSD)
- 96 4.2. Файловые системы
- 97 4.2.1. Типы файловых систем
- 98 4.2.2. Создание файловой системы
- 99 4.2.3. Монтирование файловой системы
- 100 4.2.4. Файловая система UUID
- 101 4.2.5. Буферизация диска, кэширование и файловые системы
- 102 4.2.6. Параметры монтирования файловой системы
- 103 4.2.7. Демонтирование файловой системы
- 104 4.2.8. Таблица файловой системы /etc/fstab
- 105 4.2.9. Альтернативы таблицы /etc/fstab
- 106 4.2.10. Мощность файловой системы
- 107 4.2.11. Проверка и восстановление файловых систем
- 109 4.2.12. Файловые системы специального назначения
- 110 4.3. Область подкачки
- 110 4.3.1. Использование раздела диска в качестве области подкачки
- 111 4.3.2. Использование файла в качестве области подкачки
- 111 4.3.3. Какой объем области подкачки необходим
- 112 4.4. Заглядывая вперед: диски и пространство пользователя
- 113 4.5. Внутри традиционной файловой системы
- 115 4.5.1. Просмотр деталей дескрипторов inode
- 116 4.5.2. Работа с файловыми системами в пространстве пользователя
- 117 4.5.3. Эволюция файловых систем
- 90 4.1. Разделы дисковых устройств
- 118 Глава 5. Как происходит загрузка ядра Linux
- 118 5.1. Сообщения при запуске
- 120 5.2. Инициализация ядра и параметры загрузки
- 120 5.3. Параметры ядра
- 121 5.4. Загрузчики системы
- 122 5.4.1. Задачи загрузчика системы
- 123 5.4.2. Общий обзор загрузчиков системы
- 123 5.5. Первое знакомство с загрузчиком GRUB
- 126 5.5.1. Выявление устройств и разделов с помощью командной строки загрузчика GRUB
- 128 5.5.2. Конфигурация загрузчика GRUB
- 130 5.5.3. Установка загрузчика GRUB
- 132 5.6. Проблемы с безопасной загрузкой UEFI
- 132 5.7. Передача управления загрузчикам других операционных систем
- 133 5.8. Детали загрузчика системы
- 133 5.8.1. Загрузка с применением таблицы MBR
- 133 5.8.2. Загрузка с применением интерфейса UEFI
- 134 5.8.3. Как работает загрузчик GRUB
- 136 Глава 6. Как запускается пространство пользователя
- 136 6.1. Знакомство с командой init
- 138 6.2. Уровни запуска команды System V
- 138 6.3. Определяем тип команды init
- 139 6.4. Команда systemd
- 139 6.4.1. Модули и типы модулей
- 140 6.4.2. Зависимости команды systemd
- 142 6.4.3. Конфигурация команды systemd
- 145 6.4.4. Работа команды systemd
- 147 6.4.5. Добавление модулей в команду systemd
- 148 6.4.6. Отслеживание процессов и синхронизация в команде systemd
- 149 6.4.7. Запуск по запросу и распараллеливание ресурсов в команде systemd
- 154 6.4.8. Совместимость команды systemd со сценариями System V
- 154 6.4.9. Команды, дополняющие systemd
- 155 6.5. Команда Upstart
- 155 6.5.1. Процедура инициализации команды Upstart
- 157 6.5.2. Задания команды Upstart
- 159 6.5.3. Конфигурация команды Upstart
- 163 6.5.4. Управление командой Upstart
- 163 6.5.5. Журналы команды Upstart
- 164 6.5.6. Уровни запуска команды Upstart и совместимость со стандартом System V
- 165 6.6. Команда System V init
- 167 6.6.1. Команда System V init: командная последовательность запуска
- 168 6.6.2. Ферма ссылок команды System V init
- 169 6.6.3. Утилита run-parts
- 169 6.6.4. Управление командой System V init
- 170 6.7. Выключение системы
- 171 6.8. Начальная файловая система оперативной памяти
- 173 6.9. Аварийная загрузка системы и режим одиночного пользователя
- 174 Глава 7. Конфигурация системы: журнал, системное время, пакетные задания и пользователи
- 174 7.1. Структура каталога /etc
- 175 7.2. Системный журнал
- 175 7.2.1. Системный регистратор
- 176 7.2.2. Файлы конфигурации
- 178 7.3. Файлы управления пользователями
- 178 7.3.1. Файл /etc/passwd
- 179 7.3.2. Особые пользователи
- 180 7.3.3. Файл /etc/shadow
- 180 7.3.4. Управление пользователями и паролями
- 180 7.3.5. Работа с группами
- 182 7.4. Команды getty и login
- 182 7.5. Настройка времени
- 183 7.5.1. Представление времени в ядре и часовые пояса
- 184 7.5.2. Сетевое время
- 184 7.6. Планирование повторяющихся задач с помощью службы cron
- 185 7.6.1. Установка файлов crontab
- 186 7.6.2. Системные файлы crontab
- 186 7.6.3. Будущее службы cron
- 187 7.7. Планирование единовременных задач с помощью службы at
- 187 7.8. Идентификаторы пользователей и переключение между пользователями
- 190 7.9. Идентификация и аутентификация пользователей
- 191 7.10. Стандарт PAM
- 192 7.10.1. Конфигурация PAM
- 196 7.10.2. Примечания о стандарте PAM
- 196 7.10.3. Стандарт PAM и пароли
- 197 7.11. Заглядывая вперед
- 198 Глава 8. Подробное рассмотрение процессов и использования ресурсов
- 198 8.1. Отслеживание процессов
- 199 8.2. Поиск открытых файлов с помощью команды lsof
- 199 8.2.1. Чтение результатов вывода команды lsof
- 200 8.2.2. Использование команды lsof
- 201 8.3. Отслеживание выполнения команд и системных вызовов
- 201 8.3.1. Команда strace
- 202 8.3.2. Команда ltrace
- 203 8.4. Потоки
- 203 8.4.1. Однопоточные и многопоточные процессы
- 204 8.4.2. Просмотр потоков
- 205 8.5. Введение в отслеживание ресурсов
- 205 8.6. Измерение процессорного времени
- 206 8.7. Настройка приоритетов процессов
- 207 8.8. Средние значения загрузки
- 207 8.8.1. Использование команды uptime
- 208 8.8.2. Высокие значения загрузки
- 209 8.9. Память
- 209 8.9.1. Как работает память
- 209 8.9.2. Ошибки из-за отсутствия страниц
- 211 8.10. Отслеживание производительности процессора и памяти с помощью команды vmstat
- 213 8.11. Отслеживание ввода/вывода
- 213 8.11.1. Использование команды iostat
- 214 8.11.2. Отслеживание использования ввода/вывода каждого процесса с помощью команды iotop
- 215 8.12. Отслеживание процессов с помощью команды pidstat
- 216 8.13. Дополнительные темы
- 217 Глава 9. Представление о сети и ее конфигурации
- 217 9.1. Основные понятия о сети
- 218 9.2. Сетевые уровни
- 220 9.3. Интернет-уровень
- 221 9.3.1. Просмотр IP-адресов компьютера
- 222 9.3.2. Подсети
- 222 9.3.3. Распространенные маски подсети и нотация CIDR
- 223 9.4. Маршруты и таблица маршрутизации ядра
- 225 9.5. Основные инструменты, использующие протокол ICMP и службу DNS
- 225 9.5.1. Команда ping
- 226 9.5.2. Команда traceroute
- 226 9.5.3. Служба DNS и хост
- 227 9.6. Физический уровень и сеть Ethernet
- 228 9.7. Понятие о сетевых интерфейсах ядра
- 228 9.8. Введение в конфигурирование сетевого интерфейса
- 230 9.9. Конфигурация сети, активизируемая при загрузке системы
- 230 9.10. Проблемы, связанные с конфигурацией сети вручную и при активизации во время загрузки системы
- 231 9.11. Менеджеры сетевой конфигурации
- 232 9.11.1. Работа менеджера NetworkManager
- 232 9.11.2. Взаимодействие с менеджером NetworkManager с помощью интерфейса
- 233 9.11.3. Конфигурация менеджера NetworkManager
- 235 9.12. Разрешение имени хоста
- 235 9.12.1. Файл /etc/hosts
- 236 9.12.2. Файл resolv.conf
- 236 9.12.3. Кэширование и службы DNS без конфигурирования
- 237 9.12.4. Файл /etc/nsswitch.conf
- 237 9.13. Локальный хост
- 238 9.14. Транспортный уровень: протоколы TCP, UDP и службы
- 238 9.14.1. Порты TCP и соединения
- 239 9.14.2. Установление TCP-соединений
- 240 9.14.3. Номера портов и файл /etc/services
- 240 9.14.4. Характеристики протокола TCP
- 241 9.14.5. Протокол UDP
- 243 9.15. Возвращаемся к простой локальной сети
- 243 9.16. Понятие о протоколе DHCP
- 244 9.16.1. Клиент DHCP в Linux
- 244 9.16.2. Серверы DHCP в Linux
- 244 9.17. Настройка Linux в качестве маршрутизатора
- 246 9.18. Частные сети
- 247 9.19. Преобразование сетевых адресов (маскировка IP-адреса)
- 248 9.20. Маршрутизаторы и Linux
- 249 9.21. Брандмауэры
- 250 9.21.1. Брандмауэр в Linux: основные понятия
- 251 9.21.2. Определение правил для брандмауэра
- 253 9.21.3. Стратегии для брандмауэров
- 254 9.22. Сеть Ethernet, протоколы IP и ARP
- 256 9.23. Беспроводная сеть Ethernet
- 257 9.23.1. Утилита iw
- 258 9.23.2. Безопасность беспроводных сетей
- 258 9.24. Резюме
- 259 Глава 10. Сетевые приложения и службы
- 259 10.1. Основные понятия о службах
- 262 10.2. Сетевые серверы
- 262 10.3. Защищенная оболочка (SSH)
- 263 10.3.1. Сервер SSHD
- 266 10.3.2. Клиент SSH
- 267 10.4. Демоны inetd и xinetd
- 268 10.5. Инструменты диагностики
- 269 10.5.1. Команда lsof
- 270 10.5.2. Команда tcpdump
- 272 10.5.3. Команда netcat
- 272 10.5.4. Сканирование портов
- 273 10.6. Удаленный вызов процедур (RPC)
- 274 10.7. Сетевая безопасность
- 275 10.7.1. Типичные уязвимости
- 276 10.7.2. Онлайн-ресурсы, посвященные безопасности
- 276 10.8. Заглядывая вперед
- 277 10.9. Сокеты: как процессы взаимодействуют с сетью
- 278 10.10. Сокеты домена Unix
- 278 10.10.1. Преимущества для разработчиков
- 279 10.10.2. Просмотр списка сокетов домена Unix
- 280 Глава 11. Введение в сценарии оболочки
- 280 11.1. Основы сценариев оболочки
- 281 11.2. Кавычки и литералы
- 282 11.2.1. Литералы
- 282 11.2.2. Одинарные кавычки
- 283 11.2.3. Двойные кавычки
- 283 11.2.4. Передача одинарной кавычки в литерале
- 284 11.3. Специальные переменные
- 284 11.3.1. Индивидуальные аргументы: $1, $2
- 285 11.3.2. Количество аргументов: $#
- 285 11.3.3. Все аргументы: $@
- 285 11.3.4. Имя сценария: $0
- 286 11.3.5. Идентификатор процесса: $$
- 286 11.3.6. Код выхода: $?
- 286 11.4. Коды выхода
- 287 11.5. Условные операторы
- 288 11.5.1. Немного о пустом списке параметров
- 288 11.5.2. Использование других команд для проверки условий
- 288 11.5.3. Ключевое слово elif
- 289 11.5.4. Логические конструкции && и ||
- 289 11.5.5. Проверка условий
- 292 11.5.6. Сопоставление строк с помощью конструкции case
- 293 11.6. Циклы
- 293 11.6.1. Цикл for
- 293 11.6.2. Цикл while
- 294 11.7. Подстановка команд
- 295 11.8. Управление временным файлом
- 296 11.9. Синтаксис heredoc
- 296 11.10. Основные утилиты в сценариях оболочки
- 297 11.10.1. Команда basename
- 297 11.10.2. Команда awk
- 297 11.10.3. Команда sed
- 298 11.10.4. Команда xargs
- 299 11.10.5. Команда expr
- 299 11.10.6. Команда exec
- 300 11.11. Подоболочки
- 300 11.12. Включение других файлов в сценарии
- 301 11.13. Чтение пользовательского ввода
- 301 11.14. Когда (не) использовать сценарии оболочки
- 302 Глава 12. Передача файлов по сети
- 302 12.1. Быстрое копирование
- 302 12.2. Команда rsync
- 303 12.2.1. Основы команды rsync
- 304 12.2.2. Создание точной копии структуры каталога
- 305 12.2.3. Использование завершающей косой черты
- 306 12.2.4. Исключение файлов и каталогов
- 307 12.2.5. Целостность переноса, меры предосторожности и подробные режимы
- 308 12.2.6. Сжатие
- 308 12.2.7. Ограничение ширины полосы пропускания
- 308 12.2.8. Перенос файлов на ваш компьютер
- 308 12.2.9. Дальнейшие темы, относящиеся к команде rsync
- 309 12.3. Введение в совместное использование файлов
- 309 12.4. Совместное использование файлов с помощью пакета Samba
- 310 12.4.1. Конфигурирование сервера Samba
- 311 12.4.2. Контроль доступа к серверу
- 311 12.4.3. Пароли
- 313 12.4.4. Запуск сервера
- 313 12.4.5. Диагностические файлы и журналы
- 313 12.4.6. Конфигурирование совместного использования файлов
- 314 12.4.7. Домашние каталоги
- 314 12.4.8. Совместное использование принтеров
- 315 12.4.9. Использование клиента Samba
- 315 12.4.10. Доступ к файлам в качестве клиента
- 316 12.5. Клиенты NFS
- 317 12.6. Добавочные параметры и ограничения сетевой файловой системы
- 319 Глава 13. Пользовательское окружение
- 319 13.1. Рекомендации по созданию файлов запуска
- 320 13.2. Когда изменять файлы запуска
- 320 13.3. Элементы файла запуска оболочки
- 320 13.3.1. Командный путь
- 321 13.3.2. Путь к страницам руководства
- 322 13.3.3. Приглашение
- 322 13.3.4. Псевдонимы
- 323 13.3.5. Маска прав доступа
- 323 13.4. Порядок следования файлов запуска. Примеры
- 323 13.4.1. Оболочка bash
- 326 13.4.2. Оболочка tcsh
- 327 13.5. Пользовательские настройки по умолчанию
- 327 13.5.1. Параметры по умолчанию для оболочки
- 328 13.5.2. Редактор
- 328 13.5.3. Переменная PAGER
- 328 13.6. Подводные камни в файлах запуска
- 329 13.7. Дальнейшие вопросы, связанные с запуском
- 330 Глава 14. Краткий обзор рабочего стола Linux
- 330 14.1. Компоненты рабочего стола
- 331 14.1.1. Менеджеры окон
- 331 14.1.2. Инструментарий
- 332 14.1.3. Окружение рабочего стола
- 332 14.1.4. Приложения
- 332 14.2. Подробнее о системе X Window
- 333 14.2.1. Менеджеры дисплея
- 333 14.2.2. Прозрачность сети
- 334 14.3. Исследование X-клиентов
- 334 14.3.1. X-события
- 336 14.3.2. Понятие о X-вводе и настройка предпочтений
- 338 14.4. Будущее системы X Window
- 339 14.5. Шина D-Bus
- 339 14.5.1. Системный и сеансовый экземпляры
- 340 14.5.2. Отслеживание сообщений шины D-Bus
- 340 14.6. Печать
- 341 14.6.1. Система CUPS
- 341 14.6.2. Преобразование формата и фильтры печати
- 342 14.7. Другие темы, относящиеся к рабочему столу
- 330 14.1. Компоненты рабочего стола
- 343 Глава 15. Инструменты разработчика
- 343 15.1. Компилятор C
- 344 15.1.1. Исходный код в виде нескольких файлов
- 345 15.1.2. Заголовочные файлы (Include) и каталоги
- 347 15.1.3. Связывание с библиотеками
- 348 15.1.4. Совместно используемые библиотеки
- 352 15.2. Утилита make
- 353 15.2.1. Пример файл Makefile
- 354 15.2.2. Встроенные правила
- 354 15.2.3. Окончательная сборка программы
- 354 15.2.4. Поддержание актуальных версий файлов
- 355 15.2.5. Аргументы и параметры командной строки
- 356 15.2.6. Стандартные макроопределения и переменные
- 357 15.2.7. Обычные цели
- 357 15.2.8. Устройство файла Makefile
- 358 15.3. Отладчики
- 359 15.4. Инструменты Lex и Yacc
- 360 15.5. Языки сценариев
- 361 15.5.1. Python
- 361 15.5.2. Perl
- 361 15.5.3. Другие языки сценариев
- 362 15.6. Java
- 363 15.7. Заглядывая вперед: компиляция программных пакетов
- 343 15.1. Компилятор C
- 364 Глава 16. Введение в программное обеспечениеnдля компиляции кода на языке C
- 365 16.1. Системы для сборки программного обеспечения
- 365 16.2. Распаковка архива с исходным кодом на языке C
- 366 16.3. Утилита GNU Autoconf
- 367 16.3.1. Пример работы утилиты Autoconf
- 368 16.3.2. Установка с помощью инструментов для создания пакетов
- 369 16.3.3. Параметры сценария configure
- 369 16.3.4. Переменные окружения
- 371 16.3.5. Цели утилиты Autoconf
- 371 16.3.6. Файлы журналов утилиты Autoconf
- 371 16.3.7. Команда pkg-config
- 373 16.4. Практика установки
- 374 16.5. Применение исправлений
- 375 16.6. Устранение проблем при компиляции и установке
- 377 16.7. Заглядывая вперед
- 379 Глава 17. Строим на фундаменте
- 379 17.1. Веб-серверы и приложения
- 380 17.2. Базы данных
- 381 17.3. Виртуализация
- 381 17.4. Распределенные вычисления и вычисления по запросу
- 382 17.5. Встроенные системы
- 383 17.6. Заключительные замечания
Инструкция как скачать книгу Брайан Уорд: Внутреннее устройство Linux в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Рейтинг книги:
0 голосов
3536