溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux系統(tǒng)如何獲取默認(rèn)MAC地址

發(fā)布時(shí)間:2022-01-26 17:16:13 來(lái)源:億速云 閱讀:399 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章跟大家分析一下“Linux系統(tǒng)如何獲取默認(rèn)MAC地址”。內(nèi)容詳細(xì)易懂,對(duì)“Linux系統(tǒng)如何獲取默認(rèn)MAC地址”感興趣的朋友可以跟著小編的思路慢慢深入來(lái)閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“Linux系統(tǒng)如何獲取默認(rèn)MAC地址”的知識(shí)吧。

Linux系統(tǒng)中如何獲取默認(rèn)的MAC地址?在嵌入式學(xué)習(xí)中避免不了接觸MAC地址。

MAC地址簡(jiǎn)介:

  • MAC(Media Access Control或者M(jìn)edium Access Control)地址是固化在網(wǎng)卡上串行EEPROM中的物理地址,通常有48位長(zhǎng),用來(lái)定義網(wǎng)絡(luò)設(shè)備的位置,用來(lái)表示互聯(lián)網(wǎng)上每一個(gè)站點(diǎn)的標(biāo)識(shí)符,采用十六進(jìn)制數(shù)表示。

  • 在OSI模型中,第三層網(wǎng)絡(luò)層負(fù)責(zé) IP地址,第二層數(shù)據(jù)鏈路層則負(fù)責(zé) MAC地址。

  • 因此一個(gè)主機(jī)會(huì)有一個(gè)MAC地址,而每個(gè)網(wǎng)絡(luò)位置會(huì)有一個(gè)專屬于它的IP地址。任何一個(gè)網(wǎng)絡(luò)設(shè)備(例如網(wǎng)卡、路由器)一旦生產(chǎn)出來(lái)以后,其MAC地址永遠(yuǎn)唯一且不能由用戶改變。

  • 形象來(lái)說,MAC地址就好像我們的身份證號(hào)碼,具有全球唯一性。

Linux系統(tǒng)獲取默認(rèn)MAC地址方法:

一、適用范圍

這里主要介紹讀取網(wǎng)卡MAC地址的方法,適用于EasyARM-i.MX287A開發(fā)套件,其應(yīng)用原理及配套示例也適用于下表1.1所列出的產(chǎn)品型號(hào)。

  Linux系統(tǒng)如何獲取默認(rèn)MAC地址

二、原理介紹

MAC(Media Access Control,介質(zhì)訪問控制)是用來(lái)定義網(wǎng)絡(luò)設(shè)備的位置。用來(lái)表示互聯(lián)網(wǎng)上每一個(gè)站點(diǎn)的標(biāo)識(shí)符,采用十六進(jìn)制數(shù)表示,共六個(gè)字節(jié)(48位)。其中,前三個(gè)字節(jié)是由IEEE的注冊(cè)管理機(jī)構(gòu)RA負(fù)責(zé)給不同廠家分配的代碼(高位24位),也稱為“編制上唯一的標(biāo)識(shí)符”(Organizationally Unique Identifier),后三個(gè)字節(jié)(低位24位)由各廠家自行指派給生產(chǎn)的適配器接口,稱為擴(kuò)展標(biāo)識(shí)符(唯一性)。一個(gè)地址塊可以生成2^24個(gè)不同的地址。MAC地址實(shí)際上就是適配器地址或適配器標(biāo)識(shí)符。MAC具有全球唯一性。

“網(wǎng)卡的默認(rèn)MAC”是廣州致遠(yuǎn)電子股份有限公司針對(duì)Awork開發(fā)套件和M283、M287工控核心板開發(fā)的一項(xiàng)功能,通過芯片的OTP來(lái)存儲(chǔ)網(wǎng)卡MAC地址,我公司出廠的核心板和開發(fā)套件的MAC地址的前兩個(gè)字節(jié)固定為“0x00”,“0x04”,后四個(gè)字節(jié)保存在OTP中,本文檔主要描述了如何通過操作OTP來(lái)讀取網(wǎng)卡MAC地址。

在內(nèi)核配置OTP選項(xiàng),編譯出的內(nèi)核啟動(dòng)后,在文件系統(tǒng)中會(huì)導(dǎo)出OTP設(shè)備文件,通過操作這些設(shè)備文件來(lái)讀取信息??梢詫⒁呀?jīng)注冊(cè)的網(wǎng)卡MAC信息首先固化到OTP中,在應(yīng)用層就可以讀取。MAC0地址的低4位可以通過設(shè)備文件“/sys/fsl_otg/SBK0”讀取,MAC1地址的低4位可以通過設(shè)備文件“/sys/fsl_otg/SBK1”讀取。

注意:如果使用的是M287、M283工控板,不需要配置內(nèi)核。

三、技術(shù)實(shí)現(xiàn)

內(nèi)核編譯

1.配置內(nèi)核

進(jìn)入linux-2.6.35.3目錄。執(zhí)行make menuconfig配置內(nèi)核。配置步驟如下:

 sok@zlgmcu:~$ cd linux-2.6.35.3/
 sok@zlgmcu:~/linux-2.6.35.3$ make menuconfig

按回車鍵,進(jìn)入Device Drivers選項(xiàng),如下圖1所示。 Linux系統(tǒng)如何獲取默認(rèn)MAC地址

  圖1內(nèi)核配置

  按回車鍵,進(jìn)入Chracter devices選項(xiàng)。如下圖2所示。 Linux系統(tǒng)如何獲取默認(rèn)MAC地址

  圖2內(nèi)核配置

  按空格鍵,選擇 Freescale On-Chip OTP Memory Support選項(xiàng),如圖3 內(nèi)核配置圖3所示。

Linux系統(tǒng)如何獲取默認(rèn)MAC地址

  圖3內(nèi)核配置

  按回車鍵,保存退出。

2.編譯內(nèi)核

在當(dāng)前目錄下執(zhí)行如下命令編譯內(nèi)核,參考命令如下:

 vmuser@Linux-host:~/ linux-2.6.35.3$ make clean
 vmuser@Linux-host:~/ linux-2.6.35.3$ make uImage

內(nèi)核固件位于“arch/arm/boot/uImage”,將生成的內(nèi)核固件通過TF卡燒寫到NANDFlash。

四、讀取MAC實(shí)操

下面介紹讀取網(wǎng)卡MAC操作過程,其實(shí)質(zhì)是操作OTP設(shè)備文件。

執(zhí)行MAC腳本文件

將本文檔目錄下MAC.sh文件通過U盤或TF卡拷貝到EasyARM-i.MX287A開發(fā)套件,修改文件權(quán)限為可執(zhí)行權(quán)限,參考命令如下:

 root@EasyARM-iMX28x ~# chmod 777 MAC.sh
 root@EasyARM-iMX28x ~# ./MAC.sh

執(zhí)行后,查看網(wǎng)絡(luò)設(shè)備,MAC如圖5所示。

  Linux系統(tǒng)如何獲取默認(rèn)MAC地址

 圖5網(wǎng)絡(luò)設(shè)備圖

查看“/sys/fsl_otp/HW_OCOTP_SRK1”和“/sys/fsl_otp/HW_OCOTP_SRK0”設(shè)備。可以發(fā)現(xiàn),網(wǎng)卡MAC低4位其實(shí)就是保存在OTP中的值,如圖6所示。

Linux系統(tǒng)如何獲取默認(rèn)MAC地址

 圖6 OTP讀取圖

關(guān)于Linux系統(tǒng)如何獲取默認(rèn)MAC地址就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識(shí),請(qǐng)大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI