基于initrd鏡像的minilinux介紹
基于initrd鏡像的minilinux
制作鏡像文件系統(tǒng)的linux主要是讓鏡像文件可以像文件系統(tǒng)一樣初始化,用BusyBox 可以輕松實(shí)現(xiàn)。
BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標(biāo)是在一張軟盤上創(chuàng)建一個(gè)可引導(dǎo)的 GNU/Linux 系統(tǒng)。要想讓initrd當(dāng)作一個(gè)文件系統(tǒng)啟動(dòng),保留編譯busybox時(shí)生成的linuxrc即可。現(xiàn)在用cpio鏡像initramfs時(shí)要將linuxrc改名為init。
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
rwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
這樣當(dāng)內(nèi)核加載后,加載鏡像時(shí)可以保證首先執(zhí)行busybox。busybox會(huì)執(zhí)行其默認(rèn)的/sbin/init來初始化系統(tǒng)。
/linuxrc或/init可以是腳本文件,但最后要用“exec /sbin/init”來啟動(dòng)系統(tǒng)初始化程序。
tinycore linux init示例
tinycore是一個(gè)含桌面的10M左右的linux,包含內(nèi)核。其系統(tǒng)鏡像才8M左右,功能很多。不含桌面的ISO文件才6 M左右。
#!/bin/sh
mount proc
grep -qw multivt /proc/cmdline && mv /etc/inittab-save /etc/inittab
if grep -qw embed /proc/cmdline; then
umount proc
exec /sbin/init
fi
umount proc
if mount -t tmpfs -o size=90% tmpfs /mnt; then
if tar -C / --exclude=mnt -cf - . | tar -C /mnt/ -xf - ; then
mkdir /mnt/mnt
exec /sbin/switch_root mnt /sbin/init
fi
fi
exec /sbin/init