diff options
author | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-09-19 07:07:41 -0400 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2016-09-20 20:34:57 -0400 |
commit | 330ae7e99d44c7a591c0a15353b12d5b83d97f70 (patch) | |
tree | 707e9b14add9d2f184c36a32ca79083ce1782c2a | |
parent | 9299c3e92c30a25350b4c270a4173ab24944fa0d (diff) |
Documentation/applying-patches.txt: Update the information there
This document is old: it is from Kernel v2.6.12 days.
Update it to the current status, and add a reference for the
linux-next tree.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
-rw-r--r-- | Documentation/applying-patches.txt | 255 |
1 files changed, 110 insertions, 145 deletions
diff --git a/Documentation/applying-patches.txt b/Documentation/applying-patches.txt index 573eb3bee19e..0e873dbf5566 100644 --- a/Documentation/applying-patches.txt +++ b/Documentation/applying-patches.txt | |||
@@ -6,7 +6,7 @@ Original by: | |||
6 | Jesper Juhl, August 2005 | 6 | Jesper Juhl, August 2005 |
7 | 7 | ||
8 | Last update: | 8 | Last update: |
9 | 2006-01-05 | 9 | 2016-09-14 |
10 | 10 | ||
11 | 11 | ||
12 | A frequently asked question on the Linux Kernel Mailing List is how to apply | 12 | A frequently asked question on the Linux Kernel Mailing List is how to apply |
@@ -90,23 +90,23 @@ this: | |||
90 | 90 | ||
91 | patch -p1 -i path/to/patch-x.y.z | 91 | patch -p1 -i path/to/patch-x.y.z |
92 | 92 | ||
93 | If your patch file is compressed with gzip or bzip2 and you don't want to | 93 | If your patch file is compressed with gzip or xz and you don't want to |
94 | uncompress it before applying it, then you can feed it to patch like this | 94 | uncompress it before applying it, then you can feed it to patch like this |
95 | instead: | 95 | instead: |
96 | 96 | ||
97 | :: | 97 | :: |
98 | 98 | ||
99 | zcat path/to/patch-x.y.z.gz | patch -p1 | 99 | xzcat path/to/patch-x.y.z.xz | patch -p1 |
100 | bzcat path/to/patch-x.y.z.bz2 | patch -p1 | 100 | bzcat path/to/patch-x.y.z.gz | patch -p1 |
101 | 101 | ||
102 | If you wish to uncompress the patch file by hand first before applying it | 102 | If you wish to uncompress the patch file by hand first before applying it |
103 | (what I assume you've done in the examples below), then you simply run | 103 | (what I assume you've done in the examples below), then you simply run |
104 | gunzip or bunzip2 on the file -- like this: | 104 | gunzip or xz on the file -- like this: |
105 | 105 | ||
106 | :: | 106 | :: |
107 | 107 | ||
108 | gunzip patch-x.y.z.gz | 108 | gunzip patch-x.y.z.gz |
109 | bunzip2 patch-x.y.z.bz2 | 109 | xz -d patch-x.y.z.xz |
110 | 110 | ||
111 | Which will leave you with a plain text patch-x.y.z file that you can feed to | 111 | Which will leave you with a plain text patch-x.y.z file that you can feed to |
112 | patch via stdin or the ``-i`` argument, as you prefer. | 112 | patch via stdin or the ``-i`` argument, as you prefer. |
@@ -226,16 +226,16 @@ You can use the ``interdiff`` program (http://cyberelk.net/tim/patchutils/) to | |||
226 | generate a patch representing the differences between two patches and then | 226 | generate a patch representing the differences between two patches and then |
227 | apply the result. | 227 | apply the result. |
228 | 228 | ||
229 | This will let you move from something like 2.6.12.2 to 2.6.12.3 in a single | 229 | This will let you move from something like 4.7.2 to 4.7.3 in a single |
230 | step. The -z flag to interdiff will even let you feed it patches in gzip or | 230 | step. The -z flag to interdiff will even let you feed it patches in gzip or |
231 | bzip2 compressed form directly without the use of zcat or bzcat or manual | 231 | bzip2 compressed form directly without the use of zcat or bzcat or manual |
232 | decompression. | 232 | decompression. |
233 | 233 | ||
234 | Here's how you'd go from 2.6.12.2 to 2.6.12.3 in a single step: | 234 | Here's how you'd go from 4.7.2 to 4.7.3 in a single step: |
235 | 235 | ||
236 | :: | 236 | :: |
237 | 237 | ||
238 | interdiff -z ../patch-2.6.12.2.bz2 ../patch-2.6.12.3.gz | patch -p1 | 238 | interdiff -z ../patch-4.7.2.gz ../patch-4.7.3.gz | patch -p1 |
239 | 239 | ||
240 | Although interdiff may save you a step or two you are generally advised to | 240 | Although interdiff may save you a step or two you are generally advised to |
241 | do the additional steps since interdiff can get things wrong in some cases. | 241 | do the additional steps since interdiff can get things wrong in some cases. |
@@ -257,21 +257,13 @@ The patches are available at http://kernel.org/ | |||
257 | Most recent patches are linked from the front page, but they also have | 257 | Most recent patches are linked from the front page, but they also have |
258 | specific homes. | 258 | specific homes. |
259 | 259 | ||
260 | The 2.6.x.y (-stable) and 2.6.x patches live at | 260 | The 4.x.y (-stable) and 4.x patches live at |
261 | 261 | ||
262 | ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ | 262 | ftp://ftp.kernel.org/pub/linux/kernel/v4.x/ |
263 | 263 | ||
264 | The -rc patches live at | 264 | The -rc patches live at |
265 | 265 | ||
266 | ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/ | 266 | ftp://ftp.kernel.org/pub/linux/kernel/v4.x/testing/ |
267 | |||
268 | The -git patches live at | ||
269 | |||
270 | ftp://ftp.kernel.org/pub/linux/kernel/v2.6/snapshots/ | ||
271 | |||
272 | The -mm kernels live at | ||
273 | |||
274 | ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/ | ||
275 | 267 | ||
276 | In place of ``ftp.kernel.org`` you can use ``ftp.cc.kernel.org``, where cc is a | 268 | In place of ``ftp.kernel.org`` you can use ``ftp.cc.kernel.org``, where cc is a |
277 | country code. This way you'll be downloading from a mirror site that's most | 269 | country code. This way you'll be downloading from a mirror site that's most |
@@ -280,53 +272,55 @@ less bandwidth used globally and less load on the main kernel.org servers -- | |||
280 | these are good things, so do use mirrors when possible. | 272 | these are good things, so do use mirrors when possible. |
281 | 273 | ||
282 | 274 | ||
283 | The 2.6.x kernels | 275 | The 4.x kernels |
284 | ================= | 276 | =============== |
285 | 277 | ||
286 | These are the base stable releases released by Linus. The highest numbered | 278 | These are the base stable releases released by Linus. The highest numbered |
287 | release is the most recent. | 279 | release is the most recent. |
288 | 280 | ||
289 | If regressions or other serious flaws are found, then a -stable fix patch | 281 | If regressions or other serious flaws are found, then a -stable fix patch |
290 | will be released (see below) on top of this base. Once a new 2.6.x base | 282 | will be released (see below) on top of this base. Once a new 4.x base |
291 | kernel is released, a patch is made available that is a delta between the | 283 | kernel is released, a patch is made available that is a delta between the |
292 | previous 2.6.x kernel and the new one. | 284 | previous 4.x kernel and the new one. |
293 | 285 | ||
294 | To apply a patch moving from 2.6.11 to 2.6.12, you'd do the following (note | 286 | To apply a patch moving from 4.6 to 4.7, you'd do the following (note |
295 | that such patches do **NOT** apply on top of 2.6.x.y kernels but on top of the | 287 | that such patches do **NOT** apply on top of 4.x.y kernels but on top of the |
296 | base 2.6.x kernel -- if you need to move from 2.6.x.y to 2.6.x+1 you need to | 288 | base 4.x kernel -- if you need to move from 4.x.y to 4.x+1 you need to |
297 | first revert the 2.6.x.y patch). | 289 | first revert the 4.x.y patch). |
298 | 290 | ||
299 | Here are some examples: | 291 | Here are some examples: |
300 | 292 | ||
301 | :: | 293 | :: |
302 | 294 | ||
303 | # moving from 2.6.11 to 2.6.12 | 295 | # moving from 4.6 to 4.7 |
304 | $ cd ~/linux-2.6.11 # change to kernel source dir | 296 | |
305 | $ patch -p1 < ../patch-2.6.12 # apply the 2.6.12 patch | 297 | $ cd ~/linux-4.6 # change to kernel source dir |
298 | $ patch -p1 < ../patch-4.7 # apply the 4.7 patch | ||
306 | $ cd .. | 299 | $ cd .. |
307 | $ mv linux-2.6.11 linux-2.6.12 # rename source dir | 300 | $ mv linux-4.6 linux-4.7 # rename source dir |
308 | 301 | ||
309 | # moving from 2.6.11.1 to 2.6.12 | 302 | # moving from 4.6.1 to 4.7 |
310 | $ cd ~/linux-2.6.11.1 # change to kernel source dir | 303 | |
311 | $ patch -p1 -R < ../patch-2.6.11.1 # revert the 2.6.11.1 patch | 304 | $ cd ~/linux-4.6.1 # change to kernel source dir |
312 | # source dir is now 2.6.11 | 305 | $ patch -p1 -R < ../patch-4.6.1 # revert the 4.6.1 patch |
313 | $ patch -p1 < ../patch-2.6.12 # apply new 2.6.12 patch | 306 | # source dir is now 4.6 |
307 | $ patch -p1 < ../patch-4.7 # apply new 4.7 patch | ||
314 | $ cd .. | 308 | $ cd .. |
315 | $ mv linux-2.6.11.1 linux-2.6.12 # rename source dir | 309 | $ mv linux-4.6.1 linux-4.7 # rename source dir |
316 | 310 | ||
317 | 311 | ||
318 | The 2.6.x.y kernels | 312 | The 4.x.y kernels |
319 | =================== | 313 | ================= |
320 | 314 | ||
321 | Kernels with 4-digit versions are -stable kernels. They contain small(ish) | 315 | Kernels with 3-digit versions are -stable kernels. They contain small(ish) |
322 | critical fixes for security problems or significant regressions discovered | 316 | critical fixes for security problems or significant regressions discovered |
323 | in a given 2.6.x kernel. | 317 | in a given 4.x kernel. |
324 | 318 | ||
325 | This is the recommended branch for users who want the most recent stable | 319 | This is the recommended branch for users who want the most recent stable |
326 | kernel and are not interested in helping test development/experimental | 320 | kernel and are not interested in helping test development/experimental |
327 | versions. | 321 | versions. |
328 | 322 | ||
329 | If no 2.6.x.y kernel is available, then the highest numbered 2.6.x kernel is | 323 | If no 4.x.y kernel is available, then the highest numbered 4.x kernel is |
330 | the current stable kernel. | 324 | the current stable kernel. |
331 | 325 | ||
332 | .. note:: | 326 | .. note:: |
@@ -334,25 +328,25 @@ the current stable kernel. | |||
334 | The -stable team usually do make incremental patches available as well | 328 | The -stable team usually do make incremental patches available as well |
335 | as patches against the latest mainline release, but I only cover the | 329 | as patches against the latest mainline release, but I only cover the |
336 | non-incremental ones below. The incremental ones can be found at | 330 | non-incremental ones below. The incremental ones can be found at |
337 | ftp://ftp.kernel.org/pub/linux/kernel/v2.6/incr/ | 331 | ftp://ftp.kernel.org/pub/linux/kernel/v4.x/incr/ |
338 | 332 | ||
339 | These patches are not incremental, meaning that for example the 2.6.12.3 | 333 | These patches are not incremental, meaning that for example the 4.7.3 |
340 | patch does not apply on top of the 2.6.12.2 kernel source, but rather on top | 334 | patch does not apply on top of the 4.7.2 kernel source, but rather on top |
341 | of the base 2.6.12 kernel source. | 335 | of the base 4.7 kernel source. |
342 | 336 | ||
343 | So, in order to apply the 2.6.12.3 patch to your existing 2.6.12.2 kernel | 337 | So, in order to apply the 4.7.3 patch to your existing 4.7.2 kernel |
344 | source you have to first back out the 2.6.12.2 patch (so you are left with a | 338 | source you have to first back out the 4.7.2 patch (so you are left with a |
345 | base 2.6.12 kernel source) and then apply the new 2.6.12.3 patch. | 339 | base 4.7 kernel source) and then apply the new 4.7.3 patch. |
346 | 340 | ||
347 | Here's a small example: | 341 | Here's a small example: |
348 | 342 | ||
349 | :: | 343 | :: |
350 | 344 | ||
351 | $ cd ~/linux-2.6.12.2 # change to the kernel source dir | 345 | $ cd ~/linux-4.7.2 # change to the kernel source dir |
352 | $ patch -p1 -R < ../patch-2.6.12.2 # revert the 2.6.12.2 patch | 346 | $ patch -p1 -R < ../patch-4.7.2 # revert the 4.7.2 patch |
353 | $ patch -p1 < ../patch-2.6.12.3 # apply the new 2.6.12.3 patch | 347 | $ patch -p1 < ../patch-4.7.3 # apply the new 4.7.3 patch |
354 | $ cd .. | 348 | $ cd .. |
355 | $ mv linux-2.6.12.2 linux-2.6.12.3 # rename the kernel source dir | 349 | $ mv linux-4.7.2 linux-4.7.3 # rename the kernel source dir |
356 | 350 | ||
357 | The -rc kernels | 351 | The -rc kernels |
358 | =============== | 352 | =============== |
@@ -371,37 +365,40 @@ This is a good branch to run for people who want to help out testing | |||
371 | development kernels but do not want to run some of the really experimental | 365 | development kernels but do not want to run some of the really experimental |
372 | stuff (such people should see the sections about -git and -mm kernels below). | 366 | stuff (such people should see the sections about -git and -mm kernels below). |
373 | 367 | ||
374 | The -rc patches are not incremental, they apply to a base 2.6.x kernel, just | 368 | The -rc patches are not incremental, they apply to a base 4.x kernel, just |
375 | like the 2.6.x.y patches described above. The kernel version before the -rcN | 369 | like the 4.x.y patches described above. The kernel version before the -rcN |
376 | suffix denotes the version of the kernel that this -rc kernel will eventually | 370 | suffix denotes the version of the kernel that this -rc kernel will eventually |
377 | turn into. | 371 | turn into. |
378 | 372 | ||
379 | So, 2.6.13-rc5 means that this is the fifth release candidate for the 2.6.13 | 373 | So, 4.8-rc5 means that this is the fifth release candidate for the 4.8 |
380 | kernel and the patch should be applied on top of the 2.6.12 kernel source. | 374 | kernel and the patch should be applied on top of the 4.7 kernel source. |
381 | 375 | ||
382 | Here are 3 examples of how to apply these patches: | 376 | Here are 3 examples of how to apply these patches: |
383 | 377 | ||
384 | :: | 378 | :: |
385 | 379 | ||
386 | # first an example of moving from 2.6.12 to 2.6.13-rc3 | 380 | # first an example of moving from 4.7 to 4.8-rc3 |
387 | $ cd ~/linux-2.6.12 # change to the 2.6.12 source dir | 381 | |
388 | $ patch -p1 < ../patch-2.6.13-rc3 # apply the 2.6.13-rc3 patch | 382 | $ cd ~/linux-4.7 # change to the 4.7 source dir |
383 | $ patch -p1 < ../patch-4.8-rc3 # apply the 4.8-rc3 patch | ||
389 | $ cd .. | 384 | $ cd .. |
390 | $ mv linux-2.6.12 linux-2.6.13-rc3 # rename the source dir | 385 | $ mv linux-4.7 linux-4.8-rc3 # rename the source dir |
391 | 386 | ||
392 | # now let's move from 2.6.13-rc3 to 2.6.13-rc5 | 387 | # now let's move from 4.8-rc3 to 4.8-rc5 |
393 | $ cd ~/linux-2.6.13-rc3 # change to the 2.6.13-rc3 dir | 388 | |
394 | $ patch -p1 -R < ../patch-2.6.13-rc3 # revert the 2.6.13-rc3 patch | 389 | $ cd ~/linux-4.8-rc3 # change to the 4.8-rc3 dir |
395 | $ patch -p1 < ../patch-2.6.13-rc5 # apply the new 2.6.13-rc5 patch | 390 | $ patch -p1 -R < ../patch-4.8-rc3 # revert the 4.8-rc3 patch |
391 | $ patch -p1 < ../patch-4.8-rc5 # apply the new 4.8-rc5 patch | ||
396 | $ cd .. | 392 | $ cd .. |
397 | $ mv linux-2.6.13-rc3 linux-2.6.13-rc5 # rename the source dir | 393 | $ mv linux-4.8-rc3 linux-4.8-rc5 # rename the source dir |
394 | |||
395 | # finally let's try and move from 4.7.3 to 4.8-rc5 | ||
398 | 396 | ||
399 | # finally let's try and move from 2.6.12.3 to 2.6.13-rc5 | 397 | $ cd ~/linux-4.7.3 # change to the kernel source dir |
400 | $ cd ~/linux-2.6.12.3 # change to the kernel source dir | 398 | $ patch -p1 -R < ../patch-4.7.3 # revert the 4.7.3 patch |
401 | $ patch -p1 -R < ../patch-2.6.12.3 # revert the 2.6.12.3 patch | 399 | $ patch -p1 < ../patch-4.8-rc5 # apply new 4.8-rc5 patch |
402 | $ patch -p1 < ../patch-2.6.13-rc5 # apply new 2.6.13-rc5 patch | ||
403 | $ cd .. | 400 | $ cd .. |
404 | $ mv linux-2.6.12.3 linux-2.6.13-rc5 # rename the kernel source dir | 401 | $ mv linux-4.7.3 linux-4.8-rc5 # rename the kernel source dir |
405 | 402 | ||
406 | 403 | ||
407 | The -git kernels | 404 | The -git kernels |
@@ -415,100 +412,68 @@ Linus's tree. They are more experimental than -rc kernels since they are | |||
415 | generated automatically without even a cursory glance to see if they are | 412 | generated automatically without even a cursory glance to see if they are |
416 | sane. | 413 | sane. |
417 | 414 | ||
418 | -git patches are not incremental and apply either to a base 2.6.x kernel or | 415 | -git patches are not incremental and apply either to a base 4.x kernel or |
419 | a base 2.6.x-rc kernel -- you can see which from their name. | 416 | a base 4.x-rc kernel -- you can see which from their name. |
420 | A patch named 2.6.12-git1 applies to the 2.6.12 kernel source and a patch | 417 | A patch named 4.7-git1 applies to the 4.7 kernel source and a patch |
421 | named 2.6.13-rc3-git2 applies to the source of the 2.6.13-rc3 kernel. | 418 | named 4.8-rc3-git2 applies to the source of the 4.8-rc3 kernel. |
422 | 419 | ||
423 | Here are some examples of how to apply these patches: | 420 | Here are some examples of how to apply these patches: |
424 | 421 | ||
425 | :: | 422 | :: |
426 | 423 | ||
427 | # moving from 2.6.12 to 2.6.12-git1 | 424 | # moving from 4.7 to 4.7-git1 |
428 | $ cd ~/linux-2.6.12 # change to the kernel source dir | ||
429 | $ patch -p1 < ../patch-2.6.12-git1 # apply the 2.6.12-git1 patch | ||
430 | $ cd .. | ||
431 | $ mv linux-2.6.12 linux-2.6.12-git1 # rename the kernel source dir | ||
432 | |||
433 | # moving from 2.6.12-git1 to 2.6.13-rc2-git3 | ||
434 | $ cd ~/linux-2.6.12-git1 # change to the kernel source dir | ||
435 | $ patch -p1 -R < ../patch-2.6.12-git1 # revert the 2.6.12-git1 patch | ||
436 | # we now have a 2.6.12 kernel | ||
437 | $ patch -p1 < ../patch-2.6.13-rc2 # apply the 2.6.13-rc2 patch | ||
438 | # the kernel is now 2.6.13-rc2 | ||
439 | $ patch -p1 < ../patch-2.6.13-rc2-git3 # apply the 2.6.13-rc2-git3 patch | ||
440 | # the kernel is now 2.6.13-rc2-git3 | ||
441 | $ cd .. | ||
442 | $ mv linux-2.6.12-git1 linux-2.6.13-rc2-git3 # rename source dir | ||
443 | 425 | ||
426 | $ cd ~/linux-4.7 # change to the kernel source dir | ||
427 | $ patch -p1 < ../patch-4.7-git1 # apply the 4.7-git1 patch | ||
428 | $ cd .. | ||
429 | $ mv linux-4.7 linux-4.7-git1 # rename the kernel source dir | ||
444 | 430 | ||
445 | The -mm kernels | 431 | # moving from 4.7-git1 to 4.8-rc2-git3 |
446 | =============== | ||
447 | 432 | ||
448 | These are experimental kernels released by Andrew Morton. | 433 | $ cd ~/linux-4.7-git1 # change to the kernel source dir |
434 | $ patch -p1 -R < ../patch-4.7-git1 # revert the 4.7-git1 patch | ||
435 | # we now have a 4.7 kernel | ||
436 | $ patch -p1 < ../patch-4.8-rc2 # apply the 4.8-rc2 patch | ||
437 | # the kernel is now 4.8-rc2 | ||
438 | $ patch -p1 < ../patch-4.8-rc2-git3 # apply the 4.8-rc2-git3 patch | ||
439 | # the kernel is now 4.8-rc2-git3 | ||
440 | $ cd .. | ||
441 | $ mv linux-4.7-git1 linux-4.8-rc2-git3 # rename source dir | ||
449 | 442 | ||
450 | The -mm tree serves as a sort of proving ground for new features and other | ||
451 | experimental patches. | ||
452 | 443 | ||
453 | Once a patch has proved its worth in -mm for a while Andrew pushes it on to | 444 | The -mm patches and the linux-next tree |
454 | Linus for inclusion in mainline. | 445 | ======================================= |
455 | 446 | ||
456 | Although it's encouraged that patches flow to Linus via the -mm tree, this | 447 | The -mm patches are experimental patches released by Andrew Morton. |
457 | is not always enforced. | ||
458 | 448 | ||
459 | Subsystem maintainers (or individuals) sometimes push their patches directly | 449 | In the past, -mm tree were used to also test subsystem patches, but this |
460 | to Linus, even though (or after) they have been merged and tested in -mm (or | 450 | function is now done via the |
461 | sometimes even without prior testing in -mm). | 451 | :ref:`linux-next <https://www.kernel.org/doc/man-pages/linux-next.html>` |
452 | tree. The Subsystem maintainers push their patches first to linux-next, | ||
453 | and, during the merge window, sends them directly to Linus. | ||
462 | 454 | ||
463 | You should generally strive to get your patches into mainline via -mm to | 455 | The -mm patches serve as a sort of proving ground for new features and other |
464 | ensure maximum testing. | 456 | experimental patches that aren't merged via a subsystem tree. |
457 | Once such patches has proved its worth in -mm for a while Andrew pushes | ||
458 | it on to Linus for inclusion in mainline. | ||
465 | 459 | ||
466 | This branch is in constant flux and contains many experimental features, a | 460 | The linux-next tree is daily updated, and includes the -mm patches. |
461 | Both are in constant flux and contains many experimental features, a | ||
467 | lot of debugging patches not appropriate for mainline etc., and is the most | 462 | lot of debugging patches not appropriate for mainline etc., and is the most |
468 | experimental of the branches described in this document. | 463 | experimental of the branches described in this document. |
469 | 464 | ||
470 | These kernels are not appropriate for use on systems that are supposed to be | 465 | These patches are not appropriate for use on systems that are supposed to be |
471 | stable and they are more risky to run than any of the other branches (make | 466 | stable and they are more risky to run than any of the other branches (make |
472 | sure you have up-to-date backups -- that goes for any experimental kernel but | 467 | sure you have up-to-date backups -- that goes for any experimental kernel but |
473 | even more so for -mm kernels). | 468 | even more so for -mm patches or using a Kernel from the linux-next tree). |
474 | |||
475 | These kernels in addition to all the other experimental patches they contain | ||
476 | usually also contain any changes in the mainline -git kernels available at | ||
477 | the time of release. | ||
478 | |||
479 | Testing of -mm kernels is greatly appreciated since the whole point of the | ||
480 | tree is to weed out regressions, crashes, data corruption bugs, build | ||
481 | breakage (and any other bug in general) before changes are merged into the | ||
482 | more stable mainline Linus tree. | ||
483 | |||
484 | But testers of -mm should be aware that breakage in this tree is more common | ||
485 | than in any other tree. | ||
486 | 469 | ||
487 | The -mm kernels are not released on a fixed schedule, but usually a few -mm | 470 | Testing of -mm patches and linux-next is greatly appreciated since the whole |
488 | kernels are released in between each -rc kernel (1 to 3 is common). | 471 | point of those are to weed out regressions, crashes, data corruption bugs, |
472 | build breakage (and any other bug in general) before changes are merged into | ||
473 | the more stable mainline Linus tree. | ||
489 | 474 | ||
490 | The -mm kernels apply to either a base 2.6.x kernel (when no -rc kernels | 475 | But testers of -mm and linux-next should be aware that breakages are |
491 | have been released yet) or to a Linus -rc kernel. | 476 | more common than in any other tree. |
492 | |||
493 | Here are some examples of applying the -mm patches: | ||
494 | |||
495 | :: | ||
496 | |||
497 | # moving from 2.6.12 to 2.6.12-mm1 | ||
498 | $ cd ~/linux-2.6.12 # change to the 2.6.12 source dir | ||
499 | $ patch -p1 < ../2.6.12-mm1 # apply the 2.6.12-mm1 patch | ||
500 | $ cd .. | ||
501 | $ mv linux-2.6.12 linux-2.6.12-mm1 # rename the source appropriately | ||
502 | |||
503 | # moving from 2.6.12-mm1 to 2.6.13-rc3-mm3 | ||
504 | $ cd ~/linux-2.6.12-mm1 | ||
505 | $ patch -p1 -R < ../2.6.12-mm1 # revert the 2.6.12-mm1 patch | ||
506 | # we now have a 2.6.12 source | ||
507 | $ patch -p1 < ../patch-2.6.13-rc3 # apply the 2.6.13-rc3 patch | ||
508 | # we now have a 2.6.13-rc3 source | ||
509 | $ patch -p1 < ../2.6.13-rc3-mm3 # apply the 2.6.13-rc3-mm3 patch | ||
510 | $ cd .. | ||
511 | $ mv linux-2.6.12-mm1 linux-2.6.13-rc3-mm3 # rename the source dir | ||
512 | 477 | ||
513 | 478 | ||
514 | This concludes this list of explanations of the various kernel trees. | 479 | This concludes this list of explanations of the various kernel trees. |