1. 網絡配置簡介
本文檔介紹了系統的網絡基礎配置。另外為了解決在程序中修改網絡配置需求,我們也提供使用yaml-cpp庫修改網絡配置的簡單示例。
1.1 netplan與yaml文件
1.1.1 背景
本分析系統運行環境采用的是Ubuntu22.04系統。由于Ubuntu從18.04版本不再使用 ifupdown 配置網絡,而改用 netplan,所以在 /etc/network/interfaces 配置固定IP是無效的,必須在/etc/netplan/xxxx.yaml中進行網絡配置,即我們需要了解yaml文件的基礎語法。
1.1.2 語法基礎及注意事項
以下語法并不包含YAML的所有語法,只說明網絡配置中所需語法。更詳細的語法知識請參考YAML官網:https://yaml.org/
l 數據結構采用鍵值對的形式,即(鍵名稱: 值),注意冒號后面要有空格。
l 數組有兩種表達方式,例如配置雙ip地址時每個元素單獨一行,并以(- )開頭;配置DNS時使用方括號,元素用逗號隔開。如下圖所示。

l 使用縮進表示層級關系,縮進使用空格不推薦使用 tab,因為在不同系統 tab 長度可能不一樣。
l 字母大小寫敏感。
1.2 以太網卡使用操作
1.2.1 網口接線

1.2.2 修改以太網配置
用以下命令查看開發板網絡配置存放路徑,會發現有4個配置文件。其中50-eth0-init.yaml是【NET0】相關的netplan配置,51-eth1-init.yaml是【NET1】相關的netplan配置。
ls /etc/netplan/

內容如下:

關于【DHCP】和【靜態IP】分別的配置細節說明,如下圖所示:

注意:無論是【DHCP】還是【靜態IP】,均需要插上網線才能生效,ifconfig那里才能查到配下去的IP地址。
網絡配置既可以分開寫,也可以寫在同一個yaml文件里。下面是一個把NET0和NET1寫在一起(99_config.yaml),并且把eth0配置成DHCP,把eth1配置成靜態IP的示例:

如果對yaml進行過了修改,則需要執行下方命令進行更新:
sudo netplan generate sudo netplan apply
2. 快速上手
2.1 開發環境準備
如果您初次閱讀此文檔,請閱讀《入門指南/開發環境準備/Easy-Eai編譯環境準備與更新》,并按照其相關的操作,進行編譯環境的部署。
在PC端Ubuntu系統中執行run腳本,進入EASY-EAI編譯環境,具體如下所示。
cd ~/develop_environment ./run.sh

2.2 源碼下載以及例程編譯
首先,在虛擬機后臺終端,執行以下命令,創建外設單例源碼管理目錄:
cd /opt mkdir -p EASY-EAI-Nano-TB/demo
首先,到【百度網盤】上下載相關的單例程序:
鏈接:https://pan.baidu.com/s/1Br608Hiff2Xs65PzWO_qWQ?pwd=1234
提取碼:1234
比如把單例程序下載到:此電腦\D:\BaiduNetdisk (無規定,用戶可自主選擇),如下圖所示。

再將下載好的單例復制進入虛擬機的文件系統,過程如下圖所示。



最后,進入到對應的例程目錄執行編譯操作,具體命令如下所示:
cd EASY-EAI-Nano-TB/demo/01_network ./build.sh
注:* 由于依賴庫部署在板卡上,因此交叉編譯過程中必須保持/mnt掛載。

若有以下報錯則需要在【開發板上】安裝一下libyaml-cpp-dev庫

sudo apt-get install libyaml-cpp-dev
2.3 例程運行
通過串口調試或ssh調試,進入板卡后臺,定位到例程部署的位置,如下所示:
cd /userdata

運行例程命令如下所示:
./test-ethernet
此demo的效果是把eth0的配置修改成【靜態IP:192.168.1.170】,如果編譯環境mount的是eth0或者是通過ssh調試,且之前DHCP到的IP不是192.168.1.170,此例程執行完畢后,所有鏈接會被斷開。
2.4 運行效果
執行效果如下所示。

配置文件也同時被修改了:

3. 操作例程
例程位于01_network/test-ethernet/main.cpp。
3.1 例程源碼
以下代碼展示了設置eth0的ip地址、DNS、網關參數的使用案例,供用戶編碼參考:
int main() { // 加載YAML文件 YAML::Node config = YAML::LoadFile("/etc/netplan/50-eth0-init.yaml"); // =====================修改eth0的參數========================== //把DHCP禁用 config["network"]["ethernets"]["eth0"]["dhcp4"] = "false"; // 修改eth0的IP地址 //方式1:固定寫入第一個位置 config["network"]["ethernets"]["eth0"]["addresses"][0] = "192.168.1.170/24"; //方式2:追加插入 // 輸入 IP 地址和子網掩碼 std::string eth0_ip_str = "192.168.1.171"; std::string eth0_mask_str = "255.255.255.0"; std::string eth0_cidr = mask_transition_cidr(eth0_ip_str, eth0_mask_str); //config["network"]["ethernets"]["eth0"]["addresses"].push_back(eth0_cidr); // 修改eth0的DNS地址 YAML::Node addresses_eht0_dns = YAML::Load("[8.8.8.8,8.8.4.4]");//[8.8.8.8, 8.8.4.4]這是一個序列,需要轉換 config["network"]["ethernets"]["eth0"]["nameservers"]["addresses"] = addresses_eht0_dns; // 修改eth0的routes地址 config["network"]["ethernets"]["eth0"]["routes"][0]["to"] = "0.0.0.0/0"; config["network"]["ethernets"]["eth0"]["routes"][0]["via"] = "192.168.1.1"; config["network"]["ethernets"]["eth0"]["routes"][0]["metric"] = "100"; #if 0 // =====================修改eth1的參數========================= config["network"]["ethernets"]["eth1"]["dhcp4"] = "false"; //方式1:固定寫入第一個位置 config["network"]["ethernets"]["eth1"]["addresses"][0] = "192.168.1.172/24"; //方式2:追加插入 //std::string eth1_ip_str = "192.168.1.171"; //std::string eth1_mask_str = "255.255.255.0"; //std::string eth1_cidr = mask_transition_cidr(eth1_ip_str,eth1_mask_str); //config["network"]["ethernets"]["eth1"]["addresses"].push_back(eth1_cidr); YAML::Node addresses_eht1_dns = YAML::Load("[8.8.8.8,8.8.4.4]"); config["network"]["ethernets"]["eth1"]["nameservers"]["addresses"] = addresses_eht1_dns; config["network"]["ethernets"]["eth1"]["routes"][0]["to"] = "0.0.0.0/0"; config["network"]["ethernets"]["eth1"]["routes"][0]["via"] = "192.168.1.1"; config["network"]["ethernets"]["eth1"]["routes"][0]["metric"] = "150"; #endif // ==============將修改后的YAML文檔寫回到文件中================== std::ofstream fout("/etc/netplan/50-eth0-init.yaml"); fout << config; fout.close(); // =======================重啟網卡=============================== system("sudo netplan generate"); system("sudo netplan apply"); return 0; }
-
瑞芯微
+關注
關注
27文章
708瀏覽量
53628 -
以太網通訊
+關注
關注
0文章
28瀏覽量
7508 -
EASY-EAI靈眸科技
+關注
關注
4文章
43瀏覽量
3429 -
RV1126B
+關注
關注
0文章
26瀏覽量
64
發布評論請先 登錄
瑞芯微RV1126B開發套件評測大賽正式開賽!
瑞芯微(EASY EAI)RV1126B 音頻輸入
【EASY EAI Nano-TB(RV1126B)開發板試用】+初識篇
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-燈閃
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈項目
【EASY EAI Nano-TB(RV1126B)開發板試用】命令行功能測試-shell腳本進行IO控制-紅綠燈按鈕項目
請問各位大佬,如何解決,瑞芯微 RV1126B 使用 mpp 自帶工具 調試時,內核直接報錯崩潰!
【EASY EAI Nano-TB(RV1126B)開發板試用】+1、開箱上電
RV1126系列選型指南:從RV1126到RV1126B,一文看懂升級差異
【免費試用】EASY EAI Nano-TB(RV1126B)開發套件評測
替代升級實錘!實測RV1126B,CPU性能吊打RV1126

瑞芯微(EASY EAI)RV1126B以太網通訊
評論