NixOS on ARM/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "Уровень поддержки ARM в целом зависит от архитектуры и конкретных экосистем и плат."
Unabomberlive (talk | contribs)
Created page with "Легенда таблицы: * Система на кристалле - https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D0%B0_%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B5?wprov=sfla1 * Архитектура набора команд - https://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4?wprov=sfla1"
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="font-size: 1.5rem; text-align: center;padding-bottom: 0.5rem;"><strong>NixOS поддерживает 64-bit ARM.</strong></div>
<div style="font-size: 1.5rem; text-align: center;padding-bottom: 0.5rem;"><strong>NixOS supports 64-bit ARM.</strong></div>
</div>


Уровень поддержки ARM в целом зависит от архитектуры и конкретных экосистем и плат.
Уровень поддержки ARM в целом зависит от архитектуры и конкретных экосистем и плат.


<div lang="en" dir="ltr" class="mw-content-ltr">
Интеграция ARM в NixOS осуществляется путем создания '''общих сборок, как граждан первого класса'''. Это означает, что как только появится поддержка платы в ядре и прошивке платформы, NixOS будет работать после их обновления.
The way the ARM integration is built into NixOS is by making '''generic builds the first-class citizens'''. This means that as soon as there is upstream support for the board in the kernel and platform firmware, NixOS should work once those are updated.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 16: Line 12:
На данный момент (начало 2024 года) '''только AArch64''' имеет полную поддержку upstream. При этом ни armv6l, ни armv7l не игнорируются, над исправлениями работают и утверждают их по мере необходимости. Не хватает только поддержки и сборки в бинарном виде. На момент написания статьи общедоступных кэшей для armv6l или armv7l не существует.<!-- Пожалуйста, свяжитесь с samueldr на канале NixOS on ARM, если вы хотите поделиться своим собственным кэшем, перед редактированием. Нам нужно пересмотреть формулировку, чтобы было предельно ясно, что это пользовательский кэш. -->
На данный момент (начало 2024 года) '''только AArch64''' имеет полную поддержку upstream. При этом ни armv6l, ни armv7l не игнорируются, над исправлениями работают и утверждают их по мере необходимости. Не хватает только поддержки и сборки в бинарном виде. На момент написания статьи общедоступных кэшей для armv6l или armv7l не существует.<!-- Пожалуйста, свяжитесь с samueldr на канале NixOS on ARM, если вы хотите поделиться своим собственным кэшем, перед редактированием. Нам нужно пересмотреть формулировку, чтобы было предельно ясно, что это пользовательский кэш. -->


<div lang="en" dir="ltr" class="mw-content-ltr">
'''Для получения ссылок на образы, включая установку UEFI''', перейдите на страницу [[NixOS_on_ARM/Installation|Installation page]].
'''For images links, including UEFI install''', skip to the [[NixOS_on_ARM/Installation|Installation page]].
</div>


<span id="Supported_devices"></span>
<span id="Supported_devices"></span>
== Поддерживаемые устройства ==
== Поддерживаемые устройства ==


<div lang="en" dir="ltr" class="mw-content-ltr">
Легенда таблицы:
Table legend:
* Система на кристалле -  
* SoC - https://en.wikipedia.org/wiki/System_on_a_chip
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D0%B0_%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B5?wprov=sfla1
* ISA - https://en.wikipedia.org/wiki/Instruction_set_architecture
* Архитектура набора команд -  
</div>
https://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4?wprov=sfla1


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Upstream_(NixOS)_supported_devices"></span>
=== Upstream (NixOS) supported devices ===
=== Устройства поддерживающие NixOS из коробки ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS поддерживает эти платы с архитектурой AArch64 на канале nixpkgs-unstable и stable.
NixOS has support for these boards using AArch64 architecture on the nixpkgs-unstable and stable channel.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 74: Line 65:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Эти платы не проходят регулярную проверку на работоспособность.
These boards are not routinely verified as working.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 480: Line 469:
== Установка ==
== Установка ==


{{main|NixOS_on_ARM/Установка}}
{{main|NixOS_on_ARM/Installation}}


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Initial_configuration"></span>
== Initial configuration ==
== Начальная настройка ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 498: Line 486:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Маловероятно, что он завис на этом этапе. Это последнее сообщение, выводимое U-Boot. U-Boot печатает сразу и на дисплей, и в консоль.
It is unlikely to be hung at this part. This is the last message printed by U-Boot. U-Boot prints to both the display and the console at once.
</div>


Для просмотра сообщений ядра и вывода загрузки необходимо соответствующим образом настроить "<code>stdout</code>" ядра.
Для просмотра сообщений ядра и вывода загрузки необходимо соответствующим образом настроить "<code>stdout</code>" ядра.


<div lang="en" dir="ltr" class="mw-content-ltr">
<code>stdout</code> ядра будет отличаться в зависимости от семантики.
The kernel's <code>stdout</code> will differ depending on semantics.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 515: Line 499:
Другими словами, решение может заключаться в том, чтобы включить соответствующие параметры <code>console=</code> в соответствии с конфигурацией вашего оборудования и системы.
Другими словами, решение может заключаться в том, чтобы включить соответствующие параметры <code>console=</code> в соответствии с конфигурацией вашего оборудования и системы.


<div lang="en" dir="ltr" class="mw-content-ltr">
* Для дисплея добавьте <code>console=tty0</code>.
* For the display, add <code>console=tty0</code>.
* Для серийной консоли обратитесь к конфигурации целевого устройства.
* For a serial console, refer to the target device configuration.
</div>


<span id="Details_about_the_boot_process"></span>
<span id="Details_about_the_boot_process"></span>
=== Подробные сведения о процессе загрузки ===
=== Подробные сведения о процессе загрузки ===


<div lang="en" dir="ltr" class="mw-content-ltr">
NixOS также может быть загружена через [[NixOS on ARM/UEFI|UEFI]] на ARM. Семантика в целом такая же, как и на других архитектурах. Обратите внимание, что частое использование Device Tree вместо ACPI в аппаратном обеспечении потребительского класса [[NixOS_on_ARM/UEFI#Device_Trees|''может'' сделать это немного более неудобным]].
NixOS can also be booted through [[NixOS on ARM/UEFI|UEFI]] on ARM. The semantics are generally the same as on other architectures. Do note that the common use of Device Tree instead of ACPI in consumer-class hardware [[NixOS_on_ARM/UEFI#Device_Trees|''may'' make this a bit more awkward]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 537: Line 517:
=== Aarch64 ===
=== Aarch64 ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Инстанс [https://hydra.nixos.org/ official NixOS Hydra] собирает полный набор бинарных файлов (доступны на https://cache.nixos.org) для архитектуры AArch64 на каналах nixpkgs-unstable и stable.
The [https://hydra.nixos.org/ official NixOS Hydra] instance builds a full set of binaries (available on https://cache.nixos.org) for the AArch64 architecture on the nixpkgs-unstable and stable channels.
</div>


<span id="armv6l_and_armv7l"></span>
<span id="armv6l_and_armv7l"></span>
=== armv6l и armv7l ===
=== armv6l и armv7l ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Некоторые '''''пользователи''''' в прошлом предлагали кэши для 32-битных ARM, но в настоящее время ни один из них не доступен.
Some '''''users''''' have provided best effort caches in the past for 32 bit ARM, but none are currently available.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Getting_Support"></span>
== Getting Support ==
== Получение поддержки ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 557: Line 532:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Не стесняйтесь задавать вопросы. Обратите внимание, что время ответа может сильно отличаться в зависимости от предоставленной информации.
Don't hesitate to ask questions. Note that reply times may vary greatly, depending on the provided information.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Resources"></span>
== Resources ==
== Источники ==
</div>


<span id="See_also"></span>
<span id="See_also"></span>
=== См. также ===
=== См. также ===


<div lang="en" dir="ltr" class="mw-content-ltr">
* [[U-Boot]], поскольку он часто используется в паре с оборудованием класса SBC.
* [[U-Boot]], as it is often paired with SBC-class hardware.
* [https://mobile.nixos.org/ Mobile NixOS], который обеспечивает расширенную семантику некоторых нестандартных семантик загрузки.
* [https://mobile.nixos.org/ Mobile NixOS], which provides enhanced semantic around some non-standard boot semantics.
</div>


<span id="Subpages"></span>
<span id="Subpages"></span>
Line 578: Line 548:
Ниже приведен список всех подстраниц темы ''NixOS на ARM''.
Ниже приведен список всех подстраниц темы ''NixOS на ARM''.


<div lang="en" dir="ltr" class="mw-content-ltr">
{{Special:PrefixIndex/{{FULLPAGENAME}}/ |hideredirects=1 |stripprefix=1}}
{{Special:PrefixIndex/{{FULLPAGENAME}}/ |hideredirects=1 |stripprefix=1}}
</div>

Latest revision as of 21:03, 22 August 2024

NixOS поддерживает 64-bit ARM.

Уровень поддержки ARM в целом зависит от архитектуры и конкретных экосистем и плат.

Интеграция ARM в NixOS осуществляется путем создания общих сборок, как граждан первого класса. Это означает, что как только появится поддержка платы в ядре и прошивке платформы, NixOS будет работать после их обновления.

It is still possible, when needed, to build and use a customized platform firmware and kernel for specific boards[reference needed].

На данный момент (начало 2024 года) только AArch64 имеет полную поддержку upstream. При этом ни armv6l, ни armv7l не игнорируются, над исправлениями работают и утверждают их по мере необходимости. Не хватает только поддержки и сборки в бинарном виде. На момент написания статьи общедоступных кэшей для armv6l или armv7l не существует.

Для получения ссылок на образы, включая установку UEFI, перейдите на страницу Installation page.

Поддерживаемые устройства

Легенда таблицы:

  • Система на кристалле -

https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D0%B0_%D0%BA%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D0%B5?wprov=sfla1

  • Архитектура набора команд -

https://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4?wprov=sfla1

Устройства поддерживающие NixOS из коробки

NixOS поддерживает эти платы с архитектурой AArch64 на канале nixpkgs-unstable и stable.

Support for those board assumes as much is supported as Mainline Linux supports.

Manufacturer Board SoC ISA CPU RAM Storage
Raspberry Pi Foundation Raspberry Pi 3 Broadcom BCM2837 AArch64 / ARMv7 4× Cortex-A53 @ 1.2 - 1.4 GHz 1 GB SD/microSD
Raspberry Pi Foundation Raspberry Pi 4 Broadcom BCM2711 AArch64 / ARMv7 4× Cortex-A72 @ 1.5 - 1.8 GHz 1-8 GB microSD, eMMC

Community supported devices

Эти платы не проходят регулярную проверку на работоспособность.

The baseline support level expected is “Just as much as mainline Linux and U-Boot supports them”, except if specified otherwise.

Manufacturer Board SoC ISA CPU RAM Storage
Apple Apple Silicon Macs M1/M1 Pro/M1 Max AArch64 NVMe
ASUS Tinker Board Rockchip RK3288 ARMv7 4× Cortex-A17 2 GB microSD
Banana Pi Banana Pi Allwinner A20 ARMv7 2× Cortex-A7 1 GB SD, SATA
Banana Pi M64 Banana Pi M64 Allwinner A64 AArch64 4× Cortex-A53 2 GB microSD, 8GB eMMc
Banana Pi BPI-M5 Banana Pi BPI-M5 Amlogic S905X3 AArch64 4× Cortex-A55 4 GB LPDDR4 microSD, 16G eMMC
BeagleBoard.org BeagleBone Black TI AM335x (src) ARMv7 1× Cortex-A8 @ 1 GHz 512 MB 4 GB eMMC, microSD
Firefly AIO-3399C Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 2/4 GB 8/16 GB eMMC, microSD
FriendlyElec NanoPC-T4 Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 4 GB 16 GB eMMC, microSD, NVMe
FriendlyElec NanoPi-M4 Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 4 GB optional eMMC, microSD
FriendlyElec NanoPi-R6C Rockchip RK3588S AArch64 4× ARM Cortex-A76 @ 2.4 GHz, 4× Cortex-A55 @ 1.8 Ghz 4 GB / 8 GB optional eMMC, microSD, NVMe
Hardkernel ODROID-HC1 & ODROID-HC2 Samsung Exynos 5422 ARMv7 4× Cortex-A15 @ 2GHz, 4× Cortex-A7 @ 1.4GHz 2 GB microSD
Hardkernel ODROID-C2 Amlogic S905 AArch64 4× Cortex-A53 @ 1.5GHz 2 GB eMMC, microSD
Hardkernel ODROID-HC4 Amlogic S905X3 AArch64 4× Cortex-A55 @ 1.8GHz 4 GB microSD, SATA
Kosagi Kosagi Novena i.MX6 ARMv7 4× Cortex-A9 @ 1.2 GHz 4 GB microSD, SATA
Libre Computer ROC-RK3399-PC Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 4 GB eMMC, microSD, NVMe
Libre Computer ROC-RK3328-CC Rockchip RK3328 AArch64 4× Cortex-A53 @ 1.4GHz 4 GB eMMC, microSD
Libre Computer AML-S905X-CC-V2 Amlogic S905X AArch64 4× Cortex-A53 @ 1.512 GHz 1/2GB eMMC, microSD
Linksprite pcDuino3 Nano Allwinner A20 ARMv7 2× Cortex-A7 @ 1 GHz 1 GB 4 GB NAND, microSD, SATA
NVIDIA Jetson TK1 Tegra K1/T124 ARMv7 4× Cortex-A15 @ 2.3 GHz 2 GB 16 GB eMMC, SD, SATA
NXP i.MX 8M Plus EVK i.MX 8M Plus AArch64 4× Cortex-A53 @ 1.8 Ghz 6 GB 32 GB eMMC, microSD
NXP i.MX 8M Quad EVK i.MX 8M Quad AArch64 4× Cortex-A53 @ 1.5 Ghz + 1× Cortex-M4 3 GB 16 GB eMMC, microSD
OLIMEX Teres-A64 AllWinner A64 AArch64 4× Cortex-A53 @ 1.1 GHz 2GB 16 GB eMMC, microSD
Orange Pi Orange Pi One Allwinner H3 ARMv7 4× Cortex-A7 @ 1.2 GHz 512 MB microSD
Orange Pi Orange Pi PC Allwinner H3 ARMv7 4× Cortex-A7 @ 1.6 GHz 1 GB SD/microSD
Orange Pi Orange Pi Zero Plus2 (H5) Allwinner H5 AArch64 4× Cortex-A53 @ 1.2 GHz 1 GB SD/microSD + 8GB eMMC
Orange Pi Orange Pi Zero2 (H616) Allwinner H616 AArch64 4× Cortex-A53 @ 1.2 GHz 1 GB SD/microSD + 2MB SPI Flash
Orange Pi Orange Pi R1 Plus LTS Rockchip RK3328 AArch64 4× Cortex-A53 @ 1.5 GHz 1 GB microSD
Orange Pi Orange Pi 5 Rockchip RK3588s AArch64 4× Cortex-A76 @ 2.4GHz, 4×Cortex-A55 @ 1.8 GHz 4/8/16 GB microSD, NVMe
Orange Pi Orange Pi 5 Plus Rockchip RK3588 AArch64 4× Cortex-A76 @ 2.4GHz, 4×Cortex-A55 @ 1.8 GHz 4/8/16 GB eMMC, microSD, NVMe
PINE64 PINE A64-LTS Allwinner R18 AArch64 4× Cortex-A53 @ ? GHz 2 GB microSD & eMMC
PINE64 Pinebook Allwinner A64 AArch64 4× Cortex-A53 @ ? Ghz 2 GB microSD & eMMC
PINE64 Pinebook Pro Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 4 GB microSD & eMMC
PINE64 ROCK64 Rockchip RK3328 AArch64 4× Cortex-A53 @ 1.5 GHz 1/2/4 GB microSD/eMMC
PINE64 ROCKPro64 Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 2/4 GB microSD/eMMC
Clockworkpi uConsole A06 Rockchip RK3399 AArch64 2× Cortex-A72 @ 2.0 GHz, 4× Cortex-A53 @ 1.5 Ghz 4 GB microSD
Radxa ROCK5 Model B Rockchip RK3588 AArch64 4× Cortex-A76 @ 2.4GHz, 4×Cortex-A55 @ 1.8 GHz 4/8/16 GB eMMC, microSD, NVMe
Radxa ROCK5 Model A Rockchip RK3588s AArch64 4× Cortex-A76 @ 2.4GHz, 4×Cortex-A55 @ 1.8 GHz 4/8/16 GB eMMC, microSD, NVMe
Raspberry Pi Foundation Raspberry Pi Broadcom BCM2835 ARMv6 1 × ARM1176 @ 700 MHz 256 MB / 512 MB SD/microSD
Raspberry Pi Foundation Raspberry Pi 2 Broadcom BCM2836 ARMv7 4× Cortex-A7 @ 900 MHz 1 GB SD/microSD
Raspberry Pi Foundation Raspberry Pi 3 Broadcom BCM2837 AArch64 / ARMv7 4× Cortex-A53 @ 1.2 GHz 1 GB SD/microSD
Raspberry Pi Foundation Raspberry Pi 4 Broadcom BCM2711 AArch64 / ARMv7 4× Cortex-A53 @ 1.5 GHz 1-8 GB microSD
Raspberry Pi Foundation Raspberry Pi 5 Broadcom BCM2712 AArch64 4× Cortex-A76 @ 2.4 GHz 4-8 GB microSD
Toshiba AC100 (mini laptop) Tegra 2 250 (T20) ARMv7 2× Cortex-A9 @ 1 GHz 512 MB 8­­–32 GB eMMC, SD
Wandboard Wandboard Solo/Dual/Quad Freescale i.MX6 ARMv7 1×/2×/4× Cortex-A9 @ 1000 MHz 512 MB / 1 GB / 2 GB microSD, SATA

Особые устройства

С помощью QEMU можно эмулировать платформу ARM.

Manufacturer Board SoC ISA CPU RAM Storage
QEMU QEMU ARMv7 up to 8 up to 2 GB Anything QEMU supports

Установка

Начальная настройка

Устранение неполадок

Hanging at Starting kernel ...

When booting a NixOS system, it may look like it is hung at Starting kernel ....

Маловероятно, что он завис на этом этапе. Это последнее сообщение, выводимое U-Boot. U-Boot печатает сразу и на дисплей, и в консоль.

Для просмотра сообщений ядра и вывода загрузки необходимо соответствующим образом настроить "stdout" ядра.

stdout ядра будет отличаться в зависимости от семантики.

  • When there are no valid console= kernel command-line arguments, it will default to the /chosen/stdout-path device tree property. (Generally a serial console.)
  • When valid console= parameters are present, the kernel picks the leftmost valid one as stdout.

Другими словами, решение может заключаться в том, чтобы включить соответствующие параметры console= в соответствии с конфигурацией вашего оборудования и системы.

  • Для дисплея добавьте console=tty0.
  • Для серийной консоли обратитесь к конфигурации целевого устройства.

Подробные сведения о процессе загрузки

NixOS также может быть загружена через UEFI на ARM. Семантика в целом такая же, как и на других архитектурах. Обратите внимание, что частое использование Device Tree вместо ACPI в аппаратном обеспечении потребительского класса может сделать это немного более неудобным.

Otherwise, in SBC-class hardware, it is common that boards are generally expected to use U-Boot as the platform firmware and bootloader. See the section about using NixOS with U-Boot.

Бинарные кэши

Aarch64

Инстанс official NixOS Hydra собирает полный набор бинарных файлов (доступны на https://cache.nixos.org) для архитектуры AArch64 на каналах nixpkgs-unstable и stable.

armv6l и armv7l

Некоторые пользователи в прошлом предлагали кэши для 32-битных ARM, но в настоящее время ни один из них не доступен.

Получение поддержки

There is a dedicated room for the upstream NixOS effort on Matrix, #nixos-on-arm:nixos.org.

Не стесняйтесь задавать вопросы. Обратите внимание, что время ответа может сильно отличаться в зависимости от предоставленной информации.

Источники

См. также

  • U-Boot, поскольку он часто используется в паре с оборудованием класса SBC.
  • Mobile NixOS, который обеспечивает расширенную семантику некоторых нестандартных семантик загрузки.

Подстраницы

Ниже приведен список всех подстраниц темы NixOS на ARM.