1

После двух месяцев разработки Линус Торвальдс анонсировал релиз ядра Linux 3.19. Среди наиболее заметных улучшений: средства защиты от переполнения буфера на основе расширений Intel MPX, проверка целостности и быстрая замена дисков в Btrfs RAID 5/6, сжатие LZ4 в squashfs, возможность привязки BPF-программ к сетевым сокетам, протокол TIPC, системный вызов execveat(), драйвер "ipvlan" для связи контейнеров, драйвер "AMD KFD" для GPGPU-вычислений, поддержка архитектуры Altera Nios II.

В новую версию принято примерно 11500 исправлений от 1200 разработчиков, размер патча - 38 Мб (изменения затронули 10742 файлов, добавлено 487475 строк кода, удалено 350946 строк). Около 46% всех представленных в 3.19 изменений связаны с драйверами устройств, примерно 19% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - файловыми системами и 4% c внутренними подсистемами ядра.

Из наиболее интересных новшеств можно отметить:

  • Дисковая подсистема, ввод/вывод и файловые системы

    • В Btrfs появилась возможность быстрой замены дисков в RAID 5/6 без предварительного добавления нового диска, переноса данных и вывода из массива старого диска, т.е. теперь при помощи утилиты btrfs-replace можно просто поменять на лету один диск на другой, как это делалось для накопителей, не состоящих в RAID. Для RAID 5/6 также добавлена функция проверки целостности данных ("Scrubbing", сверка контрольных сумм, сохранённых и вычисленных на основе фактических данных), которая ранее не могла быть применена к RAID разделам Btrfs;

    • Существенно увеличена производительность модуля Device Mapper, обеспечивающего динамическое выделение места в хранилище (thin provisioning) и позволяющего создать несколько виртуальных дисковых разделов, суммарный размер которых превышает физический размер доступных накопителей, а физическое дисковое пространство выделяется по мере необходимости. Производительность возросла в основном благодаря поддержке агрегирования операций с идентичными блоками на стадии перед обращением к основному устройству;

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

    • В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителей, добавлена опция "fastboot", которую можно использовать для сокращения числа проверок во время загрузки;

    • В файловую систему squashfs добавлена поддержка сжатия данных с использованием алгоритма LZ4;

  • Виртуализация и безопасность

    • Поддержка расширений MPX (Memory Protection Extensions), которые появятся в следующих поколениях микроархитектур процессоров Intel (Skylake и Goldmont) и дадут возможность организовать проверку указателей на соблюдение границ, связанных с ними областей памяти. Для использования данной возможности для каждой ссылки на память процессору необходимо сообщить сведения о допустимых границах области памяти, что требует дополнительной адаптации программного обеспечения, т.е. использование для сборки компилятора и runtime-библиотек, поддерживающих MPX. С практической стороны, MPX позволит выявлять ошибки при работе с памятью и блокировать совершение атак, основанных на переполнении буфера.

    • Добавлен драйвер "ipvlan", позволяющий создавать виртуальные сетевые устройства для связи между изолированными контейнерами. Драйвер напоминает macvlan, но рассчитан на эффективную работу с сетевыми пространствами имён (network namespaces) и производит мультиплексирование трафика на более высоком уровне сетевого стека;

    • Для архитектуры ARM64 реализован механизм seccomp, используемый для ограничения доступа приложений к системным вызовам;

    • В связи с устранением возможного вектора атаки (CVE-2014-8989) изменена обработка системного вызова setgroups(), при его использовании в пространствах имён для непривилегированных пользователей (user namespaces), что может потенциально привести к нарушению нормальной работы некоторых приложений, выполняющих маппинг произвольных идентификаторов групп пользователей.

    • Прекращена поддержка использования системы виртуализации KVM на серверах с архитектурой Itanium (ia64), так как данная возможность не использовалась на практике и оставалась без сопровождения;

    • Добавлен интерфейс для доступа из пространства пользователя к функциям блочного шифрования AEAD;

    • Подсистема virtio значительно доработана в плане обеспечения поддержки стандарта virtio 1.0;

  • Сетевая подсистема

    • В клиент и сервер NFS добавлена поддержка опций ALLOCATE и DEALLOCATE, определённых в стандарте NFS 4.2 и позволяющих заранее зарезервировать место в хранилище для файла, до его фактической записи;

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

    • Добавлен netlink API для сетевого протокола TIPC (Transparent Inter-process Communication), предназначенного для организации межпроцессного взаимодействия в кластере. Протокол предоставляет средства для быстрого и надёжного взаимодействия приложений, независимо от того, на каких узлах в кластере они выполняются.

    • В подсистеме InfiniBand обеспечена поддержка подкачки по необходимости (on-demand paging), что позволяет создавать и размещать области RDMA через обработчик обращений к невыделенным страницам памяти (page faults), т.е. расходовать память тогда, когда она действительно используется;

  • Память и системные сервисы

    • В системный вызов getsockopt() добавлена новая опция SO_INCOMING_CPU, при помощи которой можно определить CPU, используемый для обработки указанного сокета. Используя данную опцию приложение может распределить связанную с сокетами работу по нескольким процессорам, увеличив общую пропускную способность;

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

    • Добавлен системный вызов execveat(), который позволяет запустить исполняемый файл из открытого файлового дескриптора или определить исполняемый файл при передаче файлового дескриптора директории;

    • Из экспериментального staging-дерева в основной состав ядра перемещён механизм межпроцессного взаимодействия Binder, предложенный разработчиками платформы Android;

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

    • В подсистему ftrace добавлена возможность использования в фильтрах выражений с логической операцией НЕ ("!");

    • Добавлен новый внутренний API, позволяющий унифицировать доступ драйверов к параметрам оборудования через ACPI или Вevice Tree, скрывая особенности работы через данные интерфейсы;

    • Продолжена работа над устранением проблемы 2038 года, вызванной переполнением 32-разрядного типа time_t. Внутренние функции ядра do_settimeofday(), timekeeping_inject_sleeptime() и mktime() заменены на варианты, в которых используется 64-разрядный тип time64_t или timespec64.

  • Аппаратные архитектуры

    • Поддержка микропроцессорной архитектуры с программным ядром Altera Nios II (soft-процессор), конкурирующей с архитектурой MicroBlaze;

  • Оборудование

    • Добавлен драйвер "AMD KFD", предоставляющий новый интерфейс для использования вычислительных возможностей графических процессоров в приложениях, не связанных с графикой (GPGPU). Взаимодействие с драйвером на пользовательском уровне осуществляется через библиотеку HSA (Heterogenous System Architecture), которая позволяет использовать OpenCL для организации гибридных вычислений и наладить совместную работу CPU, GPU и иных процессоров, в которых подходящее вычислительное устройство выбирается в прозрачном режиме в зависимости от задачи. В HSA CPU и GPU имеют доступ к единым областям памяти, что упрощает организацию работы гибридных приложений;

    • В компоненты прямого рендеринга (DRM) добавлена поддержка атомарного переключения видеорежимов, позволяющая разом, в рамках одной атомарной операции, изменить несколько параметров графического режима. Вызов ioctl() для обращения к данной функциональности из пространства пользователя ожидается в ветке ядра 3.20;

    • В DRM-драйвер Nouveau добавлена частичная поддержка видеокарт NVIDIA GeForce 900 (GPU GM204), реализована возможность управления напряжением в Tegra K1;

    • В DRM-драйвере Intel реализована начальная поддержка графической подсистемы процессоров нового поколения, построенных в соответствии с микроархитектурой Skylake. По умолчанию включен режим PPGTT (Per-Process Graphics Translation Tables), который может использоваться для изоляции доступа к GPU в гостевых системах;

    • В DRM-драйвере Radeon улучшены средства управления скоростью вращения кулера для Radeon HD 7000 и более новых GPU;

    • Поддержка GPU, используемых в SoC Freescale i.MX и Rockchip;

    • Поддержка звуковых устройств на чипах Intel Baytrail;

    • Поддержка контроллеров USB 3.0 от компании Broadcom;

    • В Video4Linux добавлены драйверы для видеоустройств DVBSky S950 V3, тюнеров Montage M88RS6000, демодуляторов Panasonic MN88472 и MN88473, и ресиверов для пультов ДУ Amlogic Meson.

    • Поддержка SoC Amlogic Meson8, Allwinner A80, Samsung Exynos4415, Freescale LS1021A, Alphascale ASM9260 и AMD Seattle;

    • Поддержка SCSI-адаптеров Tekram DC390(T), Am53/79C974 и Western Digital WD7193/7197/7296.

Источник: http://www.opennet.ru/opennews/art.shtml?num=41634

ᛈᚺ'ᚾᚷᛚᚢᛁ ᛗᚷᛚᚹ'ᚾᚨᚠᚺ ᚲᛏᚺᚢᛚᚺᚢ ᚱ'lᚷᛖᚺ ᚹᚷᚨᚺ'ᚾᚨᚷᛚ ᚠᚺᛏᚨᚷᚾ

Asus Prime B460M-K, i5-10500, Intel 630 UHD, DDR4 32 GB, SSD 500GB + HDD 2TB | Linux Mint 21.3 Cinnamon + Fedora 40 MATE (Compiz) Beta + Windows 11 + macOS 12 Monterey

2

Обновился кто нибудь на kernel 3.19? Как там блоб nvidia, заводится?

3

Можно зайти на фтп нвидии и посмотреть примечания к последней версии, можно установить ядро 3.19 не удаляя текущее и проверить.

Leap 42.3 Calculate Linux, Xfce, Emacs, ..

4 (14.02.2015 19:28:41 отредактировано baralgin)

Linux kernel 2.6.18* and newer  ))
Обновился, полет нормальный.

5

baralgin пишет:

Как там блоб nvidia, заводится?

Какая версия блоба-то?


з.ы. 304.125 по-любому потребует патча, а новые блобы этого года 346.35 и 340.76 должны ставиться без проблем.

6

verg пишет:

304.125 по-любому потребует патча,

Только патч от 3.18 не подойдёт.

7

verg, 340.76 ставил. Все норм вроде.

8

Патчи для 304.125 необходимые ядру 3.19:
1) nv-drm.c.patch

+ открыть спойлер
--- nv-drm.c    2014-12-02 06:55:59.000000000 +0300
+++ nv-drm.c    2014-12-11 22:45:40.189959532 +0300
@@ -18,7 +18,7 @@
 
 #include <drm/drmP.h>
 
-#if defined(NV_DRM_DRM_GEM_H_PRESENT)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0)
 #include <drm/drm_gem.h>
 #endif
 
@@ -75,6 +75,10 @@
     .load = nv_drm_load,
     .unload = nv_drm_unload,
     .fops = &nv_drm_fops,
+    
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0)
+    .set_busid = drm_pci_set_busid,
+#endif    
 
     .name = "nvidia-drm",
     .desc = "NVIDIA DRM driver",

2) nv.c.patch

+ открыть спойлер
--- a/nv.c    2014-12-02 04:58:34.000000000 +0100
+++ b/nv.c    2014-12-21 17:50:33.420697348 +0100
@@ -2026,7 +2026,7 @@ long nv_kern_unlocked_ioctl(
     unsigned long i_arg
 )
 {
-    return nv_kern_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
+    return nv_kern_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
 }
 
 long nv_kern_compat_ioctl(
@@ -2035,7 +2035,7 @@ long nv_kern_compat_ioctl(
     unsigned long i_arg
 )
 {
-    return nv_kern_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
+    return nv_kern_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
 }
 
 /*

Ставить примерно так.

 Консоль:
verg@localhost:~> inxi -SG
System:    Host: localhost Kernel: 3.19.0-1.g8a7d5f9-desktop i686 (32 bit) Desktop: KDE 4.14.4
           Distro: openSUSE 13.2 (Harlequin)
Graphics:  Card: NVIDIA G73 [GeForce 7600 GS]
           Display Server: X.Org 1.17.1 driver: nvidia Resolution: 1920x1080@60.00hz
           GLX Renderer: GeForce 7600 GS/AGP/SSE2 GLX Version: 2.1.2 NVIDIA 304.125