首页 > 系统相关 >linux2.6内核中如何添加新的文件系统

linux2.6内核中如何添加新的文件系统

时间:2023-06-19 10:05:51浏览次数:43  
标签:addr fs myext2 文件系统 内核 linux2.6 bit nr ext2


《边干边学 - linux内核指导》中教授了如何在2.4内核中添加myext2文件系统的方法。2.6内核中文件组织稍有变化,通过试验,方法如下:

1. 将fs/ext2拷贝一份为fs/myext2

2. cd fs/myext2

3. sed -i "s/ext2/myext2/g" *      //将fs/myext2目录下出现的所有ext2替换为myext2

4. sed -i "s/EXT2/MYEXT2/g" *      //将fs/myext2目录下出现的所有EXT2替换为MYEXT2

5. 复制include/linux/ext2_fs.h 和 include/linux/ext2_fs_sb.h 为myext2_fs.h 和 myext2_fs_sb.h,并类似于3、4替换所有ext2为myext2 (大写和小写)

6. cp include/asm-generic/bitops/ext2-non-atomic.h asm-generic/bitops/myext2-non-atomic.h,然后替换所有ext2为myext2(大写和小写)

7.在 include/asm/bitops.h中添加如下内容:

#include <asm-generic/bitops/ext2-non-atomic.h>
#define ext2_set_bit_atomic(lock,nr,addr) /
                test_and_set_bit((nr),(unsigned long*)addr)
#define ext2_clear_bit_atomic(lock,nr,addr) /
                test_and_clear_bit((nr),(unsigned long*)addr)
#include <asm-generic/bitops/myext2-non-atomic.h>
#define myext2_set_bit_atomic(lock,nr,addr) /
                test_and_set_bit((nr),(unsigned long*)addr)
#define myext2_clear_bit_atomic(lock,nr,addr) /
                test_and_clear_bit((nr),(unsigned long*)addr)

8. 修改make menuconfig中的编译选项:

vi fs/Kconfig

config FS_XIP
# execute in place
        bool
        depends on EXT2_FS_XIP
        default y

config MYEXT2_FS
        tristate "My Second extended fs support"
        help
          Myext2 is a experimental filesystem
          To compile this file system support as a module, choose M here: the
          module will be called myext2.  Be aware however that the file system
          of your root partition (the one containing the directory /) cannot
          be compiled as a module, and so this could be dangerous.
          If unsure, say Y.
config MYEXT2_FS_XATTR
        bool "Ext2 extended attributes"
        depends on MYEXT2_FS
        help
          Extended attributes are name:value pairs associated with inodes by
          the kernel or by users (see the attr(5) manual page, or visit
          <http://acl.bestbits.at/> for details).

照着EXT2的写就行了。

make menuconfig看一下,是不是发现多了几个编译选项?

9. make menuconfig

10. make -j4

11. make modules

12. make modules_install

13. make install

查看一下grub的配置(vi /etc/grub.conf)

重启即可。

 

标签:addr,fs,myext2,文件系统,内核,linux2.6,bit,nr,ext2
From: https://blog.51cto.com/maray/6510879

相关文章

  • Linux的文件系统及文件缓存
    文件系统的特点文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层。文件应该用文件夹的形式组织起来,方便管理和......
  • Linux启动时间优化-内核和用户空间启动优化实践
    启动时间的优化,分为两大部分,分别是内核部分和用户空间两大部分。从内核timestamp0.000000作为内核启动起点,到free_initmem()输出"Freeinginitmemory"作为内核启动的终点。借助于bootgraph.py对内核的kmsg进行分析,输出bootgraph.html和initcall耗时csv文件。在紧接着free_i......
  • 《安富莱嵌入式周报》第315期:开源USB高速分析仪,8GHz示波器开发, 600行C编写RISC-V内
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1gV4y117UD/1、开源USB2.0高速分析仪https://github.com/ataradov/usb-snifferusb-sniffer-main.zip(2.05MB)分析仪上位机......
  • 文件系统
    用户态和内核态运行在内核态的进程可以毫无限制的访问各种资源,而在用户态下的用户进程的各种操作都有着限制,比如不能随意的访问内存、不能开闭中断以及切换运行的特权级别。操作系统一般是通过软件中断从用户态切换到内核态。函数工作流程虚拟地址空间每个进程都会分配虚拟......
  • 驱动开发:内核RIP劫持实现DLL注入
    本章将探索内核级DLL模块注入实现原理,DLL模块注入在应用层中通常会使用CreateRemoteThread直接开启远程线程执行即可,驱动级别的注入有多种实现原理,而其中最简单的一种实现方式则是通过劫持EIP的方式实现,其实现原理可总结为,挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,并......
  • 【回调详解】内核回调的详细图解【未完成】
    1、进程回调进程回调是内核下的全局变量,存放到PspCreateProcessNotifyRoutine中,该变量是个数组;该数组中已经存放函数的具体个数,则存放到全局变量PspCreateProcessNotifyRoutineCount中。PspCreateProcessNotifyRoutine的最大值由一个宏决定:PSP_MAX_CREATE_PROCESS_NOTIFY。1.1......
  • 虚拟文件系统
    虚拟文件系统虚拟文件系统是负责组织和管理文件系统的,就像虚拟内存用来实现管理内存系统.而在计算机中因为存储介质的问题,所以通常存在多个文件系统.比如:硬盘,光盘,闪盘这些存储介质的不同,还有例如一些操作系统的不同,以及文件特性的不同,因此不同的文件系统在实现上会有所......
  • 驱动开发:内核解锁与强删文件
    在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSetHandleAttributes函数将特定句柄设置为可关闭状态,然后在调用ZwClose将其文件关......
  • 关于xfs文件系统uuid的修改方法
    场景1:系统中有两个文件系统的uuid是一样(UUID 是通用唯一识别码(UniversallyUniqueIdentifier)的缩写)场景2:因一些特殊的原因,需要将文件系统的uuid修改成特定的uuid 当然场景1,其实也可以通过笔者另一篇文章中讲到的使用 mount-onouuid/dev/nvme1n1/nvme1n1的方式解......
  • 关于xfs文件系统-在操作系统中遇到两个uuid一样的-挂载报错-wrong fs type, bad optio
    当操作系统中,出现了两个uuid一样的文件系统(笔者这里是xfs),那么默认就只能挂载成功一个[root@qq-5201351~]#blkid|grepxfs|grep1ea9e784-0692-403c-bed1-bf34a5a86a57/dev/nvme1n1:UUID="1ea9e784-0692-403c-bed1-bf34a5a86a57"BLOCK_SIZE="512"TYPE="xfs"/dev/nvme2......