Первый одноплатник или как поднять Orange Pi 5 Pro

Эту небольшую статейку я написал как для тех, кто хочет первый раз запустить одноплатник, так и для тех кто сталкивается с ошибкой «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 недели. Поэтому я заказал контроллер на озоне и перешел временно к простому варианту.

    77284eee44e256bcb612539408667ceb.png
  • Простой вариант — купить адаптер видеозахвата из 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`

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

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

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

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

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

© Habrahabr.ru