一、 前期准备
1、如下图所示,使用ifconfig指令简单查看网卡信息,获取网卡名称和对应的mac地址。
2、root用户执行命令:ll /etc | grep ‘rc’;可以看到有下面这些文件
wzl@wzl-ThinkPad-T14-Gen-1:/$ ll /etc | grep 'rc'
-rw-r--r-- 1 root root 2319 6月 18 2020 bash.bashrc
-rw-r--r-- 1 root root 1748 2月 25 2020 inputrc
-rw-r--r-- 1 root root 9808 8月 14 2020 nanorc
drwxr-xr-x 2 root root 4096 2月 25 18:03 rc0.d/
drwxr-xr-x 2 root root 4096 2月 25 18:03 rc1.d/
drwxr-xr-x 2 root root 4096 8月 9 13:24 rc2.d/
drwxr-xr-x 2 root root 4096 8月 19 16:08 rc3.d/
drwxr-xr-x 2 root root 4096 8月 9 13:24 rc4.d/
drwxr-xr-x 2 root root 4096 8月 9 13:24 rc5.d/
drwxr-xr-x 2 root root 4096 2月 25 18:03 rc6.d/
drwxr-xr-x 2 root root 4096 2月 25 18:03 rcS.d/
-rw-r--r-- 1 root root 4942 7月 25 2019 wgetrc
其中 rc0~6.d 中的 0~6 代表运行级别:
0:系统停机(关机)模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机。
1:单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2:多用户模式,没有NFS网络支持。
3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式。
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5:图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如X Window系统。
6:重启模式,默认运行级别不能设为6,否则不能正常启动,就会一直开机重启开机重启。
3、常用下面的指令来临时改变系统的mac地址。
sudo ifconfig 网卡名称 down
sudo ifconfig 网卡名称 hw ether mac地址
sudo ifconfig 网卡名称 up
但是这种方法会在电脑重启后失效。为了解决这个问题,我们希望这三行指令可以在系统每一次启动时都被执行,这样就实现了永久性改变mac地址的目的(重装系统之后会失效,需要重新按照步骤操作一次)。我们可以创建一个bash程序,然后设置程序开机启动,具体操作:
在 /etc/init.d 目录下创建一个启动脚本(将命令放在里面)
然后增加它的可执行权限
最后设置 rcxx.d 到启动脚本的软连接
二、编写启动文件
启动文件示例如下,编辑之后保存(我设置的名字是:rclocal),保存在这个目录下(/etc/init.d/):
#!/bin/bash
sudo ifconfig down
sudo ifconfig enp0s31f6 hw ether 54:75:db:fc:3a:b8
sudo ifconfig enp0s31f6 up
三、给启动文件增加权限
打开启动文件所在目录/etc/init.d/,然后执行下面的命令,文件名要根据自己定义的修改:
chmod +755 rclocal
四、 设置软件连接
查看已有的软连接:ls /etc/rc3.d/
wzl@wzl-ThinkPad-T14-Gen-1:/$ ls /etc/rc3.d/
总用量 16
drwxr-xr-x 2 root root 4096 8月 19 16:08 ./
drwxr-xr-x 137 root root 12288 8月 9 13:24 ../
lrwxrwxrwx 1 root root 27 2月 25 18:00 K01speech-dispatcher -> ../init.d/speech-dispatcher*
lrwxrwxrwx 1 root root 15 2月 25 18:00 S01acpid -> ../init.d/acpid*
lrwxrwxrwx 1 root root 17 2月 25 18:00 S01anacron -> ../init.d/anacron*
lrwxrwxrwx 1 root root 16 2月 25 18:00 S01apport -> ../init.d/apport*
lrwxrwxrwx 1 root root 22 2月 25 18:00 S01avahi-daemon -> ../init.d/avahi-daemon*
lrwxrwxrwx 1 root root 24 2月 25 19:40 S01binfmt-support -> ../init.d/binfmt-support*
lrwxrwxrwx 1 root root 19 2月 25 18:00 S01bluetooth -> ../init.d/bluetooth*
可以发现在启动脚本前面都加了 “K数字”,或者 “S数字”,其中 K 表示 Kill 某个程序,S 表示 Start 某个程序,后面紧跟着的数字,表示启动/停止某个程序的顺序,数字越小的越先启动(数字的具体值可以自己根据情况自行设定)。
在这里我们设置软连接用的命令是(文件名需要根据实际情况改变):
ln -s /etc/init.d/rclocal /etc/rc3.d/S01rclocal
如此设置之后,开机重启,检查程序是否可以开机自动启动,检查网卡改动后的mac地址是否已经生效。
原作者:DMCF