出现这个问题,首先要检查一下你的宿主机器的kernel是否是lowlatency版本的:
unmae -r4.4.0-145-lowlatency
如果不是的话,请转换成相应的lowlatency(至于内核是多少无所谓)这里给个方法:
sudo apt-get updatesudo apt-get install linux-image-3.19.0-61-lowlatency linux-headers-3.19.0-61-lowlatency
这里把你想要安装的kernel换成对应的版本即可。做完这一步,然后在你的docker run的时候,加上相应的-v参数,一定要加-v /lib/modules:/lib/modules参数。下面是我自己的run的时候加的参数:
sudo docker run -t -i --privileged -e "USER=root" -h="root" --name="oai5g_gnb" --cap-add=ALL -v /dev/bus/usb:/dev/bus/usb -v /lib/modules:/lib/modules ubuntu:16.04 /bin/bash
这里说下-e "USER=root"的原因,因为在编译gnb的时候,如果不加一个环境变量USER的话,就会报错,所以在这里run的时候加一个。然后-v /lib/modules:/lib/modules不加的话,那么docker容器中没有相应的/lib/modules路径,这个没有的话,会出现nasmesh complitation failed。即使有这个路径还不行。这个时候,因为宿主机器已经是lowlatency版本了。所以你的docker 容器也是相应的lowlatency版本。但是这个时候,你的版本中没有相应的
build(或者说有build但是你cd的话进不去)。这个时候,你先确定下有没有这个:
dpkg --list | grep 4.4.0-145-lowlatency | grep headersii linux-headers-4.4.0-145-lowlatency 4.4.0-145.171
如果没有的话,
sudo apt-get install --yes linux-headers-your-version比方说我的内核版本是4.4.0-145-lowtatency,那我对应的命令是sudo apt-get install --yes linux-headers-4.4.0-145-lowtatency
这样的话,你的/lib/modules就有相应的内核的东西了。这样的话就不会出现nasmesh complitation failed了。希望你也能编译gnb成功。