您如何找出哪个分区映射到嵌入式 linux 上的哪种存储设备类型?
how do you find out which partition maps to which memory device type on embedded linux?
fdisk 命令没有提供足够的细节。我想知道在嵌入式 linux.
上哪个硬件内存设备映射到 /dev/ 下的哪个分区节点
我是 运行 3.10 嵌入式 linux(yocto 项目)在 i.mx 处理器 6quad SABRESD 上用于智能设备板。
如果您在嵌入式系统中使用 udev
,您可以从 udev
获得一些信息(因为您使用的是 Yocto,所以您很有可能使用 udev
除非你真的把它削减到一个最小的系统)。
例如,我在 BeagleBone Black 类型系统上 运行 Yocto,它有一个 SD 卡和一个板载 eMMC。设备显示为 /dev/mmcblk0
和 /dev/mmcblk1
,其绕过方式取决于它从哪个内存引导(引导设备始终为 /dev/mmcblk0
)。
您可以使用 udevadm info -a -n <dev-name>
获取有关设备的信息:
# udevadm info -a -n /dev/mmcblk0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368/block/mmcblk0':
KERNEL=="mmcblk0"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="1953792"
ATTR{stat}==" 585 388 38332 3420 78 64 1136 1370 0 2960 4790"
ATTR{range}=="8"
ATTR{discard_alignment}=="0"
ATTR{force_ro}=="0"
ATTR{ext_range}=="8"
ATTR{alignment_offset}=="0"
ATTR{inflight}==" 0 0"
ATTR{removable}=="0"
ATTR{capability}=="10"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368':
KERNELS=="mmc0:b368"
SUBSYSTEMS=="mmc"
DRIVERS=="mmcblk"
ATTRS{cid}=="1b534d30303030301002b2ffa200b27f"
ATTRS{csd}=="002f00325b5983b9edb7ff9f16400005"
ATTRS{scr}=="0225000000000000"
ATTRS{date}=="02/2011"
ATTRS{name}=="00000"
ATTRS{type}=="SD"
ATTRS{preferred_erase_size}=="4194304"
ATTRS{fwrev}=="0x0"
ATTRS{hwrev}=="0x1"
ATTRS{oemid}=="0x534d"
ATTRS{manfid}=="0x00001b"
ATTRS{serial}=="0x02b2ffa2"
ATTRS{erase_size}=="512"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0':
KERNELS=="mmc0"
SUBSYSTEMS=="mmc_host"
DRIVERS==""
looking at parent device '/devices/ocp/48060000.mmc':
KERNELS=="48060000.mmc"
SUBSYSTEMS=="platform"
DRIVERS=="omap_hsmmc"
looking at parent device '/devices/ocp':
KERNELS=="ocp"
SUBSYSTEMS=="platform"
DRIVERS==""
然后你可以制定一个 udev 规则来对你感兴趣的 device/partition 进行符号化 link。例如:
SUBSYSTEM=="block", ATTRS{type}=="MMC", ATTR{partition}=="2", SYMLINK+="mmcblk-emmc-data"
SUBSYSTEM=="block", ATTRS{type}=="SD", ATTR{partition}=="2", SYMLINK+="mmcblk-sd-data"
应该生成一个 symlink 或两个:
# ls -al /dev/mmcblk-*
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-emmc-data -> mmcblk1p2
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-sd-data -> mmcblk0p2
fdisk 命令没有提供足够的细节。我想知道在嵌入式 linux.
上哪个硬件内存设备映射到 /dev/ 下的哪个分区节点我是 运行 3.10 嵌入式 linux(yocto 项目)在 i.mx 处理器 6quad SABRESD 上用于智能设备板。
如果您在嵌入式系统中使用 udev
,您可以从 udev
获得一些信息(因为您使用的是 Yocto,所以您很有可能使用 udev
除非你真的把它削减到一个最小的系统)。
例如,我在 BeagleBone Black 类型系统上 运行 Yocto,它有一个 SD 卡和一个板载 eMMC。设备显示为 /dev/mmcblk0
和 /dev/mmcblk1
,其绕过方式取决于它从哪个内存引导(引导设备始终为 /dev/mmcblk0
)。
您可以使用 udevadm info -a -n <dev-name>
获取有关设备的信息:
# udevadm info -a -n /dev/mmcblk0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368/block/mmcblk0':
KERNEL=="mmcblk0"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="1953792"
ATTR{stat}==" 585 388 38332 3420 78 64 1136 1370 0 2960 4790"
ATTR{range}=="8"
ATTR{discard_alignment}=="0"
ATTR{force_ro}=="0"
ATTR{ext_range}=="8"
ATTR{alignment_offset}=="0"
ATTR{inflight}==" 0 0"
ATTR{removable}=="0"
ATTR{capability}=="10"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0/mmc0:b368':
KERNELS=="mmc0:b368"
SUBSYSTEMS=="mmc"
DRIVERS=="mmcblk"
ATTRS{cid}=="1b534d30303030301002b2ffa200b27f"
ATTRS{csd}=="002f00325b5983b9edb7ff9f16400005"
ATTRS{scr}=="0225000000000000"
ATTRS{date}=="02/2011"
ATTRS{name}=="00000"
ATTRS{type}=="SD"
ATTRS{preferred_erase_size}=="4194304"
ATTRS{fwrev}=="0x0"
ATTRS{hwrev}=="0x1"
ATTRS{oemid}=="0x534d"
ATTRS{manfid}=="0x00001b"
ATTRS{serial}=="0x02b2ffa2"
ATTRS{erase_size}=="512"
looking at parent device '/devices/ocp/48060000.mmc/mmc_host/mmc0':
KERNELS=="mmc0"
SUBSYSTEMS=="mmc_host"
DRIVERS==""
looking at parent device '/devices/ocp/48060000.mmc':
KERNELS=="48060000.mmc"
SUBSYSTEMS=="platform"
DRIVERS=="omap_hsmmc"
looking at parent device '/devices/ocp':
KERNELS=="ocp"
SUBSYSTEMS=="platform"
DRIVERS==""
然后你可以制定一个 udev 规则来对你感兴趣的 device/partition 进行符号化 link。例如:
SUBSYSTEM=="block", ATTRS{type}=="MMC", ATTR{partition}=="2", SYMLINK+="mmcblk-emmc-data"
SUBSYSTEM=="block", ATTRS{type}=="SD", ATTR{partition}=="2", SYMLINK+="mmcblk-sd-data"
应该生成一个 symlink 或两个:
# ls -al /dev/mmcblk-*
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-emmc-data -> mmcblk1p2
lrwxrwxrwx 1 root root 9 Jul 1 17:34 /dev/mmcblk-sd-data -> mmcblk0p2