| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux入门与提高 > 安装与配置

busybox 制作tiny linux

时间:2006-12-04 11:26:31  来源:Linux联盟收集  作者:
我省去了制作启动盘的过程,这个网上可以大把大把的抓!

  更多...ZVyLinux联盟

  我通过在硬盘上安装linux得到linux的分区:ZVyLinux联盟

  /dev/hda1 /bootZVyLinux联盟

  /dev/hda2 /ZVyLinux联盟

  /dev/hda3 swapZVyLinux联盟

  好了,现在开始用busybox来制作了。。。ZVyLinux联盟

  实际操作过程相当简单:ZVyLinux联盟

  下载好busybox的源文件,大家最好到busybox的官方网站上面去下,这样还可以看到很多文档 :)ZVyLinux联盟

  我下载的是busybox-1.00-rc3版本,也是它的最新版ZVyLinux联盟

  tar zxvf busybox-1.00-rc3.tar.gzZVyLinux联盟

  cd busybox-1.00-rc3ZVyLinux联盟

  make menuconfigZVyLinux联盟

  (这个过程类似编译linux内核,如果你还不会编译内核的话,那先看看我的blog里面的另一篇文档好了)ZVyLinux联盟

  做好自己的选项后,ZVyLinux联盟

  make depZVyLinux联盟

  makeZVyLinux联盟

  make installZVyLinux联盟

  默认情况下,busybox会在当前目录下生成一个_INSTALL的目录,编译后生成的文件都在这个目录下,一会儿我们也要用这个目录下的文件来制作我们的tiny linuxZVyLinux联盟

  我们先看一看这个目录下的结构:ZVyLinux联盟

  /usrZVyLinux联盟

  /etcZVyLinux联盟

  /....ZVyLinux联盟

  因为我是在编译好后才写这篇文档的,所以目录列不全了,反正这个也不重要,大家在尝试中自己观察吧ZVyLinux联盟

  然后就是替换工作了,关于busybox的工作原理大家可以参考busybox的资料,网上一大把一大把的抓!!ZVyLinux联盟

  主要的操作目录有 etc usr bin sbinZVyLinux联盟

  将这几个目录用刚才编译过的目录替换,然后将原etc目录下的 passwd passwd- shadow shadow-  几个文件放到busybox的目录下(你得登陆吧,哈哈,登陆就得用这几个文件了)ZVyLinux联盟

  其实这个时候系统的大小就已经不到200M了,ZVyLinux联盟

  下面是进一步的裁减工作,这个工作主要集中在lib目录下ZVyLinux联盟

  lib目录的结构:ZVyLinux联盟

  根目录下是一些常用的so库ZVyLinux联盟

  modules 是linux的模块ZVyLinux联盟

  modules 目录里面还有 EL 结尾的文件夹目录,如果你是多cpu的话,有一个smp结尾的目录,如果你已经编译了内核的话,还有一个ELcustom结尾的目录ZVyLinux联盟

  决定你用那个内核,如你用smp的话,那就删掉其他的两个,如果你用自己编译的内核的话,那就删掉另外的两个,同样的道理ZVyLinux联盟

  其他在lib目录下的so文件大家自己决定吧,不过有这样一个问题,如果你裁减完登陆时出现“Login incorrect:User 'unknown' failed on 'tty2'”提示的话,很可能就是你这里面的库删错了,补回来吧。。ZVyLinux联盟

  裁减过程,除了删除文件外,我觉得还有一个问题,就是完善功能,实现linux的常用功能:如网络,文件系统的rw属性等ZVyLinux联盟

  这个也是我在裁减过程中遇到的问题,ZVyLinux联盟

  1,恢复网络功能ZVyLinux联盟

  网络功能需要这样几个必要的条件:ZVyLinux联盟

  1)内核支持inet4ZVyLinux联盟

  2)有网卡驱动ZVyLinux联盟

  好了,假设上面的都成立,我们开始给这个tinylinux设定网络:ZVyLinux联盟

  我的网卡是8139的所以,我需要的网卡驱动在/lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/8139too.soZVyLinux联盟

  当然,pci的网卡还需要这个东东:/lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/mii.o (为什么要这个我也说不清楚,反正要一定要有,freebsd在编译内核的时候,也是一定要加上mii这个东西的,编译过bsd内核的朋友一定有印象)ZVyLinux联盟

  ok,还有一个so是要加上的,那就是/lib/modules/2.4.21-9.ELcustom/kernel/lib/crc32.o,这个东东,是什么作用,高手来解答吧,我也不清楚,或者大家去google搜索一下好了ZVyLinux联盟
总结一下加入网络的步骤:ZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/lib/crc32.oZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/mii.oZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/8139too.soZVyLinux联盟

  看到什么了吗?ZVyLinux联盟

  你的网卡已经起来了。。。不过这样还不可以ZVyLinux联盟

  在/etc/modules.conf文件中要增加这样的一句:alias eth0 8139too (为啥呢?我也不懂,向大家请教,)ZVyLinux联盟

  现在应该可以了,控制台里面输入:ifconfig eth0 inet 192.168.0.2 netmask 255.255.255.0ZVyLinux联盟

  结果呢?应该就是大家期望的了。。ZVyLinux联盟

  还可以添加路由的:ZVyLinux联盟

  /sbin/route add default gw 192.168.0.1ZVyLinux联盟

  不管别的了,先ping一下网关再说:ZVyLinux联盟

  #ping 192.168.0.1ZVyLinux联盟

  .........................ZVyLinux联盟

  登陆到192。168。0。1上面去:ZVyLinux联盟

  192。168。0。1#ping 192.168.0.2ZVyLinux联盟

  。。。。。。。。。。。。。ZVyLinux联盟

  网络功能基本上没有问题了,我试过ping 202.102.88.*这个外网ip的。ZVyLinux联盟

  2。文件系统的读写功能。ZVyLinux联盟

  busybox的启动过程跟linux是不一样的,它在内核启动后,运行/etc/init.d/rcS这个脚本的,而且只有这一个启动脚本,所以,如果有什么在启动时候运行或初始化的程序,只能写在这个脚本里了。ZVyLinux联盟

  在我的观察来看,linux启动过程中,与文件系统(我指的是mount或umount这样的操作)相关的操作是有这样的步骤的:第一个步骤是内核以ro (read-only,只读)的形式来mount / ,这个在grub。conf(grub的配置文件,在/boot/grub/目录下)有这样的描述:”kernel /boot/powerbit.vmlinux ro root=/dev/hdb1“ ,看到那个“ro”了吗?ZVyLinux联盟

  第二个步骤是系统在fsck(磁盘扫描,检查文件系统上一次关机时是否正常umount),然后进行“umount -a”ZVyLinux联盟

  第三个步骤是这样的,在检查完文件系统没有问题后,运行"mount -t ext3 remount rw /" 这样的语句,注意到“rw”了吗?就是这个标志,决定我们的tiny linux的文件系统是否能够写入的,或许你这样考虑,我直接在grub.conf里面把“ro”改成“rw”不可以吗?自己试试就知道了:)ZVyLinux联盟

  3。loginZVyLinux联盟

  关于login我不想多说了,关键在于/lib里面的库文件,不可多删,当然,为了系统尽可能的小,也一定不要少删啊。。ZVyLinux联盟

  多用户登陆的话,需要更改/etc/inittab,详细的参考busybox的文档吧ZVyLinux联盟

  最后总结一下rcS这个文件吧:ZVyLinux联盟

  rcS:ZVyLinux联盟

  /bin/fsck ????(参数自己找找吧,不懂的话看看rc.sysinit)ZVyLinux联盟

  /sbin/umount -aZVyLinux联盟

  /sbin/mount -aZVyLinux联盟

  /sbin/mount -t ext3 remount rw /ZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/lib/crc32.oZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/mii.oZVyLinux联盟

  /sbin/insmod /lib/modules/2.4.21-9.ELcustom/kernel/drivers/net/8139too.soZVyLinux联盟

  /sbin/ifconfig eth0 192.168.0.253 netmask 255.255.255.0ZVyLinux联盟

  /sbin/route default gw 192.168.0.1ZVyLinux联盟

  参考资料:ZVyLinux联盟

  www.linuxjournal.com/article.php?sid=4335ZVyLinux联盟

  www.linuxjournal.com/article.php?sid=4395ZVyLinux联盟

  www.linuxjournal.com/article.php?sid=4528ZVyLinux联盟

  感谢楼主,您的贴子非常好ZVyLinux联盟

  我这里再贴一个编译内核的技巧ZVyLinux联盟

 1/2    1 2 ›› ›|

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门