Ядро ОС Linux. Руководство системного программиста
Введение
Эта книга вдохновляет вас, начинающих исследователей ядер, не достаточно знающих UNIX-системы, для изучения ядра Linux, когда она впервые появилась у вас и еще тяжела для полного понимания. Это пособие создано для того, чтобы помочь вам быстрее изучить основные концепции и выделить из внутренней структуры Linux то, что может понадобиться вам, чтобы, не читая полностью исходный текст ядра, определить, что же случилось с какой-либо конкретной переменной. Почему Linux ? Linux — это первая свободно доступная система типа UNIX для 386 компьютеров. Она была полностью переписана в уменьшенном объеме так, не имеет большого количества функций, работающих с режимом реального времени, как в других операционных системах (386BSD), и, следовательно, проста в понимании и доступна для изменений.
UNIX появился около 20 лет назад, но только недавно появились столь мощные микрокомпьютеры, способные поддерживать работу операционных систем с многозадачным, многопользовательским защищенным режимом. Кроме того, описания UNIX труднодоступны, лишь документация о внутренностях ядра распространялась свободно. UNIX, кажущийся в начале простым, со временем увеличивался в размерах и превратился в объемную систему, понятную лишь профессионалу. С Linux, однако, мы можем решить часть описанных выше проблем в связи с тем, что:
- У Linux довольно простое ядро с хорошо структурированным интерфейсом;
- Контроль за написанием ядра вел один человек — Linus Torvalds, что не позволило появиться в ядре раздробленным участкам;
- Исходные тексты ядра свободно распространяются, так что начинающие программисты могут свободно понимать и изучать их, становясь выше в собственных глазах.
Мы надеемся, что эта книга поможет начинающим исследователям ядер разобраться в ядре Linux, поняв его структуру.
Сведения об авторских правах
Авторские права на главу «Распределение памяти в Linux» принадлежат Krichna Balasubramanian. Некоторые изменения запатентованы Майклом К.Джонсоном и Дугласом Р.Джонсоном.
«Как система вызывает процедуру»: авторскими правами на оригинал этой статьи обладает Stanley Scalsky.
«Написание драйвера устройства SCSI»: авторскими правами обладает Ric Faith.
Глава 1. » Прежде чем вы начали. «
1.1. Типографские соглашения
- Выделенный шрифт используется для обозначения определений, предупреждений и ключевых слов в языке.
- Курсив используется для обозначения вставок и введений для новых статей.
- Наклонный шрифт используется для обозначения мета-переменных в тексте, особенно в командной строке:
где [foo] — имя файла,как /bin/cp. Иногда довольно сложно в тексте заметить наклонный шрифт, и соответствующее выражение берется в [—].
Шрифт печатной машинки используется для отображения ответной информации компьютера:
также он используется для примеров в кодах Си для обозначения системных команд и для описания конфигурационных файлов. Иногда для наглядности эти примеры помещаются в рамку.
12 лучших книг для изучения Linux
*Ссылки на скачивания в конце статьи
[1] Внутреннее устройство Linux [2016] Брайан Уорд[2] Linux на практике [2017] Бреснахэн, Блум
[3] Ubuntu и Debian Linux для продвинутых [2011] Негус, Каэн
[4] UNIX. Профессиональное программирование [2018] Стивенс
[5] Командная строка Linux. Полное руководство [2017] Шоттс
[6] Linux глазами хакера [2019] Михаил Фленов
[7] Внутреннее устройство Linux [2017] Кетов
[8] Сценарии командной оболочки. Linux, OS X и Unix [2017] Дейв Тейлор, Брендон Перри
[9] Встраиваемые системы на основе Linux [2017] Симмондс Крис
[10] Linux API. Исчерпывающее руководство [2018] Майкл Керриск
[11] Linux. От новичка к профессионалу [2018] Колисниченко
[12] Kali Linux от разработчиков [2019] Херцог Рафаэль
Внутреннее устройство Linux [2016] Брайан Уорд
Книга, которую вы держите в руках, уже стала бестселлером на Западе. Она описывает все тонкости работы с операционной системой Linux, системное администрирование, глубокие механизмы, обеспечивающие низкоуровневый функционал Linux. На страницах этой книги вы приобретете базовые знания о работе с ядром Linux и о принципах правильной эксплуатации компьютерных сетей. В книге также затрагиваются вопросы программирования сценариев оболочки и обращения с языком С, освещаются темы защиты информации, виртуализации и прочие незаменимые вещи.
Linux на практике [2017] Бреснахэн, Блум
Книга специально предназначена для обучения сотрудников работе с Linux, CentOS, Free BSD. Содержит тематически сгруппированные уроки, что быстро поможет вам найти самое нужное и перейти к конкретной главе, где эта тема подробно рассматривается. Описывает основы операционной системы Linux, в том числе, ее дистрибутивы, типы приложений с открытым исходным кодом, свободное ПО, лицензирование, навигацию и многое другое. Исследует работу с командной строкой bash, в том числе, навигацию в ней, превращение команд в сценарии и т.п. Учит создавать типы пользователей и пользовательские группы, проводить аудит безопасности, разворачивать веб-сервисы и многое другое.
Ubuntu и Debian Linux для продвинутых [2011] Негус, Каэн
Это руководство научит вас использовать Ubuntu Linux так, как это делают настоящие профессионалы, то есть с помощью командной строки. Вы сможете применять более 1000 команд и получите все необходимое программное обеспечение — начиная с системных утилит, отслеживающих работу вашего ПК и его безопасность, и заканчивая программами для работы в сети и разграничения доступа. Книга дает незаменимые знания и навыки для использования и администрирования настольных ПК и серверов, работающих под управлением Ubuntu, Debian, KNOPPIX и других дистрибутивов Linux.
UNIX. Профессиональное программирование [2018] Стивенс
Эта книга заслуженно пользуется популярностью у серьезных программистов во всем мире, поскольку содержит самую важную и практическую информацию об управлении ядрами UNIX и Linux.
Без этих знаний невозможно написать эффективный и надежный код.
От основ — файлы, каталоги и процессы — вы постепенно перейдете к более сложным вопросам, таким как обработка сигналов и терминальный ввод/вывод, многопоточная модель выполнения и межпроцессное взаимодействие с применением сокетов. В общей сложности в этой книге охвачены более 70 интерфейсов, включая функции POSIX асинхронного ввода/вывода, циклические блокировки, барьеры и семафоры POSIX.
Командная строка Linux. Полное руководство [2017] Шоттс
Уильям Шоттс знакомит вас с истинной философией Linux. Вы уже знакомы с Linux, и настала пора нырнуть поглубже и познакомиться с возможностями командной строки. Командная строка всегда с вами, от первого знакомства до написания полноценных программ в Bash — самой популярной оболочке Linux. Познакомьтесь с основами навигации по файловой системе, настройки среды, последовательностями команд, поиском по шаблону и многим другим. Прочитав эту книгу, вы легко научитесь создавать и удалять файлы, каталоги и символьные ссылки; администрировать систему, включая сетевое оборудование, установку пакетов и управление процессами; редактировать файлы; писать скрипты для автоматизации общих или рутинных задач; выполнять любые работы с текстовыми файлами. Преодолев начальный страх перед оболочкой Linux, вы поймете, что командная строка — это естественный, логичный и простой способ общения с компьютером. И не забывайте протирать пыль с мышки.
Linux глазами хакера [2019] Михаил Фленов
Рассмотрены вопросы настройки ОС Linux на максимальную производитель-ность и безопасность. Описано базовое администрирование и управление доступом, настройка Firewall, файлообменный сервер, WEB-, FTP- и Proxy-сервера, программы для доставки электронной почты, службы DNS, а также политика мониторинга системы и архивирование данных. Приведены потенциальные уязвимости, даны рекомендации по предотвращению возможных атак и показано, как действовать при атаке или взломе системы, чтобы максимально быстро восстановить ее работоспособность и предотвратить потерю данных. В пятом издании информация представлена на примерах двух популярных дистрибутивов: CentOS и Ubuntu. На сайте издательства размещены дополнительная документация и программы в исходных кодах.
Внутреннее устройство Linux [2017] Кетов
Книга представляет собой введение во внутреннее устройство операционной системы Linux. Все положения наглядно проиллюстрированы примерами, разработанными автором и проверенными им на практике. Рассмотрены основные подсистемы ядра и их сущности — файлы и файловые системы, виртуальная память и отображаемые файлы, процессы, нити и средства межпроцессного взаимодействия, каналы, сокеты и разделяемая память. Раскрыты дискреционный и мандатный (принудительный) механизмы контроля доступа, а также привилегии процессов. Подробно описано пользовательское окружение и интерфейс командной строки CLI, оконная система X Window и графический интерфейс GUI, а также сетевая подсистема и служба SSH. Особое внимание уделено языку командного интерпретатора и его использованию для автоматизации задач эксплуатации операционной системы.
Сценарии командной оболочки. Linux, OS X и Unix [2017] Дейв Тейлор, Брендон Перри
Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи. Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.
Встраиваемые системы на основе Linux [2017] Симмондс Крис
Организационно книга устроена так же, как жизненный цикл типичного проекта встраиваемой Linux-системы. Автор рассказывает о подготовке проекта и устройстве системы на базе Linux, о наборах инструментов, начальных загрузчиках, ядре Linux и конфигурировании корневой файловой системы. Вы узнаете, как выбрать подходящую систему сборки Linux и научитесь работать с двумя наиболее популярными системами сборки: Buildroot и Yocto Project, позволяющими ускорить и упростить процесс разработки. Рассмотрена архитектура флэш-памяти типа NAND, NOR и eMMC, а также драйвера устройств и система инициализации. Показаны механизмы увеличения срока службы устройств и надежного обновления в месте эксплуатаци. Описаны потоки POSIX, которые могут оказать заметное влияние на время отклика и производительность готового устройства. Не обделены вниманием вопросы отладки и оптимизации платформы, а также выполнение приложений реального времени. Заключительные главы посвящены технике профилирования и трассировки приложений и ядра с помощью программ perf и Ftrace. Эта книга рассчитана на разработчиков программного обеспечения на платформе Linux и системных программистов, уже знакомых со встраиваемыми системами и желающих больше узнать о создании устройств, лучших в своем классе. Предполагается знание основ языка C и опыт системного программирования.
Linux API. Исчерпывающее руководство [2018] Майкл Керриск
Linux Programming Interface – исчерпывающее руководство по программированию приложений для Linux и UNIX. Описанный здесь интерфейс применяется практически с любыми приложениями, работающими в операционных системах Linux или UNIX. В этой авторитетной книге эксперт по Linux Майкл Керриск подробно описывает библиотечные вызовы и библиотечные функции, которые понадобятся вам при системном программировании. Вся теория сопровождается объяснениями на примерах четких и понятных полнофункциональных программ.
Linux. От новичка к профессионалу [2018] Колисниченко
Даны ответы на все вопросы, возникающие при работе с Linux: от установки и настройки этой ОС до настройки сервера на базе Linux. Материал книги максимально охватывает все сферы применения Linux от запуска Windows-игр под управлением Linux до настройки собственного Web-сервера. Также рассмотрены: вход в систему, работа с файловой системой, использование графического интерфейса, установка программного обеспечения, настройка сети и Интернета, работа в Интернете, средства безопасности, резервное копирование, защита от вирусов и другие вопросы. Материал ориентирован на последние версии дистрибутивов Fedora, openSUSE, Slackware, Ubuntu. В шестом издании описаны виртуальные частные сети, виртуальные серверы, настройка VPN-соединения и VPN-сервера, выбор VPN-провайдера, системы виртуализации OpenVZ и Virtuozzo, программные системы хранения данных с резервированием. На сайте издательства находятся дополнительные главы в PDF-файлах и видеоуроки.
Kali Linux от разработчиков [2019] Херцог Рафаэль
В книге предложен краткий курс работы с командной строкой Linux и ее концепциями, описаны типичные сценарии установки Kali Linux. Прочитав эту книгу, вы научитесь конфигурировать, отлаживать и защищать Kali Linux, а также работать с мощным менеджером пакетов дистрибутива Debian. Научитесь правильно устанавливать Kali Linux в любых окружениях, в том числе в крупных корпоративных сетях. Наконец, вам предстоит познакомиться и со сложными темами: компиляцией ядра, созданием собственных образов ISO, промышленным шифрованием и профессиональной защитой конфиденциальной информации.