Debian

/etc/fstab 內容似乎是錯誤的,但它們不是

  • December 5, 2020

我手動創建了分區,在適當的分區中複製了一個 rootfs,chroot編輯到 rootfs,安裝了一個核心和 Grub,就像我之前做的一百萬次一樣。我完全使用與目前主機相同的磁碟佈局和引導過程(沒有從“scratch”創建 rootfs)。

目前的問題是引導過程掛起

A start job is running for ...some-UUID-beginning...73
A start job is running for ...some-UUID-beginning...67

消息,然後引導失敗並且存在救援外殼。系統是 Debian Buster,最初創建時使用:

sudo lxc-create -n erik3 -t debian -- -r buster

磁碟佈局為:

NAME                FSTYPE      FSVER    LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sdc                                                                                                  
├─sdc1              ext2        1.0            fe2cfe8c-28d3-455c-961e-b586cf763367    224.8M    17% /mnt/zencefil-root-rootfs/boot
└─sdc2              crypto_LUKS 2              32d6e3b6-1e75-4d40-86c2-5a8853996e73                  
 └─zencefil_crypt  LVM2_member LVM2 001       ttASfx-WjIt-tuhW-AjRN-6tiJ-dnuI-AU8GgN                
   ├─zencefil-swap swap        1              286b4d65-5ca6-4453-b904-6d56749fed0f                  
   └─zencefil-root btrfs                      655c3de0-2963-46d1-bc0f-a6a8690632ad    896.1G     3% /mnt/zencefil-root

當我輸入我的 root 密碼來檢查情況時,我注意到註釋掉一些必要的行/etc/fstab(並重新啟動)仍然不會阻止啟動掛起 1 分 30 秒,但可以讓系統正確啟動。

我仔細檢查了/etc/fstab文件的內容,它必須是正確的:

/dev/mapper/zencefil-root /               btrfs        subvol=rootfs,rw,noatime       0       1
##UUID=fe2cfe8c-28d3-455c-961e-b586cf763367     /boot   ext2    defaults,noatime        0       2
###/dev/mapper/zencefil-root /mnt/zencefil-root       btrfs        subvolid=5,rw,noatime       0       1
tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777,size=512M 0 0

##...###...行是必需的,但將它們註釋掉會讓系統在 1 分 30 秒後顯示登錄螢幕)

中甚至沒有錯別字fstab。這是證明:

grep "^##\w" /etc/fstab | sed -e 's/^##//' \
       | awk '{print "mount " $1 " " $2 " -t " $3 " -o " $4}' \
       | xargs -L 1 -I {} sh -c "echo {}; {}"

上面的腳本解析fstab文件的 line ##...,構造一個mount ...命令並執行它,這反過來又成功了:

mount UUID=fe2cfe8c-28d3-455c-961e-b586cf763367 /boot -t ext2 -o defaults,noatime
root@erik3:~# mount | grep boot
/dev/sda1 on /boot type ext2 (rw,noatime)

但是,將同一行未註釋掉/etc/fstab並不會安裝/boot. 為什麼?

... / ...中的/etc/fstab行使/分區安裝在rw. 正如預期的那樣,註釋掉該行會導致/分區掛載ro(最初由 initrd 執行)。所以/etc/fstab文件是絕對的。

顯示“A start job is running…”消息的子系統是什麼?

事實證明,使用 LXC 創建的 rootfs 不適合創建實際安裝。我們應該multistrap改用。

multistrap-helpers@2ada86fd提供了完全產生上述問題的步驟。如果您使用 multistrap 創建 rootfs,則install-to-disk說明可以完美執行。如果您使用 來創建 rootfs,則會出現lxc-create該問題。

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