温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux系统如何获取默认MAC地址

发布时间:2022-01-26 17:16:13 来源:亿速云 阅读:406 作者:柒染 栏目:开发技术

这篇文章跟大家分析一下“Linux系统如何获取默认MAC地址”。内容详细易懂,对“Linux系统如何获取默认MAC地址”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux系统如何获取默认MAC地址”的知识吧。

Linux系统中如何获取默认的MAC地址?在嵌入式学习中避免不了接触MAC地址。

MAC地址简介:

  • MAC(Media Access Control或者Medium Access Control)地址是固化在网卡上串行EEPROM中的物理地址,通常有48位长,用来定义网络设备的位置,用来表示互联网上每一个站点的标识符,采用十六进制数表示。

  • 在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。

  • 因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。任何一个网络设备(例如网卡、路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。

  • 形象来说,MAC地址就好像我们的身份证号码,具有全球唯一性。

Linux系统获取默认MAC地址方法:

一、适用范围

这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287A开发套件,其应用原理及配套示例也适用于下表1.1所列出的产品型号。

  Linux系统如何获取默认MAC地址

二、原理介绍

MAC(Media Access Control,介质访问控制)是用来定义网络设备的位置。用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成2^24个不同的地址。MAC地址实际上就是适配器地址或适配器标识符。MAC具有全球唯一性。

“网卡的默认MAC”是广州致远电子股份有限公司针对Awork开发套件和M283、M287工控核心板开发的一项功能,通过芯片的OTP来存储网卡MAC地址,我公司出厂的核心板和开发套件的MAC地址的前两个字节固定为“0x00”,“0x04”,后四个字节保存在OTP中,本文档主要描述了如何通过操作OTP来读取网卡MAC地址。

在内核配置OTP选项,编译出的内核启动后,在文件系统中会导出OTP设备文件,通过操作这些设备文件来读取信息。可以将已经注册的网卡MAC信息首先固化到OTP中,在应用层就可以读取。MAC0地址的低4位可以通过设备文件“/sys/fsl_otg/SBK0”读取,MAC1地址的低4位可以通过设备文件“/sys/fsl_otg/SBK1”读取。

注意:如果使用的是M287、M283工控板,不需要配置内核。

三、技术实现

内核编译

1.配置内核

进入linux-2.6.35.3目录。执行make menuconfig配置内核。配置步骤如下:

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

按回车键,进入Device Drivers选项,如下图1所示。 Linux系统如何获取默认MAC地址

  图1内核配置

  按回车键,进入Chracter devices选项。如下图2所示。 Linux系统如何获取默认MAC地址

  图2内核配置

  按空格键,选择 Freescale On-Chip OTP Memory Support选项,如图3 内核配置图3所示。

Linux系统如何获取默认MAC地址

  图3内核配置

  按回车键,保存退出。

2.编译内核

在当前目录下执行如下命令编译内核,参考命令如下:

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

内核固件位于“arch/arm/boot/uImage”,将生成的内核固件通过TF卡烧写到NANDFlash。

四、读取MAC实操

下面介绍读取网卡MAC操作过程,其实质是操作OTP设备文件。

执行MAC脚本文件

将本文档目录下MAC.sh文件通过U盘或TF卡拷贝到EasyARM-i.MX287A开发套件,修改文件权限为可执行权限,参考命令如下:

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

执行后,查看网络设备,MAC如图5所示。

  Linux系统如何获取默认MAC地址

 图5网络设备图

查看“/sys/fsl_otp/HW_OCOTP_SRK1”和“/sys/fsl_otp/HW_OCOTP_SRK0”设备。可以发现,网卡MAC低4位其实就是保存在OTP中的值,如图6所示。

Linux系统如何获取默认MAC地址

 图6 OTP读取图

关于Linux系统如何获取默认MAC地址就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下亿速云网站!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI