Внутреннее устройство Linux — Книга Брайна Уорда, которая уже стала бестселлером на Западе. Она описывает все тонкости работы с операционной системой Linux, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах этого издания вы приобретете базовые знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей. В книге также затрагиваются вопросы программирования сценариев оболочки и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи. Кому следует читать книгу: Интерес к устройству операционной системы Linux может быть вызван разными причинами. Профессионалы в сфере информационно-технологического обслуживания, а также разработчики программного обеспечения для Linux найдут в этой книге практически все, что необходимо знать, чтобы использовать операционную систему наилучшим образом. Исследователи и студенты, которым зачастую приходится подстраивать систему под себя, найдут здесь практичные объяснения того, почему все устроено именно так, а не иначе. Есть еще «затейники» — пользователи, которым нравится проводить время за компьютером ради развлечения, выгоды или и того и другого сразу. Хотите узнать, почему некоторые вещи работают, а другие — нет? Вам интересно, что произойдет, если что-либо изменить? Тогда вы относитесь к числу «затейников». Необходимые условия: Вам не обязательно быть программистом, чтобы читать эту книгу. Понадобятся лишь основные навыки пользователя компьютера: вы должны ориентироваться в графическом интерфейсе (при установке и настройке интерфейса системы), а также иметь представление о файлах и каталогах (папках). Следует также быть готовыми к поиску дополнительной документации в вашей системе и онлайн. Как отмечалось выше, самым важным является ваша готовность и желание исследовать свой компьютер.
Название: Внутреннее устройство Linux Автор: Брайан Уорд Издательство: Питер Год: 2016 Страниц: 384 Формат: PDF Размер: 8,97 Мб ISBN: 978-5-496-01952-1 Качество: Отличное Серия или Выпуск: Для профессионалов Язык: Русский
Содержание:
Предисловие Кому следует читать книгу Необходимые условия Как читать книгу Практический подход Как устроена эта книга Что нового во втором издании Примечание о терминологии Благодарности От издательства Глава 1. Общая картина 1.1. Уровни и слои абстракции в операционной системе Linux 1.2. Аппаратные средства: оперативная память 1.3. Ядро 1.3.1. Управление процессами 1.3.2. Управление памятью 1.3.3. Драйверы устройств и управление ими 1.3.4. Системные вызовы и поддержка 1.4. Пространство пользователя 1.5. Пользователи 1.6. Заглядывая вперед Глава 2. Основные команды и структура каталогов 2.1. Оболочка Bourne shell: /bin/sh 2.2. Использование оболочки 2.2.1. Окно оболочки 2.2.2. Команда cat 2.2.3. Стандартный ввод и стандартный вывод 2.3. Основные команды 2.3.1. Команда ls 2.3.2. Команда cp 2.3.3. Команда mv 2.3.4. Команда touch 2.3.5. Команда rm 2.3.6. Команда echo 2.4. Перемещение по каталогам 2.4.1. Команда cd 2.4.2. Команда mkdir 2.4.3. Команда rmdir 2.4.4. Универсализация файловых имен (джокерные символы) 2.5. Вспомогательные команды 2.5.1. Команда grep 2.5.2. Команда less 2.5.3. Команда pwd 2.5.4. Команда diff 2.5.5. Команда file 2.5.6. Команды find и locate 2.5.7. Команды head и tail 2.5.8. Команда sort 2.6. Изменение вашего пароля и оболочки 2.7. Файлы с точкой 2.8. Переменные окружения и оболочки 2.9. Командный путь 2.10. Специальные символы 2.11. Редактирование командной строки 2.12. Текстовые редакторы 2.13. Получение интерактивной справки 2.14. Ввод и вывод с помощью оболочки 2.14.1. Стандартная ошибка 2.14.2. Перенаправление стандартного ввода 2.15. Объяснение сообщений об ошибках 2.15.1. Структура сообщений об ошибке в Unix 2.15.2. Общие ошибки 2.16. Получение списка процессов и управление ими 2.16.1. Параметры команды ps 2.16.2. Завершение процессов 2.16.3. Управление заданиями 2.16.4. Фоновые процессы 2.17. Режимы файлов и права доступа 2.17.1. Изменение прав доступа 2.17.2. Символические ссылки 2.17.3. Создание символических ссылок 2.18. Архивирование и сжатие файлов 2.18.1. Команда gzip 2.18.2. Команда tar 2.18.3. Сжатые архивы (. tar. gz) 2.18.4. Команда zcat 2.18.5. Другие утилиты сжатия 2.19. Основные сведения об иерархии каталогов Linux 2.19.1. Другие корневые подкаталоги 2.19.2. Каталог /usr 2.19.3. Местоположение ядра 2.20. Запуск команд с правами пользователя superuser 2.20.1. Команда sudo 2.20.2. Файл /etc/sudoers 2.21. Заглядывая вперед Глава 3. Устройства 3.1. Файлы устройств 3.2. Путь устройств sysfs 3.3. Команда dd и устройства 3.4. Сводка имен устройств 3.4.1. Жесткие диски: /dev/sd* 3.4.2. Приводы CD и DVD: /dev/sr* 3.4.3. Жесткие диски PATA: /dev/hd* 3.4.4. Терминалы: /dev/tty*, /dev/pts/* и /dev/tty 3.4.5. Последовательные порты: /dev/ttyS* 3.4.6. Параллельные порты: /dev/lp0 и /dev/lp 3.4.7. Аудиоустройства: /dev/snd/*, /dev/dsp, /dev/audio и другие 3.4.8. Создание файлов устройств 3.5. Менеджер устройств udev 3.5.1. Файловая система devtmpfs 3.5.2. Работа и настройка менеджера udevd 3.5.3. Команда udevadm 3.5.4. Отслеживание устройств 3.6. Подробнее: интерфейс SCSI и ядро Linux 3.6.1. USB-хранилища и протокол SCSI 3.6.2. Интерфейсы SCSI и ATA 3.6.3. Обобщенные устройства SCSI 3.6.4. Методы коллективного доступа к одному устройству Глава 4. Диски и файловые системы 4.1. Разделы дисковых устройств 4.1.1. Просмотр таблицы разделов 4.1.2. Изменение таблиц разделов 4.1.3. Диск и геометрия раздела 4.1.4. Твердотельные накопители (диски SSD) 4.2. Файловые системы 4.2.1. Типы файловых систем 4.2.2. Создание файловой системы 4.2.3. Монтирование файловой системы 4.2.4. Файловая система UUID 4.2.5. Буферизация диска, кэширование и файловые системы 4.2.6. Параметры монтирования файловой системы 4.2.7. Демонтирование файловой системы 4.2.8. Таблица файловой системы /etc/fstab 4.2.9. Альтернативы таблицы /etc/fstab 4.2.10. Мощность файловой системы 4.2.11. Проверка и восстановление файловых систем 4.2.12. Файловые системы специального назначения 4.3. Область подкачки 4.3.1. Использование раздела диска в качестве области подкачки 4.3.2. Использование файла в качестве области подкачки 4.3.3. Какой объем области подкачки необходим 4.4. Заглядывая вперед: диски и пространство пользователя 4.5. Внутри традиционной файловой системы 4.5.1. Просмотр деталей дескрипторов inode 4.5.2. Работа с файловыми системами в пространстве пользователя 4.5.3. Эволюция файловых систем Глава 5. Как происходит загрузка ядра Linux 5.1. Сообщения при запуске 5.2. Инициализация ядра и параметры загрузки 5.3. Параметры ядра 5.4. Загрузчики системы 5.4.1. Задачи загрузчика системы 5.4.2. Общий обзор загрузчиков системы 5.5. Первое знакомство с загрузчиком GRUB 5.5.1. Выявление устройств и разделов с помощью командной строки загрузчика GRUB 5.5.2. Конфигурация загрузчика GRUB 5.5.3. Установка загрузчика GRUB 5.6. Проблемы с безопасной загрузкой UEFI 5.7. Передача управления загрузчикам других операционных систем 5.8. Детали загрузчика системы 5.8.1. Загрузка с применением таблицы MBR 5.8.2. Загрузка с применением интерфейса UEFI 5.8.3. Как работает загрузчик GRUB Глава 6. Как запускается пространство пользователя 6.1. Знакомство с командой init 6.2. Уровни запуска команды System V 6.3. Определяем тип команды init 6.4. Команда systemd 6.4.1. Модули и типы модулей 6.4.2. Зависимости команды systemd 6.4.3. Конфигурация команды systemd 6.4.4. Работа команды systemd 6.4.5. Добавление модулей в команду systemd 6.4.6. Отслеживание процессов и синхронизация в команде systemd 6.4.7. Запуск по запросу и распараллеливание ресурсов в команде systemd 6.4.8. Совместимость команды systemd со сценариями System V 6.4.9. Команды, дополняющие systemd 6.5. Команда Upstart 6.5.1. Процедура инициализации команды Upstart 6.5.2. Задания команды Upstart 6.5.3. Конфигурация команды Upstart 6.5.4. Управление командой Upstart 6.5.5. Журналы команды Upstart 6.5.6. Уровни запуска команды Upstart и совместимость со стандартом System V 6.6. Команда System V init 6.6.1. Команда System V init: командная последовательность запуска 6.6.2. Ферма ссылок команды System V init 6.6.3. Утилита run-parts 6.6.4. Управление командой System V init 6.7. Выключение системы 6.8. Начальная файловая система оперативной памяти 6.9. Аварийная загрузка системы и режим одиночного пользователя Глава 7. Конфигурация системы: журнал системное время, пакетные задания и пользователи 7.1. Структура каталога /etc 7.2. Системный журнал 7.2.1. Системный регистратор 7.2.2. Файлы конфигурации 7.3. Файлы управления пользователями 7.3.1. Файл /etc/passwd 7.3.2. Особые пользователи 7.3.3. Файл /etc/shadow 7.3.4. Управление пользователями и паролями 7.3.5. Работа с группами 7.4. Команды getty и login 7.5. Настройка времени 7.5.1. Представление времени в ядре и часовые пояса 7.5.2. Сетевое время 7.6. Планирование повторяющихся задач с помощью службы cron 7.6.1. Установка файлов crontab 7.6.2. Системные файлы crontab 7.6.3. Будущее службы cron 7.7. Планирование единовременных задач с помощью службы at 7.8. Идентификаторы пользователей и переключение между пользователями 7.9. Идентификация и аутентификация пользователей 7.10. Стандарт PAM 7.10.1. Конфигурация PAM 7.10.2. Примечания о стандарте PAM 7.10.3. Стандарт PAM и пароли 7.11. Заглядывая вперед Глава 8. Подробное рассмотрение процессов и использования ресурсов 8.1. Отслеживание процессов 8.2. Поиск открытых файлов с помощью команды lsof 8.2.1. Чтение результатов вывода команды lsof 8.2.2. Использование команды lsof 8.3. Отслеживание выполнения команд и системных вызовов 8.3.1. Команда strace 8.3.2. Команда ltrace 8.4. Потоки 8.4.1. Однопоточные и многопоточные процессы 8.4.2. Просмотр потоков 8.5. Введение в отслеживание ресурсов 8.6. Измерение процессорного времени 8.7. Настройка приоритетов процессов 8.8. Средние значения загрузки 8.8.1. Использование команды uptime 8.8.2. Высокие значения загрузки 8.9. Память 8.9.1. Как работает память 8.9.2. Ошибки из-за отсутствия страниц 8.10. Отслеживание производительности процессора и памяти с помощью команды vmstat 8.11. Отслеживание ввода/вывода 8.11.1. Использование команды iostat 8.11.2. Отслеживание использования ввода/вывода каждого процесса с помощью команды iotop 8.12. Отслеживание процессов с помощью команды pidstat 8.13. Дополнительные темы Глава 9. Представление о сети и ее конфигурации 9.1. Основные понятия о сети 9.2. Сетевые уровни 9.3. Интернет-уровень 9.3.1. Просмотр IP-адресов компьютера 9.3.2. Подсети 9.3.3. Распространенные маски подсети и нотация CIDR 9.4. Маршруты и таблица маршрутизации ядра 9.5. Основные инструменты, использующие протокол ICMP и службу DNS 9.5.1. Команда ping 9.5.2. Команда traceroute 9.5.3. Служба DNS и хост 9.6. Физический уровень и сеть Ethernet 9.7. Понятие о сетевых интерфейсах ядра 9.8. Введение в конфигурирование сетевого интерфейса 9.9. Конфигурация сети, активизируемая при загрузке системы 9.10. Проблемы, связанные с конфигурацией сети вручную и при активизации во время загрузки системы 9.11. Менеджеры сетевой конфигурации 9.11.1. Работа менеджера NetworkManager 9.11.2. Взаимодействие с менеджером NetworkManager с помощью интерфейса 9.11.3. Конфигурация менеджера NetworkManager 9.12. Разрешение имени хоста 9.12.1. Файл /etc/hosts 9.12.2. Файл resolv. conf 9.12.3. Кэширование и службы DNS без конфигурирования 9.12.4. Файл /etc/nsswitch. conf 9.13. Локальный хост 9.14. Транспортный уровень: протоколы TCP, UDP и службы 9.14.1. Порты TCP и соединения 9.14.2. Установление TCP-соединений 9.14.3. Номера портов и файл /etc/services 9.14.4. Характеристики протокола TCP 9.14.5. Протокол UDP 9.15. Возвращаемся к простой локальной сети 9.16. Понятие о протоколе DHCP 9.16.1. Клиент DHCP в Linux 9.16.2. Серверы DHCP в Linux 9.17. Настройка Linux в качестве маршрутизатора 9.18. Частные сети 9.19. Преобразование сетевых адресов (маскировка IP-адреса) 9.20. Маршрутизаторы и Linux 9.21. Брандмауэры 9.21.1. Брандмауэр в Linux: основные понятия 9.21.2. Определение правил для брандмауэра 9.21.3. Стратегии для брандмауэров 9.22. Сеть Ethernet, протоколы IP и ARP 9.23. Беспроводная сеть Ethernet 9.23.1. Утилита iw 9.23.2. Безопасность беспроводных сетей 9.24. Резюме Глава 10. Сетевые приложения и службы 10.1. Основные понятия о службах 10.2. Сетевые серверы 10.3. Защищенная оболочка (SSH) 10.3.1. Сервер SSHD 10.3.2. Клиент SSH 10.4. Демоны inetd и xinetd 10.5. Инструменты диагностики 10.5.1. Команда lsof 10.5.2. Команда tcpdump 10.5.3. Команда netcat 10.5.4. Сканирование портов 10.6. Удаленный вызов процедур (RPC) 10.7. Сетевая безопасность 10.7.1. Типичные уязвимости 10.7.2. Онлайн-ресурсы, посвященные безопасности 10.8. Заглядывая вперед 10.9. Сокеты: как процессы взаимодействуют с сетью 10.10. Сокеты домена Unix 10.10.1. Преимущества для разработчиков 10.10.2. Просмотр списка сокетов домена Unix Глава 11. Введение в сценарии оболочки 11.1. Основы сценариев оболочки 11.2. Кавычки и литералы 11.2.1. Литералы 11.2.2. Одинарные кавычки 11.2.3. Двойные кавычки 11.2.4. Передача одинарной кавычки в литерале 11.3. Специальные переменные 11.3.1. Индивидуальные аргументы: $1, $2 11.3.2. Количество аргументов: $# 11.3.3. Все аргументы: $@ 11.3.4. Имя сценария: $0 11.3.5. Идентификатор процесса: $$ 11.3.6. Код выхода: $? 11.4. Коды выхода 11.5. Условные операторы 11.5.1. Немного о пустом списке параметров 11.5.2. Использование других команд для проверки условий 11.5.3. Ключевое слово elif 11.5.4. Логические конструкции && и || 11.5.5. Проверка условий 11.5.6. Сопоставление строк с помощью конструкции case 11.6. Циклы 11.6.1. Цикл for 11.6.2. Цикл while 11.7. Подстановка команд 11.8. Управление временным файлом 11.9. Синтаксис heredoc 11.10. Основные утилиты в сценариях оболочки 11.10.1. Команда basename 11.10.2. Команда awk 11.10.3. Команда sed 11.10.4. Команда xargs 11.10.5. Команда expr 11.10.6. Команда exec 11.11. Подоболочки 11.12. Включение других файлов в сценарии 11.13. Чтение пользовательского ввода 11.14. Когда (не) использовать сценарии оболочки Глава 12. Передача файлов по сети 12.1. Быстрое копирование 12.2. Команда rsync 12.2.1. Основы команды rsync 12.2.2. Создание точной копии структуры каталога 12.2.3. Использование завершающей косой черты 12.2.4. Исключение файлов и каталогов 12.2.5. Целостность переноса, меры предосторожности и подробные режимы 12.2.6. Сжатие 12.2.7. Ограничение ширины полосы пропускания 12.2.8. Перенос файлов на ваш компьютер 12.2.9. Дальнейшие темы, относящиеся к команде rsync 12.3. Введение в совместное использование файлов 12.4. Совместное использование файлов с помощью пакета Samba 12.4.1. Конфигурирование сервера Samba 12.4.2. Контроль доступа к серверу 12.4.3. Пароли 12.4.4. Запуск сервера 12.4.5. Диагностические файлы и журналы 12.4.6. Конфигурирование совместного использования файлов 12.4.7. Домашние каталоги 12.4.8. Совместное использование принтеров 12.4.9. Использование клиента Samba 12.4.10. Доступ к файлам в качестве клиента 12.5. Клиенты NFS 12.6. Добавочные параметры и ограничения сетевой файловой системы Глава 13. Пользовательское окружение 13.1. Рекомендации по созданию файлов запуска 13.2. Когда изменять файлы запуска 13.3. Элементы файла запуска оболочки 13.3.1. Командный путь 13.3.2. Путь к страницам руководства 13.3.3. Приглашение 13.3.4. Псевдонимы 13.3.5. Маска прав доступа 13.4. Порядок следования файлов запуска. Примеры 13.4.1. Оболочка bash 13.4.2. Оболочка tcsh 13.5. Пользовательские настройки по умолчанию 13.5.1. Параметры по умолчанию для оболочки 13.5.2. Редактор 13.5.3. Переменная PAGER 13.6. Подводные камни в файлах запуска 13.7. Дальнейшие вопросы, связанные с запуском Глава 14. Краткий обзор рабочего стола Linux 14.1. Компоненты рабочего стола 14.1.1. Менеджеры окон 14.1.2. Инструментарий 14.1.3. Окружение рабочего стола 14.1.4. Приложения 14.2. Подробнее о системе X Window 14.2.1. Менеджеры дисплея 14.2.2. Прозрачность сети 14.3. Исследование X-клиентов 14.3.1. X-события 14.3.2. Понятие о X-вводе и настройка предпочтений 14.4. Будущее системы X Window 14.5. Шина D-Bus 14.5.1. Системный и сеансовый экземпляры 14.5.2. Отслеживание сообщений шины D-Bus 14.6. Печать 14.6.1. Система CUPS 14.6.2. Преобразование формата и фильтры печати 14.7. Другие темы, относящиеся к рабочему столу Глава 15. Инструменты разработчика 15.1. Компилятор C 15.1.1. Исходный код в виде нескольких файлов 15.1.2. Заголовочные файлы (Include) и каталоги 15.1.3. Связывание с библиотеками 15.1.4. Совместно используемые библиотеки 15.2. Утилита make 15.2.1. Пример файл Makefile 15.2.2. Встроенные правила 15.2.3. Окончательная сборка программы 15.2.4. Поддержание актуальных версий файлов 15.2.5. Аргументы и параметры командной строки 15.2.6. Стандартные макроопределения и переменные 15.2.7. Обычные цели 15.2.8. Устройство файла Makefile 15.3. Отладчики 15.4. Инструменты Lex и Yacc 15.5. Языки сценариев 15.5.1. Python 15.5.2. Perl 15.5.3. Другие языки сценариев 15.6. Java 15.7. Заглядывая вперед: компиляция программных пакетов Глава 16. Введение в программное обеспечение для компиляции кода на языке C 16.1. Системы для сборки программного обеспечения 16.2. Распаковка архива с исходным кодом на языке C 16.3. Утилита GNU Autoconf 16.3.1. Пример работы утилиты Autoconf 16.3.2. Установка с помощью инструментов для создания пакетов 16.3.3. Параметры сценария configure 16.3.4. Переменные окружения 16.3.5. Цели утилиты Autoconf 16.3.6. Файлы журналов утилиты Autoconf 16.3.7. Команда pkg-config 16.4. Практика установки 16.5. Применение исправлений 16.6. Устранение проблем при компиляции и установке 16.7. Заглядывая вперед Глава 17. Строим на фундаменте 17.1. Веб-серверы и приложения 17.2. Базы данных 17.3. Виртуализация 17.4. Распределенные вычисления и вычисления по запросу 17.5. Встроенные системы 17.6. Заключительные замечания