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檔案,負責在製作過程中,把自己外掛的檔案加到壓縮檔中 #! /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: