Hi Bruce,

I sent the note below back in August and you nicely point me to the external 
source recipe workflow. Just before the Dec break, I ran into this nice 
tutorial from the yocto project which covers the topic in detail.

https://www.yoctoproject.org/sites/default/files/kernel-lab-1.5.pdf

This doc is a bit dated but great information in it!
Are you (or anybody aware) if there is a more recent version of this doc 
compared to more recent yocto branches?
Is information basically mostly applicable to more recent yocto branch versions?

Thanks,

--Hernan



> -----Original Message-----
> From: Bruce Ashfield [mailto:bruce.ashfi...@windriver.com]
> Sent: Tuesday, August 29, 2017 7:11 AM
> To: Gutierrez, Hernan Ildefonso (Boise R&D, FW)
> <hernan_gutier...@hp.com>; linux-yocto@yoctoproject.org
> Subject: Re: [linux-yocto] Kernel modules and vermagic
> 
> On 08/28/2017 06:46 PM, Gutierrez, Hernan Ildefonso (Boise R&D, FW)
> wrote:
> > Hi,
> >
> > I am new to this dist-list and I am not sure if this is the right forum.
> > My apologies beforehand if this is not the right list.
> 
> This one is as good as any for this question.
> 
> >
> > Problem statement:
> >
> > I am evaluating Yocto for a project. We have a workflow where linux
> > kernel is built from a local git repo separately from the root file system.
> >
> > I made a recipe to build rootfs using yocto to our target, I deployed
> > both images (Kernel built from our git repo + rootfs generated by
> > Yocto) ... all this works great.
> >
> > Now I want to add a couple of kernel modules provided by a third party
> > vendor. If the module is built along with our kernel build system (and
> > deployed to target), they work fine.
> >
> > Is there a way to build kernel modules with Yocto and point them to
> > the includes of our git kernel repo just to satisfy the kernel dependencies?
> 
> Investigate setting your kernel up as an externalsrc recipe. In that workflow
> you setup/configure your kernel as you normally do and have a recipe that
> points the build system at the source (local to the build machine). The build
> system won't configure or otherwise modify your kernel tree, but will use it 
> as
> the kernel provider.
> 
> As such the modules, etc, will build against the artifacts from that kernel 
> build
> and everything will match.
> 
> >
> > In attempts to explore options,  I made a yocto kernel recipe to build
> > a kernel from our internal git repo.
> >
> > I made also yocto recipes to build the kernel modules which resolve
> > dependencies for kernel header files with above yocto kernel recipes.
> 
> So I'm clear, in this configuration you have a standard format kernel recipe
> that is building your kernel tree (fetched from your repo) and then the
> modules are built as they normally would (i.e. the build system takes care of
> everything).
> 
> But you are actually deploying the kernel image from another build that
> you've done (i.e. your existing workflow).
> 
> >
> > All above builds fine, I can deploy the rootfs which includes the .ko
> > files I need, I even ask yocto to autoinitialize the modules on boot.
> >
> > Rootfs fails to load the modules like this:
> >
> > [FAILED] Failed to start Load Kernel Modules.
> >
> > See 'systemctl status systemd-modules-load.service' for details.
> >
> > When I try to insmod the module manually it fails with a vermagic
> > error like this:
> >
> > # insmod hello-mod.ko
> >
> >        hello: version magic *'4.9.13_1.0.0_hgv+g68f8dea22b* SMP
> > preempt mod_unload ARMv7 p2v8 ' should be '4.9.13 SMP preempt
> > mod_unload ARMv7
> > p2v8 '
> >
> >       insmod ERROR: could not insert module hello.ko: Invalid module
> > format
> >
> > I've read enough and it seems like this is because the kernel image
> > deployed generated with our separate workflow has a uname as *4.9.13*
> > and it seems like yocto adds the string _*1.0.0_hgv+g68f8dea22b* to
> > the vermagic... of the kernel modules, which seems to come from the
> > kernel recipe I generated to satisfy the dependencies to build the module.
> 
> Correct.
> 
> You could jump through some hoops to force the build system to not modify
> the version string. Alternatively, you could turn off modversions checking in
> your kernel build.
> 
> But in the end, either of those could cause you issues down the road since we
> are circumventing a check that is there to save subtle issues that could creep
> into the kernel -> modules interfaces.
> 
> >
> > I want to know if there is a way to keep building our kernel
> > separately from the root file system and kernel modules with yocto.
> 
> Have a closer look at externalsrc, it may help here.
> 
> Bruce
> 
> >
> > This is just because our workflows are separate for the project we're
> > working on. If we build the kernel with yocto, the internal workflows
> > will change and we are evaluating the options we have.
> >
> > Thanks, I'll appreciate any help and if this is not the right
> > dist-list, please let me know where it's best to get help.
> >
> > --Hernan
> >
> >
> >

-- 
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to