手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

BabyLinux制作过程详解(转贴)

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

输出了 8192 0 个块

zero是个特别的设备,表示全部为0的字符块.上面这条命令的意思是把系统的第一个ramdisk用全部为0的数据填充,因为ramdisk 默认大小为4M,因此当读满8192个块(每块512字节)后,显示'设备上没空间'.这很正常,/dev/ram1已被填充满了.
假如指定块的大小:

[root@gucuiwen babylinux]# dd if=/dev/zero of=/dev/ram1 bs=1M count=4
读入了 4 0 个块
输出了 4 0 个块

不会有错误提示,这里演示了dd的一般用法,接下来还要频繁用到dd命令.

在/dev下有很多ramdisk设备,ram1,ram2,ram3....
一般用第一个就能够了.

填充后,ram1就有可空间,能够在这个空间上创见一个文档系统:
[root@gucuiwen babylinux]# mkfs.ext2 -m0 /dev/ram1
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1024 inodes, 4096 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

将ram1挂装到文档系统中:
先建立一个挂装点:
#mkdir /mnt/ram
挂上ram1:
#mount /dev/ram1 /mnt/ram
将先前做好的babylinux根文档系统拷贝到ram1上.
#cp -R /babylinux/rootfs/* /mnt/ram

做完以上几步,您应就白了ramdisk设备的含义,他是和hda1,hdb1,相同的块设备,用mount挂到文档系统下后就能够访问,往里放东西,但是任何的东西在内存上.关机将丢失任何东西.

拷贝好babylinux根文档系统后卸载ram1:
#umount /dev/ram1
这时,虽然不能通过/mnt/ram这个挂装点访问ram1中的内容了,但是他却切切实实得在内存中存在.




再用dd把这个ram1以映象方式取出来:

[root@gucuiwen babylinux]# dd if=/dev/ram1 of=/babylinux/ramdisk.img
读入了 8192 0 个块
输出了 8192 0 个块

验证一下取出来的内容:
[root@gucuiwen babylinux]# file ramdisk.img
ramdisk.img: Linux rev 1.0 ext2 filesystem data

他是个ext2 文档系统,类似一个ISO光盘映象文档.
因次,我们能够用loop设备来把他重新挂装到文档系统里:

[root@gucuiwen babylinux]# mount -o loop ramdisk.img /mnt/ram/

为了方便,我仍旧把他挂在/mnt/ram下,因此,在先前一定要把/dev/ram1 umount掉

查看/mnt/ram下的内容,他应该和/babylinux/rootfs下的一模相同,否则就是出错了:
[root@gucuiwen babylinux]# ls /mnt/ram
bin dev etc home lost found mnt proc root sbin tmp usr var

这样,我们就得到了一个ramdisk根文档系统映象:ramdisk.img
把他umount掉:
#umount /mnt/ram

假如是第一次接触ramdisk,您可能对上述的内容很迷惑,假如这样,请反复阅读和理解上面的内容,自己多动手做几次试验,就能够理解.

压缩ramdisk.img印象文档:
[root@gucuiwen babylinux]# gzip -v9 ramdisk.img
ramdisk.img: 87.9% -- replaced with ramdisk.img.gz

查看压缩后的大小:
[root@gucuiwen babylinux]# ls -lh ramdisk.img.gz
-rw-r--r-- 1 root root 495K 11月 30 11:32 ramdisk.img.gz

我得到的压缩ramdisk映象文档安是495K. 加上内核的845K,是1340K
符合公式:

内核大小 文档系统压缩印象文档 50K <= 1440K

假如您做出来的kernel和ramdisk.img.gz太大了,请重新制作kernel或ramdisk.img.gz,在其中做一些取舍, 假如您的kernel和ramdisk.img.gz太小了,那么能够再往里面添加一些内容,使您的babylinux功能更强.


十,内核和busybox的整合

准备一张完好的空白软盘

创建一个比内核大小略大的文档系统:
比如内核大小是845K,那么我我创见一个920K的文档系统:
#mkfs.ext2 -m0 /dev/fd0 920

假如空间允许,还能够再大一些,但是必需确保
1440K-文档系统大小>=ramdisk.img.gz的大小.

挂上软盘
#mount /dev/fd0
将内核拷贝到软盘:
#cp /babylinux/bzImage /mnt/floppy/
将lilo引导文档安boot.b 拷贝到软盘
#cp /boot/boot.b /mnt/floppy

新建一个lilo.conf 配置文档:

prompt
timeout=60
default=linux
boot=/dev/fd0
map=/mnt/floppy/map
install=/mnt/floppy/boot.b
linear

image=/mnt/floppy/bzImage
label=linux
read-only
vga=788
root=/dev/fd0
append="load_ramdisk=1 ramdisk_start=940"

vga=788表示让内核支持字符界面的高分辨率显示,您能够改成vga=ask,这样能够在启动的时候选择分辨率.

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!