2012年7月5日 星期四

運用ubuntu的initrd.img檔案作個小系統

syslinux


#dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdx bs=512 count=1
#syslinux -sf /dev/sdx


syslinux.cfg
TIMEOUT 20
DEFAULT linux
LABEL linux
KERNEL vmlinuz
APPEND initrd=initrd.img
rootfs
直接叫ubuntu的工具做出來
mkinitramfs -o initrd.img /lib/modules/2.6.22-14-generic


1. 解開initrd.img
#cp initrd.img initrd.gz
#gunzip initrd.gz
#mkdir tmp2
#cd tmp2
#cpio -id --no-absolute-filenames < ../initrd

#cd tmp2
#gunzip < ../initrd.img | cpio --extract --preserve --verbose --no-absolute-filenames


2.壓縮initrd.img
#cp initrd.img initrd.img.org
#rm initrd.img
#cd workTemp
#find . | cpio --create --format='newc' > ../newinitrd
#gzip ../newinitrd
#mv ../newinitrd.gz ../newinitrd.img
#mv ../newinitrd.img ../initrd.img


修改init文件,主要是插入busybox的soft link,把命令指到busybox上

需要載入的核心模組修改conf/modules檔案。

拷貝命令到/bin底下,拷貝進去不見得就可以使用,還需要補足用到的動態函式庫,此時ldd命令就很重要。
比如說拷貝了perl命令

#ldd -v /usr/bin/perl

linux-gate.so.1 =>  (0x00d6b000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x00df2000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x003cf000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x008bf000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x001ad000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0x00c14000)
/lib/ld-linux.so.2 (0x00e6c000)


Version information:
/usr/bin/perl:
libcrypt.so.1 (GLIBC_2.0) => /lib/tls/i686/cmov/libcrypt.so.1
libdl.so.2 (GLIBC_2.1) => /lib/tls/i686/cmov/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/tls/i686/cmov/libdl.so.2
libpthread.so.0 (GLIBC_2.2) => /lib/tls/i686/cmov/libpthread.so.0
libpthread.so.0 (GLIBC_2.0) => /lib/tls/i686/cmov/libpthread.so.0
libm.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libm.so.6
libc.so.6 (GLIBC_2.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.11) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libdl.so.2:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libm.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libpthread.so.0:
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6
/lib/tls/i686/cmov/libc.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
/lib/tls/i686/cmov/libcrypt.so.1:
libc.so.6 (GLIBC_2.1.3) => /lib/tls/i686/cmov/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/tls/i686/cmov/libc.so.6


函式庫還是要補上才可以使用,不然一執行就會出現錯誤訊息說有缺

沒有留言:

張貼留言