6

Для проекта робототехники я собрал цель make, которая использует dd (на самом деле dcfldd) для записи образа Джесси Raspbian на SD-карту. Таким образом, я могу быть уверен, что моя среда воспроизводима с нуля в любое время, когда я захочу.

Цель make - просто

flash:
    sudo dcfldd bs=4M if=$(IMGPATH) of=$(SDX)
    sync

где $(SDX) - это /dev /sdc, и перед ним должен стоять скрипт, который монтирует изображение в /mnt /img, вносит некоторые изменения, вызывает sync , а затем отключает его.

Кажется, что процесс работает нормально, за исключением того, что мне всегда нужно дважды вызывать цель назначения - в первый раз, если я правильно извлекаю весь картридер и затем снова вставляю его, один из двух разделов образа не удается смонтировать, и, если я пытаюсь загрузить Raspberry Pi с него, у меня возникает паника ядра.

После попытки прошить карту (с помощью цели Make или вручную в терминале), выбрав опцию контекстного меню в Ubuntu "Извлечь родительский диск", удалив и заново вставив читатель, загрузочный раздел открывается в Nautilus, но я получаю следующий диалог, и нет основного раздела.

ошибка монтирования

Последние сто или около того строк dmesg здесь. Вероятно, соответствующие

[100640.545190] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

а также

[101082.691558] EXT4-fs (sdb2): bad geometry: block count 3894272 exceeds size of device (964096 blocks)

Как видно из первого, я делаю sudo fsck /dev/sdb и получаю следующее.

fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
fsck.ext2: No medium found while trying to open /dev/sdb

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
or
    e2fsck -b 32768 <device>

Если я сделаю

sudo dcfldd bs=4M if=/dev/sdb of=/tmp/from-sd-card.img count=1024
cmp /tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img

я получил

/tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img differ: char 4194342, line 1

и если я сделаю

cmp -b --verbose /tmp/from-sd-card.img /home/tsbertalan/workspace/gunnar/2016-05-27-raspbian-jessie.img

я получил

4194342   1 ^A     0 ^@
70255618  72 :    257 M-/
70255619  35 ^]     3 ^C
70255622 375 M-}  266 M-6
70255623 166 v     16 ^N
70255625  34 ^\   114 L
70255626 345 M-e  274 M-<
70255627   4 ^D     0 ^@
70255629  77 ?     14 ^L
70255630 371 M-y  176 ~
70255631 144 d      1 ^A
70255633 326 M-V  200 M-^@
70255634 256 M-.  252 M-*
70255635  32 ^Z     1 ^A
70255661 373 M-{  114 L
70255662 123 S    124 T
70255665 105 E    120 P
70255666 132 Z    124 T
70255669  24 ^T     2 ^B
70255754   0 ^@   155 m
70255823 352 M-j  353 M-k
70255993 125 U    201 M-^A
70255994 323 M-S  343 M-c
70255995 257 M-/   71 9
1815085083  72 :      0 ^@
1815085084 103 C    132 Z

Это 4194342 , кажется, является согласованным.

Я могу воспроизвести проблему только в том случае, если я вставил правильно установленную карту в RPI, загрузил ее, а затем выключил. После этого требуется две попытки правильно прошить карту. Теперь я сильно подозреваю, что автоматическое изменение размера, которое Raspbian выполняет при первой загрузке, может быть частью этой проблемы. Если этот вопрос больше подходит для сайта обмена стеками Raspberry Pi, его можно переместить туда.

Что тут происходит? Есть ли какой-то другой способ, которым я должен написать это изображение, чтобы оно работало с первой попытки? Я не хочу бесполезно сжигать свои ограниченные циклы записи на SD-карту.

У меня есть только один кард-ридер для тестирования, но я попробовал и с Samsung EVO micro SDHC на 16 ГБ, SanDisk Ultra Micro SDHC на 8 ГБ и SanDisk Ultra Micro SDHC на 32 ГБ, с одинаковыми результатами для всех.

1 ответ1

0

[101082.691558] EXT4-fs (sdb2): неверная геометрия: количество блоков 3894272 превышает размер устройства (964096 блоков)

Заголовок файловой системы поврежден. Обязательно откройте ошибку с сопровождающими инструмента автоматического изменения размера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .