After two months of development, Linus Torvalds introduced the release of the Linux kernel 4.0. Among the most notable improvements: integration of basic components to update the Linux kernel without rebooting, support for multiple layers on reading in overlayfs, the implementation of block pNFS server, the ability to bind to the hosts of the algorithms of congestion control, the ability to install labels to network packets Smack in modules, adding ext4 options lazytime.
Sorry for the spelling and phonetic errors in the text.
Owner and main writer of MintGuide.org is not a native English speaker.
The transition to version 4.0, instead of the expected release 3.20 carried out after the vote, which was attended by more than 31 thousands of community members, of which 56% felt that the time of release of version 4.0. The transition to a numbering 4.x is a formal step, only due to aesthetic considerations. The current kernel release proved to be the best applicant for the change of numbering. The development cycle 3.20/4.0 was relatively relaxed and yielded noticeably less significant changes than those observed in previous editions (10 thousand change, against 12.5 thousand kernel 3.19). The repository also close to the mark of 500 thousand commits (commit - changes in the program code) and topped 4 million objects. With the release of kernel 3.0 were overcome frontiers 250 thousand commits and 2 million objects in Git.
In 2013, considered the idea of changing the first number in the version as an additional stabilizing stage (proposed to include in the core 4.0 bug fixes only, no functional change and innovation), but this idea was rejected. From the point of view of functionality release 4.0 contains no major changes or violations of compatibility and does not stand out among the other releases, smoothly continuing the development of the current code base. Last change the numbering was made in 2011, when the 2.6 branch.x has accumulated 39 releases, the preparation of which was spent 10 years.
In the new version made more than 10 thousand patches from 1403 to the developers, the patch size - 34 MB (changes have affected 9489 files, added 509084 lines of code, removed 327296 lines). About 45% of all submitted changes in 4.0 are associated with device drivers, about 16% of changes are related to the updating of the code for specific hardware architectures, 12% is associated with a network stack, 4% - filesystems and 4% c internal subsystems of the kernel. 11.6% of changes made by Intel employees, 7% - Red Hat, 4.6% - SUSE 4.0% - Linaro, 3.6% - Samsung, 2.2% - IBM, 1.6% - Freescale, 1.5% Google, 1.4% - AMD, 1.4% - Texas Instruments, 1.4% - Oracle-1.2% Qualcomm, 1.2% - ARM.
Of the most interesting features can be noted:
Memory and system services
Integration of the underlying infrastructure that provides a unified API to overlay hot patches to the kernel. Code prepared in cooperation between the developers of SUSE and Red Hat, who agreed to use the API in the implementations of the systems kernel updates without rebooting - kPatch and kGraft. In its current form, is added to the core code allows you to create simple patches for hot eliminate some types of vulnerabilities, but so far can not be used for more complex changes, as it does not provide any means to ensure consistency. Read more about the features added to the core infrastructure and differences kPatch from kGraft can be read in a previously published announcement.
In the implementation of network Protocol TIPC (Transparent Inter-process Communication), intended for interprocess communication in a cluster, supported isolated namespaces (namespace);
The kernel can now be built to run threads RCU grace-period-handling using the system of priorities of real-time, which can be useful for vysokonagruzhennye systems; Removed previously deprecated system call remap_file_pages(), which is added stub, simulating its functionality through the use of multiple virtual memory regions, allowing to maintain the performance of applications that use this system call;
The disk subsystem, input/output and file system
In OverlayFS added the possibility to use more than one layer, read-only;
For filesystems implemented support for a lazytime mount option, which provides the ability to track access times to the files, but does not lead to the emergence of a large number of spurious write operations in FS. The main difference from "atime" is that the access time stored in the inode stored in memory and flushed only when there are explicit conditions or the expiration of a sufficiently long period of time (every 24 hours). Thus for running programs always returns the exact atime, but on the drive information is stored with high latency. This mode is only available for FS ext4;
The implementation of block pNFS server that allows NFS clients to connect to shared drives using block I/o operations instead of read-write NFS. The new mode is implemented only on XFS filesystems;
In a Btrfs accepted part prepared by the company Facebook changes aimed at more competent handling situations of exhaustion of free disk space;
In dm-crypt made optimization to increase scalability, which allowed to show the performance of a large loaded systems.
Virtualization and security
Subsystem Open vSwitch now generates its own flow identifiers (flow IDs"), which are used to identify network streams in user space, which can lead to increased productivity up to 40%;
Subsystem Virtio (Virtual I/O Device) is updated to reflect the recently adopted standard virtio 1.0;
The security modules Smack the opportunity to interact with the netfilter system through the installation of labels on passing through the filter bags.
In the subsystem traffic management added support for filters written using the language of the virtual machine eBPF;
The network stack provides support for application-specific host-specific algorithms congestion control (congestion control) linked via a routing table;
In the Radeon driver added support for broadcasting audio over the DisplayPort interface and solved performance issues with AMD GPU family Hawaii (R9 290 and R9 290X). The structure also included the patches to improve the management of the cooling system GPU based on the GCN, which lead to significant noise reduction for the GPU by reducing the rotational speed of the fan;
Empowering drivers for Intel graphics cards, including initial support for Intel hardware the item has been added;
In Nouveau been merged with a useful driver for NVIDIA, used in SoC based on ARM processors. Added means to control the frequency of the GPU GK20A (Tegra K1);
Support sound cards Studio Evolution SE6X;
Support network controllers Rockchip RK3288 SoC 10/100/1000 Ethernet, HISILICON P04 Ethernet, TI Keystone NETCP Ethernet, Kvaser USBcan II CAN, PEAK PCAN-USB/USB Pro CAN-FD.
Support SCSI controllers Qualcomm UFS;
In added support for Video4Linux capture devices TI AM437x VPFE, decoders Philips RC5/RC6 and USB cameras Touptek.
Support for Intel Quark X1000 and MIPS processors based on the MIPS32 architecture R6.
Suitable for Linux Mint 13/14/15/16/17/17.1 Elementary OS 0.2/0.3/Freya PinguyOS 14/12 Deepin 2014.2
Warning. The Linux kernel is a critical element of the system. To do the upgrade costs when one of your hardware devices is not working properly, and the new kernel may fix this problem. But at the same time installing a new kernel unnecessarily can lead to undesirable regressions, such as: no network connection, no sound or even the inability to boot the system, so install a new kernel on your own risk.
You can download the relevant deb packages from HERE and install them. Or just follow the instructions given below that will help you to install a new kernel multiple commands in terminal.
2. Open a terminal, copy and run one of the commands according to the architecture of your system/computer, at your own risk:
For 32-bit (single command):
cd /tmp && wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000-generic_4.0.0-040000.201504121935_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000_4.0.0-040000.201504121935_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-image-4.0.0-040000-generic_4.0.0-040000.201504121935_i386.deb && sudo dpkg -i *.deb
2. Update GRUB (GRUB need to upgrade the Linux system where it is installed, if you have more than one)
cd /tmp && wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-headers-4.0.0-040000_4.0.0-040000.201504121935_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-vivid/linux-image-4.0.0-040000-generic_4.0.0-040000.201504121935_amd64.deb && sudo dpkg -i *.deb
sudo apt-get purge linux-image-4.0-*