走るドッカーAppleコンピュータで
docker pull ubuntu:14.04
docker run -i -t ubuntu:14.04 /bin/bash
Linux標準ライブラリ
root@d112db1e835e:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
私の目標は、古い古いCコードを書くために使用する専用のラップトップを破棄し、代わりにDockerコンテナを使用することです。
私のコードをコンパイルするためにMakefile
実行したい
Makefile: /usr/bin/make -C /lib/modules/$(shell uname -r)/build M=$(PWD)/linux/$* modules
残念ながらmodules
フォルダが空です
mysuer@d112db1e835e:~/robot$ ls -al /lib/modules/
ls: cannot access /lib/modules/: No such file or directory
私のLinuxコンピュータには、次のモジュールがあります。
$ ls -al /lib/modules/
total 28
drwxr-xr-x 7 root root 4096 Dez 13 2016 .
drwxr-xr-x 24 root root 4096 Apr 24 2017 ..
drwxr-xr-x 5 root root 4096 Dez 13 2016 3.13.0-105-generic
drwxr-xr-x 5 root root 4096 Jun 23 2015 3.13.0-55-generic
drwxr-xr-x 5 root root 4096 Jul 10 2015 3.13.0-57-generic
drwxr-xr-x 5 root root 4096 Nov 3 2015 3.13.0-65-generic
drwxr-xr-x 5 root root 4096 Nov 24 2015 3.13.0-68-generic
しかし、私のドッカーにはモジュールがありません。
私のドッカーに
uname -r
4.9.60-linuxkit-aufs
だから
/usr/bin/make -C /lib/modules/4.9.60-linuxkit-aufs/build .... FAILS
/lib/modules/4.9.60-linuxkit-aufs
ここではありません。
この問題をどのように解決できますか?
ヘッダーをインストールしてみてください
apt-cache search linux-headers-4
linux-headers-4.2.0-18 - Header files related to Linux kernel version 4.2.0
linux-headers-4.2.0-18-generic - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-18-lowlatency - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-19 - Header files related to Linux kernel version 4.2.0
linux-headers-4.2.0-19-generic - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-19-lowlatency - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-21 - Header files related to Linux kernel version 4.2.0
linux-headers-4.2.0-21-generic - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-21-lowlatency - Linux kernel headers for version 4.2.0 on 64 bit x86 SMP
linux-headers-4.2.0-22 - Header files related to Linux kernel version 4.2.0
...
4.9.60のタイトルが見つかりませんでした。
root@d112db1e835e:~# apt-get install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-4.9.60-linuxkit-aufs
E: Couldn't find any package by regex 'linux-headers-4.9.60-linuxkit-aufs'
または
root@d112db1e835e:~# apt-cache search linux-headers-4.9
root@d112db1e835e:~#
候補者なし
root@d112db1e835e:~# apt-get install linux-headers
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package linux-headers is a virtual package provided by:
linux-headers-4.4.0-1010-aws 4.4.0-1010.10
linux-headers-4.4.0-1009-aws 4.4.0-1009.9
... FILTERED ...
linux-headers-3.13.0-100-lowlatency 3.13.0-100.147
linux-headers-3.13.0-100-generic 3.13.0-100.147
You should explicitly select one to install.
E: Package 'linux-headers' has no installation candidate
root@d112db1e835e:~#
どのパッケージも返されません。
root@d112db1e835e:~# apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-3.13.0 - Linux kernel source for version 3.13.0 with Ubuntu patches
答え1
Mac用のDockerが使用されます。スーパーキット仮想化の場合(参照よくある質問)と実行Linuxキットすでにわかっているように、カーネルはコンテナ実行用にカスタマイズされているため、カーネル/サブレベルのカーネル関連開発を使用している場合は、通常のLinuxディストリビューションを使用するのと同じようには機能しません。
使用することをお勧めしますQEMUこの種のタスクでは、さまざまな種類のハードウェアをエミュレートしたり、さまざまなBIOSを使用したり、pxebootを使用したりできます。ipxe。
あなたの質問に答えるには、以下をインストールする必要がlinux-virtual
あります。汎用Linuxカーネルあなたの容器のため。
編集:uname -r
他のカーネルバージョンなので動作しません。 trusty(14.04)のデフォルトのカーネルバージョンはまだ3.xです。