-
编译支持NTFS的内核模块
2008-03-24 09:43:38
作者:zhyj
传统编译内核模块的方法繁琐而费时,本文将告诉我们一种快速编译所需要内核模块的新方法。
当你安装完Linux系统,并且已经启动,恭喜你!如果你的硬盘上还安装了WinNT/2000系统,你试图去访问另一个NTFS分区时却遇到了麻烦。因为你所用的Linux系统没有已编译的支持NTFS文件系统的模块。怎么办?也许你会运行make menuconfig,重新定制你需要的所有模块,接着运行make modeules;make modeules_install来安装。这样不仅繁琐、费时,还可能会出现问题。或者因为编译内核对你有些棘手,太多的选择让你手足无措,你根本没有太好的方法。
本文给你提供一个简单的方法,你可以轻松地去编译你所需要的支持NTFS系统的模块(ntfs.o)。以此为例,但愿对你编译其他模块有所帮助。
写此文时我用的系统是Red Hat Linux release 7.0 (Guinness) Kernel 2.2.16-22 onan i686。从一个新安装的系统开始,我们一起去编译一个自己想要的支持NTFS文件系统模块。
一、找到编译内核所需要的.config文件。
在/usr/src/linux/configs目录下有若干编译内核所用的配置。选择我们想要的配置,
将它复制到/usr/src/linux目录下,改名为.config。cp /usr/src/linux/configs/kernel-2.2.16-i686.config /usr/src/linux/.config
二、修改.config文件,去掉不用的模块,加上自己想要的模块。
打开.config,有许多XXXX=m的项,这些都是要被编译为模块的项,因为我们不希望编译这些模块,所以要把XXXX=m的项统统去掉。然后再加上我们想要的模块,将# CONFIG_NTFS_FS is not set 改为CONFIG_NTFS_FS=m 当然,可以用你熟悉各种工具来做这件事。
三、编译NTFS模块。
在/usr/src/linux目录下运行命令make modules来编译我们想要的NTFS模块。
四、安装NTFS模块。
编译后得到的ntfs.o在/usr/src/linux/fs/ntfs目录下,手动将它复制到正确的目录下。
cp /usr/src/linux/fs/ntfs/ntfs.o /lib/modules/2.2.16-22/fs/
注意:千万不能运行命令make modules_install,否则将带来严重的后果,它会删除你系统中的所有模块,只安装刚刚编译的模块(ntfs.o)。
五、载入NTFS模块.
运行命令depmod;modprobe ntfs 试着访问你的NTFS文件系统吧,祝你成功!
有些模块依赖于你的系统内核,所以不适用本文所提供的方法。还有些模块和其他模块有依赖关系。如果你不熟悉这些依赖关系的话,建议你在第二步去掉不用的模块选项后,通过make menuconfig来加上自己想要的模块。
我用此方法用了三分钟编译了支持NTFS文件系统的模块,你呢?
作者简介
刘军民,海辰天泽公司的工程师(www.hisen.com),源码开放运动的追随者,业余时间喜欢用写程序打发时光。您可以通过电子邮件 fancao0515@0451.com与他联系。
-
Linux 进程管理
2007-10-18 11:19:46
一个运行着的程序,可能有多个进程。比如 LinuxSir.Org 所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,apache服务器将会创建有多个httpd进程来对其进行服务。
1.1 进程分类;进程一般分为交互进程、批处理进程和守护进程三类。值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在Fedora或Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。[root@localhost ~]# chkconfig --level 35 httpd on由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 LinuxSir.Org ,LinuxSir.Org 的httpd服务器都在运行,等待着用户来访问,也就是等待着任务处理。
1.2 进程的属性;进程ID(PID):是唯一的数值,用来区分进程;
父进程和父进程的ID(PPID);
启动进程的用户ID(UID)和所归属的组(GID);
进程状态:状态分为运行R、休眠S、僵尸Z;
进程执行的优先级;
进程所连接的终端名;
进程资源占用:比如占用资源大小(内存、CPU占用量);
1.3 父进程和子进程;他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;
2、进程管理;对于Linux进程的管理,是通过进程管理工具实现的,比如ps、kill、pgrep等工具;
2.1 ps 监视进程工具;ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用top工具;
2.1.1 ps 的参数说明;ps 提供了很多的选项参数,常用的有以下几个;l 长格式输出;u 按用户名和启动时间的顺序来显示进程;j 用任务格式来显示进程;f 用树形格式来显示进程;a 显示所有用户的所有进程(包括其它用户);x 显示无控制终端的进程;r 显示运行中的进程;ww 避免详细参数被截断;我们常用的选项是组合是aux 或lax,还有参数f的应用;ps aux 或lax输出的解释;USER 进程的属主;PID 进程的ID;PPID 父进程;%CPU 进程占用的CPU百分比;%MEM 占用内存的百分比;NI 进程的NICE值,数值大,表示较少占用CPU时间;VSZ 进程虚拟大小;RSS 驻留中页的数量;WCHANTTY 终端IDSTAT 进程状态D Uninterruptible sleep (usually IO)R 正在运行可中在队列中可过行的;S 处于休眠状态;T 停止或被追踪;W 进入内存交换(从内核2.6开始无效);X 死掉的进程(从来没见过);Z 僵尸进程;< 优先级高的进程N 优先级较低的进程L 有些页被锁进内存;s 进程的领导者(在它之下有子进程);l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)+ 位于后台的进程组;WCHAN 正在等待的进程资源;START 启动进程的时间;TIME 进程消耗CPU的时间;COMMAND 命令的名称和参数;
2.1.2 ps 应用举例;实例一:ps aux 最常用[root@localhost ~]# ps -aux |more可以用 | 管道和 more 连接起来分页查看;[root@localhost ~]# ps -aux > ps001.txt
[root@localhost ~]# more ps001.txt这里是把所有进程显示出来,并输出到ps001.txt文件,然后再通过more 来分页查看;实例二:和grep 结合,提取指定程序的进程;[root@localhost ~]# ps aux |grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 /usr/sbin/httpd
root 4480 0.0 0.0 5160 708 pts/3 R+ 12:20 0:00 grep httpd实例二:父进和子进程的关系友好判断的例子[root@localhost ~]# ps auxf |grep httpd
root 4484 0.0 0.0 5160 704 pts/3 S+ 12:21 0:00 \_ grep httpd
root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd
apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4190 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4191 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4192 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4193 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4194 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4195 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd
apache 4196 0.0 0.6 24368 4932 ? S 11:55 0:00 \_ /usr/sbin/httpd这里用到了f参数;父与子关系一目了然;
2.2 pgreppgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;用法:#ps 参数选项 程序名常用参数-l 列出程序名和进程ID;
-o 进程起始的ID;
-n 进程终止的ID;举例:[root@localhost ~]# pgrep -lo httpd
4557 httpd
[root@localhost ~]# pgrep -ln httpd
4566 httpd
[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
[root@localhost ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566
3、终止进程的工具 kill 、killall、pkill、xkill;终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父 进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
3.1 killkill的应用是和ps 或pgrep 命令结合在一起使用的;kill 的用法:kill [信号代码] 进程ID注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;举例:[root@localhost ~]# ps auxf |grep httpd
root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpd
root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd
apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4837 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4838 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4839 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;[root@localhost ~]# kill 4840 注:杀掉4840这个进程;
[root@localhost ~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?
[root@localhost ~]# kill 4830 注:杀掉httpd的父进程;
[root@localhost ~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?对于僵尸进程,可以用kill -9 来强制终止退出;比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;[root@localhost ~]# ps aux |grep gaim
beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim
root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim
或
[root@localhost ~]# pgrep -l gaim
5031 gaim
[root@localhost ~]# kill -9 5031
3.2 killallkillall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。
用法:killall 正在运行的程序名killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;举例:[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# killall gaim
3.3 pkillpkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。应用方法:#pkill 正在运行的程序名举例:[root@localhost beinan]# pgrep -l gaim
2979 gaim
[root@localhost beinan]# pkill gaim
3.4 xkillxkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;xkill 调用方法:[root@localhost ~]# xkill
4、top 监视系统任务的工具;和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的;
4.1 top 命令用法及参数;top 调用方法:top 选择参数参数:-b 以批量模式运行,但不能接受命令行输入;
-c 显示命令行,而不仅仅是命令名;
-d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;
-i 禁止显示空闲进程或僵尸进程;
-n NUM 显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出;
-p PID 仅监视指定进程的ID;PID是一个数值;
-q 不经任何延时就刷新;
-s 安全模式运行,禁用一些效互指令;
-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;
交互式命令键位:space 立即更新;
c 切换到命令名显示,或显示整个命令(包括参数);
f,F 增加显示字段,或删除显示字段;
h,? 显示有关安全模式及累积模式的帮助信息;
k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)
i 禁止空闲进程和僵尸进程;
l 切换到显法负载平均值和正常运行的时间等信息;
m 切换到内存信息,并以内存占用大小排序;
n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;
o,O 改变显示字段的顺序;
r 把renice 应用到一个进程,提示输入PID和renice的值;
s 改变两次刷新时间间隔,以秒为单位;
t 切换到显示进程和CPU状态的信息;
A 按进程生命大小进行排序,最新进程显 -
Linux Kernel Update(2.4 to 2.6)(note: vmware)
2007-10-18 10:51:22
一、准备工作
首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。
启动Linux系统,并用根用户登录,进入终端模式下。
1、查看Linux内核版本# uname -a
如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。
2、下载2.6内核源码
下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
3、下载内核升级工具
(1)下载module-init-tools-3.2.tar.bz2
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
(2)下载mkinitrd-4.1.18-2.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm
(3)下载lvm2-2.00.25-1.01.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm
(4)下载device-mapper-1.00.19-2.i386.rpm
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm
二、配置工作
好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。
4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下。怎么拷贝就不用我教了吧~~~~不会拷贝的去撞墙吧!~~呵呵!
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
# tar jvxf linux-2.6.18.tar.bz2 (解压新内核)
# ln -s linux-2.6.18 linux (重新生成linux文件夹)
6、安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)
# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
7、安装另外三个升级工具
回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
如果不更新以上几个升级包,在后面编译内核时会提示以下错误:
mkinitrd failed
make[1]: *** [install] Error 1
make: *** [install] Error 2
8、配置内核选项。有点繁琐,~~希望一次成功哦~~。
# cd linux-2.6.18 (进入到/usr/src/linux-2.6.18目录下)
# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,你可以用方向键来选择,用Y键来确定。经过我多次试验,大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有可能前功尽弃):
(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;
(2)Device Drivers--->Block Devices中选上“Loopback device support”;
Device Drivers--->Multi-device support(RAID and LVM)处要选上“device mapper support”;
Device Drivers--->Graphics support,一定要选上“ Support for frame buffer devices”;
Device Drivers --->USB support --->选上“USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)
Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) ---><*> AMD PCnet32 PCI support
(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBB (ext3) debugging support
File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;
注意:
ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
kernel panic : no init found ,try passing init = option to kernel.....
或者是:
VFS:Cannot open root device "hdxy" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
或者是:
mount: error 19 mounting ext3
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc fail: 2
Freeing unused kernel memory: 244k freed
Kernel panic – not syncing: No init found. Try passing init = option to kernel
(我的机器就是在重启之后出现第三种错误,进不去系统,郁闷死,只好重装了~~~如果依照本文做完所有步骤,当你重启Linux系统后,若不幸进不去2.6.18内核,你会发现你的出错信息就是上面三种了~~~哈!)
(4)如果你在vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:
Device Drivers ---><*>SCSI device support (此项不选的话,下面两项就选择不上)
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support
三、编译工作
OK,繁杂的配置工作完成了,至此,编译前的准备工作都做好了!
9、开始编译啦……
在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!
# make dep (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage (注意大小写。这一步才是真正编译内核)
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules (编译可加载模块)
# make modules_install (安装可加载模块)
安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
# make install (安装新内核)
注意:
make install的时候可能会出现如下错误信息:
No module BusLogic found for kernel 2.4.12
mkinitrd failed
此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi
不过别忘记,复制过后再执行一下make install。
四、启动新内核
10、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:
# cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
# cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
# cd /boot (进入boot目录)
# rm –rf System.map (删除原来的连接)
# ln –s System.map-2.6.18 System.map (重新建立连接)
11、修改Grub启动管理器
如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下会生成一个initrd-2.4.18.img,并且你的grub.conf文件也作了相应更改)
# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda2)
# vi /grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root= LABEL=/
initrd /initrd-2.6.18.img
做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/hda2
initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img配置完成,重启机器,OK !
-
安装交叉编译工具
2007-10-18 10:49:56
安装交叉编译工具Ø 下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 编译内核Ø 安装//将压缩包移动至根目录下#mv arm-linux-gcc-3.4.1.tar.bz2 ///解压,默认路径为 /usr/local/arm /3.4.1#tar jxvf arm-linux-gcc-3.4.1.tar.gz2下载Linux内核Ø 下载Linux 2.6.14.1内核Ø 解压内核#cd ~#tar jxvf linux-2.6.14.1.tar.bz2建立环境变量Ø 将交叉编译工具路径和内核路径加入环境变量#vi ~/.bashrcexport KERNEL=~/linux-2.6.14.1export PATH=/usr/local/arm/3.4.1/bin:$PATH内核移植Ø 为Flash进行分区启动开发板,进入vivi,对vivi进行分区操作vivi>bon part 0 128k 192k 2240k 5312k:m 64704k分区信息如下所示:分区起始地址分区大小分区作用Part00x00x00020000 (128k)bootloaderPart10x000200000x00010000 (64k)bootloader paramsPart20x000300000x00200000 (2m)linux kernelPart30x002300000x00300000 (3m)root filesystemPart40x005300000x03A00000 (58m)yaffs filesystem将vivi写进Flashvivi>load flash vivi xØ 修改Makefile#vi $KERNEL/Makefile找到ARCH与CROSS_COMPILE,修改为ARCH ?= armCROSS_COMPILE ?= arm-linux-Ø 将分区信息加入内核#vi $KERNEL/arch/arm/mach-s3c2410/devs.c添加头文件:#include <linux/mtd/partitions.h>#include <linux/mtd/nand.h>#include <asm/arch/nand.h>添加分区结构:static struct mtd_partition partition_info[]={{name: "loader", //分区名字,任意size: 0x00020000, //分区大小offset: 0x0, //分区的起始地址,相对于0x0的偏移},{name: "param",size: 0x00010000,offset: 0x00020000,},{name: "kernel",size: 0x00200000,offset: 0x00030000,},{name: "rootfs",size: 0x00300000,offset: 0x00230000,},{name: "yaffs",size: 0x03A00000,offset: 0x00530000,}};struct s3c2410_nand_set nandset={nr_partitions: 5, //分区数量partitions: partition_info, //分区表};struct s3c2410_platform_nand superlpplatform={//NAND Flash芯片支持//参数意义可参考S3C2410手册tacls: 0,twrph0: 30,twrph1: 0,sets: &nandset,nr_sets: 1,};修改s3c_device_nand,以加入NAND Flash驱动:struct platform_device s3c_device_nand = {.name = "s3c2410-nand", //设备名称.id = -1, //有效设备编号,-1表示唯一设备.num_resources = ARRAY_SIZE(s3c_nand_resource), //寄存器区的个数.resource = s3c_nand_resource, //寄存器区的首地址//添加如下信息,表示NAND Flash设备.dev={.platform_data=&superlpplatform}};Ø 指定启动时的设备初始化#vi $KERNEL/arch/arm/mach-s3c2410/mach-smdk2410.c修改:static struct platform_device *smdk2410_devices[] __initdata = {s3c_device_usb,s3c_device_lcd,s3c_device_wdt,s3c_device_i2c,s3c_device_iis,//添加如下信息s3c_device_nand,};Ø 禁止Flash ECC效验内核通过vivi把数据写入NAND Flash,而vivi的ECC效验算法和内核的不同,内核的效验码是由NAND Flash控制器产生的,所以在此必须禁用NAND Flash ECC。#vi $KERNEL/drivers/mtd/nand/s3c2410.c找到s3c2410_nand_init_chip函数,将chip->eccmode的值修改为:NAND_ECC_NONEYaffs2加载Ø 下载Yaffs2Ø 解压Yaffs2并将其加入Linux内核#cd ~#tar zxvf yaffs2.tar.gz#cd yaffs2#sh patch-ker.sh c $KERNEL内核配置(.config)与编译Ø 内核配置(基于$KERNEL/arch/arm/configs/s3c2410_defconfig)(见附录)Ø 编译内核#make zImage修改根文件系统在宿主机上进入目录/arm2410s(博创2410-s平台提供),该目录下的root目录就是一个制作好的根文件系统。在此基础上,我们要对root/etc/fstab分区配置文件进行修改,用来挂载Yaffs文件系统。#vi /arm2410s/root/etc/fstab找到yaffs,修改为:/dev/mtdblock/4 /mnt/yaffs yaffs defaults 1 1然后制作根文件系统镜像。#mkcramfs root root.cramfs安装内核和根文件系统Ø 将编译好的内核2.6.14.1写入Flashvivi>load kernel xØ 将制作的根文件系统root.cramfs写入Flashvivi>load root xØ 修改vivi启动参数vivi>param set linux_cmd_line “noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200”vivi>param saveØ 重启开发板,完成工作。附录:内核配置文件.config## Automatically generated make config: don't edit# Linux kernel version: 2.6.14.1# Sat Aug 18 18:40:48 2007#CONFIG_ARM=yCONFIG_MMU=yCONFIG_UID16=yCONFIG_RWSEM_GENERIC_SPINLOCK=yCONFIG_GENERIC_CALIBRATE_DELAY=yCONFIG_GENERIC_IOMAP=y# Code maturity level optionsCONFIG_EXPERIMENTAL=yCONFIG_CLEAN_COMPILE=yCONFIG_BROKEN_ON_SMP=y# General setupCONFIG_LOCALVERSION=""CONFIG_SWAP=yCONFIG_SYSVIPC=y# CONFIG_POSIX_MQUEUE is not set# CONFIG_BSD_PROCESS_ACCT is not setCONFIG_SYSCTL=y# CONFIG_AUDIT is not setCONFIG_LOG_BUF_SHIFT=14CONFIG_HOTPLUG=yCONFIG_KOBJECT_UEVENT=y# CONFIG_IKCONFIG is not set# CONFIG_EMBEDDED is not setCONFIG_KALLSYMS=y# CONFIG_KALLSYMS_ALL is not set# CONFIG_KALLSYMS_EXTRA_PASS is not setCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_CC_OPTIMIZE_FOR_SIZE=yCONFIG_SHMEM=yCONFIG_CC_ALIGN_FUNCTIONS=0CONFIG_CC_ALIGN_LABELS=0CONFIG_CC_ALIGN_LOOPS=0CONFIG_CC_ALIGN_JUMPS=0# CONFIG_TINY_SHMEM is not set# Loadable module supportCONFIG_MODULES=y# CONFIG_MODULE_UNLOAD is not setCONFIG_OBSOLETE_MODPARM=y# CONFIG_MODVERSIONS is not set# CONFIG_MODULE_SRCVERSION_ALL is not setCONFIG_KMOD=y# System Type# CONFIG_ARCH_CLPS7500 is not set# CONFIG_ARCH_CLPS711X is not set# CONFIG_ARCH_CO285 is not set# CONFIG_ARCH_EBSA110 is not set# CONFIG_ARCH_CAMELOT is not set# CONFIG_ARCH_FOOTBRIDGE is not set# CONFIG_ARCH_INTEGRATOR is not set# CONFIG_ARCH_IOP3XX is not set# CONFIG_ARCH_IXP4XX is not set# CONFIG_ARCH_IXP2000 is not set# CONFIG_ARCH_L7200 is not set# CONFIG_ARCH_PXA is not set# CONFIG_ARCH_RPC is not set# CONFIG_ARCH_SA1100 is not setCONFIG_ARCH_S3C2410=y# CONFIG_ARCH_SHARK is not set# CONFIG_ARCH_LH7A40X is not set# CONFIG_ARCH_OMAP is not set# CONFIG_ARCH_VERSATILE is not set# CONFIG_ARCH_IMX is not set# CONFIG_ARCH_H720X is not set# S3C24XX Implementations# CONFIG_ARCH_BAST is not set# CONFIG_ARCH_H1940 is not setCONFIG_ARCH_SMDK2410=y# CONFIG_MACH_VR1000 is not set# CONFIG_MACH_RX3715 is not setCONFIG_CPU_S3C2410=y# S3C2410 SetupCONFIG_S3C2410_DMA=y# CONFIG_S3C2410_DMA_DEBUG is not setCONFIG_S3C2410_LOWLEVEL_UART_PORT=0# Processor TypeCONFIG_CPU_32=yCONFIG_CPU_ARM920T=yCONFIG_CPU_32v4=yCONFIG_CPU_ABRT_EV4T=yCONFIG_CPU_CACHE_V4WT=yCONFIG_CPU_CACHE_VIVT=yCONFIG_CPU_COPY_V4WB=yCONFIG_CPU_TLB_V4WBI=y# Processor FeaturesCONFIG_ARM_THUMB=y# CONFIG_CPU_ICACHE_DISABLE is not set# CONFIG_CPU_DCACHE_DISABLE is not set# CONFIG_CPU_DCACHE_WRITETHROUGH is not set# General setupCONFIG_ZBOOT_ROM_TEXT=0CONFIG_ZBOOT_ROM_BSS=0# CONFIG_XIP_KERNEL is not set# PCCARD (PCMCIA/CardBus) support# CONFIG_PCCARD is not set# PC-card bridges# At least one math emulation must be selectedCONFIG_FPE_NWFPE=y# CONFIG_FPE_NWFPE_XP is not set# CONFIG_FPE_FASTFPE is not setCONFIG_BINFMT_ELF=yCONFIG_BINFMT_AOUT=y# CONFIG_BINFMT_MISC is not set# Generic Driver OptionsCONFIG_STANDALONE=yCONFIG_PREVENT_FIRMWARE_BUILD=y# CONFIG_FW_LOADER is not set# CONFIG_DEBUG_DRIVER is not set# CONFIG_PM is not set# CONFIG_PREEMPT is not set# CONFIG_ARTHUR is not setCONFIG_CMDLINE="noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200"CONFIG_ALIGNMENT_TRAP=y# Parallel port support# CONFIG_PARPORT is not set# Memory Technology Devices (MTD)CONFIG_MTD=y# CONFIG_MTD_DEBUG is not setCONFIG_MTD_PARTITIONS=y# CONFIG_MTD_CONCAT is not set# CONFIG_MTD_REDBOOT_PARTS is not set# CONFIG_MTD_CMDLINE_PARTS is not set# CONFIG_MTD_AFS_PARTS is not set# User Modules And Translation LayersCONFIG_MTD_CHAR=yCONFIG_MTD_BLOCK=y# CONFIG_FTL is not set# CONFIG_NFTL is not set# CONFIG_INFTL is not set# RAM/ROM/Flash chip driversCONFIG_MTD_CFI=y# CONFIG_MTD_JEDECPROBE is not setCONFIG_MTD_GEN_PROBE=y# CONFIG_MTD_CFI_ADV_OPTIONS is not setCONFIG_MTD_MAP_BANK_WIDTH_1=yCONFIG_MTD_MAP_BANK_WIDTH_2=yCONFIG_MTD_MAP_BANK_WIDTH_4=y# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set# CONFIG_MTD_MAP_BANK_WIDTH_32 is not setCONFIG_MTD_CFI_I1=yCONFIG_MTD_CFI_I2=y# CONFIG_MTD_CFI_I4 is not set# CONFIG_MTD_CFI_I8 is not setCONFIG_MTD_CFI_INTELEXT=y# CONFIG_MTD_CFI_AMDSTD is not set# CONFIG_MTD_CFI_STAA is not setCONFIG_MTD_CFI_UTIL=y# CONFIG_MTD_RAM is not set# CONFIG_MTD_ROM is not set# CONFIG_MTD_ABSENT is not set# CONFIG_MTD_XIP is not set# Mapping drivers for chip access# CONFIG_MTD_COMPLEX_MAPPINGS is not set# CONFIG_MTD_PHYSMAP is not set# CONFIG_MTD_ARM_INTEGRATOR is not set# CONFIG_MTD_EDB7312 is not set# Self-contained MTD device drivers# CONFIG_MTD_SLRAM is not set# CONFIG_MTD_PHRAM is not set# CONFIG_MTD_MTDRAM is not set# CONFIG_MTD_BLKMTD is not set# CONFIG_MTD_BLOCK2MTD is not set# Disk-On-Chip Device Drivers# CONFIG_MTD_DOC2000 is not set# CONFIG_MTD_DOC2001 is not set# CONFIG_MTD_DOC2001PLUS is not set# NAND Flash Device DriversCONFIG_MTD_NAND=y# CONFIG_MTD_NAND_VERIFY_WRITE is not setCONFIG_MTD_NAND_IDS=yCONFIG_MTD_NAND_S3C2410=y# CONFIG_MTD_NAND_S3C2410_DEBUG is not set# CONFIG_MTD_NAND_S3C2410_HWECC is not set# CONFIG_MTD_NAND_DISKONCHIP is not set# CONFIG_MTD_NAND_NANDSIM is not set# Plug and Play support# Block devices# CONFIG_BLK_DEV_FD is not set# CONFIG_BLK_DEV_COW_COMMON is not set# CONFIG_BLK_DEV_LOOP is not set# CONFIG_BLK_DEV_NBD is not set# CONFIG_BLK_DEV_UB is not set# CONFIG_BLK_DEV_RAM is not setCONFIG_BLK_DEV_RAM_COUNT=16CONFIG_INITRAMFS_SOURCE=""# CONFIG_CDROM_PKTCDVD is not set# IO SchedulersCONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=y# CONFIG_ATA_OVER_ETH is not set# Multi-device support (RAID and LVM)# CONFIG_MD is not set# Networking supportCONFIG_NET=y# Networking optionsCONFIG_PACKET=yCONFIG_PACKET_MMAP=y# CONFIG_NETLINK_DEV is not setCONFIG_UNIX=y# CONFIG_NET_KEY is not setCONFIG_INET=yCONFIG_IP_MULTICAST=y# CONFIG_IP_ADVANCED_ROUTER is not set# CONFIG_IP_PNP is not set# CONFIG_NET_IPIP is not set# CONFIG_NET_IPGRE is not set# CONFIG_IP_MROUTE is not set# CONFIG_ARPD is not set# CONFIG_SYN_COOKIES is not set# CONFIG_INET_AH is not set# CONFIG_INET_ESP is not set# CONFIG_INET_IPCOMP is not set# CONFIG_INET_TUNNEL is not set# CONFIG_IP_TCPDIAG is not set# CONFIG_IP_TCPDIAG_IPV6 is not set# CONFIG_IPV6 is not set# CONFIG_NETFILTER is not set# SCTP Configuration (EXPERIMENTAL)# CONFIG_IP_SCTP is not set# CONFIG_ATM is not set# CONFIG_BRIDGE is not set# CONFIG_VLAN_8021Q is not set# CONFIG_DECNET is not set# CONFIG_LLC2 is not set# CONFIG_IPX is not set# CONFIG_ATALK is not set# CONFIG_X25 is not set# CONFIG_LAPB is not set# CONFIG_NET_DIVERT is not set# CONFIG_ECONET is not set# CONFIG_WAN_ROUTER is not set# QoS and/or fair queueing# CONFIG_NET_SCHED is not set# CONFIG_NET_CLS_ROUTE is not set# Network testing# CONFIG_NET_PKTGEN is not set# CONFIG_NETPOLL is not set# CONFIG_NET_POLL_CONTROLLER is not set# CONFIG_HAMRADIO is not set# CONFIG_IRDA is not set# CONFIG_BT is not setCONFIG_NETDEVICES=y# CONFIG_DUMMY is not set# CONFIG_BONDING is not set# CONFIG_EQUALIZER is not set# CONFIG_TUN is not set# Ethernet (10 or 100Mbit)CONFIG_NET_ETHERNET=y# CONFIG_MII is not set# CONFIG_SMC91X is not set# Ethernet (1000 Mbit)# Ethernet (10000 Mbit)# Token Ring devices# Wireless LAN (non-hamradio)# CONFIG_NET_RADIO is not set# Wan interfaces# CONFIG_WAN is not setCONFIG_PPP=yCONFIG_PPP_MULTILINK=y# CONFIG_PPP_FILTER is not setCONFIG_PPP_ASYNC=yCONFIG_PPP_SYNC_TTY=y# CONFIG_PPP_DEFLATE is not set# CONFIG_PPP_BSDCOMP is not setCONFIG_PPPOE=y# CONFIG_SLIP is not set# CONFIG_SHAPER is not set# CONFIG_NETCONSOLE is not set# ATA/ATAPI/MFM/RLL support# CONFIG_IDE is not set# SCSI device supportCONFIG_SCSI=yCONFIG_SCSI_PROC_FS=y# SCSI support type (disk, tape, CD-ROM)CONFIG_BLK_DEV_SD=y# CONFIG_CHR_DEV_ST is not set# CONFIG_CHR_DEV_OSST is not set# CONFIG_BLK_DEV_SR is not setCONFIG_CHR_DEV_SG=y# Some SCSI devices (e.g. CD jukebox) support multiple LUNs# CONFIG_SCSI_MULTI_LUN is not set# CONFIG_SCSI_CONSTANTS is not set# CONFIG_SCSI_LOGGING is not set# SCSI Transport Attributes# CONFIG_SCSI_SPI_ATTRS is not set# CONFIG_SCSI_FC_ATTRS is not set# CONFIG_SCSI_ISCSI_ATTRS is not set# SCSI low-level drivers# CONFIG_SCSI_SATA is not set# CONFIG_SCSI_DEBUG is not set# Fusion MPT device support# IEEE 1394 (FireWire) support# I2O device support# ISDN subsystem# CONFIG_ISDN is not set# Input device supportCONFIG_INPUT=y# Userland interfacesCONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768# CONFIG_INPUT_JOYDEV is not set# CONFIG_INPUT_TSDEV is not set# CONFIG_INPUT_EVDEV is not set# CONFIG_INPUT_EVBUG is not set# Input I/O drivers# CONFIG_GAMEPORT is not setCONFIG_SOUND_GAMEPORT=yCONFIG_SERIO=yCONFIG_SERIO_SERPORT=y# CONFIG_SERIO_CT82C710 is not setCONFIG_SERIO_LIBPS2=y# CONFIG_SERIO_RAW is not set# Input Device DriversCONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=y# CONFIG_KEYBOARD_SUNKBD is not set# CONFIG_KEYBOARD_LKKBD is not set# CONFIG_KEYBOARD_XTKBD is not set# CONFIG_KEYBOARD_NEWTON is not setCONFIG_INPUT_MOUSE=yCONFIG_MOUSE_PS2=y# CONFIG_MOUSE_SERIAL is not set# CONFIG_MOUSE_VSXXXAA is not set# CONFIG_INPUT_JOYSTICK is not set# CONFIG_INPUT_TOUCHSCREEN is not set# CONFIG_INPUT_MISC is not set# Character devicesCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=y# CONFIG_SERIAL_NONSTANDARD is not set# Serial drivers# CONFIG_SERIAL_8250 is not set# Non-8250 serial port supportCONFIG_SERIAL_S3C2410=yCONFIG_SERIAL_S3C2410_CONSOLE=yCONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_UNIX98_PTYS=yCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256# IPMI# CONFIG_IPMI_HANDLER is not set# Watchdog Cards# CONFIG_WATCHDOG is not set# CONFIG_NVRAM is not set# CONFIG_RTC is not setCONFIG_S3C2410_RTC=y# CONFIG_DTLK is not set# CONFIG_R3964 is not set# Ftape, the floppy tape device driver# CONFIG_DRM is not set# CONFIG_RAW_DRIVER is not set# I2C support# CONFIG_I2C is not set# Multimedia devicesCONFIG_VIDEO_DEV=y# Video For Linux# Video Adapters# CONFIG_VIDEO_CPIA is not set# Radio Adapters# CONFIG_RADIO_MAESTRO is not set# Digital Video Broadcasting Devices# CONFIG_DVB is not set# File systems# CONFIG_EXT2_FS is not set# CONFIG_EXT3_FS is not set# CONFIG_JBD is not set# CONFIG_REISERFS_FS is not set# CONFIG_JFS_FS is not set# XFS support# CONFIG_XFS_FS is not set# CONFIG_MINIX_FS is not setCONFIG_ROMFS_FS=y# CONFIG_QUOTA is not setCONFIG_DNOTIFY=y# CONFIG_AUTOFS_FS is not setCONFIG_AUTOFS4_FS=y# CD-ROM/DVD Filesystems# CONFIG_ISO9660_FS is not set# CONFIG_UDF_FS is not set# DOS/FAT/NT FilesystemsCONFIG_FAT_FS=y# CONFIG_MSDOS_FS is not setCONFIG_VFAT_FS=yCONFIG_FAT_DEFAULT_CODEPAGE=437CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"# CONFIG_NTFS_FS is not set# Pseudo filesystemsCONFIG_PROC_FS=yCONFIG_SYSFS=yCONFIG_DEVFS_FS=yCONFIG_DEVFS_MOUNT=y# CONFIG_DEVFS_DEBUG is not set# CONFIG_DEVPTS_FS_XATTR is not setCONFIG_TMPFS=y# CONFIG_TMPFS_XATTR is not set# CONFIG_HUGETLB_PAGE is not setCONFIG_RAMFS=y# Miscellaneous filesystems# CONFIG_ADFS_FS is not set# CONFIG_AFFS_FS is not set# CONFIG_HFS_FS is not set# CONFIG_HFSPLUS_FS is not set# CONFIG_BEFS_FS is not set# CONFIG_BFS_FS is not set# CONFIG_EFS_FS is not setCONFIG_YAFFS_FS=yCONFIG_YAFFS_YAFFS1=y# CONFIG_YAFFS_9BYTE_TAGS is not setCONFIG_YAFFS_DOES_ECC=y# CONFIG_YAFFS_ECC_WRONG_ORDER is not setCONFIG_YAFFS_YAFFS2=yCONFIG_YAFFS_AUTO_YAFFS2=yCONFIG_YAFFS_DISABLE_LAZY_LOAD=yCONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10CONFIG_YAFFS_DISABLE_WIDE_TNODES=yCONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED=yCONFIG_YAFFS_SHORT_NAMES_IN_RAM=y# CONFIG_JFFS_FS is not set# CONFIG_JFFS2_FS is not setCONFIG_CRAMFS=y# CONFIG_VXFS_FS is not set# CONFIG_HPFS_FS is not set# CONFIG_QNX4FS_FS is not set# CONFIG_SYSV_FS is not set# CONFIG_UFS_FS is not set# Network File SystemsCONFIG_NFS_FS=yCONFIG_NFS_V3=y# CONFIG_NFS_V4 is not set# CONFIG_NFS_DIRECTIO is not set# CONFIG_NFSD is not setCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_SUNRPC=y# CONFIG_RPCSEC_GSS_KRB5 is not set# CONFIG_RPCSEC_GSS_SPKM3 is not set# CONFIG_SMB_FS is not set# CONFIG_CIFS is not set# CONFIG_NCP_FS is not set# CONFIG_CODA_FS is not set# CONFIG_AFS_FS is not set# Partition TypesCONFIG_PARTITION_ADVANCED=y# CONFIG_ACORN_PARTITION is not set# CONFIG_OSF_PARTITION is not set# CONFIG_AMIGA_PARTITION is not set# CONFIG_ATARI_PARTITION is not set# CONFIG_MAC_PARTITION is not setCONFIG_MSDOS_PARTITION=y# CONFIG_BSD_DISKLABEL is not set# CONFIG_MINIX_SUBPARTITION is not set# CONFIG_SOLARIS_X86_PARTITION is not set# CONFIG_UNIXWARE_DISKLABEL is not set# CONFIG_LDM_PARTITION is not set# CONFIG_SGI_PARTITION is not set# CONFIG_ULTRIX_PARTITION is not set# CONFIG_SUN_PARTITION is not set# CONFIG_EFI_PARTITION is not set# Native Language SupportCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"# CONFIG_NLS_CODEPAGE_437 is not set# CONFIG_NLS_CODEPAGE_737 is not set# CONFIG_NLS_CODEPAGE_775 is not set# CONFIG_NLS_CODEPAGE_850 is not set# CONFIG_NLS_CODEPAGE_852 is not set# CONFIG_NLS_CODEPAGE_855 is not set# CONFIG_NLS_CODEPAGE_857 is not set# CONFIG_NLS_CODEPAGE_860 is not set# CONFIG_NLS_CODEPAGE_861 is not set# CONFIG_NLS_CODEPAGE_862 is not set# CONFIG_NLS_CODEPAGE_863 is not set# CONFIG_NLS_CODEPAGE_864 is not set# CONFIG_NLS_CODEPAGE_865 is not set# CONFIG_NLS_CODEPAGE_866 is not set# CONFIG_NLS_CODEPAGE_869 is not setCONFIG_NLS_CODEPAGE_936=y# CONFIG_NLS_CODEPAGE_950 is not set# CONFIG_NLS_CODEPAGE_932 is not set# CONFIG_NLS_CODEPAGE_949 is not set# CONFIG_NLS_CODEPAGE_874 is n如何为嵌入式开发建立交叉编译环境
2007-10-18 10:40:18
