[Share Experiences] 试用UEFI直接引导内核+去除开机跑日志
Tofloor
poster avatar
jiandanlangman
deepin
2023-01-19 05:13
Author

deepin 20.8可以直接按照本文来,其它版本仅供参考

做这个的原因就是这辈子再也不想看见grub了,看见就想吐,索性跳过grub直接引导内核,还能稍微加快一下开机速度,附开机速度:

afadf832c7081de677aa6116492967c8.jpg

对于deepin这个开机过程,我真的没脸在公共场合开机,丢中国人的脸。你看看隔壁其它家Linux,无闪烁(flicker-free)启动几年前就支持了,开机显示OEM Logo + 自己的LOGO,然后就直接金登录了,整个开机非常流畅,而deepin呢,这开机又是闪屏又是跑日志的,整个grub你也整不好,主题样式时有时无,字体时大时小,Windows 95开机都比你顺畅

进入正题:

  1. 找到你当前正在使用的内核,找到vmlinuz开头和initrd.img开头的文件,如果有多个内核这两个文件后面的版本号必须一致

  1. 将内核文件拷贝到指定目录
sudo mkdir /boot/efi/EFI/kernel
sudo cp /boot/initrd.img-5.18.17-amd64-desktop-community-hwe /boot/efi/EFI/kernel/initrd.img
sudo cp /boot/vmlinuz-5.18.17-amd64-desktop-community-hwe /boot/efi/EFI/kernel/vmlinuz
  1. 查看当前根分区UUID,那一串xxx-xxx-xxx-xxx类型的就是分区UUID,后面有个斜杠表示当前挂载了的,deepin是rootAB分区不要选错了
lsblk -lf | grep Root
nvme0n1p3 ext4   1.0   Roota     252d37eb-6805-47ef-8b63-ad3110337b70  111.6G     6% /
nvme0n1p4 ext4   1.0   Rootb     11ade78f-8dc4-4f94-9f99-669eb8a51818
  1. 创建efi引导项,把下面命令中的252d37eb-6805-47ef-8b63-ad3110337b70替换成你自己在第三步看到的,命令中的loglevel=0可以去除开机屏幕上大量跑日志,如果喜欢跑日志的直接删掉这一段就行。-d /dev/nvme0n1只的是你系统在哪个硬盘上,参考参考第三步,我的是nvme0n1p3,所在的硬盘就是/dev/nvme0n1(去掉后面的p3)
sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Deepin (FastBoot)" -l '\EFI\kernel\vmlinuz' -u "root=UUID=252d37eb-6805-47ef-8b63-ad3110337b70 ro splash quiet loglevel=0 rootfstype=ext4 add_efi_memmap initrd=\\EFI\\kernel\\initrd.img"
  1. 查看引导
 efibootmgr 
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0000,0001,2001,2002,2003
Boot0000* Linpus lite
Boot0001* Windows Boot Manager
Boot0002* Deepin (FastBoot)
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network

  1. 这一步我也不知道是啥,但是不执行这一步BIOS中看不到启动项,0002就是上一步查看到的新增的启动项中Bootxxxx*后面的那一串数字
sudo efibootmgr -a -b 0002

然后重启系统,进入BIOS,设置Deepin(FastBoot)为第一启动项,关闭Secure Boot(一定要关闭,deepin这个辣鸡没有通过什么认证,它的内核UEFI会直接禁止加载)

如不出意外,你将顺利进入登录页面且不会看见Grub。

有两点需要注意:

  1. 内核更新时需要手动复制新内核进/boot/efi/EFI/kernel
  2. deepin是rootAB方案,当系统升级后,可能会挂载另一个root,启动项那里要更改下UUID
Reply Favorite View the author
All Replies
Amber
deepin
2023-01-19 05:30
#1

蛤,deepin开机闪屏跑日志?我没遇到过,反而我就像你说的别的Linux,oem logo+系统logo然后直接登录。GRUB主题也没出过问题

Reply View the author
miaoaaa
deepin
2023-01-19 06:02
#2

开机跑日志真没见过,开机动画有没有都无所谓,反正快不了几秒

Reply View the author
jiandanlangman
deepin
2023-01-19 06:40
#3
Amber

蛤,deepin开机闪屏跑日志?我没遇到过,反而我就像你说的别的Linux,oem logo+系统logo然后直接登录。GRUB主题也没出过问题

😂 那是你运气太好,我这电脑用deepin感觉开个机好困难啊,两年前20刚出来时就这样,问题太多放弃了,时隔两年,上次看到QQ Linux3.0发布了,就装上deepin试试,好家伙,两年前的问题到现在一个没少,这硬件应该不算新吧

微信截图_20230118223345.png

详细说一下这个开机过程,经常开不起机,每次阶段还不一样,有屏幕左上角显示一行字的(太小了实在看不清), 有grub 倒计时结束后界面除了一张壁纸啥都没有的(这种情况最多), 有显示deepin开机动画就卡主不动的,有deepin logo显示一半就卡住的,有卡在deepin logo画面还割裂的,估计有三分之一的几率进不去系统,每次开机就跟开盲盒一样,最奇葩的是出现这种情况强制重启进入桌面后,屏幕上会残留拯救者的LOGO,一闪一闪的,越来越淡,要闪个十几分钟才会自然消失。

周一早上10:30我有个会,10:20准备开机,它居然又进不去了,而且重试了十几次都进不去,卡在右上角一行小字那个阶段,无奈我换回windows了,开完会我打算看看它是个什么情况,结果它居然又正常开机了。。。。

Reply View the author
那一个夜晚
deepin
2023-01-19 07:16
#4
jiandanlangman

😂 那是你运气太好,我这电脑用deepin感觉开个机好困难啊,两年前20刚出来时就这样,问题太多放弃了,时隔两年,上次看到QQ Linux3.0发布了,就装上deepin试试,好家伙,两年前的问题到现在一个没少,这硬件应该不算新吧

微信截图_20230118223345.png

详细说一下这个开机过程,经常开不起机,每次阶段还不一样,有屏幕左上角显示一行字的(太小了实在看不清), 有grub 倒计时结束后界面除了一张壁纸啥都没有的(这种情况最多), 有显示deepin开机动画就卡主不动的,有deepin logo显示一半就卡住的,有卡在deepin logo画面还割裂的,估计有三分之一的几率进不去系统,每次开机就跟开盲盒一样,最奇葩的是出现这种情况强制重启进入桌面后,屏幕上会残留拯救者的LOGO,一闪一闪的,越来越淡,要闪个十几分钟才会自然消失。

周一早上10:30我有个会,10:20准备开机,它居然又进不去了,而且重试了十几次都进不去,卡在右上角一行小字那个阶段,无奈我换回windows了,开完会我打算看看它是个什么情况,结果它居然又正常开机了。。。。

joy

简单体验这些天,确实感觉deepin的稳定性和细节优化还有很大空间。

Reply View the author
安洛
deepin
2023-01-19 18:49
#5

linux内核不可能申请到secureboot的认证,微软不会为任何GPL协议的软件签发认证。deepin应该是通过shim实现的安全启动,和ubuntu是一个方案。

将内核放在efi分区直接引导不是一个很好的主意。很多稍微旧一点的电脑默认efi分区大小才50MB,最大的也不超过500MB,很容易塞不下内核。如果不希望使用grub引导,可以使用systemd-boot,反正横竖都要启动systemd。

Reply View the author
Amber
deepin
2023-01-20 05:18
#6
jiandanlangman

😂 那是你运气太好,我这电脑用deepin感觉开个机好困难啊,两年前20刚出来时就这样,问题太多放弃了,时隔两年,上次看到QQ Linux3.0发布了,就装上deepin试试,好家伙,两年前的问题到现在一个没少,这硬件应该不算新吧

微信截图_20230118223345.png

详细说一下这个开机过程,经常开不起机,每次阶段还不一样,有屏幕左上角显示一行字的(太小了实在看不清), 有grub 倒计时结束后界面除了一张壁纸啥都没有的(这种情况最多), 有显示deepin开机动画就卡主不动的,有deepin logo显示一半就卡住的,有卡在deepin logo画面还割裂的,估计有三分之一的几率进不去系统,每次开机就跟开盲盒一样,最奇葩的是出现这种情况强制重启进入桌面后,屏幕上会残留拯救者的LOGO,一闪一闪的,越来越淡,要闪个十几分钟才会自然消失。

周一早上10:30我有个会,10:20准备开机,它居然又进不去了,而且重试了十几次都进不去,卡在右上角一行小字那个阶段,无奈我换回windows了,开完会我打算看看它是个什么情况,结果它居然又正常开机了。。。。

这。。。我电脑比你老得多,你去看看我的帖就懂。梦幻台式机

Reply View the author
辉夜
deepin
2023-02-12 20:11
#7

用了这个方法后,如果无法开机,岂不是看不到报错?

grub有还原选项,还能还原吗?

Reply View the author
jiandanlangman
deepin
2023-02-12 20:19
#8
辉夜

用了这个方法后,如果无法开机,岂不是看不到报错?

grub有还原选项,还能还原吗?

当然能,这是添加新的启动项,如果出问题开不起机了,直接进入BIOS把原本的带grub的引导项放到第一位就行了

Reply View the author
tr******[email protected]
deepin
2023-02-13 19:05
#9

感受到了楼主的愤怒,哈哈哈

Reply View the author
满阶砌
deepin
2023-02-25 20:17
#10
安洛

linux内核不可能申请到secureboot的认证,微软不会为任何GPL协议的软件签发认证。deepin应该是通过shim实现的安全启动,和ubuntu是一个方案。

将内核放在efi分区直接引导不是一个很好的主意。很多稍微旧一点的电脑默认efi分区大小才50MB,最大的也不超过500MB,很容易塞不下内核。如果不希望使用grub引导,可以使用systemd-boot,反正横竖都要启动systemd。

deepin的源里没有这个包啊

Reply View the author
满阶砌
deepin
2023-02-25 21:05
#11

试了一下,确实有用,引导速度快了2s,不过限制我电脑开机速度的主要是firmware和userspace。

Reply View the author
满阶砌
deepin
2023-02-25 21:46
#12
满阶砌

试了一下,确实有用,引导速度快了2s,不过限制我电脑开机速度的主要是firmware和userspace。

因为我设置了Grub等待1s,实际上就快了1s。

Reply View the author
安洛
deepin
2023-02-26 06:58
#13
满阶砌

deepin的源里没有这个包啊

你说哪个……systemd-boot是包含在systemd里面的功能,shim应该是有相应的包的,但是包名不一定是这个。

Reply View the author
满阶砌
deepin
2023-07-08 20:11
#14
#!/bin/bash

# Create directory for kernel files
sudo mkdir /boot/efi/EFI/kernel

# List available kernel files in /boot directory
echo "Available kernel files:"
ls /boot | grep vmlinuz

# Prompt user to select kernel file
echo "Please enter the name of the kernel file:"
read kernel_file

# Copy selected kernel file to the new directory
sudo cp "/boot/$kernel_file" /boot/efi/EFI/kernel/vmlinuz

# List available initrd files in /boot directory
echo "Available initrd files:"
ls /boot | grep initrd.img

# Prompt user to select initrd file
echo "Please enter the name of the initrd file:"
read initrd_file

# Copy selected initrd file to the new directory
sudo cp "/boot/$initrd_file" /boot/efi/EFI/kernel/initrd.img

# List available root partitions
echo "Available root partitions:"
lsblk -lf | grep Root

# Prompt user to select root partition
echo "Please enter the UUID of the root partition:"
read root_partition

# Create EFI boot entry
sudo efibootmgr -c -d /dev/sda -p 1 -L "Deepin" -l '\EFI\kernel\vmlinuz' -u "root=UUID=$root_partition ro splash quiet loglevel=3 rootfstype=ext4 add_efi_memmap initrd=\\EFI\\kernel\\initrd.img"
chmod +x create_boot_entry.sh
sudo su
./create_boot_entry.sh
Reply View the author
阿顺呀
deepin
2023-09-02 05:46
#15

其实 修改grub配置文件 加个参数 也可以实现不跑日志开机,上面的关键点不在于用了efi直接引导内核

而是启动参数里面加了 loglevel=0 这个参数

在grub启动参数 加上之后也是一样的效果

image.png

加完之后 之下 sudo update-grub

Reply View the author
对方正在输入中
deepin
2023-12-07 05:13
#16

楼上正解 我试了好几次 你的s最好效果

Reply View the author
Suri
deepin
2024-10-22 22:03
#17

机革新机器,单系统,和楼主同样的情况,认为grub引导完全没必要,感谢楼主给的方案,完美解决!kissing_heart

Reply View the author