Linux一个命令多选项,Linux命令行中的多个根选项

我的内核命令行如下所示:

root=31:0 ro noinitrd console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=squashfs

我认为第一个根条目通过其主要和次要设备号识别磁盘,第二个条目通过其名称识别它.我可以确认rootfs确实在/ dev / mtdblock2上,但我不知道如何解释31:0.

解决方法:

当您多次提供相同选项时,不同模块的行为会有所不同.我知道你可以说console =多次,你可以获得多个控制台(我们将它用于带有主控制台的机器上的框架缓冲区和串口).

但是,您只能有一个根分区,因此root =几乎肯定会覆盖之前看到的值,几乎可以肯定是以从左到右的方式.这由内核源证实,在init / do_mounts.c中,函数root_dev_setup()负责对root =选项进行操作,它所做的只是将参数键存储在变量中. bootparam root = 31:0被root = / dev / mtdblock2覆盖,或者至少在我刚检查过的2.6.25源代码树中就是这种情况.

顺便说一句,如果你能胜任C,那么同一文件中的函数name_to_dev_t()负责解析root =的值,并且非常具有启发性!

x:y表示法是major的标准Unixism:minor,这是Unices识别设备的方式.传统上,major是识别硬件驱动程序的8位数字,minor是识别设备本身的8位数字.主要数字有两个名称空间:字符设备和块设备.你可以通过输入cat / proc / devices来看到它们,你可以通过说ls -la / dev来查看当前活动的内容.这是一个例子:

ls -la /dev/zero /dev/sda

brw-rw---- 1 root disk 8, 0 Jan 12 22:01 /dev/sda

crw-rw-rw- 1 root root 1, 5 Jan 12 22:01 /dev/zero

第一列标识驱动程序类型(b表示块,c表示字符). Jan左侧的两列是主要和次要格式的主要和次要数字.

您可以使用major:minor表示法为root = any独立于其名称的块设备.

设备编号的完整列表位于Documentation / devices.txt下的内核源代码树中. 31:0似乎是指系统上的第一张ROM卡/ dev / rom0.

标签:linux,kernel,boot,root-filesystem

来源: https://codeday.me/bug/20190810/1639763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值