HiFive Unmatched: различия между версиями

Материал из ALT Linux Wiki
Строка 7: Строка 7:
== Образы ALT ==
== Образы ALT ==


Вам понадобится достаточно свежий образ с ALT. Сейчас это только регулярные образы, собираемые jqt4@: http://ftp.altlinux.org/pub/people/jqt4/images/hifive/.
На текущий момент еженедельно собираются регулярные сборки: [[Regular/riscv64]].
Образы требуется записать через alt-rootfs-installer или вручную.


=== alt-rootfs-installer ===
=== Запись с помощью alt-rootfs-installer ===


alt-roofs-installer с поддержкой Unmatched ещё не вышел, можно брать [http://git.altlinux.org/people/antohami/packages/?p=alt-rootfs-installer.git;a=shortlog;h=refs/heads/devel ветку devel у antohami@].
Требуется установить alt-roofs-installer версии не ниже 0.5.2.


<pre>
<source lang="shell">
sudo ./alt-rootfs-installer --target HiFive-Unmatched --rootfs  /path/to/regular-xfce-20210825-riscv64.tar.xz --resize --media /dev/sdX
# alt-rootfs-installer --target=HiFive-Unmatched --image-in=/path/to/<image>-riscv64.img.xz --media=/dev/sdX
</pre>
</source>
 
Если на плате не установлен графический адаптер и записывается образ с графикой, то необходимо добавить опцию --vnc=1.
Про режим подробнее написано в: [[ Regular/riscv64#VNC ]].


=== Установка образов вручную ===
=== Установка образов вручную ===
Строка 21: Строка 25:
Для запуска образов на SiFive HiFive Unmatched (FU740) SoC необходимо выполнить следующие шаги:
Для запуска образов на SiFive HiFive Unmatched (FU740) SoC необходимо выполнить следующие шаги:


'''Шаг 0.''' Предполагается, что microSD карточка находится в /dev/sdb. Выполним разметку microSD и создание файловой системы:
'''Шаг 0.''' Запись образа и монтирование:
 
<source lang="shell">
root$ xzcat /path/to/<image>-riscv64.img.xz | dd of=/dev/sdx bs=4M status=progress
root$ udiskctl mount /dev/sdX2
</source>
 
Корневой раздел будет примонтирован в /run/media/root/<UUID>
 
'''Шаг 1.''' Добавляем разделы для записи U-Boot SPL (Secondary Program Loader) и U-Boot :


<source lang="shell">
<source lang="shell">
root$ sgdisk -g --clear -a 1 \
root$ sgdisk -a 1 \
  --new=2:34:2081        --change-name=2:'spl' --typecode=2:5B193300-FC78-40CD-8002-E86C45580B47 \
  --new=3:34:2081        --change-name=2:'spl' --typecode=2:5B193300-FC78-40CD-8002-E86C45580B47 \
  --new=3:2082:10273      --change-name=3:'uboot'  --typecode=3:2E54B353-1271-4842-806F-E436D6AF6985 \
  --new=4:2082:10273      --change-name=3:'uboot'  --typecode=3:2E54B353-1271-4842-806F-E436D6AF6985 \
--new=1::-0            --change-name=1:'root' --typecode=1:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \
/dev/sdX
/dev/sdb
root$ mkfs.ext4 -L ROOT /dev/sdb1
root$ mount /dev/sdb1 /mnt
root$ tar -xpvf /path/to/regular-xfce-20210825-riscv64.tar.xz -C /mnt
</source>
</source>


'''Шаг 1.а.''' U-Boot SPL (Secondary Program Loader) и U-Boot находятся внутри распакованного дерева /mnt.
'''Шаг 2.''' U-Boot SPL (Secondary Program Loader) и U-Boot находятся на корне записанного образа.
Запишем их на разделы 2 и 3 соответственно:
Запишем их на разделы 3 и 4 соответственно:


<source lang="shell">
<source lang="shell">
root$ dd if=/mnt/usr/share/u-boot/sifive_unmatched/u-boot-spl.bin of=/dev/sdb2 bs=1M
root$ dd if=/run/media/root/<UUID>/usr/share/u-boot/sifive_unmatched/u-boot-spl.bin of=/dev/sdX3 bs=1M
root$ dd if=/mnt/usr/share/u-boot/sifive_unmatched/u-boot.itb of=/dev/sdb3 bs=1M
root$ dd if=/run/media/root/<UUID>/usr/share/u-boot/sifive_unmatched/u-boot.itb of=/dev/sdX4 bs=1M
root$ sync
root$ sync
</source>
</source>


'''Шаг 1.б.''' Альтернативный вариант: скачаем последнюю версию пакета u-boot-sifive-fu740. Можно воспользоваться ссылкой riscv64 со страницы https://packages.altlinux.org/ru/sisyphus/srpms/u-boot-sifive-fu740/rpms.
'''Шаг 2.б.''' Альтернативный вариант: скачаем последнюю версию пакета u-boot-sifive-fu740. Можно воспользоваться ссылкой riscv64 со страницы https://packages.altlinux.org/ru/sisyphus/srpms/u-boot-sifive-fu740/rpms.


Из пакета нужно извлечь файлы u-boot-spl.bin и u-boot.itb и записать их на разделы 2 и 3 соответственно:
Из пакета нужно извлечь файлы u-boot-spl.bin и u-boot.itb и записать их на разделы 2 и 3 соответственно:
Строка 50: Строка 59:
user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot-spl.bin' > u-boot-spl.bin
user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot-spl.bin' > u-boot-spl.bin
user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot.itb' > u-boot.itb
user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot.itb' > u-boot.itb
root$ dd if=u-boot-spl.bin of=/dev/sdb2 bs=1M
root$ dd if=u-boot-spl.bin of=/dev/sdX3 bs=1M
root$ dd if=u-boot.itb of=/dev/sdb3 bs=1M
root$ dd if=u-boot.itb of=/dev/sdX4 bs=1M
root$ sync
root$ sync
</source>
</source>


'''Шаг 2.''' Настроим идентификацию корневого раздела по его UUID:
'''Шаг 3.''' Переключить режим загрузки с EFI на extlinux.conf. Для этого необходимо убрать флаг boot с раздела fat32:
 
  <source lang="shell">
Посмотрим UUID корневого раздела
root$ parted /dev/sdX set 1 boot off
lsblk -f
NAME        FSTYPE LABEL UUID                                FSAVAIL FSUSE% MOUNTPOINT
...
  sdb                                                                         
├─sdb1      ext4  ROOT  7ad2a5dc-ea11-4e05-8d74-0890933d33e5  11,1G    19% /mnt
 
Запишем это значение UUID в конфигурационные файлы, а затем размонтируем раздел:
 
<source lang="shell">
root$ sed -i s/LABEL=ROOT/UUID=7ad2a5dc-ea11-4e05-8d74-0890933d33e5/ /mnt/boot/extlinux/extlinux.conf
root$ sed -i s/LABEL=ROOT/UUID=7ad2a5dc-ea11-4e05-8d74-0890933d33e5/ /mnt/etc/fstab
root$ umount /dev/sdb1
</source>
</source>


=== VNC ===
=== VNC ===


По умолчанию образ рассчитан на работу без видеокарты, поэтому первоначальную установку нужно выполнить по VNC. После загрузки на последовательную консоль выводятся IP-адрес и порт VNC-сервера, например:
По умолчанию образ рассчитан на работу с видеокартой. Если видеокарты нет, то нужно активировать режим vnc: [[ Regular/riscv64#VNC ]].
 
  ALTERATOR SETUP === Default device: "eth0"
  ALTERATOR SETUP === IPv4: "192.168.1.17/24"
  PORT=5900
 
Пароль: '''alt'''
 
Если видеокарта у Вас есть и работает, можно провести первоначальную настройку непосредственно на ней. Для этого после копирования rootfs на SD-карту удалите с неё (с третьего раздела) файл <tt>etc/X11/xorg.conf.d/51-dummy.conf</tt>. При загрузке с SD-карты первый запуск X с мастером первоначальной настройки занимает довольно много времени.
 
Начиная со сборки 20211011 до прохождения мастера первоначальной установки действует стандартный пароль (root/altlinux), что позволяет войти в систему и удалить <tt>51-dummy.conf</tt> непосредственно из консоли.


=== Root на NVME ===
=== Root на NVME ===

Версия от 09:35, 15 декабря 2021

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


SiFive HiFive Unmatched -- плата в форм-факторе Mini-ITX с SoC на архитектуре RISCV64GC. Поддерживется портом Sisyphus на riscv64 и используется в нём в качестве основных сборочных узлов.

В дистрибутивных ядрах un-def поддержка Unmatched началась с 5.12.18-alt1.rv64, в u-boot начиная с 2021.07-alt1.

Образы ALT

На текущий момент еженедельно собираются регулярные сборки: Regular/riscv64. Образы требуется записать через alt-rootfs-installer или вручную.

Запись с помощью alt-rootfs-installer

Требуется установить alt-roofs-installer версии не ниже 0.5.2.

# alt-rootfs-installer --target=HiFive-Unmatched --image-in=/path/to/<image>-riscv64.img.xz --media=/dev/sdX

Если на плате не установлен графический адаптер и записывается образ с графикой, то необходимо добавить опцию --vnc=1. Про режим подробнее написано в: Regular/riscv64#VNC .

Установка образов вручную

Для запуска образов на SiFive HiFive Unmatched (FU740) SoC необходимо выполнить следующие шаги:

Шаг 0. Запись образа и монтирование:

root$ xzcat /path/to/<image>-riscv64.img.xz | dd of=/dev/sdx bs=4M status=progress 
root$ udiskctl mount /dev/sdX2

Корневой раздел будет примонтирован в /run/media/root/<UUID>

Шаг 1. Добавляем разделы для записи U-Boot SPL (Secondary Program Loader) и U-Boot :

root$ sgdisk -a 1 \
 --new=3:34:2081         --change-name=2:'spl' --typecode=2:5B193300-FC78-40CD-8002-E86C45580B47 \
 --new=4:2082:10273      --change-name=3:'uboot'  --typecode=3:2E54B353-1271-4842-806F-E436D6AF6985 \
/dev/sdX

Шаг 2. U-Boot SPL (Secondary Program Loader) и U-Boot находятся на корне записанного образа. Запишем их на разделы 3 и 4 соответственно:

root$ dd if=/run/media/root/<UUID>/usr/share/u-boot/sifive_unmatched/u-boot-spl.bin of=/dev/sdX3 bs=1M
root$ dd if=/run/media/root/<UUID>/usr/share/u-boot/sifive_unmatched/u-boot.itb of=/dev/sdX4 bs=1M
root$ sync

Шаг 2.б. Альтернативный вариант: скачаем последнюю версию пакета u-boot-sifive-fu740. Можно воспользоваться ссылкой riscv64 со страницы https://packages.altlinux.org/ru/sisyphus/srpms/u-boot-sifive-fu740/rpms.

Из пакета нужно извлечь файлы u-boot-spl.bin и u-boot.itb и записать их на разделы 2 и 3 соответственно:

user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot-spl.bin' > u-boot-spl.bin
user$ rpm2cpio u-boot-sifive-fu740-*riscv64.rpm | cpio -vi --to-stdout './usr/share/u-boot/sifive_unmatched/u-boot.itb' > u-boot.itb
root$ dd if=u-boot-spl.bin of=/dev/sdX3 bs=1M
root$ dd if=u-boot.itb of=/dev/sdX4 bs=1M
root$ sync

Шаг 3. Переключить режим загрузки с EFI на extlinux.conf. Для этого необходимо убрать флаг boot с раздела fat32:

root$ parted /dev/sdX set 1 boot off

VNC

По умолчанию образ рассчитан на работу с видеокартой. Если видеокарты нет, то нужно активировать режим vnc: Regular/riscv64#VNC .

Root на NVME

Можно скопировать файловую систему на NVME и указать её в качестве root= в /boot/extlinux/extlinux.conf.

Создайте раздел на NVME, например, с помощью fdisk.

Отформатируйте раздел NVME:

mkfs.ext4 -m1 -L ROOT /dev/nvme0n1p1

Смонтируйте раздел:

mount /dev/nvme0n1p1 /mnt

Скопируйте на раздел NVME содержимое rootfs:

rsync -ax / /mnt

Опция -x позволяет скопировать только содержимое rootfs, но не других подмонтированных файловых систем. Копирование может занять значительное время.

Посмотрите UUID раздела NVME, например, так:

lsblk -f
NAME        FSTYPE       LABEL UUID                                 ...
...
└─nvme0n1p1 ext4   1.0   ROOT  dc155086-4ee4-42f6-87be-bcc67b2b93e6 ...

Исправьте значение UUID в файле /mnt/boot/extlinux/extlinux.conf

append root=UUID=dc155086-4ee4-42f6-87be-bcc67b2b93e6 ...

Исправьте значение UUID в файле /mnt/etc/fstab

UUID=dc155086-4ee4-42f6-87be-bcc67b2b93e6       /       ext4 ...

EFI на NVME

TBD.

Grub

TBD.