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

BabyLinux制作过程详解(转贴)

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


#cp linux-2.4.20.bz2 /usr/src/
#cd /usr/src
#tar xfvj linux-2.4.20.bz2
假如是tar.gz格式,能够这样解开
#tar xfvz linux-2.4.20.tar.gz
为了方便,做一个到目录linux-2.4.20的连接:
#ln -s linux-2.4.20 linux
进入linux源代码目录:
#cd linux
清理源代码树:
#make mrproper
运行配置程式:
#make xconfig

code maturity level options
先选择N,当我们配置好常规的东西,要加入framebuffer支持时再将这一项选择Y,因为在2.4.20中,framebuffer支持尚 属于实验性代码.假如不在code maturity level options选择为Y,将不能配置framebuffer.

Loadable module support
选择N,为了简化系统的制作,我在这个项目中不选择可加载内核模块的支持.

processor type and features

processor family 中选择您需要的CPU类型,假如您想让老至386,新到P4的CPU都能运行babaylinux那么请选择386CPU,否则请按自己的实际情况选择.

其他选项都选择N.这些在babylinux中都是无需的.

General setup
networking support 选择Y
PCI support 选择Y 除非您不用PCI设备,但是一般人都是需要的,因为现在网卡大部分是PCI的.

System V ipc 选择Y
systrl support选择Y
kernel support for ELF 选择Y
其余内容都能够选择N,假如有特别需求,比如的网卡是ISA的,那么请将相应的内容选上.但是不能贪心,时刻牢记,我们能利用的空间只有 1440K ,内核的大小绝不能超过 900K,任何不必要的东西都应该从内核中去除.

memory technology devices (MTD)
Parallel port support
Plug and Play configuration
以上三个大项中的任何内容选择N

block devices

Normal floppy disk support
Loopback device support
RAM disk support
initial RAM disk (initrd) support
Per partition statics in /proc/partitions

以上几项选择Y,其余全部选择N.

这里的选项比较重要,我想重点说明一下.对于软盘的支持,那是不必说的,那是必备的.
loopback device 即回环设备,我们平时用命令

#mount -o loop somecd.ISO /mnt/cdrom

挂装光盘映象文档,或其他文档系统映象文档时就用到了内核中的loopback 模块,假如没有编译进这个模块,您将不能用上面的命令挂装光盘映象和文档系统映象.
个人认为这个功能是很重要的,所以编译了进去.

RAM disk support 即内存磁盘(比较贴切的说法是虚拟磁盘,即拨出一部分内存当做磁盘用).这是制作babylinux项目中的核心内容,由于一张软盘的空间有限, babylinux的根文档系统是用gzip压缩法高度压缩的,在运行时,将解压缩后的文档拷贝到一个RAM disk运行,所以在运行时,您在根文档系统上的任何操作实际上是在内存上进行的.但是在形式上和在真正的磁盘上运行相同.只但是放在RAM disk上的任何内容会在系统关机后全部消失.
不但在运行babylinux时用到ramdisk,我们在制作压缩的根文档系统时也要用到ramdisk,学习ramdisk的使用是做一个babylinux的重要目的之一. 在linux中,还支持另外一种虚拟磁盘,叫做shm,
(shared memory),这种虚拟磁盘机制比ramdisk更加先进,ramdisk的大小是固定的,由编译内核时候的default ram disk size 决定.默认为4096K(4M),也能够在内核装载前加上ramdisk_size=参数来决定他的大小,但是系统一旦启动,ramdisk的大小是不能 改变的,而shm的大小却动态的改变.默认情况下为物理内存的一半,当系统需要更多内存的时,他就自动缩小.系统内存富余时,他自动增大,这样能够充分灵 活的利用内存空间,shm通常用来作为系统的磁盘高速缓存,存放系统运行中的临时文档等.redaht 的linux在默认情况下都有shm的支持,能够用mount和df察看他的挂装点和大小,如下命令:

[root@gucuiwen linux]# mount
/dev/hda1 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda6 on /home type ext3 (rw)
/dev/hda5 on /oracle type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda7 on /var type ext3 (rw)

[root@gucuiwen linux]# df -h
文档系统 容量 已用 可用 已用% 挂载点
/dev/hda1 2.9G 2.7G 26M 100% /
/dev/hda6 3.8G 1.8G 1.8G 50% /home
/dev/hda5 5.7G 677M 4.8G 13% /oracle
none 125M 0 125M 0% /dev/shm
/dev/hda7 711M 91M 584M 14% /var

虽然shm有这么多的长处,我还是选择了ramdisk,因为ramdisk能够很方便地在系统启动的时候加载,而shm却没那么容易,下面就来讲一下关于内核启动时加载ramdisk映象的相关内容.

initial RAM disk (initrd) support
即初始化ramdisk支持,这个选项让内核有能力在内核加载阶段就能装入RAMDISK,并运行其中的内容,否则只能在系统运行阶段用 ramdisk ,我们平时在编译了一个新内核后,假如您的根文档系统用的是ext3,而您没有把ext3编译进内核,而只作为一个模块编译了,那么就需要用 mkinitrd命令做一个initrd (initializtion ramdisk),这个ramdisk里放了ext3的模块,这样内核在加载根文档系统前就能正确识别ext3文档系统.否则,内核加载的最后一步就会出 现kernel panic cant not find init .... 的错误.

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