linux的rootfs解析和挂载


这里开始看rootfs的挂载流程,也就是root="/dev/xxxxxx"这样的指示,如何让内核启动rootfs。

常常看到 root=/dev/sd1 root=/dev/mmcblk01这样的


在内核中有很多 __setup定义的宏。主要用来处理commdline启动项参数

在init/do_mount.s中

static int __init root_dev_setup(char *line)
{
strlcpy(saved_root_name, line, sizeof(saved_root_name));
return 1;
}
__setup("root=", root_dev_setup);

表示命令行中如果遇到了root=xxxxx那么就调用root_dev_setup。主要是将字符串拷贝到saved_root_name当中


在rest_init中 启动kernel_init线程以后,kernel_init第一步就是调用kernel_init_freeable

在kernel_init_freeable中检查ramdisk_execute_command有没有。如果没有的话就会调用prepare_namespace

if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
ramdisk_execute_command = NULL;
prepare_namespace();
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值