Новости «Ядро Linux»
Новая книга «Linux Kernel Programming»
Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…
Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.
Об авторе
Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.
Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.
( читать дальше... )
>>> Том 1 на Amazon
>>> Том 2 на Amazon
SquashFS Tools 4.5 — 20 лет с начала разработки SquashFS
Несмотря на то, что в ядро SquashFS была включена лишь в 2009 году, работа над ней началась гораздо раньше. В честь двадцатилетнего юбилея с начала разработки, Phillip Lougher объявил новый релиз SquashFS-Tools.
Из нововведений:
- Возможность определить «действия» по шаблону для отдельных файлов в
mksquashfs. Например, добавить в архив без сжатия. - Команда
sqfstarдля преобразования Tar–архива в SquashFS. - Возможность ограничить загрузку процессора и дисковой подсистемы при работе
mksquashfs. - Возможность задавать дату для псевдо–файлов, имитация ссылок, сокетов и потоков ввода–вывода.
- Команда
sqfscat, выводящая содержимое отдельных файлов из архива. - Поддержка символьных ссылок при распаковке SquashFS, возможность ограничить глубину обхода или исключить файлы по шаблону.
- И множество других улучшений и исправлений.
Linux 5.13
Линус Торвальдс анонсировал новую версию ядра Linux 5.13, отдельно подчеркнув, что это самый большой релиз по количеству проделанной работы!
После седьмого релиз-кандидата у нас была довольно спокойная неделя, и я не вижу причин откладывать релиз версии 5.13. Изменений за последнюю неделю мало, всего 88 коммитов не считая слияний (и некоторые из них просто откаты). Это не особо важные исправления и поскольку их мало, я предлагаю людям просто просмотреть прилагаемый список изменений, чтобы узнать, что произошло. В целом в 5.13 очень много изменений. Фактически, это один из самых крупных релизов 5.х с более чем 16 тысячами коммитов (более 17 тысяч, если считать слияния) от более чем 2 тысяч разработчиков. Однако, все эти изменения затронули всё и понемногу, поэтому трудно выделить что-то одно…
Наиболее значимые изменения:
- LSM-модуль Landlock для дополнительного ограничения процессов (подробности);
- возможность сборки в Clang с защитой CFI (Control Flow Integrity) (подробности);
- рандомизация стека ядра для каждого системного вызова;
- поддержка одновременного сброса TLB;
- поддержка чипов М1 (пока на начальной стадии);
- поддержка новых GPU от Intel и AMD;
- возможность прямого вызова функций ядра из BPF-программ (подробности);
- виртуальное звуковое устройство на базе virtio;
- multi-shot режим в io_uring.
( читать дальше... )
>>> Подробности
Исследователям удалось добавить в ядро Linux уязвимый код
Исследователи из университета Миннесоты — Цюши У и Канцзе Лу в рамках исследования «небезопасности» OSS модели пытались выяснить, насколько вероятно намеренное добавление уязвимостей в проекты. Среди прочего патчи были отправлены в ядро Linux.
В результате код ревью прошли 4 патча, в том числе 3 содержащих уязвимости. Представители проекта Linux обратились с жалобой на исследование к администрации университета, однако не нашли поддержки. Потому было принято решение больше никогда не принимать патчи от людей из этого заведения.
( читать дальше... )
()
Линус высказал своё мнение о Rust в ядре
Поживем - увидим
Мне интересен проект внедрения Rust в ядро. Но я считаю, что авторы этого проекта предвзяты по отношению к Rust, и хотелось бы сначала посмотреть, как это обернется на практике.
Лично Торвальдс не продавливает Rust в ядро, но он «готов оценить обещанные преимущества и возможность избегания граблей, связанных с безопасностью», но также понимает, что «иногда обещанное не исполняется».
Торвальдс полагает, что первоначальной областью применения Rust в ядре могут быть драйверы, поскольку их написание представляет собой множество небольших и независимых задач. «Может, это не самое интересное применение, но оно самое очевидное». Он добавил, что поскольку многие устройства предназначены не для всех процессорных архитектур, недостаток их поддержки в Rust – не такая большая проблема.
>>> Источник
()
Linux 5.11
Состоялся релиз новой версии ядра.
Из нового:
-
Реализована поддержка APU Ryzen 5000 серии, а также начальная поддержка Navi 2 и видеокарт Nvidia на архитектуре Ampere.
-
Добавлено несколько новых опций монтирования для XFS (kernel.org) и Btrfs. Также был проведён ряд оптимизаций для последней ФС.
-
Новый механизм перехвата системных вызовов, основанный на prctl().
-
Архитектура IA-64 переведена в разряд «orphanned» («без поддержки»).
-
Добавлена поддержка первого USB4-контроллера Intel Maple Ridge.
И многое другое.
Linux 5.10
Тихо и незаметно состоялся релиз ядра версии 5.10. По признанию самого Торвальдса, ядро «состоит из по большей части новых драйверов с вкраплениями из патчей», что неудивительно, ибо ядро получило статус LTS.
Из нового:
-
Поддержка fast_commit в файловой системе Ext4. Теперь приложения будут писать в кэш меньше метаданных, что ускорит запись! Правда, её надо явно включить при создании ФС.
-
Дополнительные настройки доступа через интерфейс io_uring, которые позволяют безопасно давать доступ к ресурсам колец дочерним приложениям.
-
Введён системный вызов process_madvise, позволяющий давать ядру информацию об ожидаемом поведении целевого приложения. Аналогичная система, кстати, используется в Android (демон ActivityManagerService).
-
Исправлена проблема 2038 года для файловой системы XFS.
и многое другое.
Также стоит отметить, что тут же была выпущена версия 5.10.1, отменяющая два изменения, приводившие к проблемам в подсистемах md и dm raid. Так что да, 0-day-патчи бывают даже для ядра Linux.
Подробнее:
>>> Скачать tarball
Вышло ядро версии Linux 5.9 добавлена поддержка FSGSBASE и Radeon RX 6000 «RDNA 2»
Линус Торвальдс объявил о стабилизации версии 5.9.
В числе прочих изменений он внес в ядро версии 5.9 поддержку FSGSBASE, которая должна улучшить производительность переключения контекста на процессорах AMD и Intel. FSGSBASE позволяет читать и изменять содержимое регистров FS/GS из пространства пользователя, что должно улучшить общую производительность, пострадавшую после закрытия уязвимостей Spectre/Metldown. Сама поддержка была добавлена инженерами Microsoft несколько лет назад.
Так же:
- добавлена поддержка Radeon RX 6000 «RDNA 2»
- добавлена поддержка команд зонирования накопителей NVMe (NVMe zoned namespaces (ZNS))
- начальная поддержка IBM Power10
- различные улучшения подсистемы хранилищ, ужесточена защита от использования GPL-прослоек для связывания проприетарных драйверов с компонентами ядра
- модель потребления энергии (фреймворк Energy Model) теперь описывает не только поведение энергопотребления CPU, но и периферийных устройств
- В Netfilter добавлен REJECT на стадии PREROUTING
- для AMD Zen и более новых моделей CPU добавлена поддержка технологии P2PDMA, позволяющей использовать DMA для прямой передачи данных между памятью двух устройств, подключенных к шине PCI.
>>> Подробности
Ядро Linux 5.6
Основные изменения:
- Поддержка Intel MPX (memory protection extenstion) удалена из ядра.
- RISC-V получила поддержку KASAN.
- Завершён перевод ядра с 32-битного типа time_t и ассоциированых с ним типов: ядро готово к проблеме-2038.
- Добавлены операции для подсистемы io_uring.
- Добавлен системный вызов pidfd_getfd(), который позволяет процессу извлечь дескриптор открытого файла из другого процесса.
- Добавлен механизм bootconfig, позволяющий ядру во время загрузки получать файл с опциями командной строки. Утилита bootconfig позволяет добавить такой файл к образу initramfs.
- F2FS стала поддерживать сжатие ФС.
- Новая опция монтирования NFS
softrevealпредоставляет ревалидацию атрибутов. - Монтирование NFS по UDP по умолчанию отключено.
- Добавлена поддержка копирования файлов с сервера на сервер в NFS v4.2
- Добавлена поддержка ZoneFS.
- Добавлена новая операция prctl()
PR_SET_IO_FLUSHER. Она предназначена для обозначения процесса, который занят высвобождением памяти и к которому нельзя применять ограничения. - Добавлена подсистема dma-buf, ответвление от аллокатора Android ION.
- Блокирующий пул /dev/random был удалён, теперь /dev/random поведением более похож на /dev/urandom тем, что не блокирует доступную энтропию после инициализации пула.
- Гостевые Linux-системы в VirtualBox могут монтировать папки, экспортированные хост-системой.
>>> Подробности
Wireguard включен в ядро Linux
Wireguard – это простой и безопасный VPN-протокол, основным разработчиком которого является Jason A. Donenfeld. Долгое время модуль ядра, реализующий этот протокол, не принимали в основную ветку ядра Linux, так как использовалась своя реализация криптографических примитивов (Zinc) вместо стандартного crypto API. Недавно это препятствие было устранено, в том числе за счет доработок, принятых в crypto API.
Сейчас wireguard принят в основную ветку ядра Linux и будет доступен в релизе 5.6.
Wireguard выгодно отличается от других протоколов VPN отсутствием необходимости согласовывать используемые криптографические алгоритмы, радикальным упрощением процесса обмена ключами, и, как следствие, малым размером кодовой базы.
>>> Подробности
Релиз ядра Linux 5.5
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.5. Среди наиболее заметных изменений:
- возможность назначения сетевым интерфейсам альтернативных имён,
- интеграция криптографических функций из библиотеки
Zinc, - возможность зеркалирования на
более чем 2 диска в Btrfs RAID1, - механизм отслеживания состояния Live-патчей,
- фреймворк unit-тестирования
kunit, - повышение производительности беспроводного стека mac80211,
- возможность доступа к корневому разделу через протокол SMB,
- верификация типов в BPF.
В новую версию принято 15505 исправлений от 1982 разработчиков, размер патча - 44 Мб (изменения затронули 11781 файлов, добавлено 609208 строк кода, удалено 292520 строк). Около 44% всех представленных в 5.5 изменений связаны с драйверами устройств, примерно 18% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - файловыми системами и 3% c внутренними подсистемами ядра.
>>> Подробности
Выпуск systemd 244
Среди изменений:
- новое лого;
- сервисы теперь можно привязывать к CPU через cgroup v2, т.е. поддержка cpuset cgroups v2;
- можно определить сигнал для рестарта сервиса (RestartKillSignal);
- systemctl clean теперь работает и для юнитов типа socket, mount и swap;
- systemd теперь пытается вычитывать конфигурацию из переменной EFI SystemdOptions как альтернатива изменения параметров ядра из загрузчика;
- systemd отменяет лимиты printk, чтобы уж точно схватить все логи во время загрузки (и потом применяет свои лимиты);
- добавлена поддержка загрузки настроек из директорий типа «{unit_type}.d/», чтобы применить настройки ко всем юнитам данного типа;
- в systemctl добавлено 'stop --job-mode=triggering', чтобы останавливать и зависимые юниты;
- улучшено отображение зависимостей в Unit status. Теперь показывает зависящие юниты и юниты, от которых зависит;
- очередные улучшения для работы с PAM сессиями. Добавлено ограничение общего времени жизни сессии с принудительным разлогином;
- новая группа для системных вызовов @pkey, сразу разрешает все memory syscalls для контейнеров;
- для udev добавлена программа fido_id;
- исправления в работе udev с CDROM;
- systemd-networkd больше не создает маршрут по умолчанию для сетей 169.254.0.0/16 (диапазон для автоконфигурации);
- systemd-networkd теперь может объявлять новые IPv6 маршруты;
- systemd-networkd теперь сохраняет конфигурацию DHCP при рестарте;
- добавлены новые опции в systemd DHCPv4 и DHCPv6 сервер;
- в systemd-networkd добавлены опции для трафик шейпинга;
- поддержка devicetree-overlay;
- systemd-resolved поддерживает проверку имен через GnuTLS;
- systemd-id128 теперь может генерировать UUID;
- добавлено опциональное ограничение для юнитов, не позволяющее читать им логи ядра.
>>> Подробности
| ← предыдущие | следующие → |
