.. | .. |
---|
18 | 18 | release history looks like this: |
---|
19 | 19 | |
---|
20 | 20 | ====== ================= |
---|
21 | | - 4.11 April 30, 2017 |
---|
22 | | - 4.12 July 2, 2017 |
---|
23 | | - 4.13 September 3, 2017 |
---|
24 | | - 4.14 November 12, 2017 |
---|
25 | | - 4.15 January 28, 2018 |
---|
26 | | - 4.16 April 1, 2018 |
---|
| 21 | + 5.0 March 3, 2019 |
---|
| 22 | + 5.1 May 5, 2019 |
---|
| 23 | + 5.2 July 7, 2019 |
---|
| 24 | + 5.3 September 15, 2019 |
---|
| 25 | + 5.4 November 24, 2019 |
---|
| 26 | + 5.5 January 6, 2020 |
---|
27 | 27 | ====== ================= |
---|
28 | 28 | |
---|
29 | | -Every 4.x release is a major kernel release with new features, internal |
---|
30 | | -API changes, and more. A typical 4.x release contain about 13,000 |
---|
31 | | -changesets with changes to several hundred thousand lines of code. 4.x is |
---|
32 | | -thus the leading edge of Linux kernel development; the kernel uses a |
---|
| 29 | +Every 5.x release is a major kernel release with new features, internal |
---|
| 30 | +API changes, and more. A typical release can contain about 13,000 |
---|
| 31 | +changesets with changes to several hundred thousand lines of code. 5.x is |
---|
| 32 | +the leading edge of Linux kernel development; the kernel uses a |
---|
33 | 33 | rolling development model which is continually integrating major changes. |
---|
34 | 34 | |
---|
35 | 35 | A relatively straightforward discipline is followed with regard to the |
---|
.. | .. |
---|
48 | 48 | |
---|
49 | 49 | The merge window lasts for approximately two weeks. At the end of this |
---|
50 | 50 | time, Linus Torvalds will declare that the window is closed and release the |
---|
51 | | -first of the "rc" kernels. For the kernel which is destined to be 2.6.40, |
---|
| 51 | +first of the "rc" kernels. For the kernel which is destined to be 5.6, |
---|
52 | 52 | for example, the release which happens at the end of the merge window will |
---|
53 | | -be called 2.6.40-rc1. The -rc1 release is the signal that the time to |
---|
| 53 | +be called 5.6-rc1. The -rc1 release is the signal that the time to |
---|
54 | 54 | merge new features has passed, and that the time to stabilize the next |
---|
55 | 55 | kernel has begun. |
---|
56 | 56 | |
---|
.. | .. |
---|
67 | 67 | As fixes make their way into the mainline, the patch rate will slow over |
---|
68 | 68 | time. Linus releases new -rc kernels about once a week; a normal series |
---|
69 | 69 | will get up to somewhere between -rc6 and -rc9 before the kernel is |
---|
70 | | -considered to be sufficiently stable and the final 2.6.x release is made. |
---|
| 70 | +considered to be sufficiently stable and the final release is made. |
---|
71 | 71 | At that point the whole process starts over again. |
---|
72 | 72 | |
---|
73 | | -As an example, here is how the 4.16 development cycle went (all dates in |
---|
74 | | -2018): |
---|
| 73 | +As an example, here is how the 5.4 development cycle went (all dates in |
---|
| 74 | +2019): |
---|
75 | 75 | |
---|
76 | 76 | ============== =============================== |
---|
77 | | - January 28 4.15 stable release |
---|
78 | | - February 11 4.16-rc1, merge window closes |
---|
79 | | - February 18 4.16-rc2 |
---|
80 | | - February 25 4.16-rc3 |
---|
81 | | - March 4 4.16-rc4 |
---|
82 | | - March 11 4.16-rc5 |
---|
83 | | - March 18 4.16-rc6 |
---|
84 | | - March 25 4.16-rc7 |
---|
85 | | - April 1 4.17 stable release |
---|
| 77 | + September 15 5.3 stable release |
---|
| 78 | + September 30 5.4-rc1, merge window closes |
---|
| 79 | + October 6 5.4-rc2 |
---|
| 80 | + October 13 5.4-rc3 |
---|
| 81 | + October 20 5.4-rc4 |
---|
| 82 | + October 27 5.4-rc5 |
---|
| 83 | + November 3 5.4-rc6 |
---|
| 84 | + November 10 5.4-rc7 |
---|
| 85 | + November 17 5.4-rc8 |
---|
| 86 | + November 24 5.4 stable release |
---|
86 | 87 | ============== =============================== |
---|
87 | 88 | |
---|
88 | 89 | How do the developers decide when to close the development cycle and create |
---|
.. | .. |
---|
98 | 99 | achieve; there are just too many variables in a project of this size. |
---|
99 | 100 | There comes a point where delaying the final release just makes the problem |
---|
100 | 101 | worse; the pile of changes waiting for the next merge window will grow |
---|
101 | | -larger, creating even more regressions the next time around. So most 4.x |
---|
| 102 | +larger, creating even more regressions the next time around. So most 5.x |
---|
102 | 103 | kernels go out with a handful of known regressions though, hopefully, none |
---|
103 | 104 | of them are serious. |
---|
104 | 105 | |
---|
105 | 106 | Once a stable release is made, its ongoing maintenance is passed off to the |
---|
106 | | -"stable team," currently consisting of Greg Kroah-Hartman. The stable team |
---|
107 | | -will release occasional updates to the stable release using the 4.x.y |
---|
108 | | -numbering scheme. To be considered for an update release, a patch must (1) |
---|
109 | | -fix a significant bug, and (2) already be merged into the mainline for the |
---|
110 | | -next development kernel. Kernels will typically receive stable updates for |
---|
111 | | -a little more than one development cycle past their initial release. So, |
---|
112 | | -for example, the 4.13 kernel's history looked like: |
---|
| 107 | +"stable team," currently Greg Kroah-Hartman. The stable team will release |
---|
| 108 | +occasional updates to the stable release using the 5.x.y numbering scheme. |
---|
| 109 | +To be considered for an update release, a patch must (1) fix a significant |
---|
| 110 | +bug, and (2) already be merged into the mainline for the next development |
---|
| 111 | +kernel. Kernels will typically receive stable updates for a little more |
---|
| 112 | +than one development cycle past their initial release. So, for example, the |
---|
| 113 | +5.2 kernel's history looked like this (all dates in 2019): |
---|
113 | 114 | |
---|
114 | 115 | ============== =============================== |
---|
115 | | - September 3 4.13 stable release |
---|
116 | | - September 13 4.13.1 |
---|
117 | | - September 20 4.13.2 |
---|
118 | | - September 27 4.13.3 |
---|
119 | | - October 5 4.13.4 |
---|
120 | | - October 12 4.13.5 |
---|
| 116 | + July 7 5.2 stable release |
---|
| 117 | + July 14 5.2.1 |
---|
| 118 | + July 21 5.2.2 |
---|
| 119 | + July 26 5.2.3 |
---|
| 120 | + July 28 5.2.4 |
---|
| 121 | + July 31 5.2.5 |
---|
121 | 122 | ... ... |
---|
122 | | - November 24 4.13.16 |
---|
| 123 | + October 11 5.2.21 |
---|
123 | 124 | ============== =============================== |
---|
124 | 125 | |
---|
125 | | -4.13.16 was the final stable update of the 4.13 release. |
---|
| 126 | +5.2.21 was the final stable update of the 5.2 release. |
---|
126 | 127 | |
---|
127 | 128 | Some kernels are designated "long term" kernels; they will receive support |
---|
128 | 129 | for a longer period. As of this writing, the current long term kernels |
---|
129 | 130 | and their maintainers are: |
---|
130 | 131 | |
---|
131 | | - ====== ====================== ============================== |
---|
132 | | - 3.16 Ben Hutchings (very long-term stable kernel) |
---|
133 | | - 4.1 Sasha Levin |
---|
134 | | - 4.4 Greg Kroah-Hartman (very long-term stable kernel) |
---|
135 | | - 4.9 Greg Kroah-Hartman |
---|
136 | | - 4.14 Greg Kroah-Hartman |
---|
137 | | - ====== ====================== ============================== |
---|
| 132 | + ====== ================================ ======================= |
---|
| 133 | + 3.16 Ben Hutchings (very long-term kernel) |
---|
| 134 | + 4.4 Greg Kroah-Hartman & Sasha Levin (very long-term kernel) |
---|
| 135 | + 4.9 Greg Kroah-Hartman & Sasha Levin |
---|
| 136 | + 4.14 Greg Kroah-Hartman & Sasha Levin |
---|
| 137 | + 4.19 Greg Kroah-Hartman & Sasha Levin |
---|
| 138 | + 5.4 Greg Kroah-Hartman & Sasha Levin |
---|
| 139 | + ====== ================================ ======================= |
---|
138 | 140 | |
---|
139 | 141 | The selection of a kernel for long-term support is purely a matter of a |
---|
140 | 142 | maintainer having the need and the time to maintain that release. There |
---|
.. | .. |
---|
215 | 217 | ------------------------------- |
---|
216 | 218 | |
---|
217 | 219 | There is exactly one person who can merge patches into the mainline kernel |
---|
218 | | -repository: Linus Torvalds. But, of the over 9,500 patches which went |
---|
219 | | -into the 2.6.38 kernel, only 112 (around 1.3%) were directly chosen by Linus |
---|
220 | | -himself. The kernel project has long since grown to a size where no single |
---|
221 | | -developer could possibly inspect and select every patch unassisted. The |
---|
222 | | -way the kernel developers have addressed this growth is through the use of |
---|
223 | | -a lieutenant system built around a chain of trust. |
---|
| 220 | +repository: Linus Torvalds. But, for example, of the over 9,500 patches |
---|
| 221 | +which went into the 2.6.38 kernel, only 112 (around 1.3%) were directly |
---|
| 222 | +chosen by Linus himself. The kernel project has long since grown to a size |
---|
| 223 | +where no single developer could possibly inspect and select every patch |
---|
| 224 | +unassisted. The way the kernel developers have addressed this growth is |
---|
| 225 | +through the use of a lieutenant system built around a chain of trust. |
---|
224 | 226 | |
---|
225 | 227 | The kernel code base is logically broken down into a set of subsystems: |
---|
226 | 228 | networking, specific architecture support, memory management, video |
---|
.. | .. |
---|
293 | 295 | The current -mm patch is available in the "mmotm" (-mm of the moment) |
---|
294 | 296 | directory at: |
---|
295 | 297 | |
---|
296 | | - http://www.ozlabs.org/~akpm/mmotm/ |
---|
| 298 | + https://www.ozlabs.org/~akpm/mmotm/ |
---|
297 | 299 | |
---|
298 | 300 | Use of the MMOTM tree is likely to be a frustrating experience, though; |
---|
299 | 301 | there is a definite chance that it will not even compile. |
---|
.. | .. |
---|
304 | 306 | Linux-next trees are announced on the linux-kernel and linux-next mailing |
---|
305 | 307 | lists when they are assembled; they can be downloaded from: |
---|
306 | 308 | |
---|
307 | | - http://www.kernel.org/pub/linux/kernel/next/ |
---|
| 309 | + https://www.kernel.org/pub/linux/kernel/next/ |
---|
308 | 310 | |
---|
309 | 311 | Linux-next has become an integral part of the kernel development process; |
---|
310 | 312 | all patches merged during a given merge window should really have found |
---|
.. | .. |
---|
363 | 365 | Git is now packaged by almost all Linux distributions. There is a home |
---|
364 | 366 | page at: |
---|
365 | 367 | |
---|
366 | | - http://git-scm.com/ |
---|
| 368 | + https://git-scm.com/ |
---|
367 | 369 | |
---|
368 | 370 | That page has pointers to documentation and tutorials. |
---|
369 | 371 | |
---|
370 | 372 | Among the kernel developers who do not use git, the most popular choice is |
---|
371 | 373 | almost certainly Mercurial: |
---|
372 | 374 | |
---|
373 | | - http://www.selenic.com/mercurial/ |
---|
| 375 | + https://www.selenic.com/mercurial/ |
---|
374 | 376 | |
---|
375 | 377 | Mercurial shares many features with git, but it provides an interface which |
---|
376 | 378 | many find easier to use. |
---|
377 | 379 | |
---|
378 | 380 | The other tool worth knowing about is Quilt: |
---|
379 | 381 | |
---|
380 | | - http://savannah.nongnu.org/projects/quilt/ |
---|
| 382 | + https://savannah.nongnu.org/projects/quilt/ |
---|
381 | 383 | |
---|
382 | 384 | Quilt is a patch management system, rather than a source code management |
---|
383 | 385 | system. It does not track history over time; it is, instead, oriented |
---|
.. | .. |
---|
403 | 405 | http://vger.kernel.org/vger-lists.html |
---|
404 | 406 | |
---|
405 | 407 | There are lists hosted elsewhere, though; a number of them are at |
---|
406 | | -lists.redhat.com. |
---|
| 408 | +redhat.com/mailman/listinfo. |
---|
407 | 409 | |
---|
408 | 410 | The core mailing list for kernel development is, of course, linux-kernel. |
---|
409 | 411 | This list is an intimidating place to be; volume can reach 500 messages per |
---|
.. | .. |
---|
492 | 494 | with others on getting things fixed up (this can require |
---|
493 | 495 | persistence!) but that's fine - it's a part of kernel development. |
---|
494 | 496 | |
---|
495 | | -(http://lwn.net/Articles/283982/). |
---|
| 497 | +(https://lwn.net/Articles/283982/). |
---|
496 | 498 | |
---|
497 | 499 | In the absence of obvious problems to fix, developers are advised to look |
---|
498 | 500 | at the current lists of regressions and open bugs in general. There is |
---|