Как стать автором
Обновить

Nanopc-T6 с Proxmox 8

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.8K

Вступление

За основу для написания этой заметки я взял опыт коллег, описанный в статье «OrangePi 5 с Proxmox 8», а так же следующий материал. Следует отметить, что в архитектурах OrangePi 5 и Nanopc-T6

Hidden text

System:
Host: nanopct6 Kernel: 6.1.43-rockchip arch: aarch64 bits: 64 compiler: N/A Console: pty pts/0
Distro: Armbian GNU/Linux 12 (bookworm)
Machine:
Type: Embedded-pc System: FriendlyElec product: NanoPC T6 v: N/A serial: E17EE40953344E60
Mobo: FriendlyElec model: NanoPC T6 serial: E17EE40953344E60 UEFI: EDK II v: 0.9.1
date: 10/12/2023
CPU:
Info: quad core (2-mt/2-st) model: N/A variant-1: cortex-a55 variant-2: cortex-a76 bits: 64
type: MST AMCP arch: ARMv8 rev: 0 cache: L1: 768 KiB L2: 2.5 MiB L3: 3 MiB
Speed (MHz): avg: 2028 high: 2256 min/max: 408/1800:2256 cores: 1: 1800 2: 1800 3: 1800
4: 1800 5: 2256 6: 2256 7: 2256 8: 2256 bogomips: N/A
Features: Use -f option to see features
Graphics:
Device-1: display-subsystem driver: rockchip_drm v: N/A bus-ID: N/A
Device-2: mali-bifrost driver: mali v: N/A bus-ID: N/A
Device-3: rk3588-dw-hdmi driver: dwhdmi_rockchip v: N/A bus-ID: N/A
Device-4: rk3588-dw-hdmi driver: dwhdmi_rockchip v: N/A bus-ID: N/A
Display: server: No display server data found. Headless machine? tty: 190x49
resolution: 1920x1080
API: N/A Message: No display API data available in console. Headless machine?
Audio:
Device-1: hdmi driver: rk_hdmi_sound bus-ID: N/A
Device-2: rk3588-dw-hdmi driver: dwhdmi_rockchip bus-ID: N/A
Device-3: rk3588-dw-hdmi driver: dwhdmi_rockchip bus-ID: N/A
Device-4: hdmi driver: rk_hdmi_sound bus-ID: N/A
Device-5: hdmi driver: rk_hdmi_sound bus-ID: N/A
Device-6: hdmi driver: rk_hdmi_sound bus-ID: N/A
Device-7: simple-audio-card driver: asoc_simple_card bus-ID: N/A
API: ALSA v: k6.1.43-rockchip status: kernel-api
Network:
Device-1: Realtek RTL8125 2.5GbE driver: r8169 v: kernel port: 200000 bus-ID: 0002:21:00.0
IF: end0 state: up speed: 2500 Mbps duplex: full mac: 8e:3b:34:3a:21:e4
Device-2: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter driver: rtw_8822ce v: N/A
port: 1000 bus-ID: 0003:31:00.0
IF: wlP3p49s0 state: down mac: 48:8f:4c:fe:3b:80
Device-3: Realtek RTL8125 2.5GbE driver: r8169 v: kernel port: 300000 bus-ID: 0004:41:00.0
IF: end0 state: up speed: 2500 Mbps duplex: full mac: 8e:3b:34:3a:21:e4
IF-ID-1: bonding_masters state: N/A speed: N/A duplex: N/A mac: N/A
IF-ID-2: end1 state: down mac: 4a:ea:ba:b1:6c:55
Bluetooth:
Device-1: Realtek Bluetooth Radio type: USB driver: btusb v: 0.8 bus-ID: 2-1:2
Report: rfkill ID: hci0 rfk-id: 0 state: down bt-service: not found rfk-block: hardware: no
software: no address: see --recommends
Drives:
Local Storage: total: 698.72 GiB used: 4.02 GiB (0.6%)
ID-1: /dev/mmcblk0 model: A3A564 size: 232.96 GiB
ID-2: /dev/nvme0n1 vendor: Netac model: NVMe SSD 500GB size: 465.76 GiB
Partition:
ID-1: / size: 448.55 GiB used: 3.87 GiB (0.9%) fs: ext4 dev: /dev/nvme0n1p2
ID-2: /boot size: 2.27 GiB used: 152.1 MiB (6.5%) fs: vfat dev: /dev/nvme0n1p1
ID-3: /var/log size: 46.8 MiB used: 5.2 MiB (11.1%) fs: ext4 dev: /dev/zram1
Swap:
ID-1: swap-1 type: partition size: 8.09 GiB used: 0 KiB (0.0%) dev: /dev/nvme0n1p3
ID-2: swap-2 type: zram size: 7.65 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
Src: /sys System Temperatures: cpu: 26.8 C mobo: N/A
Fan Speeds (RPM): N/A
Info:
Processes: 293 Uptime: 1m Memory: 15.31 GiB used: 1.31 GiB (8.6%) Init: systemd Compilers:
gcc: 12.2.0 Packages: 817 Shell: Bash v: 5.2.15 inxi: 3.3.26

действительно много общего, однако отличия тоже имеются. Мы не станем останавливаться на пошаговом разборе каждого из пунктов, описанного для OrangePi 5, они достаточно хорошо освещены коллегами по ссылке выше, а для NanoPC-T6, аналогичны. Отметим только детали, чтобы не «спотыкаться» выполняя действия по настройке. Так же хочу отметить, что не призываю отказываться от использования предустановленной на одноплатном ПК NanoPC-T6 Вендором оборудования ОС Android(в ходе его предпродажной подготовки), с целью перехода на Armbian и Proxmox-VE. Замена прошивки необходима для загрузки одноплатного ПК с любых подключаемых устройств (NVME, USB, PXE), к сожалению, "из коробки" такой функционал отсутствует. Ответственность за Ваши действия лежит исключительно на Вас. Прошивка устройства это всегда дополнительный страх и риск, но это выбор хозяина устройства. За испорченные устройства отственности не несу. Моя цель только описать свой путь, шаги которые помогали мне обходить острые углы в ходе решения проблемы. Шаги оформим в виде таблички.


Отличия в сетевых интерфейсах:

Hidden text

root@nanopct6:~# inxi -N
Network:
Device-1: Realtek RTL8125 2.5GbE driver: r8169
Device-2: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter driver: rtw_8822ce
Device-3: Realtek RTL8125 2.5GbE driver: r8169

Иллюстрация прошивки NanoPC-T6
Иллюстрация прошивки NanoPC-T6
Иллюстрация устройства после прошивки 1.
Иллюстрация устройства после прошивки 1.
Иллюстрация устройства после прошивки 2.
Иллюстрация устройства после прошивки 2.
Иллюстрация предварительных настроек устройства
Иллюстрация предварительных настроек устройства

Виды работ:

Проводимые действия:

Подготовительные работы

 

Установка образа nanopc-t6  nanopc-t6_UEFI_Release_v0.9.1.img для загрузки с любых подключаемых устройств в режиме

Rockchip RK3588 UEFI

Установку образа во внутреннюю память устройства проводил утилитой rkdeveloptool в режиме MASK. Иллюстрации выше. По завершении процесса прошивки заходим в меню Device manager Rockchip platform configurationACPI/Device treeDevice Tree Configuration (Support DTB override & overlays) выставляем значение Enabled; ACPI Configuration (USB 2.0 Support) выставляем значение Enabled; Config Table Mode выставляем значение Both, далее жмём F10=Save Детали видны выше на скриншоте на иллюстрации предварительных настроек устройства.

После прошивки nanopc-t6 и установки Armbian (Начальным образом для установки послужил: Armbian_community_24.5.0-trunk.211_Nanopct6_bookworm_vendor_6.1.43_minimal.img.xz)

sudo -i

xzcat Armbian_community_24.5.0-trunk.211_Nanopct6_bookworm_vendor_6.1.43_minimal.img.xz >> /dev/sdX && sync

где «X» в sdX обозначает корректное наименование устройства для записи в системе.

Опытным путём установил необходимость выделения под загрузочную область места не менее 1 ГБ, у себя выделил около 2 ГБ. Этого должно хватить, даже в случае частого обновления ядра ОС. Провести изменение размера загрузочной области и подвигать разделы можно сразу после записи образа, используя ПО gparted; вносим корректировки в файл hosts:

127.0.0.1   localhost.localdomain localhost4.localdomain4 localhost localhost4

192.168.50.116 nanopct6.proxmox.local nanopct6 localhost

::1         localhost.localdomain localhost6.localdomain6 localhost localhost6

fe00::0     ip6-localnet

ff00::0     ip6-mcastprefix

ff02::1     ip6-allnodes

ff02::2     ip6-allrouters

конфигурируем сеть (устанавливаем iproute и ifupdown2) и назначаем mac-адреса адаптерам

source /etc/network/interfaces.d/*

# Network is managed by Network manager

auto lo

iface lo inet loopback

 

auto end0

#iface end0 inet6 auto

iface end0 inet static

address 192.168.50.116

netmask 255.255.255.0

geteway 192.168.50.1

#dns-nameservers 80.80.80.80 80.80.81.81

up route add -net 0.0.0.0/0 gw 192.168.50.1 end0

post-up ip link set end0 address 8e:3b:34:3a:21:e4

 

auto end1

iface end1 inet6 dhcp

iface end1 inet dhcp

post-up ip link set end1 address 4a:ea:ba:b1:6c:55

Как видно из иллюстраций, размещённых выше, вследствие прошивки, mac-адреса сетевых устройств NanoPC-T6 были утеряны. Нужно заменить их новыми значениями. Если этого не сделать, маршрутизатор не будет резервировать выданный датацентру ip-адрес, вместо этого при каждой загрузке системы будет выдавать произвольные значения. Чтобы этого избежать, я выбрал произвольные значения mac-адресов для сетевых адаптеров и задаю их через post-up; также их внёс в резервирование DHCP маршрутизатора. Рекомендую устанавливать свои значения.

Настройка репозиториев для установки необходимого набора пакетов, согласно источнику:

root@nanopct6:/opt# cat /etc/apt/sources.list.d/pveport.list

deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/kernel sid port

deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/pbs bookworm port

deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/devel bookworm port

deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/pve bookworm ceph-reef

deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/pve bookworm port

Основные работы

 

a) Просмотр доступных в репозиториях ядер PVE:

apt-cache search pve-kernel

b) Установка оптимального:

apt install pve-kernel-6.1-rockchip pve-headers-6.1-rockchip -y 

c) Во время установки выявлено отсутствие доступных драйверов сетевых адаптеров

W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-2.fw for module r8169  без которых сеть на установленном pve-kernel работать не будет. Перед перезагрузкой в новое ядро, выполняем установку пакетов firmware-realtek и firmware-misc-nonfree из репозиториев (у меня без проблем установились).

apt install firmware-realtek firmware-misc-nonfree -y

В качестве альтернативы можно поискать здесь.

Установку Proxmox-VE необходимо выполнять из специально собранного ядра PVE-Kernel. Если этим правилом пренебречь, натолкнёмся на проблему с запуском ряда служб, включая pve-manager.service, от которых зависит запустится proxmox-ve или нет.Поэтому, перезагружаемся и запускаем ядро PVE, предварительно сконфигурировав grub.cfg. Ниже таблицы приведены 2 выдержки из grub.cfg. Обратите внимание, что UUID нужен верный. Закомментированные строки показывают, что можно прописать разделы устройства не только по UUID. Всё на Ваше усмотрение.

Выполняем установку согласно инструкции, с корректировкой: Update your repository and system by running:

apt update && apt full-upgradeВыполнять на этапе установки не будем, иначе можем повредить загрузочную область при обновлении ядра. Чтобы избежать возможность поломки можно в процессе настройки зайти в armbian-config и в настройках безопасности запретить обновления ядра; так же можно сконфигурировать загрузчик на загрузку ядра из директории /boot, размещённой в корневом разделе диска. Тогда при обновлениях ядра будет перетираться только загрузочная область минуя /boot.

 

Конфигурация grub.cfg будет различаться, в зависимости от директории размещения ядра ОС. Ниже приведены 2 варианта размещения: после копирования в директорию /boot (когда мне не хотелось зависить от корректности выполнения обновления ядра системы) и до этой манипуляции.

root@nanopct6:/boot/boot/grub# cat ./grub.cfg
source /boot/grub/config.cfg

# Live boot
menuentry "Live system (legacy-rk35xx)" --hotkey=l {
	smbios -t 11 -s 4 --set=devicetreename
	if [ -f /live/dtb/rockchip/$devicetreename ];then
		devicetree /live/dtb/rockchip/$devicetreename
	elif [ -f /live/dtb/rockchip/$devicetreename.dtb ];then
		devicetree /live/dtb/rockchip/$devicetreename.dtb
	fi
	search --no-floppy --fs-uuid 6cce74bf-fe6f-4eba-81de-02067112ea16 --set=root --hint hd0,gpt2
        devicetree /boot/dtb/rockchip/rk3588-nanopc-t6.dtb
       	#linux /boot/vmlinuz-6.1.43-rockchip root=/dev/nvme0n1p2 ro quiet
	linux /boot/vmlinuz-6.1.43-rockchip root=UUID=6cce74bf-fe6f-4eba-81de-02067112ea16 ro rootwait rootfstype=ext4
        #linux /boot/Image root=UUID=6cce74bf-fe6f-4eba-81de-02067112ea16 ro rootwait rootfstype=ext4
	initrd /boot/initrd.img-6.1.43-rockchip
        boot
}

либо:

source /boot/grub/config.cfg

# Live boot
menuentry "Live system (legacy-rk35xx)" --hotkey=l {
	smbios -t 11 -s 4 --set=devicetreename
	if [ -f /live/dtb/rockchip/$devicetreename ];then
		devicetree /live/dtb/rockchip/$devicetreename
	elif [ -f /live/dtb/rockchip/$devicetreename.dtb ];then
		devicetree /live/dtb/rockchip/$devicetreename.dtb
	fi
	search --no-floppy --fs-uuid C0CA-BD0D --set=root --hint hd0,gpt2
        devicetree /dtb/rockchip/rk3588-nanopc-t6.dtb
       	#linux /boot/vmlinuz-6.1.43-rockchip root=/dev/nvme0n1p2 ro quiet
	linux /vmlinuz-6.1.43-rockchip root=UUID=6cce74bf-fe6f-4eba-81de-02067112ea16 ro rootwait rootfstype=ext4
        #linux /boot/Image root=UUID=6cce74bf-fe6f-4eba-81de-02067112ea16 ro rootwait rootfstype=ext4
	initrd /initrd.img-6.1.43-rockchip
        boot
}

Заключение

Одельного скомпилированного ядра pve-kernel для nanopc-t6 на просторах интернета на сегодняшний день я не обнаружил, поэтому выбор очевиден, остановился на

Hidden text

root@nanopct6:~# uname -a

Linux nanopct6 6.1.43-rockchip #1 SMP PVE Port 6.1.43-3-orangepi (2024-04-10) aarch64 GNU/Linux

Иллюcтрация сборки Proxmox-VE
Иллюcтрация сборки Proxmox-VE

Действия, обозначенные в таблице на сегодняшний день актуальны и помогли мне собрать на arm64 Proxmox-VE из портов. Надеюсь, помогут и ещё кому-то не допустить возможных ошибок и снизить трудозатраты на настройку Nanopc-T6.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+4
Комментарии10

Публикации

Истории

Ближайшие события