sudo apt-get install nautilus-open-terminal
#安装后注销再登录即可
sudo gedit /etc/apt/sources.list.d/ubuntukylin.list
--------------------------------------------------
#添加ubuntu kylin的apt源
deb http://archive.ubuntukylin.com:10006/ubuntukylin trusty main
--------------------------------------------------
sudo apt-get update
sudo apt-get install sogoupinyin
#安装后重启即可
sudo apt-get install git unrar
FQDN(Fully Qualified Domain Name,全限定域名):
配置过程:
#cty是我的姓名简拼,可以修改成任意其他字符串,但是后面再出现“cty”时一定要对应修改。
#1 修改主机名
sudo gedit /etc/hostname
--------------------------------------------------
cty
--------------------------------------------------
#2 修改FQDN
sudo gedit /etc/hosts
--------------------------------------------------
127.0.0.1 localhost
127.0.1.1 cty.openair4G.eur cty
--------------------------------------------------
#修改好FQDN后最好重启一下
hostname #查看主机名
hostname -f #查看FQDN
说明:运行“OAI的自动编译脚本的安装依赖软件选项”时也可以安装以下软件,不过我建议自己先手动安装好。
关系梳理
安装过程:
sudo apt-get install mysql-server
#注意要设置密码(建议设为"linux"),不要设置空密码!
Apache(Apache HTTP Server的简称):
安装过程:
sudo apt-get install apache2
#测试apache2:
浏览器访问 localhost(或127.0.0.1) 会出现apache2主页 (注:不可开VPN,否则不会出现)
PHP(PHP: Hypertext Preprocessor,超文本预处理器):
安装过程:
sudo apt-get install python-software-properties
sudo apt-get update
sudo apt-get install php5
php5 -v #查看 php版本
sudo service apache2 restart
#测试php:
sudo gedit /var/www/html/info.php
--------------------------------------------------
<?php
echo "Hello World!
"?>
--------------------------------------------------
保存退出,然后浏览器访问 localhost/info.php,浏览器会显示hello world页面(不可挂VPN!)
安装过程:
sudo apt-get install mysql-server mysql-client
#测试mysql:
mysql -u root -p #输入安装mysql时设置的root密码,会出现mysql操作界面
exit #退出mysql
phpMyAdmin:
安装过程:
#安装过程中要输入上文设置的mysql密码,好像要输入三次
sudo apt-get install phpmyadmin
sudo ln -s /usr/share/phpmyadmin /var/www/html
#测试phpmyadmin:
浏览器访问 localhost/phpmyadmin(或 127.0.0.1/phpmyadmin)会显示数据库登录页面
#如果报错:mbstringextension is missing.Please check your PHP configuration.
#解决办法如下:
sudo gedit /etc/php/7.0/mods-available/json.ini
#把文件里第二行的分号去掉,保存退出,重启网络:
sudo service apache2 restart
cd ~ #下载到home/username路径下
#下载openair-cn
git clone https://gitlab.eurecom.fr/oai/openair-cn.git
#下载openairinterface5g
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
cd ~
#官网教程上没有下面这条命令,我在后面编译MME时执行“~/openair-cn/SCRIPTS/build_epc -c -l”命令后出现了“mme_gw compilation failed”的错误,查看编译日志文档“~/openair-cn/BUILD/LOG/mme_gw.txt”看到“权限不够”的字样,是由于部分文件缺少权限导致的,因此在这里给openair-cn工程下的所有文件都添加全部权限,MME就编译成功了。
sudo chmod -R 777 openair-cn #为所有文件添加全部属性
cd ~/openair-cn
git checkout v0.3.2 #使用的是旧版本的openair-cn
source oaienv #在当前shell中添加OAI环境变量
cd SCRIPTS
#安装依赖的软件包,安装过程中若出现紫色选择界面,回车使用默认选项即可
./build_epc -i #安装搭建MME、SGW、PGW网元的依赖软件包
./build_hss -i #安装搭建HSS网元的依赖软件包
安装依赖软件时可能出现的问题——软件包freediameter1.2.0下载失败
S1:安装依赖软件包其实是通过调用~/openair-cn/BUILD/TOOLS/build_helper脚本文件中的函数来实现的,执行下面命令打开build_helper:
sudo gedit ~/openair-cn/BUILD/TOOLS/build_helper
S2:搜索“Downloading 1.2.0 freeDiameter archive”,并注释掉下面两行
#$SUDO rm -rf /tmp/1.2.0.tar.gz* /tmp/freeDiameter-1.2.0 /tmp/freediameter
#git clone https://gitlab.eurecom.fr/oai/freediameter.git -b eurecom-1.2.0
S3:科学上网,浏览器打开“https://gitlab.eurecom.fr/oai/freediameter”,选择1.2.0分支的freediameter;无论下载.zip、tar.gz或其他格式的压缩包,解压后把目录名“freediameter-1.2.0”修改为“freediameter”并放到“/tmp”路径下
S4:最后再执行“./build_epc -i ”就可以节省大量的下载等待时间了
sudo gedit ~/openair-cn/BUILD/HSS/hss.conf.in
--------------------------------------------------
HSS :
{
# MySQL mandatory options
MYSQL_server = "127.0.0.1";
MYSQL_user = "root";
MYSQL_pass = "linux"; #或你自己设置的密码
MYSQL_db = "oai_db";
## HSS options
OPERATOR_key = "1006020f0a478bf6b699f15c062e42b3";
...
}
--------------------------------------------------
补充说明
(1)HSS搭建命令如下:
cd ~/openair-cn/SCRIPTS
./build_hss -c -l
(2) HSS搭建流程如下图所示:
~/openair-cn/SCRIPTS/run_hss -g
(1)IMSI
(2)PLMN
(3)IMEI
(4)MSISDN
(5)aqn
(6)apn
(1)访问网址:localhost/phpmyadmin 并登录phpmyadmin(账号:root 密码:linux或自己设置的密码),查看一下有没有oai_db数据库,若没有则需要执行下面命令手动导入:
~/openair-cn/SCRIPTS/run_hss -i ~/openair-cn/SRC/OAI_HSS/db/oai_db.sql
(2)登录phpmyadmin并成功导入oai_db数据库后如下图所示:
#按照下面内容修改含有“修改这里”字样的语句,可以解决按照官方教程配置出现的一些问题
sudo gedit ~/openair-cn/BUILD/EPC/epc.conf.in
--------------------------------------------------
...
#1 网络的MCC / MNC
TAI_LIST = (
#{MCC="208" ; MNC="95"; TAC = "15"; }, #修改这里,注释掉
#{MCC="208" ; MNC="95"; TAC = "14"; }, #修改这里,注释掉
#{MCC="208" ; MNC="95"; TAC = "12"; }, #修改这里,注释掉
#{MCC="208" ; MNC="95"; TAC = "11"; }, #修改这里,注释掉
#{MCC="208" ; MNC="95"; TAC = "10"; } #修改这里,注释掉
{MCC="208" ; MNC="93"; TAC = "1"; } #修改这里,添加这样一条记录
);
...
#2 S1-C接口
NETWORK_INTERFACES :
{
# MME binded interface for S1-C or S1-MME communication (S1AP), can be ethernet interface, virtual ethernet interface, we don't advise wireless interfaces
MME_INTERFACE_NAME_FOR_S1_MME = "tun2"; #修改这里,设置MME端与eNB连接的S1-C接口为隧道
MME_IPV4_ADDRESS_FOR_S1_MME = "192.188.2.2/24"; #修改这里,设置MME端与eNB连接的S1-C接口的IP
...
};
...
#3 日志记录
LOGGING :
{
# OUTPUT choice in { "CONSOLE", "`path to file`", "`IPv4@`:`TCP port num`"}
# `path to file` must start with '.' or '/'
# if TCP stream choice, then you can easily dump the traffic on the remote or local host: nc -l `TCP port num` > received.txt
#OUTPUT = "127.0.0.1:5656"; #修改这里,注释掉
OUTPUT = "CONSOLE"; #修改这里,添加一条语句,将日志输出方向修改为控制台,否则会出现“Could not connect to log server 127.0.0.1:5656”的问题
...
};
...
#4 S1-U接口
S-GW :
{
NETWORK_INTERFACES :
{
...
# S-GW binded interface for S1-U communication (GTPV1-U) can be ethernet interface, virtual ethernet interface, we don't advise wireless interfaces
SGW_INTERFACE_NAME_FOR_S1U_S12_S4_UP = "lo"; # 修改这里,设置S-GW端与eNB连接的S1-U接口网卡为虚拟网卡
SGW_IPV4_ADDRESS_FOR_S1U_S12_S4_UP = "127.0.0.1/24"; # 修改这里,设置S-GW端与eNB连接的S1-U接口IP为环回地址
SGW_IPV4_PORT_FOR_S1U_S12_S4_UP = 2152; # 修改这里,设置端口
...
};
...
}
...
#5 SGI接口
NETWORK_INTERFACES :
{
PGW_INTERFACE_NAME_FOR_S5_S8 = "none";
PGW_IPV4_ADDRESS_FOR_S5_S8 = "0.0.0.0/24";
PGW_INTERFACE_NAME_FOR_SGI = "eth0"; #修改这里,修改成自己上网网卡,ifconfig查看
PGW_IPV4_ADDRESS_FOR_SGI = "192.168.43.75/24"; #修改这里,修改成自己上网网卡对应的IP地址,ifconfig查看
PGW_MASQUERADE_SGI = "yes";
};
...
#6 终端IP分配
IP_ADDRESS_POOL :
{
IPV4_LIST = (
#"192.188.2.0/24", #修改这里,注释掉
#"192.188.8.0/24" #修改这里,注释掉
"192.187.0.0/24", #修改这里,添加一条语句
"192.187.1.0/24" #修改这里,添加一条语句
);
...
};
...
--------------------------------------------------
(1)MME-GW搭建命令如下:
~/openair-cn/SCRIPTS/build_epc -c -l
(2)MME-GW搭建过程如下图所示:
######4.4.3 运行MME-GW
~/openair-cn/SCRIPTS/run_epc -g
cd ~
sudo chmod -R 777 ~/openairinterface5g
cd ~/openairinterface5g
git checkout v0.6.1 #切换“old oaisim”版本
source oaienv
cd cmake_targets
#以下安装OAISIM运行依赖的软件包
./build_oai -I
安装依赖软件时可能出现的问题1——软件包ASN1C下载失败
S1:安装依赖软件包其实是通过调用~/openairinterface5g/cmake_targets/tools/build_helper脚本文件中的函数来实现的,执行下面命令打开build_helper:
sudo gedit ~/openairinterface5g/cmake_targets/tools/build_helper
S2:搜索“install_asn1c_from_source()”,并注释掉下面两行
#$SUDO rm -rf /tmp/asn1c
#GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
S3:科学上网,浏览器打开“https://gitlab.eurecom.fr/oai/asn1c”,选择openair分支的asn1c;无论下载.zip、tar.gz或其他格式的压缩包,解压后把目录名“asn1c-openair”修改为“asn1c”并放到“/tmp”路径下
S4:最后再执行“./build_oai -I”就可以节省大量的下载等待时间了
#若其他软件下载失败可同样解决。
安装依赖软件时可能出现的问题2——fatal: unable to access https://gist.github.com/2190472.git : Failed to connect to gist.github.comport 443: Connection timed out
#执行:
sudo gedit openairinterface5g/cmake_targets/tools/build_helper
#打开后 Ctrl+F 搜索找到这一行
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh
#改成如下(来自大神的镜像克隆)
$SUDO git clone https://github.com/JackPaul/ssh.git /opt/ssh
(1)OAISIM搭建命令如下:
~/openairinterface5g/cmake_targets/build_oai --oaisim
#打开oaisim配置文件,按照下面内容修改含有“修改这里”字样的语句
sudo gedit ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf
--------------------------------------------------
...
// Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; #修改这里
mobile_country_code = "208"; #修改这里
mobile_network_code = "93"; #修改这里
...
// 按照下图配置
// MME parameters:
mme_ip_address = ( { ipv4 = "192.188.2.2/24"; #修改这里,设置MME的IP
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "tun2"; #修改这里,设置eNB端与MME连接的S1-C接口的为隧道
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.188.2.2/24"; #修改这里,设置设置eNB端与MME连接的S1-C接口的IP
ENB_INTERFACE_NAME_FOR_S1U = "lo"; #修改这里,设置设置eNB端与S-GW连接的S1-U接口的网卡为虚拟网卡
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.1/24"; #修改这里,设置设置eNB端与S-GW连接的S1-U接口的IP为环回地址
ENB_PORT_FOR_S1U = 2153; # Spec 2152 #修改这里,设置端口
};
...
--------------------------------------------------
打开UE配置文件,按照下面内容修改含有“修改这里”字样的语句
sudo gedit ~/openairinterface5g/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
--------------------------------------------------
# List of known PLMNS
PLMN: {
...
#有我们之前在HSS和MME配置文件中设置的PLMN
PLMN4: {
FULLNAME="OAI LTEBOX";
SHORTNAME="OAIALU";
MNC="93";
MCC="208";
};
...
};
#默认有一个终端UE0
UE0:
{
USER: {
IMEI="35609204079301"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
MANUFACTURER="EURECOM";
MODEL="LTE Android PC";
PIN="0000";
};
SIM: {
MSIN="0000000001"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
USIM_API_K="8baf473f2f8fd09487cccbd7097c6862"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
OPC="8e27b6af0e692e750f32667a3b14605d"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
MSISDN="33638030001"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
};
# Home PLMN Selector with Access Technology
HPLMN= "20893"; #修改这里,修改成之前在HSS数据库中选择的UE对应的值
...
};
--------------------------------------------------
#通过conf2uedata软件生成UE信息文件
cd ~/openairinterface5g/targets/bin
conf2uedata -c ~/openairinterface5g/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf -o ./
#执行上述命令后会产生以下三个信息文件,在运行OAISIM时会自动获取这三个文件中的UE信息
./targets/bin/.usim.nvram0
./targets/bin/.ue_emm.nvram0
./targets/bin/.ue.nvram0
cd ~/openairinterface5g/cmake_targets/tools
sudo -E ./run_enb_ue_virt_s1
(1)分析问题
(2)发现问题
(3)解决问题
#1 查看是否有加载ip_gre模块
sudo modprobe ip_gre
lsmod | grep gre
--------------------------------------------------
#说明已加载ip_gre模块
ip_gre 20480 0
ip_tunnel 28672 1 ip_gre
gre 16384 1 ip_gre
--------------------------------------------------
#2 创建隧道tun2
sudo ip tunnel add tun2 mode gre remote 127.0.2.1 local 127.0.2.1 ttl 255 #远程和本地主机IP都设置为环回地址
sudo ip link set tun2 up
sudo ip addr add 192.188.2.2 peer 192.188.2.2 dev tun2 #隧道两端IP都设置为192.188.2.2
(1)HSS、MME_GW和OAISIM运行命令如下:
#打开终端1,运行HSS
~/openair-cn/SCRIPTS/run_hss -g
#打开终端2,运行MME_GW
~/openair-cn/SCRIPTS/run_epc -g
#打开终端3,运行OAISIM,-x选项可查看图形界面
cd ~/openairinterface5g/cmake_targets/tools
sudo -E ./run_enb_ue_virt_s1 -x
(2)HSS、MME_GW和OAISIM成功运行如下图所示:
[1] HowtorunoaisimwithvirtualMMEonsamemachine
[2] how to run oaisim with multiple ue
[3] HowToConnectCOTSUEwithOAIeNBNew
[4] OAI搭建 EPC(2018-09最新版)
[5] OAI搭建 eNB(2018-09最新版)
[6] OAI搭建 SIM卡(2018-11更新版)
[7] linux下创建GRE隧道