在 RAM 中建構具有可寫層的只讀 Linux 系統
我需要將 RHEL 6.6/7.0 引導到只讀模式,並且僅在 RAM 中具有可寫層。我相信這類似於 live CD 的工作方式,因為文件系統是只讀的,但它的某些部分在載入到 RAM 後是可寫的。在這裡,寫入文件系統的任何更改都會在重新啟動時失去(因為在可寫層中僅更新 RAM)。
在網上環顧四周時,我還沒有找到關於在沒有幫助工具的情況下配置我自己的“live CD”的指南,以便我可以在現有的已安裝系統中模擬這個過程。
有誰知道我可以在哪裡獲得一些資源來建構我自己的 live CD 或製作一個只讀 Linux,只在 RAM 中具有可寫層?
好的,所以我在 SD 卡上確實有一個工作只讀系統,它允許將讀/寫開關設置為只讀模式。我將回答我自己的問題,因為我有一種感覺,我會再次在這裡尋找這些步驟,希望這會幫助其他人。
在 Red Hat Enterprise Linux 6.6 系統上將各種目錄設置
/etc/fstab
為只讀時,我找到了/etc/sysconfig/readonly-root
. 這激起了我對該文件的用途以及有關它的任何輔助資訊的興趣。簡而言之,該文件包含一行聲明“READONLY=no
”。更改此行會自動將大部分根文件系統載入為只讀,同時保留對各種目錄的必要寫入操作(目錄和文件作為 tmpfs 載入)。我必須做的唯一改變是設置/home
,/root
, 和其他幾個目錄作為可寫的/etc/rwtab.d
目錄並修改 /etc/fstab 以將根文件系統載入為只讀(將根文件系統更改為“defaults
”為“ro
”)。一旦我READONLY=yes
在/etc/sysconfig/readonly-root
文件中設置了“”,並設置了我必要的可寫目錄/etc/rwtab.d
,以及fstab
更改,我就能夠讓系統以只讀方式載入,但將可寫目錄載入到 RAM 中。有關更多資訊,這些是我使用的資源:
- http://www.redhat.com/archives/rhl-devel-list/2006-April/msg01045.html(指定如何在目錄中創建文件以將
/etc/rwtab.d/
文件和目錄載入為可寫)- http://fedoraproject.org/wiki/StatelessLinux(有關只讀根文件和無狀態 Linux 的更多資訊)
- http://warewolf.github.io/blog/2013/10/12/setting-up-a-read-only-rootfs-fedora-box/
- 當然,瀏覽
/etc/rc.d/rc.sysinit
顯示文件和文件夾是如何以只讀方式掛載的。對於那些正在尋找如何在 init 程序中使用的人來說,該readonly-root
文件在 中被解析。rc.sysinit``readonly-root
另外,我在 Red Hat Enterprise Linux 7.0 上做了一個快速驗證,這個文件仍然存在並且可以工作。我的測試環境是虛擬機上的 CentOS 6.6 和 7.0 以及 VME 單板機上的 RHEL 6.6 和 7.0。
注意:一旦根是只讀的,就不能對根系統進行任何更改。例如,您不能使用 yum 安裝軟體包並讓它們在重新啟動時保持不變。因此,為了打破只讀根,我添加了一個刪除 rhgb 和 quiet 的 grub 行(這僅用於調試啟動問題,如果需要,您可以留下它們),並添加“
init=/bin/bash
”。這讓我可以進入一個終端。到達終端后,我鍵入“mount - / -oremount,rw
”以使系統可寫。一旦可寫,我修改(使用vim
)/etc/sysconfig/readonly-root
說“READONLY=no
" 並重新啟動系統。這樣我就可以通過關閉只讀來對系統進行維護。如果您像我一樣使用 SD 卡,則需要將 SD 卡上的讀/寫開關設置為可寫。