目录
1、换源:
2、设置低时延内核
3、设置最大CPU效率
4、安装docker
5、解压文件导镜像
6、配置路由和包转发
7、修改 config_container 文件
8、修改 run_container 文件
9、运行epc
10、安装 enb 的依赖
11、安装 UHD
12、编译 ENB
13、修改 enb.conf 配置文件启动 enb
14、启动 enb
15、查看日志有 enb 连上 mme 则证明成功
写在前面:OAI比较耗性能,所以尽量使用配置高一点的电脑。最重要的一点是别:在笔记本用虚拟机来搭!!!(我是因为条件限制和傻才想着在虚拟机上搭OAI)OAI搭建需要禁止睿频等操作硬件的高权限操作,虚拟机根本完成不了。跳过这些报错装上了也没用,在运行ENB的时候就会发现频率达不到(输出都是NULLLLLLLLLLLLLLLL)
搭建使用的是论坛打包好的文件【省去了科学上网的一大堆问题】:提示信息 - 开源无线网络-OpenXG - Powered by Discuz!
参考博客:
① OAI 4G 核心网搭建_牛奶可乐配不配的博客-CSDN博客
②OAI 4G搭建(一):总体流程_牛奶可乐配不配的博客-CSDN博客
我将论坛打包的文件和 OAI官网ENB 的源码文件都下下来打包放到百度云上了,有这个包就可以不用科学上网,在国内源环境下完成 OAI EPC + OAI ENB 的搭建。
链接:https://pan.baidu.com/s/1rUhCpLeO6cUQYJpwaGUehA
提取码:r3ax
本文中使用的是 Ubuntu18.04 系统的笔记本,epc和enb在一台机器上
为了排除影响,我在新的系统环境下完成搭建:
sudo gedit /etc/apt/sources.list
替换为阿里的源:
# 阿里镜像源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
然后执行:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install linux-lowlatency
sudo apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
sudo apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency
重启加载内核:
sudo reboot
重启后查看是否加载内核成功:
uname -a
显示有 -lowlatency 字样说明加载成功
sudo nano /etc/default/grub
末尾添加:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"
然后执行:
sudo apt-get install cpufrequtils
sudo echo GOVERNOR="performance" > /etc/default/cpufrequtils
sudo update-rc.d ondemand disable
出现错误: update-rc.d: error: cannot find a LSB script for ondemand
则使用下面的代码
sudo /etc/init.d/cpufrequtils restart
systemd reboot
sudo /etc/init.d/cpufrequtils restart
查看是否设置成功:
sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
显示 performance 则设置成功
上面的操作应该是永久的,但我一段时间不用,再开机就会发现不是低延时内核和性能模式。所以建议每次开机都需要查一下内核和模式
uname -a
sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
或者写一个脚本 max_cpu 每次开机后都执行一下 ./max_cpu 看看是不是低时延内核和性能模式。
cd ~
touch max_cpu
chmod +x max_cpu
vim max_cpu
//粘贴以下内容
//下面还要配置路由和包转发,所以具体内容看 6、配置路由和转发
sudo apt install docker.io
给 docker 添加用户权限,可以不用每次运行dockers 都需加上 sudo :
参考:Ubuntu运行docker 权限问题Got permission denied_一个小白的求知路-CSDN博客
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用
上面我整理的两个包:
NSA_insatll_0923.rar 是论坛整理的包(再次表示感谢)
openairinterface5g-master.tar.gz 是官网上enb的源码
下面是 NSA_install_0923.rar 包里文件的描述:
解压:
rar x NSA_install_0923.rar
进到 epc docker config 目录下解压 docker_images.tar 包
tar -xvf docker_images.tar
然后进入 docker_images 目录将四个镜像导入到 docker 里面
sudo docker load --input oai-hss:production.tar
sudo docker load --input oai-mme:production.tar
sudo docker load --input oai-spgwc:production.tar
sudo docker load --input oai-spgwu-tiny:production.tar
查看镜像是否导入成功
docker images
路由:
#sudo ip route add 192.168.61.0/24 via EPCIP(EPC物理机IP) dev ETH_INFERFACE(enb或gnb机器的接口)
sudo ip route add 192.168.61.0/24 via 10.10.83.150 dev enp0s31f6
前面的 192.168.61.0/24 不用改,是mme的IP地址。后面的10.10.83.150 为装epc的电脑(就是此电脑)的物理IP,enp0s31f6 为物理IP对应的端口。【ifconfig 可以查看】
包转发:
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
这个没有写到文件里,所以每次关机就失效了。我就将上面的操作写进 (3、设置最大cpu效率) 的脚本 max_cpu 里面,每次开机检测内核和性能模式的时候顺带配置一遍。
cd ~
touch max_cpu
chmod +x max_cpu
vim max_cpu
//粘贴以下内容
echo "start config cpu ................."
uname -a
sudo /etc/init.d/cpufrequtils restart
systemd reboot
sudo /etc/init.d/cpufrequtils restart
sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
sudo ip route add 192.168.61.0/24 via 10.10.83.150 dev enp0s31f6
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
echo "finish config................."
首先先解压 epc docker config 目录下的 epc-fed.tar 文件
tar -xvf epc-fed.tar
解压完出来的是 home 目录(这个我当时找了一会,以为解压完名字相同,linux命令没学明白)
进入 home 目录 直到 epc-fed 的目录:
cd home/g/work/
将 openair-epc-fed 目录拷贝到用户目录下(方便以后启动epc)
sudo cp -r openair-epc-fed/ ~/
修改 config_container 文件:
cd ~
cd openair-epc-fed/
vim config_container
① 修改IP
② 添加延时
防止出现以下报错:Error: The node does not have system_traces yet, probably still bootstrapping【无线学习笔记三】_yuyu的博客-CSDN博客
首先新建一个 oaiepc 目录
cd ~
mkdir oaiepc
然后将刚刚解压包里的 mme(epc docker config 目录下) 文件放到 ~/oaiepc 目录下
cp mme ~/oaiepc
并修改权限
chmod +x mme
然后修改 run_container 文件里的 mme 路径(路径有点多,要分清楚)
修改为:
然后在最后添加两行
sudo docker exec -d prod-oai-hss /bin/bash -c "route del default gw 172.17.0.1"
sudo docker exec -d prod-oai-hss /bin/bash -c "route add default gw 10.10.83.150"
./config_container
./run_container
都不报错的话,则说明 epc 启动成功
上面的步骤是运行 epc 的,接下来是编译安装 enb
首先回到刚才解压的目录,解压 oai_install.08.14.tar 文件
tar -xvf oai_install.08.14.tar
然后进到目录里分别执行 install 和 install2 ,这两步省去了科学上网下载依赖
./install
./install2
先解压 uhd_install_3.15.tar 文件
tar -xvf uhd_install_3.15.tar
然后进到目录里执行 install_uhd 文件
./install_uhd
这一步之后 usrp 的驱动就安装好了,可以插上USRP B210 执行以下命令验证一下
sudo uhd_find_devices
显示以下内容说明驱动依赖等安装完毕
首先解压 openairinterface5g-master.tar.gz 文化
tar -xvzf openairinterface5g-master.tar.gz
然后改名移动到用户目录(方便后面启动)
mv openairinterface5g-master ~/openairinterface5g
接下来编译 enb
cd ~/openairinterface5g/
source oaienv
cd cmake_targets
sudo ./build_oai --eNB --UE -x -w USRP
首先将之前解压包里的 enb.conf 配置文件拷到指定目录下(/CONF/enb.conf)
cp enb.conf ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/
然后修改配置文件
gedit ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.conf
修改以下部分
将 IP 和端口改成当前机器的
cd ~/openairinterface5g/
source oaienv
cd cmake_targets/lte_build_oai/build
sudo -E ./lte-softmodem -O ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.conf -d