Как сделать пример hello_world из GitHub:linuxkit/linuxkit?

Ситуация и проблема

Я пытаюсь следовать этому руководству о том, "как создать свой собственный linuxkit с помощью Docker для Mac", где вы можете добавить некоторые модули ядра, которые обычно отсутствуют в образах Docker.

После большого прочтения и тестирования я не смог выполнить самый простой (можно подумать) контрольный пример в хранилище:

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


проверка контейнера на наличие версии ядра Linux и конфигурации:
... 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

Я вернулся в историю github, чтобы найти хеш для моей локальной версии ядра linuxkit и изменил dockerfile этого примера (или, по сути, использовал старый).

Все идет нормально. Проблема в том, что если я попытаюсь сделать что-нибудь, связанное с модулями ядра (modinfo, modprobe, depmod, insmod), Я получу такие ошибки:

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

Это потому, что этот путь просто не существует в контейнере (там даже нет папки модулей). Это также верно, если бы я должен был проверить - как указано выше - просто в alpine:latest, Так что, похоже, в этом докер-файле не происходит никакой магии.

Вопрос

Теперь я совершенно озадачен и не могу понять, что делать, отсюда и мой вопрос...

Как сделать пример hello_world из linuxkit / linuxkit?

Дополнительные примечания

  • В документации linuxkit-repository ничего не говорится об этой проблеме: https://github.com/linuxkit/linuxkit/blob/master/docs/kernels.md#compiling-external-kernel-modules

  • Для удобства тестирования я использую

    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
    
  • И я даже обманул его (вставив вручную), чтобы не показывать никаких ошибок, но также не делать то, что, как я полагаю, должен делать код:

    ... 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 ответов

Другие вопросы по тегам