Need help to understand Linux kernel source versioning systems

Yubin Ruan ablacktshirt at gmail.com
Tue Jul 25 08:14:45 EDT 2017


2017-07-24 20:56 GMT+08:00 vibnwis <vibnwis at gmail.com>:
> Hi there,
>
> Being a newbie, I encountered the following scenarios when tracing
> build_kernel.sh script from eewiki. Would someone help me to understand why
> please? From my experience, I would to summarize the following scenario.
>
> 1. First, source is cloned from
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git and
> checked for release version, "v4.10.17". Obviously it has no kernel tag of
> "v4.10.17", but "v4.10"
>
> 2. As "v4.10.17" does not exist, it tried to pull from the origin/master by
> command, git pull --no-edit
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> --tags
>
> 3. Kernel tag, of "v4.10.17" is checked being verified again, but failed.
> Hence, now it fetched from  git fetch
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> master --tags
>
> Now, the kernel, of v4.10.17" is found.
>
> My questions are:
>
> 1. One would know that clone of
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git would not
> produce kernel tag of , "v4.10.17", wouldn't it?
>
> 2. Similar by pull it again from
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git with
> option of master --tags would not produce kernel tag, "v4.10.17" as well,
> wouldn' it?
>
> 3. Since fetching with git fetch
> https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> master --tags would produce v4.10.17, why would not it clone it from
> .../stable/linux-stable,git?

Here is the basic Linux kernel development model: Before every "major" release,
there would be 7 "rc" release, and along with each rc release, there
is a stable release.
For example, let's say we are at 4.2 (or, 4.2.0) now. Before we move
to 4.3, there would
4.3.1-rc, 4.3.2-rc, ..., 4.3.7-rc. After 4.3.7-rc, we have 4.3 (or,
4.3.0). But, rc release is not
stable! So, in order to enable users to use/test the kernel, Greg KH
would maintain a
relatively stable kernel along with each rc release. In the example
above, there would be
4.2.1 along with 4.3.1-rc, 4.2.2 along with 4.3.2-rc, etc. Basically
it is something like this:

     4.2.0
      |          \
4.3.1-rc    4.2.1
      |            |
4.3.2-rc     4.2.2
      |            |
4.3.3-rc     4.2.3
      |            |
4.3.4-rc     4.2.4
      |            |
4.3.5-rc     4.2.5
      |            |
4.3.6-rc     4.2.6
      |            |
4.3.7-rc     4.2.7   <- this branch is thrown away after 4.4.0 is released
      |
4.4.0

So, you see, you can only get v4.10.17 from the stable release.

see:
(1) https://github.com/gregkh/kernel-development
(2) https://www.kernel.org/doc/html/v4.11/process/2.Process.html

Yubin



More information about the Kernelnewbies mailing list