Linux

systemd 根據 ‘/proc/cmdline’ 掛載 ‘rootfs’

  • March 12, 2015

設置

我用 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 它應該按預期啟動。

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