Вопрос или проблема
Я пытаюсь записать кастомный образ с моей SD-карты (mmcblk0) на eMMC (mmcblk1) моего BeagleBone.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 96M 0 part
├─mmcblk0p2 179:2 0 3.5G 0 part /
└─mmcblk0p3 179:3 0 9.8M 0 part
mmcblk1 179:8 0 3.6G 0 disk
mmcblk1boot0 179:16 0 2M 1 disk
mmcblk1boot1 179:24 0 2M 1 disk
Я пытаюсь выполнить эту команду, но мне пишут, что на eMMC не осталось места –
sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M status=progress
3825205248 bytes (3.8 GB, 3.6 GiB) copied, 306 s, 12.5 MB/s
dd: error writing '/dev/mmcblk1': No space left on device
913+0 records in
912+0 records out
3825205248 bytes (3.8 GB, 3.6 GiB) copied, 306.278 s, 12.5 MB/s
Но образ, который я хочу скопировать, в общей сложности меньше 3.6GB –
df -h
Filesystem Size Used Avail Use% Mounted on
udev 10M 0 10M 0% /dev
tmpfs 100M 4.2M 96M 5% /run
/dev/mmcblk0p2 3.4G 2.8G 454M 87% /
tmpfs 249M 0 249M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 249M 0 249M 0% /sys/fs/cgroup
/dev/mmcblk0p1 96M 31M 66M 32% /boot/uboot
/dev/mmcblk0p3 9.8M 18K 9.8M 1% /usb_drive
Размер моей SD-карты почти 15GB, и, скорее всего, поэтому говорится, что на устройстве нет места. Оно пытается скопировать все 15GB. Я также попытался отдельно скопировать только mmcblk0p2 на mmcblk1, убрал SD-карту и попытался загрузиться с eMMC, используя команду –
sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M status=progress
Но это не работает. Светодиоды пользователя вообще не загораются. Как сделать так, чтобы образ загружался с eMMC? Спасибо.
Используйте fdisk
, чтобы подтвердить, что разделы находятся в начале mmcblk0. Возможно, вам потребуется использовать gparted
, чтобы их перестроить и сделать так.
Монтируйте / только для чтения, чтобы не получить несовместимую копию.
Используйте лимитированный по размеру dd
, который охватывает часть mmcblk0, содержащую таблицу разделов и сами разделы, или просто позвольте ему дойти до конца.
.
Ответ или решение
Для успешной передачи образа с SD-карты на eMMC устройства BeagleBone с использованием команд Linux, следует учесть несколько важных аспектов для предотвращения ошибок, таких как недостаток места на устройстве. Далее приведена пошаговая инструкция, как это сделать.
Шаг 1: Анализ текущей ситуации
Основной проблемой является недостаток пространства на eMMC (mmcblk1), когда вы пытаетесь клонировать весь диск mmcblk0, который имеет размер 14.9 ГБ. Однако сам образ, который вы хотите скопировать, не превышает 3.6 ГБ. Это говорит о том, что важно выбрать только те разделы, которые Вы хотите передать.
Шаг 2: Проверка структуры разделов
-
Используйте
fdisk
: Необходимо убедиться, что таблица разделов наmmcblk0
находится в начале устройства. Это критически важно для корректной передачи.sudo fdisk -l /dev/mmcblk0
Проверьте начало и размер каждого раздела.
Шаг 3: Подготовка к копированию
-
Переведите файловые системы в режим только для чтения: Это предотвратит неисправности во время копирования.
Например, если ваш активный раздел
/
наmmcblk0p2
, выполнить:sudo mount -o remount,ro /
Шаг 4: Уменьшение раздела (при необходимости)
- Уменьшите размер раздела: В случае, если root-раздел занимает больше места, чем доступно на eMMC, вы можете уменьшить его. Это можно сделать с помощью установленной программы, такой как
gparted
, или через командную строку сresize2fs
.
Шаг 5: Копирование образа
-
Копирование раздела: Используйте
dd
для копирования конкретного раздела.sudo dd if=/dev/mmcblk0p2 of=/dev/mmcblk1 bs=4M status=progress
Пожалуйста, убедитесь, что используете правильный идентификатор раздела для источника.
Шаг 6: Проверка конфигурации загрузчика
- Настройка загрузчика (U-Boot): Чтобы eMMC загрузился, возможно, потребуется настроить загрузочную секцию. Вероятно, что необходимо также перенести загрузочную запись. Проверьте конфигурацию U-Boot и убедитесь, что она соответствует вашему новому расположению образа.
Шаг 7: Тестирование
- Извлечение SD-карты и перезагрузка: Перезагрузите систему без SD-карты и проверьте, загружается ли она с eMMC. Обратите внимание на индикаторы, такие как светодиоды, чтобы убедиться, что загрузка происходит корректно.
Проделав все шаги корректно, вы сможете без проблем перенести систему с SD-карты на eMMC. Если у вас возникнут какие-либо проблемы, убедитесь, что все шаги были выполнены в надлежащем порядке, и проверьте журналы ошибок для дополнительной информации.