簡體   English   中英

我如何在 Linux 上覆蓋根文件系統?

[英]How can I overlayfs the root filesystem on linux?

我正在使用overlayFS創建一種簡單的實驗性沙盒。 我想我明白它是如何工作的:

  • 下層應始終安裝 R/O
  • 上層是所有變化發生的地方
  • 工作層是出於交易原因
  • 目標是所有合並的 lower + upper去的地方

例如,我在/disk2上安裝了一個物理磁盤。 然后我想覆蓋以保留內容,所以我可以這樣做:

mount("overlay", "/disk2", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work");

這很好用:當我的新進程試圖修改/disk2下的內容時,它實際上只會在upper下修改:這確實按預期工作。 例如,我還可以看到0, 0文件表明某些內容在上層被刪除但在下層沒有。

不幸的是,如果我執行以下代碼,我似乎無法以某種方式覆蓋在 root /上:

mount("overlay", "/", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work")

我仍然可以看到整個真實的/並且當我寫文件時,它們被寫在他們真實的(即較低的)位置,而不是在上面的位置。

我在這里做錯了什么?

我在內核4.4.0-53上。

現有技術:如果你喜歡一個,那么這不適合你......

前任。 ...上一個/分區:/dev/nvme3n2

將您的根分區保存到映像文件中(即...dd if=/dev/nvme3n2 of=/free_2_be/2022-12-11-awesome.im bs=44M oflag=direct status=progress)

將覆蓋文件系統掛載到“/”(在 init *(1) 中真的沒有必要); 然后啟動pivot_root ...榮耀。

** 意識到如果您選擇switch_root ,您將永遠無法返回……現在,不要說沒有人沒有向您提供免責聲明。 關於網站的隱私政策和諸如此類的東西:維京人創造了“法律”這個詞**

*(1) 從對 init 中那種覆蓋的回顧中得出的推論表明,在那種情況下,那種事情是有問題的。

根據我所讀的內容,我認為一旦系統啟動,就不可能以編程方式執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM