Наконец таки мне пришла моя посылка, а в ней Raspberry PI 3 model b. Теперь когда устройство у меня можно начать практически изучать.
Что толку от того, что я перечитал кучу книг, статей как на русском так и на английском языке. Сейчас когда передо мной Raspberry все как бы вылетело из головы, с чего начать? Что делать? Как использовать?
Вот и я начну свое познание с документирования каждого шага для своего блога «Творческий подъем»
В качестве основной системы с которой я буду взаимодействовать с Raspberry PI 3 будет выступать мой ноутбук Lenovo E555 с осью на борту Ubuntu 14.04.5 Desktop amd64 (Gnome Classic).
Первым делом скачиваю дистрибутив с официального сайта raspberry: 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
После записи образа на карту памяти хорошо бы потом проверить, а правильно ли записался образ:
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
После записи образа разделы на карте памяти примут вид:
Затем следует убедиться, что в разделе 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.