我的 Debian 11 附带了 Linux 内核版本 5.10。我想要一个更新的版本,所以我从以下位置下载了 5.15这里,提取 tar 文件,复制现有配置,运行make menuconfig
,然后运行make -j24
,然后运行sudo make install
。我也这么做了sudo update-grub
。但现在它每次启动时都会执行此操作。如果我在 grub 中选择旧内核,它可以正常启动。
该SPCP: Unexpected SPCR Access Width
消息在 5.10 中仍然出现(我仍然可以启动),所以我认为这并不重要。这样做update-initramfs -u
也没有帮助,它仍然给出这个错误。
我见过的大多数现有建议都说 UUID 是错误的,但旧内核可以正常启动,所以这让我认为启动分区没问题。如何修复此问题以便可以使用 5.15 内核成功启动?
这个问题表明这可能是由错误引起的,但我的内核版本(5.10,可以工作,5.15,失败)都比那里提到的新。
答案1
我最终让它发挥作用。首先,我安装了依赖项:
$ sudo apt-get update && sudo apt-get install libncurses-dev flex bison libelf-dev bc dwarves binutils binutils-dev -y
接下来,我为内核创建一个文件夹 ( ~/kernel
)。我进入该文件夹,下载了 5.15 内核的 tarball:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.13.tar.xz
然后我进入 tarball ( ) 中的文件夹cd linux-5.15.13/
。我从 5.10 内核中获取了旧配置并重新使用它:
$ cat /boot/config-5.10.0-10-amd64 > .config
运行菜单配置:
$ make menuconfig -j24
我下去并禁用Enable loadable module support
(使用箭头键导航到它,然后按,这样旁边的框中就Space不再有)。*
另外,导航到Cryptographics API -> Certificates for Signature Checking
,并在显示 的位置Additional X.509 keys for default system keyring
确保其为空。默认情况下,对我来说,它说debian/certs/debian-uefi-certs.pem
。确保该字段为空。然后,保存(使用文件名.config
)并退出该menuconfig
工具。
然后我编译了内核。请记住使用 来执行此操作sudo
。不然以后就不行了。
$ sudo make -j24
然后安装它(记住sudo
也用于此目的):
$ sudo make install -j24
它可能会给出一些警告,但您可以忽略它们。现在就做吧sudo update-grub
。重启一下,就可以了!
分辨率发生了变化,所以我最终将其放在文件末尾/etc/default/grub
来修复它。请注意,模式 ( 0x031b
) 对您来说可能会有所不同,因此请使用它sudo hwinfo --framebuffer
来确定分辨率选项。您可能需要执行以下操作sudo apt-get update && sudo apt-get install hwinfo
才能安装它。
GRUB_GFXMODE=0x031b,1280x1024x24,auto
GRUB_GFXPAYLOAD_LINUX=keep
如果您更改了如上所示的分辨率,请sudo update-grub
重新启动以使用这些新设置。