在为DragonOS编写用户程序时遇到问题
需求
为ramfs编写测试,在用户态下挂载ramfs
问题
缺乏系统调用,relibc中未找到sys/mount.h的实现
用户程序无法访问内核中的RamFS,MountFS等结构体
请问用户态下挂载文件系统的最佳实践是什么?
为ramfs编写测试,在用户态下挂载ramfs
缺乏系统调用,relibc中未找到sys/mount.h的实现
用户程序无法访问内核中的RamFS,MountFS等结构体
请问用户态下挂载文件系统的最佳实践是什么?
编写了以下的用户程序,注入后运行,发生kernel panic:unsupported syscall 165
extern crate libc;
use libc::mount;
use libc::c_char;
fn main() {
let mut src:[c_char;10]=[0;10];
src[0]='/' as c_char;
let mut target:[c_char;10]=[0;10];
target[0]='/' as c_char;
target[1]='m' as c_char;
target[2]='n' as c_char;
target[3]='t' as c_char;
let mut fstype:[c_char;10]=[0;10];
fstype[0]='r' as c_char;
fstype[1]='a' as c_char;
fstype[2]='m' as c_char;
fstype[3]='f' as c_char;
fstype[4]='s' as c_char;
unsafe{
let c_str=std::ffi::CStr::from_ptr(src.as_ptr());
println!("{:?}",c_str);
}
unsafe{
let result=mount(src.as_ptr(), target.as_ptr(), fstype.as_ptr(), 0, std::ptr::null());
if result!=0{
println!("mount fs failed!");
}
}
}
relibc目前不再使用,请使用musl libc。
具体请参考文档:应用程序开发文档 — DragonOS dev 文档
然后关于用户态下面挂载文件系统,目前没有实现这个功能,不过难度应该不大,xd可以考虑写个PR来开发这个哈哈哈,我愿意提供一切帮助
这是华工DragonOS内部团队春招的项目任务QAQ重构ramfs的一个方法并在用户空间测试
如果是这个任务的话,那就是在内核里面临时挂载一下就行。参考现有的代码即可。
但是每次构建还会从镜像网站拉取relibc然后安装进usr喵,我以为项目还在施工relibc
这是个遗留问题,见