linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 使用与技巧 >
栏目导栏
资料搜索
热门文章
·VMware Tools的安装步骤
·应用Linux下两种中文输入法
·GRUB FOR DOS 引导安装LINUX和
·linux下BT软件介绍
·Linux中用ALSA驱动声卡流程详解
·Linux 170个常见问题的详细解答
·什么是ISO文件?
·虚拟机软件vmware使用教程--使
·BabyLinux制作过程详解
·Linux挂接(mount)命令的使用方
·Linux必学的网络操作命令
·ffmpeg命令使用详解
·Linux操作系统Ifconfig命令详细
·在Linux下制作工资表
·vmware下的fedora 6的vmware t
最新文章
·CentOS5安装apache和svk使用域
·Ubuntu Linux系统Sudo命令无效
·Uboot对非Linux kernel的引导
·Fedora和XP双系统中网卡Realte
·解决Linux操作系统下部分文件乱
·双系统安装Linux之后找不到Win
·Linux操作系统上安装Flash Med
·设置Tomcat在Linux操作系统中自
·Linux操作系统下创建DBCA报错的
·Redhat Enterprise Linux磁带机
·Linux系统下用一条命令批量修改
·实用技巧:Linux下命令排列、调
·关于Linux操作系统中VI编辑器字
·Linux VI编辑器中的复制与粘贴
·Linux系统下触摸屏的简单使用和
Google
 
BabyLinux制作过程详解
[ 作者:  加入时间:2005-11-28 15:01:26  来自: ]
如果不在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 .... 的错误.

在babylinux项目中,这个选项是必需的,这里的作用是把解压的根文件系统映象装入ramdisk.

Per partition statics in /proc/partitions
这个选项不是必需的,但是我发现如果我不把这个功能编译进内核,那么当我在挂装文件系统的时候会有些小问题,比如我不能以简写的挂装命令来挂装文件系统.我不确定到底是不是这个选项的关系,但是把这个选项编译进内核只增大一点点内核空间,所以为了避免麻烦,我把他编译了进去.

Multi-device support (RAID and LVM)
Cryptography support (CryptoAPI)
这两个大项全部选择N,因为在个人用PC上,及少牵涉到这两项,如果你真的有RAID设备或者LVM,那么就自己摸索着配置一下吧.

Networking options

这一大项中,只需要把下列项目编译进内核:
Packet socket :mmapped IO
TCP/IP networking

对于IP:advanced router这项,如果你想重点把babylinux用做静态路由软件,那么把这项编译进去,而对于network packet filtering (replaces ipchains)这一项,没有必要编译进去了,因为busybox没有提供iptables工具来设置包过滤防火墙.同样,unix domain sockets这项也不必选择,只有运行X的情况下才需要选这项.

Telephony Support 选择N

ATA/IDE/MFM/RLL support
选择Y,然后下面的'IDE,ATA and ATAPI Block Devices'按钮就被激活

下面几项请选择Y,其余都可以是N.
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Include IDE/ATA-2 DISK support
Auto-Geometry Resizing support
Include IDE/ATA CDROM support

如果你的内核要运行在一台很老的pentium或486上,请把CMD640 chipset bugfix/support编译进去,因为那时候主板的CMD640 IDE控制芯片大多有莫名其妙的BUG,把这项编译进去会修复这个bug.

下面几个大项:
SCSI support
Fusion MPT device support
IEEE 1394(FireWire) support
I2O device support
全部选择N,这里可能有你想要的好东西,比如1394接口驱动,但是在babylinux上意义不大,而且我们的空间只有1440K.

下面一个大项:
Network device support
选择Y,这样就可以支持网卡了,其余都选择N.然后点Ethernet(10 or 100 Mbit)按钮选择你需要的网卡驱动,你可以把最常见的几种Reltek8139,NE2000,3COM等网卡编译进内核.虽然网卡的驱动通常都很小,但是不要太贪心,选2~3个就足够了,否则你的内核就会一下子多出几十K.在我先前编译的babylinux内核中,我把via-rhine网卡编译了进去,是因为我打造babylinux的机器上只有一块那个芯片的网卡.

如果你发现你需要的网卡是灰色的,不能点,那么先确定他上一级的选项已经点了,比如你想选NE2000的网卡,就必需先选择ELSA,VLB,PCI and on board controllers.如果还不能点,那么请确定是否已经把PCI的支持选项选上了,(在Geneal setup)里.没有PCI的支持,PCI的网卡将不能选.

可能你是个有钱人,在自己的PC上用千兆网卡,那么请在千兆网卡那一栏选择.

接下来几个大项:
Amateur Radio support
IrDA (infrared) support
ISDN subsystem
Old CD-ROM drivers (not SCSI,not IDE)
Input core support
全部选择N.

接下来的Charcter devices是很重要的一项,他和Bloack devices一样重要,我将重点讲述.
除了Virtual terminal和Support for console on terminal两项,其他全选N.

Virtual terminal 即虚拟终端,这是一般linux必备选项.否则你的linux启动后,在屏幕看不到任何东西.另外还负责键盘输入信息等等.只有在某些嵌入式linux应用场合才会不要这个选项,因为这些linux通常都不用操作.

Support for console on terminal
在虚拟终端上的控制台.他支持在终端上各种信息的输出,这也是必备的.

接下来的几个大项:
Multimedia devices
Crypto Hardware support
全部选择N.

再接下来的那部分File sytems可是重头戏喔.
这部分不用我太罗嗦了吧,自己需要支持什么就选什么.
但是其中有三个是你必需选的:
/proc file system support 缺了他,很多命令和软件就不能运行.
Second extended fs support BabyLinux的基本文件系统.
ISO 9660 CDROM filesytem support 除非你不想用光盘.
另外,诸如磁盘限额(Quota support),Reiserfs的DEBUG模式(Enable reiserfs debug mode)
等就不用编译进去了.这些东西意义不大,确要无端的增大内核大小.请牢记一点:编译出来的内核大小不要超过900K.

Tip:是不是看的很累啊,我写得更累,别急,内核配置部分马上要好了.

最后一个Console drivers
这是支持linux在字符模式下高分辨率显示的内核模块.前面三个全部选择Y,
Frame-buffer support按钮是灰色的不能选,别急,回到第一个大选项:
Code maturity level options 选择Y,就可以激活这个按钮了.

下面几个选项需要选择Y:
Support for framebuffer devices
VESA VGA graphics console
你也可以选择其他的显卡驱动,比如nVidia的,但是VESA和VGA是通用性最好的,只要不是几十年前的黑白显卡(我只听说过,没见过),都兼容VESA和VGA,因此,为了制作好的BabyLinux的通用性,请选择这个驱动.

Support only 8 pixels wide fonts
这个一定要选,否当你给内核传递vga=788参数,让linux在字符界面下高分辨率显示的时候,系统会因为找不到合适的小字体而返回到低分辨率模式.

好了!所有内核的配置工作到这里就全部完成了,剩下的几个大项全部选N就行了.
保存后退出,配置程序会自动生成一个隐藏的配置文件.config

下面是我配置好的.config文件内容.如果你懒的自己去配置,那么直接把这个.config拷贝到你的源代码目录下就能直接用了.(已经去掉了#开头的注释行)
CONFIG_X86=y
CONFIG_UID16=y
CONFIG_EXPERIMENTAL=y
CONFIG_M586=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_X86_USE_STRING_486=y
CONFIG_X86_ALIGNMENT_16=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_NOHIGHMEM=y
CONFIG_NET=y
CONFIG_PCI=y
CONFIG_PCI_GODIRECT=y
CONFIG_PCI_DIRECT=y
CONFIG_SYSVIPC=y
CONFIG_SYSCTL=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
CONFIG_BLK_DEV_FD=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
CONFIG_PACKET=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDE_MODES=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_REISERFS_FS=y
CONFIG_EXT3_FS=y
CONFIG_JBD=y
CONFIG_FAT_FS=y
CONFIG_VFAT_FS=y
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=y
CONFIG_JFS_FS=y
CONFIG_NTFS_FS=y
CONFIG_PROC_FS=y
CON Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
分页:1 [2] 3 4
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息