Linux
systemd 根據 ‘/proc/cmdline’ 掛載 ‘rootfs’
設置
我用 systemd 執行 Debian 8 (jessie/testing) amd64。
在包含 btrfs 文件系統的系統分區上,我確實具有以下佈局:
/dev/sda1 |-root |-root_snapshots/ |-snapshot#1 |-snapshot#2
為了從快照完全啟動,我現在必須更改子卷:
- 在 /etc/fstab
- 在 grub 控制台中(編輯模式)
開機時。
問題
對“/etc/fstab”的更改需要一個正在執行的系統——即來自快閃記憶體驅動器——我想要避免的
設想
假設某些東西真的壞了,我不得不從快照#1 啟動:
我寧願只更改 grub 控制台中的子卷,並將 rootfs 安裝在正確的子卷上(這裡:快照#1)。
如果 /etc/fstab 沒有變化,systemd 仍然會從 /etc/fstab 中指定的條目掛載 rootfs -> 產生要掛載的錯誤 rootfs
問題
- 是否可以告訴 systemd 從 ‘/proc/cmdline’ 的 ‘rootflags=subvol=’ 參數掛載 rootfs
- 或者是否有另一種解決方案來規避這個問題
我認為這可能會有所幫助。有一個 systemd 可以理解的核心命令行參數列表:http://www.freedesktop.org/software/systemd/man/kernel-command-line.html
有一個選項 fstab= 和 rd.fstab
接受一個布爾參數。預設為“是”。如果為“否”,則導致生成器忽略 /etc/fstab 中配置的任何掛載或交換。rd.fstab= 僅由初始 RAM 磁碟 (initrd) 支持,而 fstab= 由主系統和 initrd 支持。
因此,如果在 grub/grub2 中設置(我不知道您在使用什麼) root=/dev/required_dev fstab=no 它應該按預期啟動。