我可以通过 grub 更新 Debian 吗?

我可以通过 grub 更新 Debian 吗?

更新 Debian 9(“Stretch”)后,我无法打开任何程序。我可以在 grub 上做些什么吗?甚至无法打开终端。

答案1

我将从字面上理解你的问题,而不是过多地讨论如何修复你的环境。我将解释如何到达终端。从那里您需要开始诊断问题并修复。当您更多地了解问题所在时,随时欢迎您过来提出新问题。


在尝试在 grub 中执行任何操作之前,请检查是否可以在没有 GUI 的情况下进入终端。在(非功能性)GUI 中,按ctrlalt5。 5 位于键盘顶行,而不是数字键盘。实际上大多数数字都可以使用,但 1 或 2 将是 GUI 本身。您可以使用ctrlalt1ctrlalt2根据运行 GUI 的终端返回 GUI 。

这是获取终端的最佳选择,因为所有内容都会根据您的需要进行安装。


使用 grub 进入命令提示符

如果您确实无法访问任何终端,那么“核心选项”就是直接启动到命令(bash)提示符。也就是说,假设您想使用 bash 命令行,您可以将 bash 设置为唯一的事情启动时运行。

为此,您需要打开系统电源,当 grub 菜单出现时,您可以快速按 停止它自动启动。然后选择您常用的启动选项并按e。这将为您提供菜单条目的配置。这可能看起来像这样:

load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8  cb015492-4ca4-4fae-a416-6d89443e4680
else
  search --no-floppy --fs-uuid --set=root cb015492-4ca4-4fae-a416-6d89443e4680
fi
echo    'Loading Linux 5.3.0-19-generic ...'
linux   /vmlinuz-5.3.0-19-generic root=UUID=ff6f177b-8261-4ea7-a088-bfbf7556c7b0 ro recovery nomodeset 
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-5.3.0-19-generic

浏览此配置以查找以 开头的行linux。然后小心地添加到该行的末尾:

linux   /vmlinuz-5.3.0-19-generic root=UUID=ff6f177b-8261-4ea7-a088-bfbf7556c7b0 ro recovery nomodeset init=/bin/bash

然后F10按开机键。


一旦你以这种方式进入命令提示符,你会发现很多东西没有像你通常期望的那样安装。 Root ( /) 将是只读的,并且您将没有/dev/ /sys /proc/run。可能还有其他未安装的东西,包括/boot/efi或其他分区。

# Mount / as RW 
mount -o remount,rw /

# Mount dev sys proc and run
mount -t devtmpfs devtmpfs /dev
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /run 

然后仔细阅读/etc/fstab以查找您可能需要的其他内容。例如,如果我输入,cat /etc/fstab我可以看到一个条目

# /boot was on /dev/sda8 during installation
UUID=cb015492-4ca4-4fae-a416-6d89443e4680 /boot           ext4    defaults        0       2

我可以 ...

mount UUID=cb015492-4ca4-4fae-a416-6d89443e4680 /boot

或者,更简单的输入是用于blkid查找设备:

blkid
/dev/mapper/ubuntu: UUID="ff6f177b-8261-4ea7-a088-bfbf7556c7b0" TYPE="ext4"
/dev/sda2: LABEL_FATBOOT="EFI" LABEL="EFI" UUID="2641-087E" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="27141f73-5de4-4785-8894-3c774fae7e79"
/dev/sda5: UUID="d7a0c72d-e9cc-49d6-8482-d08c5225d22d" LABEL="Ubuntu" TYPE="crypto_LUKS" PARTLABEL="Linux Home" PARTUUID="0fc32a26-808a-4f1c-8d15-3369da0b564b"
/dev/sda8: UUID="cb015492-4ca4-4fae-a416-6d89443e4680" TYPE="ext4" 

然后 ...

mount /dev/sda8 /booot

这足以让您进入工作命令行。之后,恐怕你必须解决这个问题并尝试找出问题所在。


最后的想法

如果这只是破坏您的 UI 的系统更新,那么您的个人资料设置可能与新升级的 UI 不兼容。作为预防措施,您可以将主目录移开并重新创建一个空目录,然后重新启动计算机。至少这样您就可以使用空白配置文件登录。

例如对于用户 philip:

cd ~/..
mv philip philip_old
mkdir philip
chown philip:philip philip
reboot

相关内容