Debian 9 修改GRUB默认启动内核

本文详细介绍了在Debian系统中遇到systemd更新导致的问题时,如何通过修改grub配置文件来降级内核版本,包括查看启动顺序、修改默认内核设置以及更新grub配置的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

debian testing 更新掉进systemd-240的坑里了
重启开机Missing modules (cat /proc/modules; ls /dev), 找不到硬盘.
只能降到systemd-239或者降内核.
想想还是降内核方便, 记录下修改步骤.

1. 查看当前内核的启动顺序

$ cat /boot/grub/grub.cfg

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default=0
fi

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
	set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
	load_video
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  d689cedc-8dc2-4ebb-919f-fe47b628db44
	else
	  search --no-floppy --fs-uuid --set=root d689cedc-8dc2-4ebb-919f-fe47b628db44
	fi
	echo	'Loading Linux 4.19.0-1-amd64 ...'
	linux	/boot/vmlinuz-4.19.0-1-amd64 root=UUID=d689cedc-8dc2-4ebb-919f-fe47b628db44 ro  quiet
	echo	'Loading initial ramdisk ...'
	initrd	/boot/initrd.img-4.19.0-1-amd64
}
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
	menuentry 'Debian GNU/Linux, with Linux 4.19.0-1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-1-amd64-advanced-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  d689cedc-8dc2-4ebb-919f-fe47b628db44
		else
		  search --no-floppy --fs-uuid --set=root d689cedc-8dc2-4ebb-919f-fe47b628db44
		fi
		echo	'Loading Linux 4.19.0-1-amd64 ...'
		linux	/boot/vmlinuz-4.19.0-1-amd64 root=UUID=d689cedc-8dc2-4ebb-919f-fe47b628db44 ro  quiet
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-4.19.0-1-amd64
	}
	menuentry 'Debian GNU/Linux, with Linux 4.19.0-1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-1-amd64-recovery-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  d689cedc-8dc2-4ebb-919f-fe47b628db44
		else
		  search --no-floppy --fs-uuid --set=root d689cedc-8dc2-4ebb-919f-fe47b628db44
		fi
		echo	'Loading Linux 4.19.0-1-amd64 ...'
		linux	/boot/vmlinuz-4.19.0-1-amd64 root=UUID=d689cedc-8dc2-4ebb-919f-fe47b628db44 ro single 
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-4.19.0-1-amd64
	}
	menuentry 'Debian GNU/Linux, with Linux 4.18.0-3-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-3-amd64-advanced-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  d689cedc-8dc2-4ebb-919f-fe47b628db44
		else
		  search --no-floppy --fs-uuid --set=root d689cedc-8dc2-4ebb-919f-fe47b628db44
		fi
		echo	'Loading Linux 4.18.0-3-amd64 ...'
		linux	/boot/vmlinuz-4.18.0-3-amd64 root=UUID=d689cedc-8dc2-4ebb-919f-fe47b628db44 ro  quiet
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-4.18.0-3-amd64
	}
	menuentry 'Debian GNU/Linux, with Linux 4.18.0-3-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-3-amd64-recovery-d689cedc-8dc2-4ebb-919f-fe47b628db44' {
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos1'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  d689cedc-8dc2-4ebb-919f-fe47b628db44
		else
		  search --no-floppy --fs-uuid --set=root d689cedc-8dc2-4ebb-919f-fe47b628db44
		fi
		echo	'Loading Linux 4.18.0-3-amd64 ...'
		linux	/boot/vmlinuz-4.18.0-3-amd64 root=UUID=d689cedc-8dc2-4ebb-919f-fe47b628db44 ro single 
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-4.18.0-3-amd64
	}
}

2. 修改grub文件

假设要修改为4.18.0-3内核启动, 修改文件文件/etc/default/grub

$ sudo vim /etc/default/grub
GRUB_DEFAULT=0 修改为
GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 4.18.0-3-amd64"

其中Advanced options for Debian GNU/Linux是一级菜单,Debian GNU/Linux, with Linux 4.18.0-3-amd64是二级菜单, 中间用>连接.

3. 更新修改后的grub

sudo update-grub

这时候重新cat /boot/grub/grub.cfg 可以看到已经更新了.

重启后, 用uname -r也可以看到当前使用的内核.

Debian系统中,如果在安装过程中没有看到GRUBGrub Boot Loader)引导菜单,这通常意味着安装过程中可能没有正确配置启动加载程序。以下是可能出现这种情况的一些原因和解决步骤: 1. **默认引导方式**: Debian有时会选择其他引导方式,如Linux内核的`boot-loader`机制,而不是GRUB。你可以检查 `/etc/default/grub` 文件,确认 `GRUB_ENABLE_CHEESEGRADER` 是否设置为 `true` 或者 GRUB是否被手动禁用。 2. **分区管理**: 检查磁盘分区是否包含了用于GRUB安装的交换分区和EFI系统的挂载点(通常是 `/boot/efi`)。如果没有,你需要创建并格式化这些分区。 3. **安装期间的引导选项**: 如果是全新安装,可能在安装过程中没有选择将GRUB安装到所有驱动器。在这种情况下,你需要手动添加GRUB支持,比如通过运行 `sudo update-grub`。 4. **安装问题**: 安装过程中可能存在软件包依赖缺失或安装错误,可以尝试卸载并重新安装GRUB及其依赖,例如 `sudo apt-get remove --purge grub-pc && sudo apt-get install grub-pc grub-pc-bin grub-common`. 5. **GRUB配置**:检查 /boot/grub/grub.cfg 文件是否存在,内容是否完整。如果没有,需要手动创建或修复它。 6. **BIOS设置**:确保BIOS或UEFI设置里已经指定了GRUB为首选启动项。有些主板可能会有特定的BIOS设置用于选择引导设备。 如果你遇到这样的问题,建议重启计算机,进入安全模式,然后按照上述步骤逐步排查。如果还是无法解决问题,可以尝试寻求专业的技术支持或论坛帮助。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值