Вопрос или проблема
Я пытаюсь создать раздел на SD-карте, для этого я следую этому руководству. Когда я ввожу команду
ll /dev/mmcblk*
Я получил это
ls: cannot access /dev/mmcblk*: No such file or directory
Поэтому я проверяю список элементов в /dev, вводя эту команду
ls /dev/
Я получил большой список элементов, но там нет ничего похожего на mmcblk0
или mmcblk1
. Список, который я получаю, следующий
autofs dvdrw loop4 psaux ram6 sdb tty10 tty24 tty38 tty51 tty8 ttyS2 ttyS5 vcs6
block ecryptfs loop5 ptmx ram7 sdb1 tty11 tty25 tty39 tty52 tty9 ttyS20 ttyS6 vcs7
bsg fb0 loop6 pts ram8 sg0 tty12 tty26 tty4 tty53 ttyprintk ttyS21 ttyS7 vcsa
btrfs-control fd loop7 ram0 ram9 sg1 tty13 tty27 tty40 tty54 ttyS0 ttyS22 ttyS8 vcsa1
bus full loop-control ram1 random sg2 tty14 tty28 tty41 tty55 ttyS1 ttyS23 ttyS9 vcsa2
cdrom fuse mapper ram10 rfkill shm tty15 tty29 tty42 tty56 ttyS10 ttyS24 uhid vcsa3
cdrw hidraw0 mcelog ram11 rtc snapshot tty16 tty3 tty43 tty57 ttyS11 ttyS25 uinput vcsa4
char hpet mei ram12 rtc0 snd tty17 tty30 tty44 tty58 ttyS12 ttyS26 urandom vcsa5
console input mem ram13 sda sr0 tty18 tty31 tty45 tty59 ttyS13 ttyS27 v4l vcsa6
core kmsg net ram14 sda1 stderr tty19 tty32 tty46 tty6 ttyS14 ttyS28 vcs vcsa7
cpu log network_latency ram15 sda2 stdin tty2 tty33 tty47 tty60 ttyS15 ttyS29 vcs1 vga_arbiter
cpu_dma_latency loop0 network_throughput ram2 sda3 stdout tty20 tty34 tty48 tty61 ttyS16 ttyS3 vcs2 vhost-net
disk loop1 null ram3 sda4 tty tty21 tty35 tty49 tty62 ttyS17 ttyS30 vcs3 video0
dri loop2 port ram4 sda5 tty0 tty22 tty36 tty5 tty63 ttyS18 ttyS31 vcs4 zero
dvd loop3 ppp ram5 sda6 tty1 tty23 tty37 tty50 tty7 ttyS19 ttyS4 vcs5
Я следовал этому руководству раньше, но не имею представления, что не так в этот раз. Поэтому, пожалуйста, подскажите, как получить список mmcblk.
Попробуйте lsblk из util-linux в командной строке в konsole:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 690.9M 1 loop /mnt/virtio
sda 8:0 0 1.8T 0 disk
├─sda1 8:1 0 512M 0 part
└─sda2 8:2 0 1.8T 0 part
└─luks-work 253:0 0 1.8T 0 crypt /mnt/work
nvme0n1 259:1 0 465.8G 0 disk
├─nvme0n1p1 259:2 0 512M 0 part /boot/efi
├─nvme0n1p2 259:3 0 512M 0 part /boot
└─nvme0n1p3 259:4 0 45G 0 part /
sr0 11:0 1 1024M 0 rom
mmcblk0 179:0 0 238.8G 0 disk
└─mmcblk0p1 179:1 0 238.7G 0 part
zram0 252:0 0 8G 0 disk [SWAP]
что должно перечислить все блочные устройства (за исключением RAM-дисков), например, жесткие диски, SSD, CD-ROM, SD-карты и их разделы.
SD-карта не обязательно видна как /dev/mmcblk*
. Еще один вариант — это /dev/sd*
.
Вы можете найти имя, посмотрев в вывод dmesg
. Другой способ — это извлечь карту, ввести ls /dev
, вставить карту, снова выполнить ls /dev
и найти разницу.
Ответ или решение
Для использования карты SD и создания на ней разделов в операционной системе Linux, необходимо правильно идентифицировать устройство, с которым вы работаете. В данном контексте пользователь столкнулся с проблемой, когда команда ll /dev/mmcblk*
не возвращает ожидаемых данных, поскольку устройство не отображается в пути /dev
как mmcblk
.
Теория
В Linux все устройства, включая карты памяти, флеш-накопители, жесткие диски и т.д., отображаются и взаимодействуют с системой через интерфейсы файловой системы в каталоге /dev
. Устройства блоков данных, такие как SD-карты, обычно отображаются как mmcblk
(в случае встроенных карт) или sd
(в случае съемных устройств, подключенных через USB).
-
mmcblk
иsd
устройства: Драйверы памяти MultiMediaCard (MMC) используют обозначениеmmcblk
, в то время как съемные и USB-устройства могут быть представлены в видеsd
-устройств. Это связано с использованием разных интерфейсов для взаимодействия с устройством. -
lsblk
иdmesg
: Командаlsblk
полезна для отображения всех устройств блоков данных. Она предоставляет более наглядное отображение подключенных устройств, их структуры разделов и точек монтирования, если таковые имеются. С другой стороны, командаdmesg
показывает сообщения ядра, что может быть полезно для диагностики проблем с подключением/идентификацией устройств. -
Идентификация через изменение в
/dev
: Часто бывает полезно физически извлечь SD-карту, ввести командуls /dev
, затем вставить карту обратно и снова ввестиls /dev
, чтобы увидеть, какое новое устройство появилось. Данное устройство, скорее всего, и будет вашей SD-картой.
Пример
В рассматриваемом примере пользователь наблюдает отсутствие mmcblk
-устройств:
ls: cannot access /dev/mmcblk*: No such file or directory
Затем с помощью:
ls /dev/
Он видит список устройств, но ни mmcblk0
, ни mmcblk1
там нет. Пользователю предлагается использовать команду lsblk
, чтобы увидеть полный список всех устройств блоков данных:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
mmcblk0 179:0 0 238.8G 0 disk
└─mmcblk0p1 179:1 0 238.7G 0 part
Применение
-
Использование
lsblk
: Откройте терминал и введитеlsblk
для отображения всех подключенных устройств. Обратите внимание на любые устройства, определенные какmmcblk
илиsd
. Пример выходных данных может включать следующее устройство:mmcblk0 179:0 0 238.8G 0 disk └─mmcblk0p1 179:1 0 238.7G 0 part
Это указывает на то, что
mmcblk0
— это ваша SD-карта, аmmcblk0p1
— её первый (и, возможно, единственный) раздел. -
Проверка
dmesg
: Если устройство не отображается, введитеdmesg
после подключения карты и найдите строки, связанные с вашим устройством, например:[ 1234.567890] sd 2:0:0:0: [sdb] 125440 512-byte logical blocks: (64.1 MB/61.2 MiB) [ 1234.567901] sd 2:0:0:0: [sdb] Write Protect is off
Здесь
sdb
указывает на подключенное устройство, которым может являться ваша SD-карта. -
Сравнение каталогов: Сначала выполните
ls /dev
до подключения карты, а затем после:$ ls /dev > before.txt # Подключите карту $ ls /dev > after.txt $ diff before.txt after.txt
Анализ этих файлов покажет новые устройства, которые появились после подключения карты.
-
Управление разделами: Как только ваше устройство определено, используйте команды
fdisk
илиgparted
для управления разделами, например:sudo fdisk /dev/mmcblk0
Следуйте инструкциям для добавления, удаления или изменения разделов в зависимости от ваших нужд.
Эти шаги должны помочь в определении и управлении разделами SD-карты с использованием соответствующих /dev
записей, позволяя эффективно работать с устройством.