Ядро линукс 3 издание

Новая книга «Linux Kernel Programming»

Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…

Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.

Об авторе

Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.

Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.

Содержание книги

Том 1 – «Исчерпывающее руководство по внутреннему устройству ядра, написанию модулей и синхронизации»:

  • настройка окружения для разработки ядра;
  • сборка ядра из исходников;
  • создание модуля ядра;
  • процессы и потоки;
  • управление памятью;
  • планировщик;
  • синхронизация.

Том 2 – «Драйверы символьных устройств и синхронизация: создание интерфейсов между ядром и пространством пользователя, периферийный ввод-вывод, обработка аппаратных прерываний»:

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

кто уже прочитал, дайте отзыв плз.

А публикации-то уже есть? Было бы интересно ознакомиться. Или ещё издателя нету?

Тег надо не «язык си», а «c».

Кавайный Билли. Обязательно над почитать.

Индийский программист != индусской код, полистал книгу — чел реально грамотный.

На первый взгляд выглядит весьма годно!

кто уже прочитал, дайте отзыв плз

На Амазоне отзывы есть, хорошие. Сам ещё подробно не читал, но буду брать.

Что за публикации? Книга в продаже.

Что за публикации? Книга в продаже.

И на файлообменниках тоже

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

Не нужно быть поваром, чтоб сказать, что суп невкусный.

бешенных неструктурированных скачек по ядру

А это как раз то, чем придётся заниматься будущему разработчику)

Всё давно написано. А манускрипты на вроде «Как написать драйвер для ядра Линукс версии 5.15» не нужны.

Половина этой книги не нужна и вызывает брезгливые смешки, если читал «What every programmer should know about memory» или получил подобные знания из чтения архитектурных мануалов на процессор.

Ну, то есть, для школьников, может, и намана: им и как линупс в виртуалочке запилить рассказывают на первых ста с лишним страницах, но нам-то, бородатым мужам, зачем это?

Пните жирным контрактом лучше Лава: пусть ревизию своей книжки сделает.

Надо быть дипломированным поваром, чтобы сказать, что у клиента дурной вкус.

А это как раз то, чем придётся заниматься будущему разработчику)

Будущий разработчик должен прочитать мануал на архитектуру своего целевого процессора, чтобы знать, что он программирует, книжку Роберта Лава, если это первый драйвер для Линукса, и всё. Остальное — это живой опыт. Тем более, API и подходы меняются быстрее, чем индусы книжки пишут. Хотя, эти «книжки» и быстрее родить могут.

Читайте также:  Kali linux запуск windows приложений

Вообще, если понимаешь, как работает процессор, на уровне page table, TLB, контекстов, регистров, стеков и т.п., то ты умеешь программировать под любую операционную систему, которая работает на этом процессоре. Различаются только операционные модели, и то, чаще, всего лишь, только API.

читал с торрентов. макулатура, писали и редактировали ученики начальной школы

Я это и имел ввиду. Хорошо, что уже в продаже. Из текста новости я этого не понял.

Ну как бы понятно, что эта книга не для «кулхакеров» с большим опытом, способных прочитав доку на железо запрограммировать любую ОС. А для привлечения новых людей «с гендер-прононсами и цветными волосами» — самое то. Бородатые дядьки не вечны, кому-то же придётся потом ядро развивать) Книга Лава устарела, к сожалению, и там есть не всё. Также книга будет полезна тем, кто хочет освежить свои знания и узнать о нововведениях в современном ядре.

Прочитай Лава и linux/Documentation или статью на LWN на то, чего в книжке нет. Делов-то. Зато в башке цельная картина будет.

Ну молодец, вложил столько трудов, а оно устареет через год вслед за говённой LDD.

Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…

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

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

Для этого [1] код должен быть достаточно читабельным и [2] ты должен знать общую архитектуру ядра. Первое, как правило желает оставлять лучшего, а во втором, без книг разобраться трудно.

P.S. минутка юмора:

кому-то же придётся потом ядро развивать)

Зачем? Тот, кто в состоянии развивать подобного уровня проект, напишет всё с нуля, чем копошиться в этом легаси из 20-го века.

Ога, то-то я и смотрю от написанных с нуля ядер деваться некуда)

Индус индусу рознь. Человек в 83-м сам программирование освоил, без интернетов с гуглами, это вам не хрен собачий.

на либгене есть

Люди хотят отзывы.

Люди получают отзывы.

Людям не нравятся отзывы.

Люди хейтят того, кто дал отзывы.

Читайте также:  Как установить windows с жоского диска

Снимаю виртуальную шляпу перед Кайваном. А европейцы, бездельники, совсем обленились. Извините за танцпол, наболело просто.

С позиции зумерков может быть и не хрен, между тем все кто освоил в 80-х или начале 90-х программирование освоили его без интернетов с гуглами. И как-то даже не напряглись. А сейчас не все и с интернетами могут.

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

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

Источник

Разработчики: ядро Linux слишком «дырявое», его нужно переписать с нуля

Киc Кук, сотрудник Google и разработчик ядра Linux, считает, что нужно срочно увеличить количество программистов, которые будут трудиться над улучшением безопасности ядра. Сил нынешнего штата не хватает, они не успевают обрабатывать все исправления, и в результате пока одна уязвимость устраняется сразу, другая может оставаться в коде годами. Также он предложил отказаться от языка С, назвав его небезопасным, и переписать ядро на Rust.

Почему в Linux так много «дыр»

Сообществу разработчиков ядра Linux не хватает специалистов, чтобы вовремя устранять найденные в нем уязвимости. Как сообщил The Register, на эту проблему обратил внимание программист Кис Кук (Kees Cook) из Google Security Team, принимающий непосредственное участие в развитии Linux.

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

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

Кис Кук заявил, что большая часть инженеров, в настоящее время занятых развитием ядра Linux, работают в различных компаниях. Он призвал руководителей этих компаний нанимать больше инженеров, чтобы у разработчиков появилось больше времени на Linux.

Мотивация Кука

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

Читайте также:  Где находятся заголовочные файлы windows

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

Например, в ноябре 2017 г. CNews рассказывал о том, как россиянин Антон Коновалов всего за несколько месяцев выловил в коде ядра Linux, по меньшей мере, 15 багов в драйверах USB. Он подчеркнул, что такие уязвимости можно использовать для запуска произвольного кода и захвата контроля над пользовательскими системами.

В июле 2021 г. эксперты по информационной безопасности компании Qualys нашли в ядре уязвимости с зашкаливающим уровнем опасности. Они позволяют вызвать крах системы и выполнить произвольный код. И если в случае «дыр», выявленных Антоном Коноваловым их возраст не был установлен, то находкам Qualys совсем недавно исполнилось шесть и семь лет.

Более того, одну из этих уязвимостей они нашли, успешно проэксплуатировав вторую. Из-за них под угрозой оказались пользователи Debian, Ubuntu, Red Hat и целого ряда других популярных дистрибутивов Linux.

Необходимо сменить язык программирования

Проблему с бесчисленным количеством уязвимостей в Linux Кис Кук частично связывает и с языком программирования С, самым популярным в мире (статистика Tiobe на июль 2021 г.). «Linux, написанный на C, по-прежнему будет иметь длинный хвост проблем», – подчеркнул Кук, добавив, что Linux следовало бы писать на «более безопасных» языках.

В качестве примера Кук привел язык Rust. Как сообщал CNews, согласно опросу Stack Overflow, большинство программистов называют его своим самым любимым языком. К тому же, он очень нравится и киберпреступникам.

Также Кук считает неправильным нынешний алгоритм поиска уязвимостей в коде ядра. Программисты задействуют базу данных Mitre CVE (Common Vulnerabilities and Exposures), используя ее для оценки опасности существующих уязвимостей. Кук уверен, что она совершенно не годится для решения этой задачи, поскольку, с его слов, «не всем уязвимостям присваиваются CVE-метки, и к тому же они назначаются несвоевременно».

Решение проблемы

Кис Кук уверен, что наращивание числа программистов, располагающих временем на тестирование исправлений к ядру Linux, в корне исправит ситуацию. В качестве примера он привел использование инструмента фаззинга Syzkaller, который позволяет выявить почти 1000 потенциальных проблем, в настоящее время имеющихся в ядре Linux. Разработчики в своем нынешнем количестве способны устранить порядка 400 «дыр» в год. При этом в ядре постоянно появляются новые уязвимости.

Кук предложил не только нанимать больше инженеров и переписать ядро Linux с использованием Rust. Он также рекомендует отказаться от нынешнего процесса разработки ядра, в основе которого лежит чтение и написание программистами десятков электронных писем с исправлениями и комментариями. На горы электронных писем, как сообщал CNews, еще в июле 2020 г. жаловался и сам Линус Торвальдс (Linus Torvalds), создатель Linux.

Кис Кук также ратует за внедрение более автоматизированного тестирования и фаззинга. Он утверждает, что все предложенное им сделает разработку ядра «более эффективным».

Источник

Оцените статью