【招新任务】关于挂载与ramfs的一些问题


想请问一下
1.其他的fs在vfs-init里面初始化跟挂载,我就想让myramfs也在这里实现,就写了一个myramfs-init,可是系统跑起来之后根目录下面有其他三个fs,就是没有myramfs,这是为什么呢
2.尝试用命令mount一个myramfs类型的文件系统到根目录,显示说myramfs不是一个类型,要怎么让系统知道这是一个文件系统类型呢

希望能了解一些大概的逻辑

标题尽可能概括你的问题哈。

1 个赞

可以贴出myramfs的实现以供进一步的讨论。


我不是很理解具体实现,就想着像别的fs那样实现试试

vfs_init下面,有另一个函数是做文件系统迁移的。你可以照着那个去做就行

https://code.dragonos.org.cn/xref/DragonOS/kernel/src/filesystem/ramfs/mod.rs?r=1074eb34e784aa2adfc5b9e0d89fa4b7e6ea03ef#152

这个就声明了他能够被mount -t ramfs

我有在这里说明一个MYRAMFSMAKER,然后在vfs_init下面那个迁移文件系统的函数里面也实现了,make之后kernel panic,说myramfs没有被mount

完整日志之类的发一下。

enoent错误码就是找不到目录所以挂载不上。你是不是没创建成功。迁移的时候也要创建

RAMFSMAKER的用途是:当你使用系统调用挂载ramfs时,系统自动为你匹配ramfs的inode对象初始化。因此RAMFSMAKER与直接在内核初始化过程创建inode挂载的行为是重复的。
你可能并没有在初始化过程中创建ramfs对象。

1 个赞

迁移里面创建myramfs目录的时候没报错,到了mount才报错的吧

你上面的报错,就是在迁移的时候啊。

感谢,重写了一些东西后已经能够挂载