出現這個問題,首先要檢查一下你的宿主機器的kernel是否是lowlatency版本的:
unmae -r
4.4.0-145-lowlatency
如果不是的話,請轉換成相應的lowlatency(至於內核是多少無所謂)這裏給個方法:
sudo apt-get update
sudo 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 headers
ii 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成功。