Осенью мы в YADRO собрали митап про ядро Linux. Можно придумать интересный каламбур, но вместо этого мы поблагодарим SpbLUG, питерское сообщество пользователей GNU/Linux, и расскажем, что было на митапе. На повестке дня — «точечные» обновления ядра Linux без перезагрузки, расширения RISC-V в Linux, а также создание собственного модуля Memory Extender. Далее в посте вы найдете записи и презентации докладов.

Livepatching: «точечные» обновления ядра Linux без перезагрузки

Евгений Шатохин
ведущий инженер-программист, YADRO
О чем доклад. Серверные системы на основе Linux могут работать нон-стоп годами. Но ошибки в ядре никто не отменял. Можно ли устранить их без перезагрузки? Поможет livepatching. Евгений рассказал, как организовать подготовку, тестирование и выпуск livepatch’ей, чтобы исправлять ошибки, приводящие к kernel oops, security-уязвимости и не только. Оказывается, это не так сложно, как может показаться на первый взгляд.
«Как я уже сказал, самому сделать лайвпатчи тоже можно. Это не очень просто, но и не настолько сложно, как Red Hat в своих рекламных проспектах рисует, что там нужны специально обученные люди, прямо гуру-гуру, которые гурее всех гурых. Не. Если вы хорошо знаете язык C и с кодом ядра разбирались, то я думаю, что с 90% лайвпатчей вы справитесь просто на ура».
Архитектура RISC-V и её расширения в Linux

Сергей Матюкевич
ведущий инженер-программист, YADRO
О чем доклад. Список расширений для RISC-V, поддерживаемых ядром Linux, все время растет. Сергей рассказал, какие в принципе бывают расширения RISC-V и какие из них поддерживаются ядром Linux. Отдельно объяснил, как ядро Linux может узнать о доступных расширениях RISC-V на активном процессоре и с какой целью делиться этой информацией с пользовательским ПО.
«Если вы хотите добавить поддержку расширения RISC-V в ядро, при этом само ядро это расширение использовать не будет (ну, чего-нибудь там с плавающей точкой), то все, что вам достаточно сделать, это добавить парсинг соответствующей строчки в DTS и возможность узнать об этом расширении через hwprobe. Для более сложных расширений, системных тем более, конечно, это не так».
Расширяя границы доступной RAM, или Создаем свой модуль memory extender

Дмитрий Точанский
старший инженер-программист, YADRO
О чем доклад. Однажды перед Дмитрием встала задача подружить устройство с 32-битным адресным пространством и систему, в которой оперативная память расположена за пределами этого диапазона. На этом примере Дмитрий расскажет, как устроена подсистема DMA в ядре Linux, при чем тут iommu и как реализовать свой драйвер iommu, не имея ни драйвера, ни iommu.
«Мы научились программно эмулировать iommu. Это может пригодиться, внезапно, не только тем, кто делает системы на кристалле с легаси или какими-то особенными устройствами. Если вам вдруг понадобится какой-нибудь битик добавить к адресу, который вам выдал DMA (всякое бывает), вы можете воспользоваться таким подходом и сделать программную эмуляцию».