从零开始学习 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 和读写映射文件。这个命令在关机或重启前使用,以确保所有数据都被正确保存到硬盘上。

相关推荐
深圳市爱派派智能科技有限公司11 小时前
“进迭时空 RISC-V 集群服务器 CSB1-N10SPK3:10 节点 K3,600 TOPS 绿色算力“
运维·服务器·risc-v·k3·进迭时空·集群服务器
硅农程序猿13 小时前
芯片设计中的门级仿真(GLS):从零延迟验证到 SDF 时序反标
嵌入式硬件·硬件架构·risc-v·芯片
圆山猫1 天前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
圆山猫1 天前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v
hongmai6668884 天前
ESP32-C5-WROOM-1-N16R8:双频Wi-Fi 6与多协议融合,重新定义物联网连接新标准
笔记·嵌入式硬件·物联网·智能路由器·risc-v
国科安芯4 天前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器
java·开发语言·单片机·嵌入式硬件·算法·系统架构·risc-v
hongmai6668885 天前
乐鑫ESP32-C61-WROOM-1模组:Wi-Fi 6与蓝牙LE双模的RISC-V新选择
单片机·嵌入式硬件·risc-v
驱动探索者7 天前
RISC-V Local Interrupt 深度解析:从 CLINT 到 CLIC,再到 Zephyr 驱动实现
risc-v
weixin_727535627 天前
计算机组成原理:从晶体管到你面前这块屏幕的史诗之旅
risc-v
hongmai66688811 天前
ESP32-C61-WROOM-1-N8R2:Wi-Fi 6与RISC-V融合的中坚力量
人工智能·单片机·嵌入式硬件·物联网·智能家居·risc-v