HiFive Unmatched
SiFive HiFive Unmatched -- плата в форм-факторе Mini-ITX с SoC на архитектуре RISCV64GC. Поддерживется портом Sisyphus на riscv64 и используется в нём в качестве основных сборочных узлов.
В дистрибутивных ядрах un-def поддержка Unmatched началась с 5.12.18-alt1.rv64, в u-boot начиная с 2021.07-alt1.
Образы ALT
Вам понадобится достаточно свежий образ с ALT. Сейчас это только регулярные образы, собираемые jqt4@: http://ftp.altlinux.org/pub/people/jqt4/images/hifive/.
alt-rootfs-installer
alt-roofs-installer с поддержкой Unmatched ещё не вышел, можно брать ветку devel у antohami@.
sudo ./alt-rootfs-installer --target HiFive-Unmatched --rootfs /path/to/regular-xfce-20210825-riscv64.tar.xz --resize --media /dev/sdX
Установка образов вручную
Для запуска образов на SiFive HiFive Unmatched (FU740) SoC необходимо выполнить следующие шаги:
Шаг 0. Предполагается, что microSD карточка находится в /dev/sdb. Выполним разметку microSD и создание файловой системы:
root$ sgdisk -g --clear -a 1 \
--new=2: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=1::-0 --change-name=1:'root' --typecode=1:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \
/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
Шаг 1.а. U-Boot SPL (Secondary Program Loader) и U-Boot находятся внутри распакованного дерева /mnt. Запишем их на разделы 2 и 3 соответственно:
root$ dd if=/mnt/usr/share/u-boot/sifive_unmatched/u-boot-spl.bin of=/dev/sdb2 bs=1M
root$ dd if=/mnt/usr/share/u-boot/sifive_unmatched/u-boot.itb of=/dev/sdb3 bs=1M
root$ sync
Шаг 1.б. Альтернативный вариант: скачаем последнюю версию пакета 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/sdb2 bs=1M
root$ dd if=u-boot.itb of=/dev/sdb3 bs=1M
root$ sync
Шаг 2. Система на microSD карточке готова к загрузке. Однако, есть недостаток: идентификация корневой файловой системы произмодится по метке ROOT, которая была установлена при форматировании. Если имеется несколько разделов с меткой ROOT (например, эта метка стоит на разделе NVMe) для загрузки может быть использован любой из них. Для исправления этой проблемы нужно настроить идентификацию нужного раздела по UUID. Подробности ниже:
VNC
По умолчанию образ рассчитан на работу без видеокарты, поэтому первоначальную установку нужно выполнить по VNC. После загрузки на последовательную консоль выводятся IP-адрес и порт VNC-сервера, например:
ALTERATOR SETUP === Default device: "eth0" ALTERATOR SETUP === IPv4: "192.168.1.17/24" PORT=5900
Пароль: alt
Если видеокарта у Вас есть и работает, можно провести первоначальную настройку непосредственно на ней. Для этого после копирования rootfs на SD-карту удалите с неё (с третьего раздела) файл etc/X11/xorg.conf.d/51-dummy.conf. При загрузке с SD-карты первый запуск X с мастером первоначальной настройки занимает довольно много времени.
Начиная со сборки 20211011 до прохождения мастера первоначальной установки действует стандартный пароль (root/altlinux), что позволяет войти в систему и удалить 51-dummy.conf непосредственно из консоли.
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
Посмотрите 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.