Перенос ОС linux с SD карты на микросхему eMMC
Перенос ОС linux с SD карты на микросхему eMMC
Добрый день, уважаемые форумчане.
Помогите пожалуйста советом как правильно перенести ОС Linux с SD карты на внутреннюю микросхему eMMC.
ОС собрана и успешно работает с SD карты.
При попытке скопировать образ SD карты на внутреннюю eMMC ОС не загружается.
информация о файловой системе в прикрепленном файле.
Помогите пожалуйста советом как правильно перенести ОС Linux с SD карты на внутреннюю микросхему eMMC.
ОС собрана и успешно работает с SD карты.
При попытке скопировать образ SD карты на внутреннюю eMMC ОС не загружается.
информация о файловой системе в прикрепленном файле.
- Вложения
-
- cmd_output.txt
- (4.23 КБ) 188 скачиваний
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Показывать информацию в файле - неудачная идея, лучше вывод команд показывать явно, копируя с терминала под BBCODE <code> (4-й по порядку значок во 2-й строке значков над окном редактирования ответа).kAndrew писал(а): ОС собрана и успешно работает с SD карты.
При попытке скопировать образ SD карты на внутреннюю eMMC ОС не загружается.
информация о файловой системе в прикрепленном файле.
Тема интересная!
Но, начнём разбираться по порядку...
Итак, преамбула:
1. компьютер, как я понимаю, ARM, загрузка через U-boot...
2. как я предполагаю, у вас через UART подключен внешний компьютер-терминал, на котором вы можете покомандно наблюдать загрузку начиная с U-boot? так как это описано рядом в теме загрузчик U-boot и сериальная отладка... Можете посмотреть и скопировать с внешнего терминала сообщения загрузки (как это показано в теме по ссылке)?
3. SD карата у вас (с которой переносилась система): /dev/mmcblk0. eMMC внутренняя память (на которую переносилась система): dev/mmcblk1.
Код: Выделить всё
# fdisk -l /dev/mmcblk1
Disk /dev/mmcblk1: 3.6 GiB, 3867148288 bytes, 7553024 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 * 16384 49151 32768 16M c W95 FAT32 (LBA)
/dev/mmcblk1p2 49152 910975 861824 420.8M 83 Linux
Перенос делался побайтным копированием (там есть некоторые детали, которые пока не затрагиваем), типа такого:
Код: Выделить всё
# dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=1M status=progress conv=fsync count=418
...
# sync
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
4. Вот ваша eMMC с которой (якобы ... это нужно проверить) происходит загрузка Linux (я всё это вытягиваю из вашего файла):kAndrew писал(а):информация о файловой системе в прикрепленном файле.
Код: Выделить всё
# blkid
/dev/mmcblk0: PTUUID="7385b987" PTTYPE="dos"
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="AF48-8A11" TYPE="vfat" PARTUUID="7385b987-01"
/dev/mmcblk0p2: UUID="9266496a-5dbe-4cd1-a3a4-03627e66a324" TYPE="ext4" PARTUUID="7385b987-02"
/dev/mmcblk1: PTTYPE="dos"
/dev/mmcblk1p1: SEC_TYPE="msdos" UUID="AF48-8A11" TYPE="vfat"
/dev/mmcblk1p2: UUID="9266496a-5dbe-4cd1-a3a4-03627e66a324" TYPE="ext4"
/dev/mmcblk1boot1: SEC_TYPE="msdos" UUID="AF48-8A11" TYPE="vfat"
/dev/mmcblk1boot0: SEC_TYPE="msdos" UUID="AF48-8A11" TYPE="vfat"
Код: Выделить всё
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 14.7G 0 disk
|-mmcblk0p1 179:1 0 16M 0 part
`-mmcblk0p2 179:2 0 14.7G 0 part
mmcblk1 179:16 0 3.6G 0 disk
|-mmcblk1p1 179:17 0 16M 0 part
`-mmcblk1p2 179:18 0 420.8M 0 part /
mmcblk1boot0 179:24 0 16M 1 disk
mmcblk1boot1 179:32 0 16M 1 disk
mmcblk1rpmb 179:40 0 128K 0 disk
Код: Выделить всё
# mount | grep /dev/mmc
/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Меня смущает (может это и правильно?) что:kAndrew писал(а): При попытке скопировать образ SD карты на внутреннюю eMMC ОС не загружается.
- копирование с SD на eMMC делалось побайтно командой dd ...
- сравнение начального (загрузочного, MBR) сектора на /dev/mmcblk0 и /dev/mmcblk1 даёт различие (в области где находится загрузчик MBR):
Код: Выделить всё
# hexdump -n512 /dev/mmcblk0
0000000 b8fa 1000 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
0000030 ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
0000040 024c 13cd 00ea 007c eb00 00fe 0000 0000
0000050 0000 0000 0000 0000 0000 0000 0000 0000
*
00001b0 0000 0000 0000 0000 b987 7385 0000 0580
00001c0 0105 0f0c 030c 4000 0000 8000 0000 0f00
00001d0 030d fe83 ffff c000 0000 a000 01d6 0000
00001e0 0000 0000 0000 0000 0000 0000 0000 0000
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0000200
Код: Выделить всё
# hexdump -n512 /dev/mmcblk1
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
00001b0 0000 0000 0000 0000 0000 0000 0000 0580
00001c0 0105 0f0c 030c 4000 0000 8000 0000 0f00
00001d0 030d b383 383b c000 0000 2680 000d 0000
00001e0 0000 0000 0000 0000 0000 0000 0000 0000
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55
0000200
Там вообще есть загрузчик?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Только расширить нужно правильно.Olej писал(а): (вообще то мне не понятно: почему вы после копирования не расширили размер раздела /dev/mmcblk1p2 до поного размера eMMC 3.6 GiB?)
И не забыть при этом создать хоть какой-то минимальный swap-раздел!
Покажите:
Код: Выделить всё
$ free
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Не попробовать ли вам принудительно переписать 0 сектор MBR с SD на eMMC?Olej писал(а): Мне это непонятно...
Там вообще есть загрузчик?
Что-то типа:
Код: Выделить всё
# dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=512 count=1 conv=fsync
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Перед копированием (переносом) образов дисков между носителями нужно, часто, привести диски и их файловые системы в соответствие по размеру - нельзя без подготовки копировать диск размером 16Gb на диск размером 4Gb.Olej писал(а): Перенос делался побайтным копированием (там есть некоторые детали, которые пока не затрагиваем), типа такого:Код: Выделить всё
# dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=1M status=progress conv=fsync count=418 ... # sync
По поводу корректных изменений размеров дисковых разделов + их файловой системы ext2 (а это 2 разных вещи) - можете посмотреть в соседней теме: Orange Pi.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Я работал только штатные, серийные, ARM одноплатники ограниченной номенклатуры: Rapsberry Pi 2, Orange Pi One, Dragon Board 410c.Olej писал(а): 1. компьютер, как я понимаю, ARM, загрузка через U-boot...
Во всех этих линиях одноплатников, там где есть eMMC, то откуда грузиться определяется аппаратно, положением джампера, перемычки на плате.
Как это у вас?
И ещё...
Какой у вас установлен вариант дистрибутива Linux?
Код: Выделить всё
$ lsb_release -a
...
Код: Выделить всё
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 428959 380737 22581 94% /
devtmpfs 87948 0 87948 0% /dev
tmpfs 252300 0 252300 0% /dev/shm
tmpfs 252300 4 252296 0% /tmp
tmpfs 252300 16 252284 0% /run
P.S. Попутно ... у вас израсходовано почти все пространство на разделе /dev/root - 94%. Это очень много. Поэтому расширять раздел нужно (до 3.6Gb - размер swap)!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Важно!
Подробно...
P.S. Я как-то, сразу, упустил, что речь идёт о ARM архитектуре, и здесь нет BIOS для загрузки, и в начальную область любого носителя (SD, eMMC) должен быть правильно записан загрузчик U-boot.
(Мне, правда не очевидно и не понятно, с чего бы область загрузчика, предшествующая разделам носителя, будут различаться для SD и eMMC?).
По поводу записи U-boot в ARM на носители вот такие ссылки (может пригодиться дальше):
загрузчик
Сборка загрузчика UBOOT
How to make a bootable sunxi SD-card
Как это делалось?Для того, что бы система грузилась и работала с eMMC я руками переключаю в UBOOT'е номер устройства, с которого производить загрузку.
Подробно...
P.S. Я как-то, сразу, упустил, что речь идёт о ARM архитектуре, и здесь нет BIOS для загрузки, и в начальную область любого носителя (SD, eMMC) должен быть правильно записан загрузчик U-boot.
(Мне, правда не очевидно и не понятно, с чего бы область загрузчика, предшествующая разделам носителя, будут различаться для SD и eMMC?).
По поводу записи U-boot в ARM на носители вот такие ссылки (может пригодиться дальше):
загрузчик
Сборка загрузчика UBOOT
How to make a bootable sunxi SD-card
Это как образец для одной из возможных ARM архитектуры.A10 & A13 boots the SPL loader from block 8. This then loads actual u-boot from block 40 onwards, counted in 1KB blocks. Replace /dev/sdX with the device name of your mediaor if you prefer to install the components separatelyКод: Выделить всё
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
Код: Выделить всё
dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8 dd if=u-boot.img of=/dev/sdX bs=1024 seek=40
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Перенос ОС linux с SD карты на микросхему eMMC
Нужно бы посмотреть что там к вас в загрузочном /boot разделе /dev/mmcblk1p1 (FAT).Olej писал(а): Потому что формат вывода df отличается у вас от клонов Debian, которые я видел:Код: Выделить всё
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 428959 380737 22581 94% / devtmpfs 87948 0 87948 0% /dev tmpfs 252300 0 252300 0% /dev/shm tmpfs 252300 4 252296 0% /tmp tmpfs 252300 16 252284 0% /run
Но поскольку он в вашей системе/дистрибутиве не монтируется после загрузки (я и в других некоторых ARM видел), для этого нужно это сделать вручную, как-то так:
Код: Выделить всё
# mkdir /mnt/boot
# mount -tvfat /dev/mmcblk1p1 /mnt/boot
# ls -la /mnt/boot
...
-rwxr-xr-x 1 root root 301 Jun 29 2018 boot.scr
...
-rwxr-xr-x 1 root root 3572480 Jun 29 2018 zImage
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей