How to do the hello_world example from GitHub:linu

2019-08-09 01:33发布

Situation and Problem

I am trying to follow this guide on "how to make your own linuxkit with docker for mac", where you can add some kernel modules usually not present in docker images.

After a lot of reading and testing I am failing to do the simplest (one would think) test case in the repository:

linuxkit/test/cases/020_kernel/011_kmod_4.9.x/

https://github.com/linuxkit/linuxkit/tree/master/test/cases/020_kernel/011_kmod_4.9.x


checking the container for the linux kernel-version and config:
... host$ docker run -it --rm -v /:/host -v $(pwd):/macos alpine:latest
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
bdf0201b3a05: Pull complete 
Digest: sha256:28ef97b8686a0b5399129e9b763d5b7e5ff03576aa5580d6f4182a49c5fe1913
Status: Downloaded newer image for alpine:latest
/ # / # uname -a
/bin/sh: /: Permission denied
/ # 
/ # 
/ # uname -a
Linux 029b8e5ada75 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 Linux
/ # cp /host/proc/config.gz /macos/
/ # exit

I went back in the github history to find the hash for my local linuxkit kernel version and modified the dockerfile of that example (or basically used the old one).

So far so good. The problem is, that if I try to do anything related to kernel modules (modinfo, modprobe, depmod, insmod), I will get errors like these:

modinfo: can't open '/lib/modules/4.9.125-linuxkit/modules.dep': No such file or directory

This is because that path simply does not exist in the container (there is not even a modules folder). That is also true if I were to check -- as above -- just in alpine:latest. So there doesn't seem to happen any magic in that dockerfile.

Question

Now I am completely puzzled and left stranded on what to do, hence my question ...

How to do the hello_world example from linuxkit/linuxkit ?

additional notes

  • The docs of the linuxkit-repository do not mention anything about that problem: https://github.com/linuxkit/linuxkit/blob/master/docs/kernels.md#compiling-external-kernel-modules

  • For easy testing I am using

    docker-compose
    # build with
    # docker-compose build
    
    version: '3'
    services:
        linux-builder:
            image: my_linux_kit
            build:
                context: .
                dockerfile: my_linux_kit.dockerfile
                # args:
                #   buildno: 1
            privileged: true
    
  • And I even tricked it (by inserting by hand) into not showing any errors, but also not doing what I suppose the code should do:

    ... host$: docker exec -it 7a33fad37914 sh
    / # ls
    bin             dev             hello_world.ko  lib             mnt             root            sbin            sys             usr
    check.sh        etc             home            media           proc            run             srv             tmp             var
    / # /bin/busybox insmod hello_world.ko 
    / # 
    

0条回答
登录 后发表回答