kernel plugin initrd packaging fails when kernel modules have common dependencies

Bug #1627923 reported by Shrirang Bagul
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Snapcraft
Fix Released
High
Sergio Schvezov

Bug Description

When it comes to handling common dependencies for different kernel modules the snapcraft build always fails.

e.g. the hid-generic.ko and usbhid.ko modules both depend on hid.ko. In this case, the snapcraft build fails with this error:
[Errno 17] File exists: '/home/u/0_work/kernel-snap/parts/kernel/install/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/hid.ko' -> '/home/u/0_work/kernel-snap/parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/hid.ko'

Revision history for this message
Shrirang Bagul (shrirang-bagul) wrote :
Revision history for this message
Shrirang Bagul (shrirang-bagul) wrote :
Revision history for this message
Sergio Schvezov (sergiusens) wrote :

I don't have access to `source: /home/shrirang/0_work/linux-stable` so please tell me where to grab the sources, alternatively also please run snapcraft with `--debug`

Changed in snapcraft:
status: New → Incomplete
Revision history for this message
Shrirang Bagul (shrirang-bagul) wrote :

@Sergio

Please use this snapcraft.yaml, the kernel source has been updated to: git://kernel.ubuntu.com/snb/ubuntu-xenial.git

Changed in snapcraft:
milestone: none → 2.19
assignee: nobody → Sergio Schvezov (sergiusens)
importance: Undecided → High
status: Incomplete → In Progress
Revision history for this message
Sergio Schvezov (sergiusens) wrote :

Snapped caracalla-kernel_4.4.0_amd64.snap

https://github.com/snapcore/snapcraft/pull/837

Revision history for this message
Darren Wu (musicguitar) wrote :

The modules dependency has solved.
But the drivers not installed in initrd.
Trace down the script in initrd. It still needs snapcraft to add drivers list in conf/modules.

Revision history for this message
Sergio Schvezov (sergiusens) wrote :

What is conf/modules? There is no mention of that in the bug so it either is a new bug or a feature. Please start a new thread/bug to avoid the meta bug issue.

Revision history for this message
Oliver Grawert (ogra) wrote :

i think darren means the equivalent to /etc/modules inside the initrd which would forcefully load these modules in all setups under all circumstances (even if it is wrong to load them)...

this should definitely not be necessary, the kernel should trigger auto-load for any modules needed on device access, if it does not, there must be something else missing (is the correct modules.dep shipped along with the modules ?)

Revision history for this message
Sergio Schvezov (sergiusens) wrote : Re: [Bug 1627923] Re: kernel plugin initrd packaging fails when kernel modules have common dependencies

El 29/09/16 a las 08:39, Oliver Grawert escribió:
> i think darren means the equivalent to /etc/modules inside the initrd which would forcefully load these modules in all setups under all circumstances (even if it is wrong to load them)...
>
> this should definitely not be necessary, the kernel should trigger auto-load for any modules needed on device access, if it does not, there must be something else missing (is the correct modules.dep shipped along with the modules ?)

It should be, but now I see, so loading the module with specific configs
and such.
Does snapd even support that? More so, this is a new bug/feature then!
Thanks for clarifying ogra.

Revision history for this message
Sergio Schvezov (sergiusens) wrote :

Just for the record, the correct modules have been collected

|-- sergiusens@lindon:~/projects/ubuntu-xenial (caracalla-devel *) --|
$ find parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/ata
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/ata/libahci.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/ata/ahci.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/usb
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/usb/storage
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/usb/storage/usb-storage.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/usbhid
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/usbhid/usbhid.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/hid.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/hid/hid-generic.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/mmc
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/mmc/card
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/drivers/mmc/card/mmc_block.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/fs
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/fs/nls
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/fs/nls/nls_iso8859-1.ko
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/fs/squashfs
parts/kernel/build/initrd-staging/lib/modules/4.4.16-xenial_generic+/kernel/fs/squashfs/squashfs.ko

|-- sergiusens@lindon:~/projects/ubuntu-xenial (caracalla-devel *) --|
$ cat snapcraft.yaml
name: caracalla-kernel
version: 4.4.0
summary: The generic kernel for snappy
description: This is a generic snapped kernel, based off the xenial src and config
type: kernel

parts:
  kernel:
    plugin: kernel
    source: .
    kdefconfig: ['--makefile=debian/snapcraft.mk', 'branch=master','flavour=generic']
    kconfigs:
      - CONFIG_LOCALVERSION="-xenial_generic"
      - CONFIG_DEBUG_INFO=n
      - CONFIG_SQUASHFS=m
      - CONFIG_SQUASHFS_FILE_CACHE=y
      - CONFIG_SQUASHFS_DECOMP_SINGLE=y
      - CONFIG_SQUASHFS_XATTR=y
      - CONFIG_SQUASHFS_ZLIB=y
      - CONFIG_SQUASHFS_LZO=y
      - CONFIG_SQUASHFS_XZ=y
      - CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
    kernel-initrd-modules:
      - ahci
      - hid-generic
      - mmc_block
      - nls_iso8859-1
      - squashfs
      - usbhid
      - usb-storage
    kernel-image-target: bzImage

Changed in snapcraft:
status: In Progress → Fix Committed
Changed in snapcraft:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.