我想知道是否可以知道rootfile系统是否已从内核挂载。我试图从/ bin读取文件但它在启动时不起作用。
static int ret_my_file()
位于fs/exec.c
static int ret_my_file()
{
struct file* f;
char *dbtext;
struct path dbpath;
mm_segment_t oldfs;
struct kstat dbstat;
kern_path("/bin/myfile", 0, &dbpath);
vfs_getattr(&dbpath, &dbstat);
dbtext = vmalloc(dbstat.size*sizeof(char));
f=filp_open("/bin/myfile", O_RDONLY, 0);
oldfs=get_fs();
set_fs (KERNEL_DS);
vfs_read(f, dbtext, dbstat.size, &f->f_pos);
set_fs(oldfs);
printk(KERN_CRIT "Db value is");
printk(KERN_CRIT "%s\n",dbtext);
vfree(dbtext);
return 0;
}
在do_execveat_common()
中的函数fs/exec.c
中调用为
static int do_execveat_common(int fd, struct filename *filename,
struct user_arg_ptr argv,
struct user_arg_ptr envp,
int flags)
{
char *pathbuf = NULL;
struct linux_binprm *bprm;
struct file *file;
struct files_struct *displaced;
int retval;
retval=ret_my_file();
......}
但是在启动期间调用函数do_execveat_common()
所以我想在retval=ret_my_file();
之前设置一个条件,以便它只在挂载根文件系统之后运行