SLES 的 initrd 或 ramfs 為 /
我想啟動一個 SLES 並從 ramdisk 中執行它。我想設置機器,以便它們啟動 PXE 引導,並作為 PXE 引導過程的一部分,它們拉過作為根文件系統的映像,然後引導它。
有沒有人做過這個或類似的?
我的想法是,這
initrd
幾乎是我想要的,儘管它太小而且功能太少。所以我做了一個最小的安裝,然後做了一個 cpio 來創建我自己的自定義initd
。(這大約是 350M,雖然對於這個目的來說很大)。當它嘗試
fsck
到/dev/shm/root
. 阻止這種情況發生的正確方法是什麼(我嘗試通過設置/etc/fstab
,但不好)。作為下一個選項,我設置了一個 sysconfig 文件來強制 READONLYROOT,這讓我將 init 程序引導到它切換到的位置,/etc/init.d/rc3.d
但現在我無法讓它更進一步。任何建議或想法,或者如果其他人已經這樣做了,他們都會很棒。
PS。設置是具有 1TB RAM 的大節點,我不想為 OS 提供本地文件系統,另一種方法是讓 NFS 伺服器作為根文件系統,但我不希望 NFS 流量,所以 RAM 磁碟似乎是個不錯的選擇。
我取得了很好的進展。
我編輯了文件 /etc/init.d/boot.d/boot.rootfsck 以將 ramfs 作為文件系統類型異常添加到 fsck 程序。(第 79 行)。
aufs|tmpfs|afs|cifs|nfs|novell|smb|ramfs|UNKNOWN*) MAY_FSCK=0 ;;
完成此操作後,不再需要使用帶有 READONLYROOT 的 sysconfig。
完成此操作後,我將 pxelinux.cfg 設置為具有如下引導行:
LABEL SLES11 InMemory OS KERNEL suseBig/vmlinuz-3.0.74-0.6.8-default APPEND initrd=suseBig/suseImage rdinit=/sbin/init TIMEOUT 100
文件 suseImage 是 SLES 工作安裝的整個根文件系統的 cpio 存檔,但帶有修改的 /etc/fstab 行用於根。(我必須通過從另一個工作作業系統(在另一個磁碟上)訪問這個工作 SLES 環境來建構 CPIO 存檔)
rootfs / rootfs defaults 0 0
一旦這一切就緒,節點就會愉快地啟動,我現在有了一個可以通過 PXE 跨網路啟動的 SLES 的工作 ramdisk 版本。(因此啟動速度很慢,但之後它沒有作業系統的網路流量)。它沒有持久性,但我在應用程序層解決了這個問題。