Как записать ось на MicroSD для Raspberry PI 3

Posted by

Наконец таки мне пришла моя посылка, а в ней . Теперь когда устройство у меня можно начать практически изучать.

Что толку от того, что я перечитал кучу книг, статей как на русском так и на английском языке. Сейчас когда передо мной Raspberry все как бы вылетело из головы, с чего начать? Что делать? Как использовать?

Вот и я начну свое познание с документирования каждого шага для своего блога «Творческий подъем»

В качестве основной системы с которой я буду взаимодействовать с Raspberry PI 3 будет выступать мой ноутбук Lenovo E555 с осью на борту Ubuntu 14.04.5 Desktop amd64 (Gnome Classic).

Первым делом скачиваю дистрибутив с официального сайта raspberry: Raspbian

Скачиваю с официального сайта дистрибутив RaspbianВ процессе мне понадобятся следующие утилиты одна для распаковки скачанного образа, а другая за отображением хода записи образа на карту памяти:

ekzorchik@navy:~$ sudo apt-get install unzip pv -y

ekzorchik@navy:~$ wget https://downloads.raspberrypi.org/raspbian/images/raspbian-2017-01-10/2017-01-11-raspbian-jessie.zip

ekzorchik@navy:~$ file 2017-01-11-raspbian-jessie.zip

2017-01-11-raspbian-jessie.zip: Zip archive data, at least v3.0 to extract

после нужно в обязательном порядке сравнить хеш сумму скачанного дистрибутива с той которая указана на сайте (см. скриншот выше куда показывает стрелка):

ekzorchik@navy:~$ sha1sum 2017-01-11-raspbian-jessie.zip

f987935e3e99366a6f1bf0d60a7a83fe3edb013c 2017-01-11-raspbian-jessie.zip

Теперь распаковываю скачанный архив, на выходе я должен получить файл с расширением img (образ):

ekzorchik@navy:~$ unzip 2017-01-11-raspbian-jessie.zip

ekzorchik@navy:~$ file 2017-01-11-raspbian-jessie.img && ls -lh $_

2017-01-11-raspbian-jessie.img: x86 boot sector

-rw-r--r-- 1 ekzorchik ekzorchik 4,1G янв. 10 17:59 2017-01-11-raspbian-jessie.img

А что же в этом образе, можно ли извлечь из него хоть какую-то информацию, ответ да можно:

ekzorchik@navy:~$ sudo fdisk -lu 2017-01-11-raspbian-jessie.img

Диск 2017-01-11-raspbian-jessie.img: 4371 МБ, 4371513344 байт

255 головок, 63 секторов/треков, 531 цилиндров, всего 8538112 секторов

Units = секторы of 1 * 512 = 512 bytes

Размер сектора (логического/физического): 512 байт / 512 байт

I/O size (minimum/optimal): 512 bytes / 512 bytes

Идентификатор диска: 0x623fdbf4

Устр-во Загр Начало Конец Блоки Id Система

2017-01-11-raspbian-jessie.img1 8192 137215 64512 c W95 FAT32 (LBA)

2017-01-11-raspbian-jessie.img2 137216 8538111 4200448 83 Linux

Теперь когда образ скачан и распакован перехожу к его записи на карту памяти:

Карта памяти на которую будут записывать дистрибутив: MicroSD Transcend 8Gb, вставляю ее в адаптер MicroSD Adapter (после снимаю переключатель с Lock тем самым активирую запись на карту памяти), а затем в ноутбук в соответствующий отсек.

ekzorchik@navy:~$ dmesg -T

[Чт. февр. 2 21:36:15 2017] mmc0: new high speed SDHC card at address e624

[Чт. февр. 2 21:36:15 2017] mmcblk0: mmc0:e624 SU08G 7.40 GiB

[Чт. февр. 2 21:36:15 2017] mmcblk0: ← это моя карта памяти

ekzorchik@navy:~$ sudo umount /dev/mmcblk0p1

ekzorchik@navy:~$ sudo umount /dev/mmcblk0p2

Шаг №1: Подготавливаем карту памяти microSD чтобы в последствие записать на нее образ системы:

ekzorchik@navy:~$ sudo fdisk /dev/mmcblk0

Команда (m для справки): d

Команда (m для справки): o

Предупреждение: неверный флаг 0x0000 таблицы разделов 4 будет исправлен записью

Команда (m для справки): p

Диск /dev/mmcblk0: 7948 МБ, 7948206080 байт

4 головок, 16 секторов/треков, 242560 цилиндров, всего 15523840 секторов

Units = секторы of 1 * 512 = 512 bytes

Размер сектора (логического/физического): 512 байт / 512 байт

I/O size (minimum/optimal): 512 bytes / 512 bytes

Идентификатор диска: 0xb9bdb438

Устр-во Загр Начало Конец Блоки Id Система

Команда (m для справки): x

Команды эксперта (m для справки): h

Количество головок (1-256, по умолчанию 4): 255

Команды эксперта (m для справки): s

Количество секторов (1-63, по умолчанию 16): 63

Команды эксперта (m для справки): c

Количество цилиндров (1-1048576, по умолчанию 242560): 966

Для справки: 7948206080 / 255 / 63 / 512 = 966

Команды эксперта (m для справки): r

Команда (m для справки): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e расширенный

Select (default p): p

Номер раздела (1-4, по умолчанию 1): 1

Первый сектор (2048-15523839, по умолчанию 2048): ENTER

Используется значение по умолчанию 2048

Last сектор, +секторы or +size{K,M,G} (2048-15523839, по умолчанию 15523839): +50

Команда (m для справки): t

Выбранный раздел 1

Шестнадцатеричный код (введите L для получения списка кодов): c

Системный тип раздела 1 изменен на c (W95 FAT32 (LBA))

Команда (m для справки): a

Номер раздела (1-4): 1

Команда (m для справки): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e расширенный

Select (default p): p

Номер раздела (1-4, по умолчанию 2): 2

Первый сектор (2099-15523839, по умолчанию 2099): ENTER

Используется значение по умолчанию 2099

Last сектор, +секторы or +size{K,M,G} (2099-15523839, по умолчанию 15523839): Enter

Используется значение по умолчанию 15523839

Команда (m для справки): p

Диск /dev/mmcblk0: 7948 МБ, 7948206080 байт

255 головок, 63 секторов/треков, 966 цилиндров, всего 15523840 секторов

Units = секторы of 1 * 512 = 512 bytes

Размер сектора (логического/физического): 512 байт / 512 байт

I/O size (minimum/optimal): 512 bytes / 512 bytes

Идентификатор диска: 0xb9bdb438

Устр-во Загр Начало Конец Блоки Id Система

/dev/mmcblk0p1 * 2048 2098 25+ c W95 FAT32 (LBA)

/dev/mmcblk0p2 2099 15523839 7760870+ 83 Linux

Команда (m для справки): w

Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.

ПРЕДУПРЕЖДЕНИЕ: Если вы создали или изменили

какие-либо разделы DOS 6.x, пожалуйста, прочтите

страницу руководства fdisk для получения

дополнительной информации.

Синхронизируются диски.

ekzorchik@navy:~$ sudo partprobe

ekzorchik@navy:~$ sudo umount /dev/mmcblk0p1

ekzorchik@navy:~$ sudo umount /dev/mmcblk0p2

ekzorchik@navy:~$ sudo mkfs.msdos -F 32 /dev/mmcblk0p1 -n LOAD

ekzorchik@navy:~$ sudo mkfs.ext3 /dev/mmcblk0p2 -L root

Writing superblocks and filesystem accounting information: ENTER

ekzorchik@navy:~$ sudo fdisk -l

Диск /dev/mmcblk0: 7948 МБ, 7948206080 байт

4 головок, 16 секторов/треков, 242560 цилиндров, всего 15523840 секторов

Units = секторы of 1 * 512 = 512 bytes

Размер сектора (логического/физического): 512 байт / 512 байт

I/O size (minimum/optimal): 512 bytes / 512 bytes

Идентификатор диска: 0xb9bdb438

Устр-во Загр Начало Конец Блоки Id Система

/dev/mmcblk0p1 * 2048 2098 25+ c W95 FAT32 (LBA)

/dev/mmcblk0p2 2099 15523839 7760870+ 83 Linux

Шаг №2: Записываем образ на подготовленную карту памяти где ранее создали необходимые разделы:

ekzorchik@navy:~$ sudo dd bs=4M if=2017-01-11-raspbian-jessie.img | pv | sudo dd of=/dev/mmcblk0

1042+1 записей полученоs] [ <=> ]

1042+1 записей отправлено

скопировано 4371513344 байта (4,4 GB), 2089,11 c, 2,1 MB/c

4,07GB 0:34:49 [ 2MB/s] [ <=> ]

8538112+0 записей получено

8538112+0 записей отправлено

скопировано 4371513344 байта (4,4 GB), 2091,55 c, 2,1 MB/c

А вот запись на другую купленную на днях:

ekzorchik@navy:~$ sudo dd bs=4M if=2017-01-11-raspbian-jessie.img | pv | sudo dd of=/dev/mmbcblk0

1042+1 записей полученоs] [ <=> ]

1042+1 записей отправлено

скопировано 4371513344 байта (4,4 GB), 29,7576 c, 147 MB/c

4,07GB 0:00:29 [ 140MB/s] [ <=> ]

8538112+0 записей получено

8538112+0 записей отправлено

скопировано 4371513344 байта (4,4 GB), 29,1756 c, 150 MB/c

виден процесс записи образа на карту памяти microsd

Идет процесс записи образа на карту памяти через утилиту dd

После записи образа на карту памяти хорошо бы потом проверить, а правильно ли записался образ:

ekzorchik@navy:~$ sudo dd bs=4M if=/dev/mmcblk0 of=2017-01-11-raspbian-jessie_1.img

[sudo] password for ekzorchik:

1895+0 записей получено

1895+0 записей отправлено

скопировано 7948206080 байт (7,9 GB), 248,514 c, 32,0 MB/c

ekzorchik@navy:~$ sudo sync

ekzorchik@navy:~$ diff -s 2017-01-11-raspbian-jessie.img 2017-01-11-raspbian-jessie_1.img

Двоичные файлы 2017-01-11-raspbian-jessie.img и 2017-01-11-raspbian-jessie_1.img различаются

Вот те на, а почему они различаются? Что в процесс записи происходит.

Шаг №3: раз через утилиту dd запись не происходит корректно, то сперва подготовлю карту памяти MicroSD (см. Шаг №1, но утилиту dd не задействуем после), а потом задействую запись образа через GUI (утилита gnome-disks), на образе через правый клик мышью: Открыть в программе — Запись дискового образа и выбрать раздел где файловая система ext3

Запись образа rasbian через GUI утилиту: gnome-disks

После записи образа разделы на карте памяти примут вид:

Разделы на карте памяти MicroSD после записи образа на нее

Затем следует убедиться, что в разделе boot присутствуют хоть какие-то файлы

ekzorchik@navy:~$ sudo mkdir /media/boot

ekzorchik@navy:~$ sudo mount /dev/mmcblk0p1 /media/boot

ekzorchik@navy:~$ ls /media/boot | head -n 5

bcm2708-rpi-b.dtb

bcm2708-rpi-b-plus.dtb

bcm2708-rpi-cm.dtb

bcm2709-rpi-2-b.dtb

bcm2710-rpi-3-b.dtb

ekzorchik@navy:~$ sudo umount /media/boot

А также на разделе 2 создана система каталогов записанного образа Raspbian:

ekzorchik@navy:~$ sudo mount /dev/mmcblk0p2 /media/flash

ekzorchik@navy:~$ ls /media/flash/

bin dev home lost+found mnt proc run srv tmp var

boot etc lib media opt root sbin sys usr

ekzorchik@navy:~$ sudo umount /media/flash

Итого образ записан на карту памяти MicroSD, после извлекаю карту из ноутбука.

Вот собственно и вся процедура записи образа на карту памяти, как видно из расчета сколько записывался образ карта которую я нашел в своих закромах очень слабенькая/медленная. Вследствие этого и работа с устройством Raspberry PI 3 будет не быстрая, а раз так-то к выбору оборудования для работы нужно подходить со всей тщательности. И в ближайшее время я заменю ее на высокопроизводительную. А после прикупив новую запись образа Raspberry все стало немного лучше.

А пока до новых встреч, с уважением автор блога Олло Александр aka ekzorchik.