Внутреннее устройство 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. Эволюция файловых систем
  • 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. Другие темы, относящиеся к рабочему столу
  • 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. Заглядывая вперед: компиляция программных пакетов
  • 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 совершенно бесплатно.
Внутреннее устройство Linux
Рейтинг книги:
0 голосов
3536

Поиск книг:




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

Статистика: