我刚刚安装tree
通过
sudo apt-get install tree
我的终端突然决定更新grub
。上周我安装了tree
,也发生了类似的事情。然而,当我那天晚上晚些时候重新启动电脑时,它启动到一个显示窗口
Grub _
并没有改变。
最终我重新安装了我的操作系统(我使用的是 WattOS,上周二刚刚将其安装在一台新电脑上,所以这并不是世界末日 - 只需 5 个小时即可重新设置所有内容)。
Grub 安装时出现了一些错误,我依稀记得上次看到过这些错误(包含在我的帖子的底部,以便于阅读)。
我用谷歌搜索了一下:
- 为什么tree要更新grub?
- 为什么 grub 升级/更新?
但我没有任何运气。我怀疑我可能遗漏了一些东西。
谁能解释一下:
- 为什么会发生这种情况
- 这是否意味着有什么问题
- 如果我应该/可以做任何事情来解决它。
我不想重新安装所有东西(出于显而易见的原因!)
谢谢。
安装时遇到的错误tree
:
sudo apt-get install tree
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
gimp-data libamd2 libbabl-0.1-0 libcamd2 libccolamd2 libcholmod3 libgegl-0.4-0 libgegl-common libgexiv2-2 libgimp2.0 libhpmud0 libimagequant0
libmetis5 libqt5designer5 libqt5help5 libqt5sql5 libqt5sql5-sqlite libqt5test5 libsane-hpaio libumfpack5 printer-driver-hpcups
printer-driver-postscript-hp python3-dbus.mainloop.pyqt5 python3-notify2 python3- olefile python3-pexpect python3-pil python3-ptyprocess
python3-pyqt5 python3-pyqt5.sip python3-renderpm python3-reportlab python3-reportlab- accel vlc-plugin-samba xsane xsane-common
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
tree
0 upgraded, 1 newly installed, 0 to remove and 174 not upgraded.
1 not fully installed or removed.
Need to get 49.6 kB of archives.
After this operation, 118 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main amd64 tree amd64 1.8.0-1+b1 [49.6 kB]
Fetched 49.6 kB in 0s (110 kB/s)
Selecting previously unselected package tree.
(Reading database ... 123032 files and directories currently installed.)
Preparing to unpack .../tree_1.8.0-1+b1_amd64.deb ...
Unpacking tree (1.8.0-1+b1) ...
Setting up grub-pc (2.06-3~deb11u6) ...
Installing for i386-pc platform.
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
Generating grub configuration file ...
Found background: /usr/share/wattOS/splash.png
Found background image: /usr/share/wattOS/splash.png
Found linux image: /boot/vmlinuz-5.10.0-19-amd64
Found initrd image: /boot/initrd.img-5.10.0-19-amd64
Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Found Debian GNU/Linux 11 (bullseye) on /dev/mmcblk0p2 done Setting up tree (1.8.0-1+b1) ...
Processing triggers for man-db (2.9.4-2) ...
更新
我不小心重启了,我的电脑又死机了。然后我重新安装了 WattOS 作为我硬盘上唯一的操作系统,一切正常。我刚看到@eyoung100的回答,我就跑了
sudo apt upgrade
运行没有错误。
然后我跑了
sudo apt autoremove
进行到一半时,我看到了与上次相同的屏幕:
The grub-pc package is being upgraded. This menu allows you to select which devices you'd like grub-install to be automatically run for, if any.
Running grub-install automatically is recommended in most situations, to prevent the installed GRUB core image from getting out of sync with
GRUB modules or grub.cfg.
If you're unsure which drive is designated as boot drive by your BIOS, it is often a good idea to install GRUB to all of them.
Note: it is possible to install GRUB to partition boot records as well, and some appropriate partitions are offered here. However, this forces GRUB to use the blocklist mechanism, which makes it less reliable, and therefore is not recommended.
我没有选择“确定”,因为上次给了我错误。
当我然后在另一个终端尝试时
sudo apt upgrade
它的回应是
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 39623 (apt)
这并不奇怪。
我尝试使用 ctrl-c 和 ctrl-x 关闭该 shell,但都没有帮助。我可以关上窗户,但我很担心。
要求提供更多信息
- 的结果
sudo dmidecode -s bios-version
是
8GET38WW (1.15 )
- 的结果
sudo dmidecode -t 0 | grep UEFI
没什么。 (我想这意味着它不受支持)。
- 的结果
cpuid | less
是
bash: cpuid: command not found
我只能说这是一台联想Thinkpad L520,是翻新的,而且我没有更换CPU。 (不知道前任主人怎么样)。
- 的结果
sudo parted --list
是
Model: ATA ADATA SU630 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 231GB 231GB primary ext4 boot
2 231GB 240GB 9449MB primary linux-swap(v1)
我看不到任何关于fstype
或 的信息gpt
。
正如我所说,我尝试将其安装到已擦除的磁盘上。
感谢您的时间!
答案1
缩小错误范围
在我们担心之前,我看到很多事情需要注意grub
- (至少)26 个包需要删除。
- 174 个软件包需要升级。
- 正如 oldfred 的评论所暗示的那样,Grub 需要进行一些调查和可能的修复。
我们需要取消小步骤(1 和 2),以避免可能需要修复grub
两次。我喜欢做这些类型的答案,原因有两个:
- 我可以帮助 Linux 新用户了解在 Linux 中重新启动与在 Windows 中重新启动有很大不同。
- 作为一个新的 Linux 用户,我希望 OP 能够传授他的知识,就像我在这里所做的那样。
小事优先
仅通过查看输出片段,我就知道包管理器是 APT,是先进的封装工具。如果你需要的话,可以尝试一下mam apt
。
apt update && apt autoremove
- 应删除上面的 26 合 1。apt upgrade
- 应下载并安装 2 中提到的 174 个软件包(可能包括grub
)。这可能需要一段时间,具体取决于您的互联网连接。
笔记:升级可能会因OP在其问题中粘贴的相同错误而中止。我希望如此,但我们希望 174 个软件包集能够升级尽可能多的内容。如果升级中止,请继续 大象 然后重复步骤2
现在房间里的大象
奥德弗雷德,虽然他老了,但他是对的:
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
在我们能够可靠地确定安装类型之前,grub
我们需要满足一些条件(排名不分先后):
- 您的 BIOS/UEFI 版本:
sudo dmidecode -s bios-version
- UEFI 是否已开启/支持:
sudo dmidecode -t 0 | grep UEFI
- 您的CPU:
cpuid | less
- 您的分区列表和表类型:
sudo parted --list
为了grub-efi-amd64
工作,您必须具有 FAT32 的 ESP/EFI 分区类型和 64 位 CPU。项目符号 3 可以通过 google 搜索等,如下所示:家族 X 型号 Y CPU 是否为 64 位,其中 X 和 Y 是家族和型号行中的整数。项目符号 4 必须包含 EFI 分区的输出fstype: fat32
和表类型gpt
。第 2 项必须包含“支持”
从前面引用的错误来看,我假设您尝试将 grub 引导代码嵌入到根分区中,安装程序将其格式化为ext2
.如果OP使用整个磁盘进行安装,则grub
需要使用整个磁盘重新安装。无论 EFI 与否,此选项都有效。如果存在EFI分区,grub
只需在其中重新安装即可。请将上述 4 个项目符号的输出添加到您的问题中,我将使用适当的命令更新此答案。
更新
根据 OP 提供的更新dmidecode
,parted
我可以有把握地说这grub-pc
是正确的 grub 架构。由于OP选择只安装瓦特操作系统在机器上,我们可以使用以下命令安全地嵌入grub
整个硬盘的引导扇区:
sudo grub-install /dev/sda && sudo update-grub
sudo reboot
重新启动后,继续:apt update && apt-upgrade
如果grub
需要再次升级,只需在每次升级时发出上述命令(在大约 15 年的各种 Linux 发行版中,我认为我升级了grub
不到 10 次。这不是一个很常见的升级包在我看来)。
笔记:通过在命令中省略分区号grub-install
,我们已经告诉 grub 可以嵌入整个磁盘。
如果update-grub
失败(按顺序发出这些):
sudo grub-install /dev/sda
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot