Debian

我可以通過 grub 更新 Debian 嗎?

  • December 7, 2019

更新 Debian 9 (‘Stretch’) 後,我無法打開任何程序。我可以在 grub 上做些什麼嗎?連終端都打不開。

我將按字面意思回答您的問題,而不是過多地討論如何修復您的環境。那就是我要解釋如何到達終端。從那裡您將需要開始診斷問題並修復。當您對問題有更多了解時,隨時歡迎您來提出新問題。


在您嘗試在 grub 中執行任何操作之前,請檢查您是否可以在沒有 GUI 的情況下訪問終端。在(非功能性)GUI 中,按ctrl``alt``5。那是鍵盤頂行的 5,而不是數字鍵盤。實際上大多數數字都可以,但 1 或 2 將是 GUI 本身。您可以使用ctrl``alt``1ctrl``alt``2取決於執行 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 /procand /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

引用自:https://unix.stackexchange.com/questions/555978