образы и карточки

встраиваемые модели

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

образы и карточки

Непрочитанное сообщение Olej » 06 июн 2018, 13:44

Про файлы образов (загрузочных) для SoC уже написано здесь ... и ещё много будет...

Потом файл образа .img переносится на SD-карточку + далее SoC с неё загружается...
Записывать можно разным способом, начиная с классики Linux команды dd (а это, вообще то, значит, что это сырой, raw образ диска!) или, они рекомендуют, специальной утилитой Etcher ... что подробно расписано здесь.

Но вопрос соотношения файлов .img и SD-карт - требуете уточнений:

1. Откуда и какие, по популярности, берёте, народ, образы .img?
Чем отличаются, что лучше, что хуже?

2. Записанную SD-карту можно смонтировать в Linux:

Код: Выделить всё

[olej@dell ~]$ mount | grep /dev/mmcblk
/dev/mmcblk0p1 on /run/media/olej/boot type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
/dev/mmcblk0p2 on /run/media/olej/202638e1-4ce4-45df-9a00-ad725c2537bb type ext4 (rw,nosuid,nodev,relatime,stripe=32753,data=ordered,uhelper=udisks2)

Код: Выделить всё

[olej@dell olej]$ sudo fdisk -l /dev/mmcblk0
[sudo] пароль для olej: 
Диск /dev/mmcblk0: 3,7 GiB, 3951034368 байт, 7716864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xa2d55a34

Устр-во        Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/mmcblk0p1               8192  137215  129024    63M             c W95 FAT32 (LBA)
/dev/mmcblk0p2             137216 3618815 3481600   1,7G            83 Linux
Вот эти 2 смонтированных раздела (partition) носителя:

Код: Выделить всё

[olej@dell olej]$ ls -l
итого 20
drwxr-xr-x 22 root root  4096 июл 18  2017 202638e1-4ce4-45df-9a00-ad725c2537bb
drwxr-xr-x  4 olej olej 16384 янв  1  1970 boot
Здесь всё содержимое файлов разделов SD-карточки можно читать, но, самое главное, их можно писать, редактировать содержимое носителя, системы...
Вот здесь вопрос: как сделать обратную операцию, не с .img перенести на SD-карту, а содержимое SD-карты, или смонтированных в Linux разделов SD-карты - упаковать обратно в образ .img?

3. Почему вообще в образе .img чаще всего 2 раздела: FAT + EXT4 ... но иногда и 1 EXT4 ... а иногда и 5 штук?
Чем и какими стандартами это определяется?

4. Что вообще за формат файлов образов .img?
Команда file в Linux их прекрасно распознаёт:

Код: Выделить всё

[olej@dell Orange_Pi_One]$ file Raspbian_For_OrangePi_PC_v0_8_0.img 
Raspbian_For_OrangePi_PC_v0_8_0.img: DOS/MBR boot sector; partition 1 : ID=0x83, start-CHS (0x2,170,41), end-CHS (0x8,54,60), startsector 40960, 83968 sectors; partition 2 : ID=0x83, start-CHS (0x8,54,61), end-CHS (0x1d8,5,58), startsector 124928, 7045120 sectors
Если формат распознаётся, то наверняка есть команды для его просмотра, редактирования и т.д. без физического переноса на SD-карту, монтирования в файловой системе и т.д. ... или команда монтирования файла образа в файловую систему Linux.
Какие команды?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 06 июн 2018, 13:50

Olej писал(а): 4. ... Если формат распознаётся, то наверняка есть команды для его просмотра, редактирования и т.д. без физического переноса на SD-карту, монтирования в файловой системе и т.д. ... или команда монтирования файла образа в файловую систему Linux.
Какие команды?
Это сильно важно для того, чтобы .img можно было рассмотреть не записывая на карту физически ... при тысячах (! :-D ) предлагаемого всякого мусора в качестве образов!

Подсказали:
Смотрю ... в разных дистрибутивах:

Код: Выделить всё

olej@nvidia ~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 18.3 Sylvia
Release:	18.3
Codename:	sylvia

olej@nvidia ~ $ apt search kpartx
i   kpartx                                   - присвоение имён разделам диска                    
p   kpartx:i386                              - присвоение имён разделам диска                    
i   kpartx-boot                              - Provides kpartx during boot                       

Код: Выделить всё

[olej@xenix ~]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 27 (Twenty Seven)
Release:	27
Codename:	TwentySeven

[olej@xenix ~]$ yum list kpartx
Последняя проверка окончания срока действия метаданных: 1:19:15 назад, Пт 01 июн 2018 18:04:24.
Установленные пакеты
kpartx.x86_64                  0.7.1-9.git847cc43.fc27                  @updates
Да, оно есть в стандартных репозиториях всех разных дистрибутивов Linux.
Дальше посмотрю что оно позволяет с образами делать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 06 июн 2018, 13:53

Olej писал(а):Дальше посмотрю что оно позволяет с образами делать.

Код: Выделить всё

[olej@dell Orange_Pi_One]$ kpartx -l Raspbian_For_OrangePi_PC_v0_8_0.img 
/dev/mapper/control: open failed: Permission denied
Failure to communicate with kernel device-mapper driver.
Incompatible libdevmapper 1.02.136 (2016-11-05) and kernel driver (unknown version).
mount: could not find any device /dev/loop#Bad address
can't set up loop
Только с root! даже на посмотреть...

Код: Выделить всё

[root@dell Orange_Pi_One]# kpartx -l Raspbian_For_OrangePi_PC_v0_8_0.img
loop0p1 : 0 83968 /dev/loop0 40960
loop0p2 : 0 7045120 /dev/loop0 124928
loop deleted : /dev/loop0

[root@dell Orange_Pi_One]# kpartx -a -v Raspbian_For_OrangePi_PC_v0_8_0.img
add map loop0p1 (253:1): 0 83968 linear /dev/loop0 40960
add map loop0p2 (253:2): 0 7045120 linear /dev/loop0 124928

[root@dell Orange_Pi_One]# ls -l /dev/mapper
итого 0
crw------- 1 root root 10, 236 май 25 15:27 control
lrwxrwxrwx 1 root root       7 май 25 15:27 cryptswap1 -> ../dm-0
lrwxrwxrwx 1 root root       7 июн  1 19:39 loop0p1 -> ../dm-1
lrwxrwxrwx 1 root root       7 июн  1 19:39 loop0p2 -> ../dm-2

[root@dell Orange_Pi_One]# mkdir /mnt/boot

[root@dell Orange_Pi_One]# mkdir /mnt/root

[root@dell Orange_Pi_One]# mount /dev/mapper/loop0p1 /mnt/boot

[root@dell Orange_Pi_One]# mount /dev/mapper/loop0p2 /mnt/root

Код: Выделить всё

[olej@dell Orange_Pi_One]$ mount | grep /dev/mapper
/dev/mapper/loop0p1 on /mnt/boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
/dev/mapper/loop0p2 on /mnt/root type ext4 (rw,relatime,data=ordered)

[olej@dell Orange_Pi_One]$ ls /mnt/boot
script.bin  uImage

[olej@dell Orange_Pi_One]$ ls /mnt/root
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var
Т.е. разделы .img вот так "хитрым" образом монтируются в /mnt (или куда хотите) ... и далее с ними можно всё-всё-всё... ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 06 июн 2018, 13:55

Самый главный вопрос: позволяет ли оно вносить произвольные изменения в монтированные разделы, так чтобы они сохранились в образе, а дальше в загрузочной SD-карте?
Для этого вношу изменения - добавляю новые файлы:

Код: Выделить всё

[root@dell orangepi]# pwd
/mnt/root/home/orangepi

[root@dell orangepi]# touch test.file.txt

[root@dell orangepi]# echo 12345 > test.file.txt

[root@dell orangepi]# cat test.file.txt
12345

[root@dell boot]# pwd
/mnt/boot

[root@dell boot]# echo 654321 > new.file

[root@dell boot]# ls
new.file  script.bin  uImage
Размонтирую всё что связано с образом ... дотла:

Код: Выделить всё

[root@dell /]# umount /mnt/boot

[root@dell /]# umount /mnt/root

[root@dell /]# ls /mnt/root /mnt/boot
/mnt/boot:
/mnt/root:

[root@dell Orange_Pi_One]# kpartx -d -v Raspbian_For_OrangePi_PC_v0_8_0.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

[root@dell Orange_Pi_One]# ls -l /dev/mapper
итого 0
crw------- 1 root root 10, 236 май 25 15:27 control
lrwxrwxrwx 1 root root       7 май 25 15:27 cryptswap1 -> ../dm-0
Монтирую образ по-новой с нуля:

Код: Выделить всё

[root@dell Orange_Pi_One]# kpartx -a -v Raspbian_For_OrangePi_PC_v0_8_0.img
add map loop0p1 (253:1): 0 83968 linear /dev/loop0 40960
add map loop0p2 (253:2): 0 7045120 linear /dev/loop0 124928

[root@dell Orange_Pi_One]# mount /dev/mapper/loop0p1 /mnt/boot

[root@dell Orange_Pi_One]# mount /dev/mapper/loop0p2 /mnt/root
И смотрю те файлы, которые раньше дописал в образ:

Код: Выделить всё

[root@dell Orange_Pi_One]# cat /mnt/boot/new.file 
654321

[root@dell Orange_Pi_One]# cat /mnt/root/home/orangepi/test.file.txt 
12345
Годится!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 06 июн 2018, 14:00

Olej писал(а): Потом файл образа .img переносится на SD-карточку + далее SoC с неё загружается...
Записывать можно разным способом, начиная с классики Linux команды dd (а это, вообще то, значит, что это сырой, raw образ диска!) или, они рекомендуют, специальной утилитой Etcher ... что подробно расписано здесь.
Например так:

Код: Выделить всё

# dd bs=1M if=raspbian_jessie8_xenomai3.0.5.img of=/dev/mmcblk0 status=progress conv=fsync
Olej писал(а): Здесь всё содержимое файлов разделов SD-карточки можно читать, но, самое главное, их можно писать, редактировать содержимое носителя, системы...
Вот здесь вопрос: как сделать обратную операцию, не с .img перенести на SD-карту, а содержимое SD-карты, или смонтированных в Linux разделов SD-карты - упаковать обратно в образ .img?
Командой (выше) переносим файл .img на SD карту /dev/mmcblk0, которая потом отображается как 2 дисковых раздела:

Код: Выделить всё

[olej@dell olej]$ sudo fdisk -l /dev/mmcblk0
[sudo] пароль для olej:
Диск /dev/mmcblk0: 3,7 GiB, 3951034368 байт, 7716864 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xa2d55a34

Устр-во        Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/mmcblk0p1               8192  137215  129024    63M             c W95 FAT32 (LBA)
/dev/mmcblk0p2             137216 3618815 3481600   1,7G            83 Linux

Но если так, то после любых корректировок в файловой системе смонтированной в Linux (но не загруженной, не системной) SD-карточки, обратно "затолкать" разделы в файл .img можно, нужно думать, обратной командой:

Код: Выделить всё

# dd bs=1M of=new_image_file.img if=/dev/mmcblk0 status=progress conv=fsync
Файл new_image_file.img, по идее, будет выровнен (дополнен) до размера кратного 1Mb ... но на его качество и загружаемость это не должно влиять.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 28 июн 2018, 21:59

Про саму запись образа, файла .img, здесь рядом написано много: Raspberry / Orange Pi ... про то, что это традиционно можно делать утилитой dd, но они (Rapsbery/Orange Pi) предлагают для этого специально сделанную мультисистемную утилиту Etcher: https://etcher.io/
(скачивается по ссылке).

Но меня занимал вот такой вопрос: запись SD-карты через переходник (типа такого Kingston):
Изображение
Который отображается в файловую систему Linux не как /dev/mmcblk0, а как, скажем: /dev/sdc (другой драйвер блочного устройства):

Код: Выделить всё

[root@xenix etc]# fdisk -l /dev/sdc
Диск /dev/sdc: 1,9 GiB, 1977614336 байт, 3862528 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xf8f01101

Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                 135 3862527 3862393   1,9G             6 FAT16

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 28 июн 2018, 22:06

Olej писал(а): Но меня занимал вот такой вопрос: запись SD-карты через переходник (типа такого Kingston):
Записываю свеже собранный образ системы Orange Pi...
При старте он выдаёт несколько настораживающее сообщение - не люблю я этого!:

Код: Выделить всё

[olej@xenix RTLinux]$ sudo ./etcher-electron-1.4.4-x86_64.AppImage 
[sudo] пароль для olej: 
./bin//etcher-electron.wrapper: строка 110: 17049 Аварийный останов         (стек памяти сброшен на диск) LD_LIBRARY_PATH="" zenity --question --title="$TITLE" --text="$TEXT" 2> /dev/null

(etcher-electron:17018): libnotify-WARNING **: Failed to connect to proxy

(etcher-electron:17018): libnotify-WARNING **: Failed to connect to proxy

(etcher-electron:17018): libnotify-WARNING **: Failed to connect to proxy
Но по GUI картинкам позволяет выбрать /dev/sdc (откуда он догадался что это SD-карта?) ... и говорит что всё, якобы ОК.
Вложения
sd1.png
sd1.png (19.67 КБ) 3550 просмотров
sd2.png
sd3.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 19 мар 2022, 21:43

Olej писал(а):
06 июн 2018, 14:00
Но если так, то после любых корректировок в файловой системе смонтированной в Linux (но не загруженной, не системной) SD-карточки, обратно "затолкать" разделы в файл .img можно, нужно думать, обратной командой:
И 3 года не прошло ... как возникает новая задача - см. Orange Pi One ... снова:
- есть рабочая в Orange Pi One (ARM), загружаемая Linux SD карточка...
- которая многократно (годами) обновлялась в работе...
- нужно создать её дубликат, чтобы не потерять рабочую среду.

У меня достаточно компьютеров, и с разной периферией, можно попробовать побайтно копировать ... но я сделаю более традиционно:
- SD карточку солью в *.img файл, образ ... на системный x86 Linux SSD
- поизучаю имидж-файл слегка что там у меня оно получается
- потом по необходимости буду заливать на SD карточки того же размера.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 20 мар 2022, 01:48

Olej писал(а):
19 мар 2022, 21:43
- SD карточку солью в *.img файл, образ ... на системный x86 Linux SSD
Вот эта загрузочная SD карта:

Код: Выделить всё

olej@nvidia:~$ df
df: /run/user/1000/doc: Операция не позволена
Файл.система   1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev             1872008            0  1872008            0% /dev
tmpfs             381744        11092   370652            3% /run
/dev/sda1       70423668     56839120  9984180           86% /
tmpfs            1908700       162716  1745984            9% /dev/shm
tmpfs               5120            4     5116            1% /run/lock
tmpfs            1908700            0  1908700            0% /sys/fs/cgroup
/dev/sda2      175447720     80449252 86172836           49% /home
/dev/sdb1       50148888     36089000 11482748           76% /home/olej/Загрузки
tmpfs             381740           28   381712            1% /run/user/1000
/dev/sdb2      103293200     67818980 30618264           69% /run/timeshift/backup
/dev/sdc1        3786708      2793376   926680           76% /media/olej/a769471e-a787-40d3-8298-d31c195f1bb9

Код: Выделить всё

olej@nvidia:~$ sudo fdisk -l /dev/sdc
[sudo] пароль для olej:
Диск /dev/sdc: 3,72 GiB, 3975151616 байт, 7763968 секторов
Disk model:  Storage Device
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x67b5d560

Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
/dev/sdc1                8192 7763671 7755480   3,7G            83 Linux
4Gb SD карта.
Почему там /dev/sdc а не /dev/mmcblk0 ?
Потому что это стационарный компьютер и стоит USB-блок чтения SD карт.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: образы и карточки

Непрочитанное сообщение Olej » 20 мар 2022, 20:27

Olej писал(а):
19 мар 2022, 21:43
И 3 года не прошло ... как возникает новая задача - см. Orange Pi One ... снова:
В конечном итоге все эти манипуляции получают итогом, как и следовало ожидать, одно: система перестаёт загружаться, умирает.
Бытует мнение, что китайские SD карты, а они все китайские, так долго не живут.
Sd карта, проверка ее ресурса стандартными утилитами
Как перестанет запускаться armbian, так и поймешь. Думаю ждать долго не придется. Например на подобных задачах даже фирмовые трансенды с пожизненной гарантией не живут более полугода.

У sd карт не существует никаких метрик показывающих износ, следовательно в линукс нет утилит.

Каждый носитель со своим выпендрёжем. Тихо подозреваю, что производители накопителей выдумывают свои внутренние спецификации кто во что горазд, соблюдая только интерфейсные стандарты.
Тогда возникает смежный вопрос: как можно проверить (более-менее) лежалую SD карту перед накатыванием на неё имиджа для одноплатного ARM?
Если нет критериев износа ... то хотя бы моментальное состояние карты перед записью имиджа.

P.S. Про классы карточек (скорость чтения-записи) было здесь: SD-карточки.

Ответить

Вернуться в «Одноплатные компьютеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей