Suse

SLES 的 initrd 或 ramfs 為 /

  • September 28, 2016

我想啟動一個 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 版本。(因此啟動速度很慢,但之後它沒有作業系統的網路流量)。它沒有持久性,但我在應用程序層解決了這個問題。

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