一、 前期准备

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地址是否已经生效。