/etc/fstab 內容似乎是錯誤的,但它們不是
我手動創建了分區,在適當的分區中複製了一個 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
該問題。