linux 文件系统 内核编译
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 文件系统 内核编译相关的知识,希望对你有一定的参考价值。
我想在redhat9.0中建立一个类ext2文件系统,就是复制原来的含有ext2的文件,然后再把其中的进行ext2变为myext2,进行相关的操作,再进行编译,命令为make menuconfig ,make dep,make bzImage。经过N次实验(n>=10),终于没错误了,进行测试,用命令
#dd if=/dev/zero of=myfs bs=1M count=1,
#mkfs.ext2 myfs
#mount -t myext2 -o loop ./myfs /mnt
第二条命令后出现myfs is not a block special device
第三条命令出现myext2 not supported by kernel
请大家帮帮忙,实在不明白哪里出错了。
我的myext2文件系统其实就是复制ext2然后将ext2改为MYEXT2.
步骤:1:在/usr/src/linux中把ext2下的文件复制,Include关于ext2的头文件进行复制,再用命令把复制后所有的含有ext2的变成myext2.
2:在linux下,将/include/linux中的fs.h中的含有ext2的行复制并替换成myext2
3:linux下的/Documentation/Configure.help中添加如下语句:My Second extended fs support CONFIG_MYEXT2_FS This is the test of adding a self-defined filesystem
再把linux下/fs/Makefile文件找到含有ext2的行复制并将ext2替换成myext2
4: 最后再运行上面的命令,就出现这样的结果。
注:我装的是虚拟机,在红帽9和ubuntu下做了好多次试验都是一样的结果,请指教。
2、第二条命令:
#mkfs.ext2 myfs
myfs is not a block special device.
无路如何也要继续?(y,n)
这时要输入y
3、第三条命令,linux kernel不支持myext2文件系统。我猜你是想要在红帽或ubuntu上mount一个ext2文件系统的loop设备,但是想使用myext2的文件系统驱动,对吧。我没有这么做过,猜不出你的myext2摘出来之后是什么样子的。我以前试过在linux安装新的文件系统支持,比如fuse系统,源码编译通过后会生成一个.ko的模块文件,使用insmod命令将其加入内核,才能获得内核对该文件系统的支持。我想你可能也应该这样做,你应该需要生成一个类似myext2.ko的模块,然后将其insmod到内核中去。 参考技术A 不被支持,不是块设备,这是不是你建立的这个类ext2文件系统不对啊? 参考技术B 内核源码树在/usr/src/kernel
目录里一般只有头文件,没有源码。
因此编译模块是可以的,
make module 没问题。如果要需要kernel源码 就下对应包(kernel-source-XXX)
参考命令:
rpm -qlp xxx.src.rpm (具体不太确定) redhat
sudo apt-get install linux-sourc ubuntu 参考技术C 提示的很清楚了。。。
第二条高告诉你不是块设备,你dd出来的东西是一个文件,你man dd下看看先
对于第三条您能给大家说下你的myext2文件系统是咋弄出来的么? 参考技术D 用 RH9 的高手连这都解决不了?
编译Linux内核
- Linux内核支持抢占式,支持对称多处理器结构。
- Linux由操作系统引导程序grub启动,配置文件是/boot/grub/grub.conf
- Linux内核源代码根目录是/home/Common/linux-2.6.39/;几个主要的目录:
kernel--linux系统的核心函数
mm--内存管理文件
fs--各种类型的文件系统,各种类型的文件操作
arch--与CPU类型相关的子目录和文件
include--所有头文件
net--和Linux网络相关的C文件
- 查看Linux内核状态,可以通过/proc虚拟文件系统
- C编程中要处理较多的命令行参数时,可以使用getopt_long函数
以上是关于linux 文件系统 内核编译的主要内容,如果未能解决你的问题,请参考以下文章