客戶在使用啟揚板卡的過程中提出要求開發(fā)板支持網(wǎng)口熱插拔自動獲取ip地址的需求。
啟揚工程師了解到需求后快速確定了解決思路:
通過ifplugd工具監(jiān)聽網(wǎng)口熱插拔信息,并且執(zhí)行指定腳本,腳本中使用udhcpc工具自動獲取ip地址。
接下來將對操作過程進行介紹與分析。
編譯環(huán)境準備?
QIYANG
主機:ubuntu16.04
編譯器:arm-linux-gnueabihf-gcc,版本4.7
開發(fā)板環(huán)境:ARM32
1
移植libdaemon
因為ifplugd依賴libdaemon庫,所以我們需要先編譯daemon。
筆者這里選擇daemon的版本是官方git下來的版本,git鏈接如下:
git clone git://git.0pointer.de/libdaemon
git下來之后先執(zhí)行./bootstrap.sh腳本,此腳本會根據(jù)配置環(huán)境自動生成configure等編譯相關文件,生成之后配置
./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/libdaemon/build,
腳本執(zhí)行完成之后會檢查配置等,這里會出現(xiàn)一個報錯:
checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling
遇到這個報錯可以在之前配置的configure中加入ac_cv_func_setpgrp_void=yes,即可解決。
最后通過make && make install會將所需的lib以及include文件生成到build文件夾下。
注意:最后用file命令檢查一下文件架構,防止誤用X86的庫。
2
移植ifplugd
本次使用的編譯器是4.7版本,因為版本較低,所以ifplugd選擇的也是老版本——ifplugd-0.14.tar.gz。
編譯過程需要daemon的庫和頭文件,筆者為了方便直接將庫和頭文件放到編譯器的頭文件與庫中,準備完畢后直接解壓文件,
隨后配置./configure --host=arm-linux-gnueabihf --prefix=/home/ylook/Tools/ifplugd-0.14/build
這里會報lynx的錯誤,可直接在原先配置的configuer后添加“--disable-lynx”,就可解決,
即修改為./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/ifplugd-0.14/build/ --disable-lynx,;
此外還會報“ undefined reference to rpl_malloc”錯誤,解決方式是修改config.h.in,去掉其中的malloc。
配置完成后make && make install,同樣會在build目錄下生成我們需要的二進制文件。
注意:為了避免錯誤,最后依舊是用file命令檢查文件架構,確認采用的是否為arm架構。
3
配置相關環(huán)境
配置環(huán)境過程中,啟揚開發(fā)板需要daemon的庫文件以及編譯出來的ifplugd二進制文件。我們將daemon庫文件拷貝到/usr/lib下,二進制文件拷貝到/usr/sbin下,輸入ifplugd -h命令可以看到成功運行。
根據(jù)help信息,我們可以用以下兩個命令監(jiān)聽兩個網(wǎng)口:
ifplugd -i eth0 -r /etc/network/if.sh
ifplugd -i eth1-r /etc/network/if.sh
監(jiān)聽兩個網(wǎng)口并且執(zhí)行后面的腳本文件,如果你的文件系統(tǒng)里有/etc/network/interface文件,需要將里面的auto改為allow-hotplug。
而if.sh里面的內(nèi)容就是簡單的檢測并且dhcp。
最后我們可以將上面兩個命令設置開機自啟動,這樣就會自動up兩個網(wǎng)口,哪怕沒有插網(wǎng)線也是準備狀態(tài),當插入網(wǎng)線后就會自動獲取ip地址。
注意可能會出現(xiàn)延遲,可以稍等一下查看。
-
開發(fā)板
+關注
關注
25文章
5499瀏覽量
102131
發(fā)布評論請先 登錄
如何選擇可靠的熱插拔?連接器熱插拔防護等級詳解
android如何獲取本機ip地址及ip歸屬地
PCIe熱插拔機制介紹

熱插拔是什么意思
熱插拔電源是什么意思
熱插拔電源接口定義是什么
面向熱插拔應用的MOSFET


請問RW007 DHCP為什么獲取不到IP地址?
Banana Pi BPI-M4 Berry 開源硬件開發(fā)板以太網(wǎng)口和WiFi測試

評論