1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/samuel_yuan-riscv-openeuler-visionfive

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Build-openeuler-img.md 5.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 07:29 33f4fa7

Инструкция: Build openeuler img


1 Цель

Изучение процесса создания образа sd-карты для разработки платы.

2 Процесс

2.1 Установка инструментов

На операционной системе Ubuntu 20.04 устанавливаются инструменты, необходимые для создания образа.

sudo apt install kpartx

2.2 Создание пустого файла img размером 8 ГБ

sudo dd if=/dev/zero of=openeuler.img bs=1M count=8000 status=progress
sync

2.3 Просмотр информации о разделах sd-карты

sudo fdisk -l

Просмотр информации о sd-карте:

Disk /dev/sdb: 29.75 GiB, 31927042048 bytes, 62357504 sectors
Disk model: Storage Device  
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: 0x87a9b3d3

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdb1         2048   526335   524288  256M  6 FAT16
/dev/sdb2       526336 62357503 61831168 29.5G 83 Linux

2.4 Разделение пустого файла на разделы

Создание разделов в файле img на основе информации о sd-карте.

sudo parted openeuler.img --script -- mklabel msdos
sudo parted openeuler.img --script -- mkpart primary fat16 2048s 526335s
sudo parted openeuler.img --script -- mkpart primary ext4 526336s -1

Проверка разделов файла img:

sudo parted openeuler.img

Вывод:

GNU Parted 3.3
Using /home/riscv/riscv64-linux/openeuler.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model:  (file)
Disk /home/riscv/riscv64-linux/openeuler.img: 8389MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  269MB   268MB   primary               lba
 2      269MB   8388MB  8118MB  primary

2.5 Форматирование пустого файла

Сначала используется команда df -ah для поиска свободного /dev/loop для монтирования виртуального диска.

sudo losetup /dev/loop18 openeuler.img
sudo kpartx -av /dev/loop18

Отображение:

add map loop18p1 (253:0): 0 524288 linear 7:18 2048
add map loop18p2 (253:1): 0 15855616 linear 7:18 526336

Форматирование p1:

sudo mkfs.msdos /dev/mapper/loop18p1

Отображение:

mkfs.fat 4.1 (2017-01-24)

Форматирование p2:

sudo mkfs.ext4 /dev/mapper/loop18p2

Отображение:

mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done                            
Creating filesystem with 1981952 4k blocks and 495808 inodes
Filesystem UUID: ea4488f6-554e-4d3f-af15-49583f6878c9
Superblock backups stored on blocks: 
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

Повторная проверка файла img:

sudo parted openeuler.img

Отображение:

GNU Parted 3.3
Using /home/riscv/riscv64-linux/openeuler.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model:  (file)
Disk /home/riscv/riscv64-linux/openeuler.img: 8389MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  269MB   268MB   primary  fat16        lba
 2      269MB   8388MB  8118MB  primary  ext4

Файл img готов к использованию.

2.6 Копирование содержимого sd-карты в файл img

Монтирование каталогов:

mkdir boot
mkdir rootfs
sudo mount /dev/mapper/loop18p1 boot/
sudo mount /dev/mapper/loop18p2 rootfs/

Копирование содержимого:

sudo cp -rf /media/riscv/5EB6-BE06/* boot/
sudo cp -rf /media/riscv/7e64dffd-4d0a-4061-bd3f-23d33de0b2ad/* rootfs/

Размонтирование каталогов:

sudo umount boot
sudo umount rootfs

Удаление img:

sudo kpartx -d openeuler.img

Отображение:

loop deleted : /dev/loop18

Процесс создания образа openeuler.img завершён. Далее можно упаковать и сжать образ с помощью команды:

zstd openeuler.img

3 Проверка системы и запись на sd-карту

3.1 Распаковка образа

zstd -d openeuler.img.zst

Получаем файл openeuler.img.

3.2 Запись системы на sd-карту

Подготовьте пустую sd-карту. Затем используйте команду dd для записи образа на карту:

sudo dd if=./openeuler.img of=/dev/sdb bs=1M iflag=fullblock oflag=direct conv=fsync status=progress

После завершения записи можно использовать инструмент gparted для изменения размера раздела rootfs (по умолчанию 8 ГБ).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/samuel_yuan-riscv-openeuler-visionfive.git
git@api.gitlife.ru:oschina-mirror/samuel_yuan-riscv-openeuler-visionfive.git
oschina-mirror
samuel_yuan-riscv-openeuler-visionfive
samuel_yuan-riscv-openeuler-visionfive
master