헤더를 설치해 보세요

헤더를 설치해 보세요

달리기도커Apple 컴퓨터에서

docker pull ubuntu:14.04
docker run -i -t ubuntu:14.04 /bin/bash

리눅스 표준 라이브러리

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 배포판을 사용하는 것과 동일한 방식으로 작동하지 않습니다.

나는 사용하는 것이 좋습니다QEMU이러한 종류의 작업에서는 다양한 유형의 하드웨어를 에뮬레이트하거나, 다양한 BIOS를 사용하거나, pxeboot를 사용할 수도 있습니다.ipxe.

귀하의 질문에 답하려면 다음을 linux-virtual설치 해야 합니다.범용 Linux 커널당신의 컨테이너를 위해.

편집: uname -r다른 커널 버전이므로 작동하지 않습니다. trusty(14.04)의 기본 커널 버전은 여전히 ​​3.x입니다.

관련 정보