Linux 2.6 INITRAMFS 自訂筆記
Linux 在 Kernel 2.6之後提供了INITRD的新繼任者INITRAMFS,可以大大減少開機時記憶體的浪費,關於兩者的詳細比較,可以參考以下兩篇精彩的文章:
initramfs 簡介,一個新的 initial RAM disks 的模型
深入理解 Linux 2.6 的 initramfs 機制 (上)
既然軟體有架構上的更改,製作方法也有不一樣的地方,從mkininitrd改成mkinitramfs。像是debian live helper一樣,mkinitramfs也提供很多hook,可以作到很細緻的完全自訂,主要的設定檔放在以下兩個目錄:
/etc/initramfs
/usr/share/initramfs-tools
以下以最近製作的一個基於initramfs的迷你系統作說明:
Step 1: 修改 /etc/initramfs/initramfs.conf
#將預載模組改為list,可以大大縮減initramfs的大小
MODULES=list
#不要使用busybox,因為我會用到一些進階的功能,使用busybox會有力有未逮的情形
BUSYBOX=n
Step 2: 修改/etc/initramfs/modules
#加入必須的module
e1000e
usbhid
Step 3:修改/usr/share/initramfs-tools/init
讓init做完maybe_break modules之後,就停在init裡面並且呼叫自己的程式
Step 4:在/usr/share/initramfs-tools/hooks目錄新增一個burnin檔案,負責在製作過程中,把自己外掛的檔案加到壓縮檔中
Step 5:製作最終的initramfs
update-initramfs -k 2.6.30.10 -c
-k 參數指定核心版本,最終檔案會生成/boot/initrd.img-2.6.30.10
initramfs 簡介,一個新的 initial RAM disks 的模型
深入理解 Linux 2.6 的 initramfs 機制 (上)
既然軟體有架構上的更改,製作方法也有不一樣的地方,從mkininitrd改成mkinitramfs。像是debian live helper一樣,mkinitramfs也提供很多hook,可以作到很細緻的完全自訂,主要的設定檔放在以下兩個目錄:
/etc/initramfs
/usr/share/initramfs-tools
以下以最近製作的一個基於initramfs的迷你系統作說明:
Step 1: 修改 /etc/initramfs/initramfs.conf
#將預載模組改為list,可以大大縮減initramfs的大小
MODULES=list
#不要使用busybox,因為我會用到一些進階的功能,使用busybox會有力有未逮的情形
BUSYBOX=n
Step 2: 修改/etc/initramfs/modules
#加入必須的module
e1000e
usbhid
Step 3:修改/usr/share/initramfs-tools/init
讓init做完maybe_break modules之後,就停在init裡面並且呼叫自己的程式
Step 4:在/usr/share/initramfs-tools/hooks目錄新增一個burnin檔案,負責在製作過程中,把自己外掛的檔案加到壓縮檔中
#! /bin/sh -e SOURCE=/opt/backtrack case $1 in prereqs) exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions copy_exec $SOURCE/sbin/getty /sbin ... mkdir -p ${DESTDIR}/usr/bin copy_exec $SOURCE/usr/bin/netserver /usr/bin ... exit 0
Step 5:製作最終的initramfs
update-initramfs -k 2.6.30.10 -c
-k 參數指定核心版本,最終檔案會生成/boot/initrd.img-2.6.30.10
留言