Вы можете получить некоторую информацию от udev
, если вы используете udev
во встроенной системе (поскольку вы используете Yocto, есть большая вероятность, что вы используете udev
, если вы действительно не сокращаете его до минимальной системы).
Например, я запускаю Yocto в системе типа BeagleBone Black, в которой есть 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, чтобы создать символическую ссылку на интересующее вас устройство/раздел. Например:
SUBSYSTEM=="block", ATTRS{type}=="MMC", ATTR{partition}=="2", SYMLINK+="mmcblk-emmc-data"
SUBSYSTEM=="block", ATTRS{type}=="SD", ATTR{partition}=="2", SYMLINK+="mmcblk-sd-data"
Что должно сделать символическую ссылку или две:
# 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
person
Craig McQueen
schedule
01.07.2015
cat /etc/mtab
. - person artless noise   schedule 19.01.2015cat /proc/mtd
иcat /proc/partitions
? - person yegorich   schedule 20.01.2015cat proc/mtd
дает наиболее значимую информацию, но она предоставляет информацию только об одном устройстве, которое является устройством SPI. Каждая другая команда дает значимую информацию, такую как тип файловой системы, дорожки и сектора и размеры блоков, НО не имя устройства. Эти имена устройств, по-видимому, были назначены в связующем дереве устройств для оборудования. Я бы хотел, чтобы Linux выплюнул это. - person marc   schedule 20.01.2015ls -l /dev/mtd*
илиls -l /dev/ | grep 90
. Это связывает /dev с /proc/mtd, если вы используете какое-то абсолютно мертвое пользовательское пространство. MTD — это не устройство, это раздел устройства. Такжеcat /proc/cmdline
может иметь строкуroot=xxx
. - person artless noise   schedule 20.01.2015