Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511385
  • 博文数量: 110
  • 博客积分: 3971
  • 博客等级: 中校
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-20 23:27
文章分类

全部博文(110)

文章存档

2015年(2)

2014年(1)

2013年(1)

2011年(9)

2010年(28)

2009年(12)

2008年(13)

2007年(23)

2006年(21)

我的朋友

分类: LINUX

2010-08-06 17:07:40

一、建立一个目录image
mkdir ~/image
mkdir ~/image/dev
cd ~/image
mknod -m 600 dev/console c 5 1

二、使用busybox构建小系统
在 busybox-1.15.2 目录下运行
make defconfig
make menuconfig 改为静态库
make
make CONFIG_PREFIX=~/image install


三、在 image 下创建必要的目录和设备文件
mkdir proc etc sys mnt
mknod -m 600 dev/null c 1 3
在 image 目录下写一个最简单的 init 脚本
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mdev -s
/bin/sh

chmod +x init

      有些 busybox 配置中,mdev 命令需要读取/etc/mdev.conf 文件,为了避免出错信息,我
们创建一个空文件。
   touch etc/mdev.conf

**************
将 init 脚本后面的/bin/sh 那行删除,并在 etc 目录下建立 init.d 目录,
mkdir etc/init.d

再把 init 文件移到 etc/init.d 目录下更名为 rcS
cd ~/image
mv init etc/init.d/rcS
将最后的/bin/sh命令删除

编写 etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh

** initramfs不需要linuxrc,而且如果没有init文件,内核就不认为它是一个有效的initramfs,因而不安装它,导致内核panic。于是,我们在image目录下,把busybox安装的linuxrc改名为init:
mv linuxrc init

写mini linux的/etc/inittab
::sysinit:/etc/init.d/rcS
tty1::askfirst:/bin/sh
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
tty5::askfirst:/bin/sh
tty6::askfirst:/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

为了执行reboot命令时避免提示找不到/etc/fstab文件,我们再在etc目录下创建一个空文件:
touch fstab

***************
附:rcS

#!/bin/sh
mount -t proc proc /proc
mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

mount /dev/sda2 /mnt
mount /dev/sda5 /mnt/usr
mount -o move /proc /mnt/proc
mount -o move /dev /mnt/dev
mount -o move /dev/pts /mnt/dev/pts
mount -o move /tmp /mnt/tmp
mount -o move /sys /mnt/sys
killall -q hotplug2

exec switch_root /mnt /sbin/init





阅读(771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~