Эту небольшую статейку я написал как для тех, кто хочет первый раз запустить одноплатник, так и для тех, кто сталкивается с ошибкой "emergency mode". Понимаю, что некоторые обсуждаемые в статье вещи можно было решить более оптимально. Буду рад почитать в комментариях ваши предложения!

Зачем все это?

В рамках небольшого стартапа GrifOn (если сайт лежит, не трогайте его, он отдыхает) нашей команде понадобился одноплатник, на котором возможно в реалтайме крутить детекцию людей с rtsp потока(об этом в следующих статьях).

Выбор между Orange Pi 5 и Jetson Nano был непростым. В первую очередь сравнивалась вычислительная мощность: Orange Pi 5 - 6 TOPS на NPU vs Jetson Nano - 0.5 TFLOPS на GPU. Грубо приравняв 0.5 TFLOPS к 2 TOPS видим, что разница в производительности должна получиться существенная. Второй причиной выбора Orange Pi 5 стало наличие встроенного wifi модуля, чем не может похвастаться Jetson Nano, где этот модуль нужно докупать отдельно и ждать 2 недели(и это в Москве!). На момент выбора одноплатника Orange Pi 5 моделей существовало уже 3 штуки: базовая, plus и pro. По производительности одно и то же, но с точки зрения физических интерфейсов разные. Прошка лучше всех подходила на все случаи жизни потому выбор пал на нее. И тут я сам не понял как вырыл себе могилку (извиняюсь за спойлер).

Как запустить одноплатник без мам, пап и монитора

И вот придя радостным домой вместе с новеньким Orange Pi я осознал, что просчитался, так как монитора дома отродясь не было, а покупать моник по цене самой Orange Pi ну совсем не комильфо. Можно было попробовать купить Ethernet провод, найти на просторах интернета логин и пароль от юзера по умолчанию, посмотреть на роутере какой адрес занимает эта плата и надеяться, что на на устройстве ssh сервер будет поднят из коробки. Но такой вариант показался ненадежным и я продолжил свои размышления о подключении монитора. В голову пришло 2 варианта: один интересный, другой простой. Начал я конечно с интересного.

  • Интересный вариант - отодрать матрицу от старого ноутбука и используя переходник из hdmi в edp 30 pin шлейф от матрицы подключиться к hdmi выходу Orange Pi, благо их там аж целых 2. И отодрать матрицу ноутбука тут оказалось самой простой подзадачей, потому что на поиск переходника у меня ушло добрых часа 3. Названий и видов у таких переходников целый зоопарк: hdmi - edp адаптер/конвертер, LCD-контроллер, HDMI-совместимый драйвер платы управления EDP, скалер и думаю еще десятком недобрых слов можно обозвать это устройство. Проблема тут в том, что такой переходник найти тяжело даже в Москве(по крайней мере дешевый - в пределах пары тысяч рублей) и остается только заказывать из китая со сроком ожидания 2-3 недели. Поэтому я заказал контроллер на озоне и перешел временно к простому варианту.

  • Простой вариант - купить адаптер видеозахвата из HDMI в Type-C и запустить это добро прямо на телефоне или планшете. Я заказал вот такой адаптер с озона, но если хочется то можно и сразу купить похожий с наценкой в 2 раза в ближайшем dns. Все что нужно для имитации монитора это скачать и запустить приложение USB Camera из Play Store (Или похожее коих много) и воткнуть шнур с переходником. Настолько просто, что действительно неинтересно! Подключив плату к монитору, клаве и банке получился довольно экзотический ноутбук, с которым шансов на привлечение внимания девушек в любой кофейне значительно больше, чем у остальных представителей программистского вида.

Результат сборки

Как настроить ось

  1. Выбираем ось. Просто накатить на orange pi стандартную ось не получится, потому разработчики orange pi адаптировали и выпустили свои образы. Тут важно учесть, что под разные версии orange pi: базовую, plus и pro выпускаются разные образы и для pro образы качать нужно именно отсюда. Я как фанат убунты решил ставить именно ее.

  2. Записываем образ. Несмотря на то, что Orange Pi 5 pro как и обычный пк имеет M.2 разъем под ssd 2280 и несколько usb портов, поставить ось с usb флешки не получится. На Orange Pi 5 pro не существует биоса, в котором можно выбрать девайс для загрузки оси. Тут точка входа только одна и это sd карта. Вооруживший usb переходником под sd карту и программой BalenaEtcher я записал образ на карточку, воткнул ее в плату, прикрутил к плате чистый ssd диск и был готов покорять вершины одноплатник. В этот момент я еще не предполагал, что проделывать эти действия мне придется еще около полутора десятка раз… Также хочу заметить, что при записи образа на sd карту может возникать ошибка “BusyBox v1.30.1 built-in shell”, у меня эта ошибка ушла лишь после того, как я всю sd карту принудительно затер нулями. Не знаю совпадение это или нет, но рекомендую попробовать при возникновении подобной ошибки.

  3. Теперь, когда я запустил Orange Pi на sd карте необходимо было установить ось на ssd. Благо тут предполагался разработчиками простой порядок действий:

    1. набираем sudo orangepi-config, вводим пароль orangepi

    2. Выбираем System -> Install -> и дальше мне лень вспоминать так как после установки у меня это окно пропало все интуитивно понятно(Выбираем установку на ssd, в интерактивном окне размечаем файловую систему под ext4, тыкаем везде Ok и в конце нам предлагают сделать reboot)

    3. И после перезагрузки вне зависимости от того что бы я не выбирал при установке и какую бы версию убунты не ставил, я каждый раз получал ошибку "you are in emergency mode". Вероятно эта ошибка вызвана еще сырой версией операционной системы так как Orange Pi 5 Pro вышла всего за несколько месяцев до моей покупки. Я запускал версию операционной системы 1.0.2. Поначалу я пытался бежать от от этой ошибки, делал все, чтобы ее не возникло, но в конечном счете я смирился, принял бой и пошел заколебывать chatGPT курить мануалы по запуску линукс дистрибутивов. Поресерчив я выяснил, что успешный запуск возможен только если сойдутся все звезды на небе, всего их 3:

      • В директории "boot/*" будут существовать инструкции для запуска операционной системы.

      • Устройство, с которого планируется загружать операционную систему должно отображаться командой blkid и у такого устройства должен быть свой UUID

      • Правильно размеченная таблица монтирования файловых систем в файле "/etc/fstab". Тут то и возникает наша проблема. При установке операционной системы на ssd какого-то лешего по непонятным причинам неправильно размечается этот файлик из-за чего и получается наша ошибка "emergency mode".

    4. Чтобы исправить эту ошибку пришлось исполнить следующий танец с бубном:

      • Найти в какой директории boot(коих несколько чтобы вас запутать) лежат бут файлы:
        `sudo find / -name boot`

      • Найти UUID целевого загрузочного устройства, в нашем случае SSD диска(dev/nvme0n1p1):
        `blkid`

      • Разметить таблицу монтирования файловых систем:
        `sudo nano /etc/fstab`

        Данная разметка таблицы не является единственно правильным вариантом
        Данная разметка таблицы не является единственно правильным вариантом

        И вот остается только вызвать ребут и проблема с "emergency mode" канет в Лету.

Комментарии (21)


  1. sekuzmin
    07.06.2024 18:15

    Очень познавательно.
    Все таки на Raspberry Pi все проще с headless установкой.
    Да и новый Raspberry Pi AI Kit 13 TOPS.


    1. Vorkov Автор
      07.06.2024 18:15

      Действительно Raspberry Pi Ai Kit на первый взгляд выглядит привлекательнее. Я так понял она только-только на этой неделе вышла, ее бы релиз да на месяц пораньше...


    1. svok
      07.06.2024 18:15

      Лично я несколько опасаюсь покупать изделие британской компании, выпускающей rpi. Что угодно можно ожидать от наших бывших "партнёров".


      1. Kil1J0y
        07.06.2024 18:15

        С тем же успехом китайцы могут подсуть вам свое хитрое по) коих случаев уже не один десяток )


        1. svok
          07.06.2024 18:15

          И те, и другие подсунут. Но британцы ещё и заблокируют все кругом.


  1. Kill_Voice
    07.06.2024 18:15
    +10

    Вот так, с помощью нехитрых приспособлений буханку белого (или черного) хлеба можно превратить в троллейбус…

    Если бы почитали доку на плату, то могли просто подключится к консоли через Debug UART


  1. x89377
    07.06.2024 18:15
    +5

    Можно взять сборку от Armbian и не мучаться так сильно. Или DietPi.


  1. GennPen
    07.06.2024 18:15

    На Orange Pi 5 pro не существует биоса, в котором можно выбрать девайс для загрузки оси. Тут точка входа только одна и это sd карта.

    На таком устройстве если захотели бы, то уже давно могли бы сделать что то наподобие биоса. Ну или распаять eMMC чтобы на нее записывать загрузчик с GRUB или подобным.


    1. Johan_Palych
      07.06.2024 18:15
      +3

      Если на плате есть SPI Flash и M.2 NVMe SSD - прошивают загрузчик, чтобы система работала с диском M.2 NVMe SSD без EMMC и SDCARD.
      EDK2 UEFI firmware
      https://github.com/edk2-porting/edk2-rk3588
      Скрины в этой статье.
      https://habr.com/ru/articles/817901/


    1. x89377
      07.06.2024 18:15
      +3

      В armbian-config есть пункт меню для переноса системы с SD на SATA/NVM/eMMC. Надо только нажать.


  1. sergeygals
    07.06.2024 18:15
    +7

    Пару моментов

    1. на самом деле вариант с ethernet проводом отринутый как самый ненадежный и был самым простым, надёжным и дешёвым. Тем более пароль на убунту искать бы особо не пришлось (orangepi/orangepi), он есть даже в официальном мануале доступном в виде большой pdf на http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-Pro.html

    2. Если после раскатки образа убунты на SD карту её подмонтировать то можно увидеть /boot/orangepi_first_run.txt.template который позволяет не только ставить статические ip но и указывать настройки wifi при первой загрузке, надо только ДО первой загрузки его переименовать в orangepi_first_run.txt ну и выставить в нем параметры на желаемые. Глянуть онлайн на него можно тут https://github.com/orangepi-xunlong/orangepi-build/blob/main/external%2Fpackages%2Fbsp%2Forangepi_first_run.txt.template


  1. Kononvaler
    07.06.2024 18:15
    +2

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

    Рекомендовать к повторению не стал бы.


  1. DungeonLords
    07.06.2024 18:15

    Я раньше тоже использовал BalenaEtcher Но она очень долго грузиться и каждый раз тыкать мышкой там... В итоге написал простенький скриптик с вызовом dd


    1. Johan_Palych
      07.06.2024 18:15
      +2

      https://wiki.archlinux.org/title/USB_flash_installation_medium_(Русский)#Через_dd
      wipefs --all /dev/sdx
      dd bs=4M if=путь/до/disk.img of=/dev/sdx status=progress oflag=sync


  1. roverseti
    07.06.2024 18:15
    +1

    А можно о : " Интересный вариант - отодрать матрицу от старого ноутбука и используя переходник из hdmi в edp 30 pin шлейф от матрицы подключиться к hdmi выходу Orange Pi, благо их там аж целых 2. И отодрать матрицу ноутбука тут оказалось самой простой подзадачей, потому что на поиск переходника у меня ушло добрых часа 3. Названий и видов у таких переходников целый зоопарк: hdmi - edp адаптер/конвертер, LCD-контроллер, HDMI-совместимый драйвер платы управления EDP, скалер и думаю еще десятком недобрых слов можно обозвать это устройство." подробнее написать ??? Очень интересно !


  1. nikolz
    07.06.2024 18:15
    +1

    В рамках небольшого стартапа GrifOn ...

    Так вот про что статья, Карл!!!,

    а ты думал, что это про то, как...

    ... отодрать матрицу ... 

    наивный ты, Карл!!!


  1. Saz_An
    07.06.2024 18:15
    +2

    Зачем жизнь усложнять себе. SSH там есть, учетка по умолчанию orangepi/orangepi (она нужна же и из GUI). Проверить всё это дело 5 минут, если даже уверенности не было.


  1. DungeonLords
    07.06.2024 18:15

    Я написал статью где можно не имея реального одноплатника уже начать с ним работать. Хоть моя статья и ориентирована на rpi, последовательность действия аналогична для любого другого железа и дистрибутива... Надеюсь вам будет полезна.


  1. NutsUnderline
    07.06.2024 18:15

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


  1. Aelliari
    07.06.2024 18:15
    +1

    6 TOPS на NPU

    3 ядра по 2 TOPS не совсем эквивалентно 6 TOPS, там и сейчас есть вопросы по применению и загрузке всех трех ядер одной задачей, или тремя разными задачами, по задаче на ядро


  1. NIggadjai
    07.06.2024 18:15

    Столько гемора с подключением дисплея вместо пятиминутного чтения манов и интернета и подключения к пишке по ssh... Автор знает толк в извращениях.