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

相关推荐
sinovoip1 天前
香蕉派开源社区联合进迭进空重磅打造: BPI‑SM10(K3-Com260) 和 K3 Pico‑ITX 计算机将于5月11日全球发货
人工智能·开源·risc-v
嵌入式小企鹅1 天前
RISC-V车规专委会成立、AI模型集中开源、半导体产能加速爬坡
人工智能·学习·ai·程序员·算力·risc-v·半导体
国科安芯1 天前
空间激光通信系统中抗辐射 MCU 芯片应用研究
单片机·嵌入式硬件·架构·risc-v·安全性测试
极创信息2 天前
信创领域五种主流CPU架构(X86 / ARM / RISC-V / MIPS / LoongArch)
java·arm开发·数据库·spring boot·mysql·软件工程·risc-v
嵌入式小企鹅3 天前
CPU需求变化、RISC-V安全方案、DeepSeek V4适配、太空算力动态
人工智能·驱动开发·华为·开源·算力·risc-v
国科安芯5 天前
商业航天与航空安全场景下抗辐射 MCU 选型、应用实践及发展趋势
单片机·嵌入式硬件·无人机·cocos2d·risc-v
国科安芯5 天前
空间辐射环境下抗辐射 MCU 可靠性机理及航空安全应用研究综述
单片机·嵌入式硬件·macos·无人机·cocos2d·risc-v
国科安芯5 天前
航空安全关键系统抗辐射 MCU 加固技术、工程实现与典型应用
单片机·嵌入式硬件·无人机·cocos2d·risc-v
Captain_Data6 天前
AI 12小时设计CPU完整解析:从219字到RISC-V内核的技术突破
人工智能·python·ai·大模型·芯片设计·risc-v
圆山猫7 天前
[RISCV] 用 Rust 写一个 RISC-V BootROM:从 QEMU 到真实硬件(2)
rust·risc-v