修改网卡为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-mkconfig或kernel-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