09 февраля 2015

Релиз ядра Linux 3.19 (установка/обновление)

После двух месяцев разработки Линус Торвальдс анонсировал релиз ядра 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.

Установка ядра Linux Kernel 3.19

Установить ядро версии 3.19 командами ниже, можно ​​в следующих дистрибутивах Linux:

Ubuntu 15.04/14.10/14.04/12.04
Linux Mint 17/13
elementary OS 0.2/0.3

1. Откройте терминал, скопируйте и выполните одну из команд, согласно архитектуры вашей системы/компьютера, на свой страх и риск:

Для 32-bit (одной командой):

cd /tmp && wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900-generic_3.19.0-031900.201502091451_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900_3.19.0-031900.201502091451_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-image-3.19.0-031900-generic_3.19.0-031900.201502091451_i386.deb && sudo dpkg -i *.deb

Для 64-bit (одной командой):
 
cd /tmp && wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900-generic_3.19.0-031900.201502091451_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-headers-3.19.0-031900_3.19.0-031900.201502091451_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/linux-image-3.19.0-031900-generic_3.19.0-031900.201502091451_amd64.deb  && sudo dpkg -i *.deb

 2. Обновите GRUB (GRUB надо обновлять в той системе Linux где он установлен, если у вас их более одной):

sudo update-grub

Примечание 1
. Если у вас установлен загрузчик BURG, то и его нужно обновить:

sudo update-burg

3. По окончании установки, закройте все приложения и перезагрузите компьютер следующей командой:

sudo reboot

После входа в систему, проверьте версию актуального ядра командой:

uname -r

Примечание 2
. Как вернуться к ранее установленному ядру, инструкция ЗДЕСЬ.

Если вы решили удалить ядро 3.19, выполните эту команду:

sudo apt-get purge linux-image-3.19-*

И вновь обновите GRUB командой:

sudo update-grub

Источники: https://www.kernel.org/ | http://www.opennet.ru/

Удачи.

 Если у вас появились вопросы, обращайтесь на наш форум:  http://compizomania.54672.x6.nabble.com/