How to build specific kernel


Recommended Posts

Officially, how do I convince my build environment that I still want to use 4.14?

 

When I just

./compile.sh BOARD=nanopiair BRANCH=next

it defaults to 4.17

 

What I have come up with is:

git checkout sunxi-4.14 && touch .ignore_changes

 

This results in a lot of patches failing 

What is the correct way please?

Link to post
Share on other sites
Donate and support the project!

18 hours ago, Igor said:

Yep, Read that and tried

LIB_TAG="sunxi-4.14"

but that stilled wanted to use 4.17.

 

I have since renamed my build directory, and started from scratch cloning your build environment again, and that seems to be working. Obviously, my local directory got corrupted. I'll let you know how the build goes.

Link to post
Share on other sites
19 hours ago, Igor said:


If you were editing something outside user area, this is normal. It will not change branches ... and overwrite your changes. Perhaps we need to add another warning.

The only places I am *aware* that I had changed files were:

build/config/kernel/linux-sunxi-next.config (and then reverted)
build/patches/sunxi* (renamed to & from .disabled)
build/userpatches/
cache/sources/linux-mainline/

I'm not saying that these are definitely the only files that I changed, only the ones that I can remember.

colin@ArmbianDev:~/Armbian/build$ git status

didn't flag anything either.

 

However, all that aside, checking out an entire new build env from your github repo fixed all the errors for my basic build.

./compile.sh BOARD=nanopiair BRANCH=next LIB_TAG=sunxi-4.14 KERNEL_ONLY=yes KERNEL_CONFIGURE=yes

works flawlessly

 

However, I want a real-time sunxi-next kernel. The latest 4.14 RT patch that I can find at https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/4.14/ is patch-4.14.52-rt34.patch. Is there any way that I can convince the compile script to only download 4.14.52, not 4.14.58?

Link to post
Share on other sites
4 hours ago, ITNavigate said:

build/config/kernel/linux-sunxi-next.config

build/patches/sunxi

 


Those are build system areas. You copy linux-sunxi-next.config to build/userpatches/ and edit there ... the same goes with patches, copy to userpatches/kernel/sunxi-next (in this case) and rename to .patch ... those .disabled are for our internal needs.

 

4 hours ago, ITNavigate said:

Is there any way that I can convince the compile script to only download 4.14.52, not 4.14.58?


Sure it is. https://docs.armbian.com/Developer-Guide_User-Configurations/ 

 

Add: KERNELBRANCH='tag:v4.14.52' to build/userpatches/lib.config

Link to post
Share on other sites
23 hours ago, Igor said:


Those are build system areas. You copy linux-sunxi-next.config to build/userpatches/ and edit there ... the same goes with patches, copy to userpatches/kernel/sunxi-next (in this case) and rename to .patch ... those .disabled are for our internal needs.

 


Sure it is. https://docs.armbian.com/Developer-Guide_User-Configurations/ 

 

Add: KERNELBRANCH='tag:v4.14.52' to build/userpatches/lib.config

OK. That is awesome!!

 

One problem, I can't find KERNELBRANCH documented :-(

Link to post
Share on other sites
8 minutes ago, ITNavigate said:

One problem, I can't find KERNELBRANCH documented


Documentation is always behind/at minimum since we are low on resources. It is stated: "For a comprehensive list of available variables, look through lib/configuration.sh"

https://github.com/armbian/documentation/blob/master/docs/Developer-Guide_User-Configurations.md#user-provided-configuration

 

Feel free to make a pull request if you want to extend this part of the documentation.

Link to post
Share on other sites
3 minutes ago, Igor said:


Documentation is always behind/at minimum since we are low on resources. It is stated: "For a comprehensive list of available variables, look through lib/configuration.sh"

https://github.com/armbian/documentation/blob/master/docs/Developer-Guide_User-Configurations.md#user-provided-configuration

 

Feel free to make a pull request if you want to extend this part of the documentation.

*Blush*

 

I'll see what I can do to help. Maybe a week before I can.

Link to post
Share on other sites

 

*Hello, i want to build a armbian image with a custom kernel version. I got some problem.

I read this topic and the following documentation :

- https://docs.armbian.com/Developer-Guide_Build-Options/

https://docs.armbian.com/Developer-Guide_User-Configurations/

 

I want use this specific version : 5.4.45

So i have put in my "lib.conf" this line

KERNELBRANCH="tag:v5.4.45"

Then i have try to build with these commands :

./compile.sh KERNEL_ONLY=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes BUILD_DESKTOP=yes BOARD=orangepizeroplus2-h3  RELEASE=buster COMPRESS_OUTPUTIMAGE=sha,gpg,img, BRANCH=current

./compile.sh EXPERT=yes KERNEL_ONLY=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes BUILD_DESKTOP=yes BOARD=orangepizeroplus2-h3 RELEASE=buster COMPRESS_OUTPUTIMAGE=sha,gpg,img BRANCH=dev

I got error, it seem that the kernel was not found:

[ o.k. ] Checking git sources [ linux-mainline v5.4.45 ]
[ .... ] Fetching updates 
fatal: Couldn't find remote ref tags/v5.4.45
[ .... ] Checking out 
error: pathspec 'FETCH_HEAD' did not match any file(s) known to git
[ o.k. ] Checking git sources [ sunxi-tools master ]
...
...
...
make: *** No rule to make target 'olddefconfig'.  Stop.
[ error ] ERROR in function compile_kernel [ compilation.sh:414 ]
[ error ] Kernel was not built [ @host ]
[ o.k. ] Process terminated 

By reading this topic, i have try this command, but it is seem not to be the good way to do this but the kernel was found:

./compile.sh KERNEL_ONLY=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes BUILD_DESKTOP=yes BOARD=orangepizeroplus2-h3 RELEASE=buster COMPRESS_OUTPUTIMAGE=sha,gpg,img BRANCH=next

but i still got an error at the end:

....
  CC      kernel/padata.o
  CC      kernel/crash_dump.o
  CC      kernel/jump_label.o
  CC      kernel/iomem.o
  CC      kernel/rseq.o
  AR      kernel/built-in.a
[ error ] ERROR in function compile_kernel [ compilation.sh:414 ]
[ error ] Kernel was not built [ @host ]
[ o.k. ] Process terminated  

 

i have try with different additionnal LIB_TAG argument too : LIB_TAG=sunxi-5.5 or LIB_TAG=sunxi-5.3

"sunxi-5.4" tag seem missing.

 

It is possible to me to build armbian with a custom kernel version ? what setting i have miss ?

the branch "next" seem legacy, what is the recent way to do this ?  (kernel is not fetch when BRANCH=dev)

Link to post
Share on other sites
Quote

KERNELBRANCH="tag:v5.4.45"

That wont work in this special case. Only for kernel sources that are patches by upstream.

On sunxi-legacy however from a specific point Armbian had to print upstream patches by themselves.

 

Sounds complicated but for you a rather easy fix. Check https://github.com/armbian/build/tree/master/patch/kernel/sunxi-legacy and remove all upstream patches above 5.4.45

Btw as branch you need to use "legacy" instead of "current" since the branches have been cycled a few days ago. current would give you 5.7 kernel.

Link to post
Share on other sites

How i can get the list of all kernel version available for my custom build  by using option provided by armbian?

 

I have tried to build without specifying the kernel as follows: 

./compile.sh KERNEL_ONLY=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes BUILD_DESKTOP=yes BOARD=orangepizeroplus2-h3 RELEASE=buster COMPRESS_OUTPUTIMAGE=sha,gpg,img BRANCH=legacy

the build work fine and the kernel version is 5.4.51. But if i specify this kernel into "lib.config" and do it again :

KERNELBRANCH="tag:v5.4.51"

the build system can't fetch the kernel version:

[ .... ] Fetching updates 
fatal: Couldn't find remote ref tags/v5.4.51
[ .... ] Checking out 
error: pathspec 'FETCH_HEAD' did not match any file(s) known to git

 

If i want a specific version of kernel and maintain it. What i need to look and what i need to set to make it work ?  

I didn't understand well what i need to do with different option provided by armbian build system.

Link to post
Share on other sites

Once again in this particular case defining a specific branch won't work since sunxi relying on 3rd party sources. In your particular case here: https://github.com/megous/linux/tree/orange-pi-5.4

You can find these also when you start digging through the configs for your boards and their matching board families.

 

Back to the sources: Megi does not add tags and also maintains a kernel version only to a certain level and mostly works on the newest available sources. It is up to us as we use these sources to keep them halfway up to date if possible and we do that using our patches. The location you can find in my previous post.

 

There is no general way to get specific kernel versions for every single board. The wide variety of boards makes that impossible.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...