从零开始学习 sg200x 多核开发之 eth0 MAC 地址修改

在 sophpi 中,默认网卡 eth0 的 MAC 地址未配置,是随机生成的。这样就会导致每次重启之后,MAC 地址会改变,从而导致通过 DHCP 获取 IP 地址每次也都在变化。

查看 MAC 地址

前文提到 eth0 自动使能并通过 DHCP 获取 IP 地址,因此需要修改默认的 MAC 地址,使其固定。

  1. 通过 ifconfig -a 命令查看当前 MAC 地址
shell 复制代码
[root@sg200x]~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr BA:81:1D:4E:E2:96  
          inet addr:192.168.31.157  Bcast:192.168.31.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:24384 (23.8 KiB)  TX bytes:6610 (6.4 KiB)
          Interrupt:22 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1056 (1.0 KiB)  TX bytes:1056 (1.0 KiB)

ifconfig 是传统的 GNU/Linux 下的网络配置工具。只需执行 ifconfig 就可以看到当前系统已经启动的网卡。其中 lo 是回环设备,指代本机,eth 开头的是有线以太网设备,wlan 开头的是无线网络设备,

可使用 ifconfig -a 查看所有网卡,包括未启动的网卡,而 ifconfig 只能查看已启动的网卡。

shell 复制代码
[root@sg200x]~# ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[root@sg200x]~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 2A:95:EC:D1:D6:CA  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

也可使用通过 cat /sys/class/net/eth0/address 命令查看 MAC 地址。

修改 MAC 地址

临时修改

shell 复制代码
$ ifconfig eth0 down
$ ifconfig eth0 hw ether 00:12:34:56:78:9a
$ ifconfig eth0 up 

这种方法修改 MAC 地址,重新启动主机系统后,MAC 地址会自动还原。

永久修改

编辑 /etc/network/interfaces 文件,

shell 复制代码
$ vi /etc/network/interfaces 

# 添加这一行
$ pre-up ifconfig eth0 hw ether 78:01:B3:FC:E8:55

保存退出,重启系统,MAC 地址修改成功。

再次查看 MAC 地址,发现已经修改成功。

shell 复制代码
[root@sg200x]~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 78:01:B3:FC:E8:55  
          inet addr:192.168.31.222  Bcast:192.168.31.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3022 (2.9 KiB)  TX bytes:1870 (1.8 KiB)
          Interrupt:22 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1056 (1.0 KiB)  TX bytes:1056 (1.0 KiB)

相关命令

ifconfig

ifconfig 是一个用于配置网络接口的命令行工具。它可以用于查看、启动、停止和配置网络接口,包括设置 IP 地址、子网掩码、广播地址、MAC 地址等。

ifconfig -a 命令用于显示所有网络接口的信息,包括那些当前未激活的接口。这个命令会列出所有网络接口的详细信息,包括硬件地址、IP 地址、子网掩码、广播地址等。

pre-up

在 Linux 的网络接口配置文件中,pre-up 是一个关键字,它指的是在网络接口被激活(即 up)之前应执行的命令或脚本。

这些命令通常用于在接口真正启动前做一些准备工作,比如设置硬件地址、加载模块或者进行其他一些必要的配置调整。

pre-up 指令通常出现在 /etc/network/interfaces 或者类似配置文件中,用来确保某些操作先于接口激活完成。

例如: pre-up ifconfig eth0 hw ether MAC-ADDRESS 这样的行会在 eth0 接口被激活之前,使用 ifconfig 命令来修改该接口的硬件地址(MAC 地址)为指定的 MAC-ADDRESS。

sync

在 Linux 系统中,sync 命令可以将所有未写的系统缓冲区写到磁盘中,包括已修改的 i-node、已延迟的块 I/O 和读写映射文件。这个命令在关机或重启前使用,以确保所有数据都被正确保存到硬盘上。

相关推荐
碎碎思9 小时前
走向开放硅:Baochip-1x 的 RISC-V MCU 架构与工程实践
单片机·嵌入式硬件·risc-v
信创天地2 天前
信创场景软件兼容性测试实战:适配国产软硬件生态,破解运行故障难题
人工智能·开源·dubbo·运维开发·risc-v
Eloudy2 天前
全文 -- Chapter 1. Introduction -- The RISC-V Instruction Set Manual: Volume II
risc-v·arch
飞凌嵌入式3 天前
全志T153处理器ARM+RISC-V的双核协作实测
arm开发·risc-v
timer_0173 天前
Anolis OS 23.4 发布:全面支持 RVA23 RISC-V 架构,强化安全与云原生生态
安全·架构·risc-v
lipWOFb8 天前
采用粒子群算法针对含分布式能源的IEEE 33节点配电网进行无功优化研究
risc-v
MounRiver_Studio8 天前
RISC-V IDE MRS2进阶分享(一):picolibc C标准库简介与使用
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio8 天前
RISC-V IDE MRS2使用笔记(十四):用户反馈功能
ide·mcu·risc-v·嵌入式开发
MounRiver_Studio8 天前
RISC-V IDE MRS2进阶分享(二):远程调试功能
ide·mcu·risc-v·嵌入式开发
高新打工人9 天前
RISC-V(四):RV32F(RISC-V 32 位单精度浮点扩展指令集)
risc-v·rv32f