Jump to content

How to build my own image or kernel?


Recommended Posts

7 minutes ago, dony71 said:

However I notice it build driver for kernel 4.14.81 while my system has kernel 4.14.78

How to force compilation to make kernel 4.14.78 ?


Just make a new kernel with a module that you need and install it over the current one. This is simple and fairly safe in this case.

Link to comment
Share on other sites

Just now, Igor said:


Just make a new kernel with a module that you need and install it over the current one. This is simple and fairly safe in this case.

 

the problem is new kernel doesn't work which means i need serial console port which i don't have now

it will be more work to do rather than compiling a module fit to my current kernel

Link to comment
Share on other sites

1 minute ago, dony71 said:

the problem is new kernel doesn't work which means i need serial console port which i don't have now

it will be more work to do rather than compiling a module fit to my current kernel


Kernel breakage from 4.14.78 - 4.14.81 is almost impossible. You build new kernel, copy image and dtb package to the board and install them with dpkg -i *.deb.

It must work. I do this every day.

 

If you want to compile some particular version: KERNELBRANCH="tag:v4.14.78"

Link to comment
Share on other sites

3 minutes ago, Igor said:


Kernel breakage from 4.14.78 - 4.14.81 is almost impossible. You build new kernel, copy image and dtb package to the board and install them with dpkg -i *.deb.

It must work. I do this every day.

 

If you want to compile some particular version: KERNELBRANCH="tag:v4.14.78"

 

Thanks, for now I will try KERNELBRANCH method

I will debug later why kernel broken after I get serial console

Also I have question about add driver module

Current mainline doesn't include snd-soc-pcm5102a driver so I need to modify .config to add this

However everytime I build kernel using KERNEL_KEEP_CONFIG=no, it's always overwritten

Anything I'm missing?

Link to comment
Share on other sites

1 hour ago, Igor said:


We spent several years to learn and several years to make this system :)

https://docs.armbian.com/Developer-Guide_User-Configurations/#user-provided-kernel-config

I try put  userpatches/linux-sunxi-next.config and it seems user kernel config is being used but there is no snd-soc-pcm5102a.ko

Also try KERNELBRANCH, but still using 4.14.81

 

sudo ./compile.sh KERNELBRANCH='tag:v4.14.78' KERNEL_KEEP_CONFIG=no KERNEL_ONLY=yes KERNEL_CONFIGURE=no BUILD_DESKTOP=no BOARD=bananapim2plus BRANCH=next RELEASE=stretch

 

Attached compile log and linux-sunxi-next.config

I just add "CONFIG_SND_SOC_PCM5102A=m" in config and copy "pcm5102a.c" in "linux-4.14.y/sound/soc/codecs"

 

linux-sunxi-next.config

output.log

Link to comment
Share on other sites

3 hours ago, dony71 said:

I try put  userpatches/linux-sunxi-next.config and it seems user kernel config is being used but there is no snd-soc-pcm5102a.ko

Also try KERNELBRANCH, but still using 4.14.81

 

sudo ./compile.sh KERNELBRANCH='tag:v4.14.78' KERNEL_KEEP_CONFIG=no KERNEL_ONLY=yes KERNEL_CONFIGURE=no BUILD_DESKTOP=no BOARD=bananapim2plus BRANCH=next RELEASE=stretch

 

Attached compile log and linux-sunxi-next.config

I just add "CONFIG_SND_SOC_PCM5102A=m" in config and copy "pcm5102a.c" in "linux-4.14.y/sound/soc/codecs"

 

linux-sunxi-next.config

output.log

 

I put KERNELBRANCH='tag:v4.14.78' in userpatches/lib.config and now can generate v.4.14.78 kernel

userpatches/linux-sunxi-next.config still problem, "CONFIG_SND_SOC_PCM5102A=m" not being executed

Link to comment
Share on other sites

6 hours ago, dony71 said:

userpatches/linux-sunxi-next.config still problem, "CONFIG_SND_SOC_PCM5102A=m" not being executed


This could mean that there are no drivers for it in the kernel (enabling non existing support is pointless. it must exists to be enabled). Or not solved dependencies (something that needs to be enabled before to enable this). 

Link to comment
Share on other sites

12 hours ago, Igor said:

This could mean that there are no drivers for it in the kernel

I didn't check under 4.14.y, but under 4.19.y it is present there : cache/sources/linux-mainline/linux-4.19.y/sound/soc/codecs/Kconfig

18 hours ago, dony71 said:

"CONFIG_SND_SOC_PCM5102A=m" not being executed

Check if it present under cache/sources/linux-mainline/linux-4.14.y/sound/soc/codecs/Kconfig

Link to comment
Share on other sites

25 minutes ago, martinayotte said:

I didn't check under 4.14.y, but under 4.19.y it is present there : cache/sources/linux-mainline/linux-4.19.y/sound/soc/codecs/Kconfig

Check if it present under cache/sources/linux-mainline/linux-4.14.y/sound/soc/codecs/Kconfig

It's not there and I have to add it 

However while running ./compile.sh, this Kconfig will be overwritten from original source since it's being modified

To get "pcm5102a.c" compiled successfully, I have to modify and copy this Kconfig on-the-fly during compilation

Maybe you have better idea how to avoid compile script overwrite this file?

Link to comment
Share on other sites

1 minute ago, dony71 said:

It's not there and I have to add it 

I think you misunderstood the way Kconfig works ...

Kconfig is a list of available options, you should not edit it unless you are adding new drivers, in which can you would need to create a patch.

Check if this file exist : cache/sources/linux-mainline/linux-4.14.y/sound/soc/codecs/pcm5102a.c

If it doesn't exist, then, there is no way to have that driver under 4.14.y.

If it is exist, then you probably messed up about the way to add CONFIG_SND_SOC_PCM5102A in your build...

Link to comment
Share on other sites

10 minutes ago, dony71 said:

pcm5102a.c is not exist but I can get it from sun8i-fay branch and  copy it manually in directory. I know this is not proper way to add driver in the kernel but I don't know how is the proper way?

Then, you will need to edit Kconfig and Makefile, then create a patch for those changes, and placed the patch under userpatches/kernel/sunxi-next/ .

 

Link to comment
Share on other sites

I assume you work from a ubuntu 18.04 machine (no docker or whatsoever):

In case you messed with the cached kernel besides a generate patch session.. In can be that the patch you'll generate isn't properly.. So just wipe out the kernel and start from a freshly downloaded one. The buildscript sometimes doesn't revert new files which didn't exist before.. add sources to clean level or just wipe out the mainline kernel.

Link to comment
Share on other sites

I used this as a patch. That enables building of the pcm5102a module. Put it in userpatches/kernel/yourkernel

 

I got the feeling that Kconfig just doesnt show entries without a text in menuconfig.

diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index c367d110..87c6ae4c 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -680,7 +680,7 @@ config SND_SOC_PCM3168A_SPI
 	select REGMAP_SPI
 
 config SND_SOC_PCM5102A
-	tristate
+	tristate "Texas Instruments PCM5102A CODEC - I2S"
 
 config SND_SOC_PCM512x
 	tristate

 

Link to comment
Share on other sites

4 hours ago, SK_D said:

Hello,

 

which Folder does compile.sh use for storage?

My build system has two partitions and my "/" is running full when building armbian.

 

Thanks

Stefan


It creates subdirectory cache (sources, tools, ..) and output (debs, images, debug, ...)

Link to comment
Share on other sites

19 minutes ago, SK_D said:

Both located under git repo?


Of course. Have you try by the book 1st?:

 

apt-get -y install git
git clone https://github.com/armbian/build
cd build
./compile.sh

 

Link to comment
Share on other sites

Hello

I use compile.sh and customize-image.sh to make my own custom image and every think is all right and work great.

But now I need to set hardware config item "i2c0" = true as default (like here - in armbina-config)

1.png.a204d01a61b68dcab10d32ba9f3a4e0d.png

 

I thought that I will select this item by "show a kernel configuration menu before compilation", but installation process dose not show me "Toggle hardware config"

2.png.5b6a7e88b2dc770d1218669a9eb73124.png

 

how can I do it in my customize-image.sh (set item "i2c0" = true)?

Link to comment
Share on other sites

On 5/23/2015 at 2:06 AM, Igor said:
Preparation

 

Supported build environment is Ubuntu Bionic 18.04 x64 (minimal iso image).

 

  • a guest inside a VirtualBox or other virtualization software,
  • a guest managed by Vagrant . This uses Virtualbox (as above) but does so in an easily repeatable way. Please check the Armbian with Vagrant README for a quick start HOWTO,
  • inside a Docker ,  systemd-nspawn  or other container environments (example),
  • running natively on a dedicated PC or a server (not recommended),
  • 20GB disk space or more and 2GB RAM or more available for the VM, container or native OS,
  • superuser rights (configured  sudo  or root access).
     
Execution

apt-get -y install git
git clone https://github.com/armbian/build
cd build
./compile.sh

This will download all necessary sources, execute compilation and/or build a boot-able image. Most of things will be cached so next run will be extremely faster!


Real time examples:
 

 

 

 

Hi Igor,

I'm working on Orange Pi Zero. I created .deb file (u-boot, image, source) like you (in video 1). But i don't know how to run script to compile for SD card(in video 2). Please tell me how to run this script! I want to create the .img file for write to my SD card.

Thanks!

Link to comment
Share on other sites

I called compile.sh multiple times. But, now it no longer shows the menu anymore, instead it downloads multiple old toolchains (4.8) although a newer toolchain is in PATH.

I deleted the cache dir, but this still does not bring up the menu.

What's broken here? I think I need to start over from scratch again... :-)

 

 

 

Link to comment
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...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines