[OFFICIAL] Linux Kernel (new modules, optimizations, hacks, ...)


It was added as a module, so check in your /lib/modules/$(uname -r)/kernel/drivers/block/

root@c1-10-1-8-192:~/image-builder# ls -la /lib/modules/$(uname -r)/kernel/drivers/block/rbd.ko
-rw-r--r-- 1 root root 78200 Oct 20 11:55 /lib/modules/3.17.0-90/kernel/drivers/block/rbd.ko

If you cannot see it, you should try to reboot on a more recent kernel


Would it be possible to add AppArmor support?


We will build a new kernel with apparmor support soon


We just released a new kernel:


Please add this kernel modules:

For optimise TCP

/Networking support/Networking options/TCP: advanced congestion control

  • H-TCP
  • High Speed TCP
  • TCP-Hybla

And turn off module signing that will be really convenience for custom load kernel modules



I’m getting the following error when setting up ecryptfs on a ubuntu 14.04 image:

ERROR:  Cannot get ecryptfs version, ecryptfs kernel module not loaded?

Could you add the ecryptfs kernel module?



Done with :

Done with

Done with

All this changed will be available with the next kernel release 3.17 >= 120



You guys are great. I can’t wait to get some fun projects going on these boards.



Hi, due to the fact by default C1 instances are being created without swap device the following kernel parameter is better then the default

vm.swappiness = 0

Default is 60.


Correct me if I am wrong, I am guessing the bootloader that’s being used in u-boot. So We can’t have our own customized kernel. I want to explore the possibility xen+mirage OS setup. Is there any chance of switching to grub boot-loader.


no LVM kernel module? this is important for me. It would be much better if we could use the distribution-provided kernel, but I’m guessing the network booting setup you have built doesn’t allow for this? (distribution-provided kernels would also benefit from the faster turnaround time a distribution team is able to achieve for security vulnerability patching, while also being more guaranteed to be compatible with the rest of the software stack.)


Hi @diddledan,

I just successfully tested LVM

(on alpine linux image with 3.2.34 kernel)

bash-4.3# apk add lvm2
(1/3) Installing device-mapper (2.02.118-r0)
(2/3) Installing lvm2-libs (2.02.118-r0)
(3/3) Installing lvm2 (2.02.118-r0)
Executing busybox-1.23.2-r0.trigger
OK: 17 MiB in 35 packages
bash-4.3# pvcreate /dev/nbd1
  Physical volume "/dev/nbd1" successfully created
bash-4.3# vgcreate storage /dev/nbd1
  Volume group "storage" successfully created
bash-4.3# lvcreate -L 100M storage -n root
  Logical volume "root" created.
bash-4.3# mkfs.vfat /dev/storage/root
bash-4.3# mount /dev/storage/root /mnt/
bash-4.3# mount | grep /storage
/dev/storage/root on /mnt type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)


Hi @gautam,

On this specific version of hardware we cannot get rid of u-boot in favor to grub

It’s planned to let the users with a developer account upload their own kernel

For now you can follow the related issue on GitHub (https://github.com/scaleway/kernel-tools/issues/14)


on my ubuntu test rig I’m getting the following:

# lvcreate -L10G -ntest vg0
  /dev/vg0/test: not found: device not cleared
  Aborting. Failed to wipe start of new LV.
  device-mapper: remove ioctl on  failed: Device or resource busy
  semid 425984: semop failed for cookie 0xd4d647a: incorrect semaphore state
  Failed to set a proper state for notification semaphore identified by cookie value 223175802 (0xd4d647a) to initialize waiting for incoming notifications.

note that pvcreate and vgcreate returned no errors.

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/nbd1
  VG Name               vg0
  PV Size               46.57 GiB / not usable 3.72 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              11920
  Free PE               11920
  Allocated PE          0
  PV UUID               f3ceM4-fSI2-5bWn-GP3a-DPVT-iMnR-l8pEoO
# vgdisplay
  --- Volume group ---
  VG Name               vg0
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               46.56 GiB
  PE Size               4.00 MiB
  Total PE              11920
  Alloc PE / Size       0 / 0
  Free  PE / Size       11920 / 46.56 GiB
  VG UUID               DvSOYZ-lEOC-1CSX-mNl3-oG7W-MzRn-yhRhgd

the device /dev/vg0 was not created. and lsmod does not show an lvm module having been loaded. modprobe lvm reports that the lvm module doesn’t exist.

this also is the 3.2.34 kernel:

Linux scw-61bda6 3.2.34-30 #17 SMP Mon Apr 13 15:53:45 UTC 2015 armv7l armv7l armv7l GNU/Linux


Thnk’s for this information :slight_smile:


Docker kernel:

With the current docker-kernel allocating CPU resources to docker containers (aka CPU limiting) is not working.

docker run --cpu-shares ...

Please enable the CONFIG_CFS_BANDWIDTH kernel options for the docker-kernel.

 make-menu: General Setup » Control Group support » Group CPU scheduler 

Merci bien!


We built a kernel with CPU limiting support, but performances seems to be a little bit worst, see:

however, this kernel is already available, you can set up your boot script to 3.19.7-docker #217 (beta-cfs-bandwidth) on the console

for now, the image stay with the beta flag until we have more feedbacks


Hey @Simon,

We just released the 4.0.2-apparmor #215 bootscript with apparmor support


When I try to use “tc” (traffic control) on any of the available kernel, I get this error:
RTNETLINK answers: Operation not supported

It seems that some kernel modules are not enabled. Is it possible to enable them?



The required missing kernel options for traffic control are those, according to the documentation: