跳转至

修改网卡为eth0

传统方式

编辑vim /etc/default/grub

添加biosdevname=0 net.ifnames=0参数,如下:

GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline biosdevname=0 net.ifnames=0 rhgb quiet"

生成新的启动文件

grub2-mkconfig -o /boot/grub2/grub.cfg

新旧GRUB配置机制

在新内核版本的系统中,如Rocky9.6(目前只在这个版本验证了),系统已经使用了GRUB 2的一个新特性:BootLoaderSpec (BLS) 引导方式

传统GRUB和新的BLS方式在配置机制上有根本区别:

传统 GRUB 方式

  • 配置来源 :所有内核条目和参数都集中定义在 /boot/grub2/grub.cfg 一个文件里
  • 参数位置:参数直接写在 linux16 或 linux 命令行中。
  • 管理命令:修改 /etc/default/grub 后,运行 grub2-mkconfig 生成 grub.cfg

BootLoaderSpec (BLS) 方式

  • 配置来源:每个内核在 /boot/loader/entries/ 目录下有一个独立的 .conf 配置文件。
  • 参数位置:参数定义在 .conf 文件的 options 行,或由 /etc/kernel/cmdline 文件提供
  • 管理命令:修改 /etc/kernel/cmdline 或直接编辑 .conf 文件,运行 grub2-mkconfigkernel-install 更新

grub.cfg 里的 if [ -z "${kernelopts}" ]; then 这段代码的意思是:如果 kernelopts 变量为空,则使用后面 set kernelopts= 设置的默认值。但问题在于,真正的 kernelopts 很可能来自 .conf 文件,从而覆盖了这里的默认值

解决方案(两种方法)

方法一:设置未来内核的默认参数(一劳永逸)

为了让以后安装的所有新内核都自动获得这些参数,需要设置系统级的默认内核命令行

1.创建或编辑 /etc/kernel/cmdline 文件:

echo 'net.ifnames=0 biosdevname=0' | sudo tee /etc/kernel/cmdline

注意:这个文件通常只包含自定义的参数(如 net.ifnames=0),而不包含 root=UUID= 等核心参数。系统会自动将它们合并

2.为当前已安装的内核应用新配置(正在使用的)

sudo kernel-install add $(uname -r) /boot/vmlinuz-$(uname -r)

方法二:直接修改当前内核的BLS配置文件(最直接)

1.定位配置文件:进入BLS配置目录,找到对应当前新内核版本的配置文件。

ls -l /boot/loader/entries/

比如e92ed531fc27439e842e8e3bf509205d-5.14.0-611.11.1.el9_7.x86_64.conf文件

2.编辑配置文件

vim /boot/loader/entries/e92ed531fc27439e842e8e3bf509205d-5.14.0-611.11.1.el9_7.x86_64.conf

3.修改 options 行:找到以 options 开头的一行,在末尾添加 net.ifnames=0 biosdevname=0

options root=UUID=bcea5466-a552-4b6b-b10d-334befdc7536 ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M net.ifnames=0 biosdevname=0

修改后需重启系统验证