Как установить Ubuntu Touch на OnePlus One: adb, fastboot, UBports Installer
Ubuntu Touch на OnePlus One (bacon): полная установка с MX Linux
Oct 18, 2026 · @Richard
Зачем это и что в итоге получится
OnePlus One (кодовое имя bacon) вышел в 2014 году, но до сих пор бодро работает под Ubuntu Touch: звонки, SMS, мобильный интернет, Wi-Fi, Bluetooth, камера и GPS. В этой статье пройдём весь путь — от разблокировки загрузчика до установки пакетов через apt прямо на телефоне. Компьютер — MX Linux, установщик — официальный UBports Installer в формате AppImage.
Почему телефона нет в каталоге. На devices.ubuntu-touch.io по умолчанию включены фильтры, которые прячут устаревшие и брошенные порты. Порт для bacon помечен как неподдерживаемый, поэтому в общем списке его не видно. Страница устройства при этом существует, её проще найти поисковиком: bacon, релиз 16.04 xenial. Можно и в самом каталоге снять галочку «Hide unsupported» в фильтрах.
Какую версию ставить. Для bacon есть две ветки:
| Ветка | Последняя версия | Состояние |
| 16.04 xenial, канал stable | OTA-25 (апрель 2023) | Работают звонки, SMS, MMS, мобильные данные, камера, датчики. Рекомендуется |
| 20.04 focal, каналы rc / devel | rc 2023-W44, devel-сборки | Не работают камера и датчик приближения, звонки и SMS не проверены |
Для повседневного использования выбирайте 16.04 stable — именно его разбираем дальше.
> Внимание: разблокировка загрузчика и установка Ubuntu Touch полностью стирают данные на телефоне. Сохраните всё нужное заранее.
Что понадобится и подготовка MX Linux
Понадобятся:
- OnePlus One, заряженный хотя бы на 50%;
- оригинальный USB-кабель с передачей данных (кабель «только для зарядки» не подойдёт);
- компьютер с MX Linux и доступом в интернет — установщик скачает около 1 ГБ;
- UBports Installer в формате AppImage: devices.ubuntu-touch.io/installer/appimage.
1. Установите adb и fastboot
Они нужны для разблокировки загрузчика и проверки связи с телефоном. Пакет android-sdk-platform-tools-common добавляет udev-правила, без которых телефон виден только root-пользователю.
☯
Terminal:
⌕
≡
✕
sudo apt update sudo apt install adb fastboot android-sdk-platform-tools-common libfuse2
libfuse2 нужен для запуска AppImage: без него файл просто не откроется.
2. Добавьте себя в группу plugdev
☯
Terminal:
⌕
≡
✕
sudo usermod -aG plugdev $USER
После этого выйдите из сеанса и войдите снова (или перезагрузите компьютер), чтобы права применились.
3. Сделайте AppImage исполняемым
Перейдите в папку, куда скачали установщик, и выполните:
☯
Terminal:
⌕
≡
✕
cd ~/Загрузки chmod +x ubports-installer_*.AppImage
Имя файла зависит от версии, поэтому в команде звёздочка. Пока установщик не запускайте — сначала разберёмся с загрузчиком.
Разблокировка загрузчика OnePlus One
У OnePlus One загрузчик разблокируется одной командой fastboot, без кодов и ожидания от производителя. В моём случае он уже был разблокирован, поэтому сначала проверьте статус — возможно, этот шаг можно пропустить.
1. Включите отладку по USB
- Откройте «Настройки → О телефоне» и 7 раз нажмите на «Номер сборки» — появятся «Параметры разработчика».
- В «Параметрах разработчика» включите «Отладка по USB».
- Если там есть пункт «Заводская разблокировка» (OEM unlocking) — включите и его. Если есть «Обновлять recovery Cyanogen» — выключите.
- Подключите телефон к компьютеру и подтвердите на экране запрос «Разрешить отладку по USB?».
Проверьте, что компьютер видит телефон:
☯
Terminal:
⌕
≡
✕
adb devices
В ответ должна появиться строка с серийным номером и словом device.
2. Перейдите в режим fastboot
☯
Terminal:
⌕
≡
✕
adb reboot bootloader
Или вручную: выключите телефон, зажмите Громкость вверх + Питание и держите до надписи Fastboot Mode. Проверьте связь:
☯
Terminal:
⌕
≡
✕
fastboot devices
Если вместо серийного номера видно no permissions, значит udev-правила не применились: перезайдите в систему или временно запускайте команды через sudo.
3. Проверьте статус и разблокируйте
☯
Terminal:
⌕
≡
✕
fastboot oem device-info
Device unlocked: true— загрузчик уже разблокирован, переходите к установке.Device unlocked: false— выполните разблокировку:
☯
Terminal:
⌕
≡
✕
fastboot oem unlock
Телефон сотрёт все данные и перезагрузится. Дайте ему один раз загрузиться в Android и снова включите отладку по USB — установщику так будет проще подхватить устройство. После этого ещё раз выполните fastboot oem device-info в режиме fastboot и убедитесь, что статус сменился на true.
Установка Ubuntu Touch через UBports Installer
Дальше всю работу делает установщик: сам скачивает образы, прошивает recovery и систему. От вас — выбрать устройство, канал и вовремя нажимать кнопки на телефоне, когда он попросит.
- Запустите установщик из папки, куда его скачали: ``
./ubports-installer_*.AppImage`Если окно не появилось, а в терминале ошибка про sandbox, запустите с ключом--no-sandbox`. - Подключите телефон, загруженный в Android с включённой отладкой по USB. Установщик определит его как OnePlus One (bacon). Если этого не произошло, нажмите «Select device manually» и найдите OnePlus One в списке.
- На экране выбора ОС оставьте Ubuntu Touch и задайте параметры: - Channel — канал, в названии которого есть
16.04иstable(точное имя зависит от версии установщика). Не выбирайте focal/devel, если нужен рабочий телефон. - Wipe Userdata — включите для чистой установки. - Bootstrap — включите: установщик сам прошьёт recovery через fastboot. - Нажмите Install и подтвердите. Установщик попросит перевести телефон в режим fastboot, если не сможет сделать это сам по adb, — зажмите Громкость вверх + Питание.
- Дальше телефон перезагрузится в recovery, и начнётся копирование образов. Это занимает 10–20 минут. Не отключайте кабель и не трогайте телефон, пока установщик не сообщит об окончании.
- После надписи об успешной установке телефон перезагрузится. Первая загрузка Ubuntu Touch идёт несколько минут — это нормально.
Если установка зависла на шаге «Waiting for device», переподключите кабель в другой USB-порт (лучше USB 2.0 на задней панели) и проверьте adb devices / fastboot devices в отдельном терминале.
Первый запуск и установка пакетов через терминал
При первом включении мастер настройки предложит выбрать язык, Wi-Fi и задать код или пароль для разблокировки. Запомните его: этот же пароль терминал спросит при sudo.
Почему apt «из коробки» не работает
Корневая файловая система Ubuntu Touch смонтирована только для чтения. Так система защищена от поломок и спокойно получает обновления по воздуху. Поэтому в стандартном приложении «Терминал» команда sudo apt install упадёт с ошибкой записи.
Как разрешить установку пакетов
Откройте «Терминал» и перемонтируйте корень на запись:
☯
Terminal:
⌕
≡
✕
sudo mount -o remount,rw /
После этого пакеты ставятся как в обычной Ubuntu:
☯
Terminal:
⌕
≡
✕
sudo apt update sudo apt install mc htop
Когда закончите, верните корень в режим только для чтения:
☯
Terminal:
⌕
≡
✕
sudo mount -o remount,ro /
Режим записи сбрасывается при перезагрузке, так что после каждого рестарта команду remount,rw нужно выполнять заново.
> Про обновления. На поддерживаемых устройствах OTA-обновление перезаписывает корневой раздел, и всё поставленное через apt пропадает. Для bacon это не актуально: ветка 16.04 закончилась на OTA-25, порт заброшен, новых обновлений не будет. Поставленные пакеты останутся, пока вы сами не переустановите систему. Осторожнее только с пакетами, которые заменяют системные библиотеки (libc, Qt, Mir, ядро): после них телефон может не загрузиться.
Доступ по SSH с компьютера
OpenSSH в Ubuntu Touch уже встроен, но по умолчанию сервер пускает только по ключу: вход по паролю отключён. Поэтому первый ключ на телефон удобнее всего передать через adb.
1. Включите режим разработчика на телефоне
«Настройки → О телефоне → Режим разработчика». Переключатель доступен, только если задан код блокировки экрана. После этого с компьютера работает adb shell.
2. Создайте ключ на компьютере (если его ещё нет)
☯
Terminal:
⌕
≡
✕
ssh-keygen -t ed25519
3. Передайте ключ на телефон через adb
☯
Terminal:
⌕
≡
✕
adb push ~/.ssh/id_ed25519.pub /home/phablet/key.pub adb shell
Дальше команды выполняются уже на телефоне:
☯
Terminal:
⌕
≡
✕
mkdir -p ~/.ssh cat ~/key.pub >> ~/.ssh/authorized_keys rm ~/key.pub chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys sudo android-gadget-service enable ssh exit
4. Подключитесь по Wi-Fi
IP телефона смотрите в «Настройки → Wi-Fi → стрелка у сети» или командой ip addr в терминале.
☯
Terminal:
⌕
≡
✕
ssh phablet@192.168.0.24
Пароль не спросят: вход идёт по ключу. Если появилось Permission denied (publickey), проверьте права на ~/.ssh и authorized_keys — при более открытых правах sshd ключ игнорирует.
5. Автозапуск SSH после перезагрузки
После перезагрузки телефона SSH отвечает Connection refused, и приходится снова включать режим разработчика и через adb shell выполнять android-gadget-service enable ssh. Разберёмся, почему так, и сделаем нормальный автозапуск.
Почему SSH не стартует сам. Посмотрите файл переопределения службы:
☯
Terminal:
⌕
≡
✕
cat /etc/init/ssh.override
В нём две строки:
☯
Terminal:
⌕
≡
✕
manual exec /usr/sbin/sshd -D -o PasswordAuthentication=no
manual говорит upstart не запускать службу при загрузке. Команда android-gadget-service enable ssh запускает sshd только до перезагрузки, а manual оставляет на месте.
Почему не работает sed -i. Файл ssh.override (как и папка /etc/ssh) указан в /etc/system-image/writable-paths. Это значит, что при загрузке его подставляют с постоянного раздела поверх системного образа: это отдельная точка монтирования. sed -i пишет изменения во временный файл и переименовывает его, поэтому падает с ошибкой Read-only file system, а после remount,rw — с ошибкой Device or resource busy. Файл нужно перезаписывать на месте, remount,rw для этого не нужен.
Шаг 1. Убираем manual
Через adb shell или пока SSH ещё работает:
☯
Terminal:
⌕
≡
✕
sudo bash sed '/^manual$/d' /etc/init/ssh.override > /tmp/ssh.override cat /tmp/ssh.override > /etc/init/ssh.override cat /etc/init/ssh.override
В файле должна остаться только строка exec /usr/sbin/sshd -D -o PasswordAuthentication=no.
Шаг 2. Добавляем задачу автозапуска
На OnePlus One одного шага 1 не хватило: после перезагрузки status ssh показывал stop/waiting, хотя manual в файле уже не было. Судя по всему, upstart читает настройки служб раньше, чем подставляется файл с постоянного раздела, и видит исходный ssh.override из образа, где manual остался. При этом ручная команда start ssh работает всегда, manual она не блокирует. Поэтому добавляем свою задачу, которая выполнит её при загрузке:
☯
Terminal:
⌕
≡
✕
sudo bash mount -o remount,rw / cat > /etc/init/ssh-autostart.conf << 'EOF' description "Start ssh at boot" start on runlevel [2345] task exec /sbin/start ssh EOF mount -o remount,ro / reboot
Этот файл лежит в самом системном образе, поэтому upstart видит его с самого начала загрузки. sshd слушает все сетевые интерфейсы, так что ждать подключения Wi-Fi не нужно.
Шаг 3. Проверяем
После перезагрузки, не включая режим разработчика, подключитесь с компьютера:
☯
Terminal:
⌕
≡
✕
ssh phablet@192.168.0.24
На телефоне sudo status ssh должен показывать ssh start/running. Режим разработчика и adb теперь нужны только для экстренного доступа.
> Учтите при переустановке. Правка ssh.override, ключи в ~/.ssh и настройки в /etc/ssh лежат на постоянном разделе и переживут переустановку без Wipe Userdata. А ssh-autostart.conf находится в системном образе: после переустановки шаг 2 нужно повторить.
6. Вход по паролю (если очень нужен)
Правка PasswordAuthentication yes в /etc/ssh/sshd_config не работает: во второй строке ssh.override sshd запускается с ключом -o PasswordAuthentication=no, а параметр из строки запуска важнее файла конфигурации. Чтобы включить пароль, уберите этот ключ тем же способом, перезаписью на месте:
☯
Terminal:
⌕
≡
✕
sudo bash sed 's/ -o PasswordAuthentication=no//' /etc/init/ssh.override > /tmp/ssh.override cat /tmp/ssh.override > /etc/init/ssh.override stop ssh; start ssh
Затем убедитесь, что в /etc/ssh/sshd_config стоит PasswordAuthentication yes (без опечаток в названии), и проверьте, что применилось: sshd -T | grep -i passwordauth. Перезапуск службы безопаснее делать через adb shell, чтобы не потерять доступ. |
Вход по ключу надёжнее, поэтому пароль включайте, только если без него не обойтись, и только в домашней сети.
Не хватает места: «You don't have enough free space»
Корень / в Ubuntu Touch — это небольшой системный образ, заполненный почти целиком. Всё свободное место телефона (на 64-гигабайтной модели — десятки гигабайт) лежит в разделе пользователя /home/phablet. Посмотреть расклад:
☯
Terminal:
⌕
≡
✕
df -h / /home
Отсюда правило: мелкие утилиты ставим в корень через apt, крупные программы — в контейнер Libertine в домашней папке.
Мелкие пакеты: очистить кэш и вынести загрузку в /home
Сначала уберите старые скачанные пакеты:
☯
Terminal:
⌕
≡
✕
sudo apt clean sudo apt autoremove
Затем скачивайте архивы не в /var/cache/apt/archives, а в домашнюю папку:
☯
Terminal:
⌕
≡
✕
mkdir -p /home/phablet/apt-archives/partial sudo apt -o Dir::Cache::Archives=/home/phablet/apt-archives install mc htop
Так освобождается место под загрузку, но распакованный пакет всё равно ляжет в корень. Для Firefox (212 МБ после установки) этого не хватит.
Крупные программы: контейнер Libertine
Libertine — это отдельный Ubuntu 16.04 внутри ~/.cache/libertine-container, то есть на большом разделе. Внутри работает обычный apt, а установленные графические программы появляются в меню приложений. Команды выполняйте от пользователя phablet, а не от root:
☯
Terminal:
⌕
≡
✕
libertine-container-manager create -i xenial -n "Xenial" libertine-container-manager install-package -i xenial -p firefox
Создание контейнера занимает 10–20 минут и скачивает несколько сотен мегабайт. Корень трогать не нужно, remount,rw для этого не требуется. То же можно сделать без терминала, в приложении Libertine (в 16.04 оно обычно предустановлено, иначе есть в OpenStore).
Чего Libertine не умеет: запускать системные службы. Демоны вроде nginx или ssh в нём работать не будут, их ставят в корень. Для простого веб-сёрфинга есть и встроенный браузер Morph — он легче Firefox и лучше адаптирован под сенсорный экран.
Если корень уже заполнен (например, после apt upgrade)
Типичная ошибка новичка — выполнить apt update && apt upgrade, как на обычной Ubuntu. Апгрейд докачивает обновления системных пакетов, и корень на 2 ГБ заполняется почти до нуля. Телефон начинает подвисать, SSH отвечает с задержками. На моём OnePlus One после этого в корне оставалось 27 МБ.
Корень — это файл-образ, смонтированный через loop-устройство (/dev/loop0), поэтому увеличить его просто так нельзя. Зато можно вынести на большой раздел служебные данные apt: списки пакетов (/var/lib/apt/lists) и кэш (/var/cache/apt). Вместе они занимают около 200 МБ.
☯
Terminal:
⌕
≡
✕
sudo mount -o remount,rw / sudo apt clean sudo mkdir -p /home/phablet/.apt-root sudo mv /var/lib/apt/lists /home/phablet/.apt-root/lists sudo ln -s /home/phablet/.apt-root/lists /var/lib/apt/lists sudo rm -f /var/cache/apt/*.bin sudo mv /var/cache/apt /home/phablet/.apt-root/cache sudo ln -s /home/phablet/.apt-root/cache /var/cache/apt sudo apt update df -h /
Результат на моём телефоне: свободное место выросло с 27 МБ до 235 МБ, apt работает как раньше. Теперь скачанные пакеты и списки репозиториев хранятся в /home, а в корень попадают только сами установленные файлы.
На что обратить внимание:
- Не трогайте
/var/lib/lxc/android(около 120 МБ). Это Android-контейнер, через который система работает с модемом, графикой, камерой и датчиками. Без него телефон не загрузится. - Не запускайте
apt upgrade. Ставьте только нужные пакеты черезapt install: обновления из репозиториев Ubuntu могут конфликтовать с пакетами UBports. - Предупреждение
No sandbox user '_apt'безвредно. В Ubuntu Touch нет служебного пользователя_apt, и apt просто качает пакеты от root. - Если система после апгрейда работает со сбоями, запустите UBports Installer ещё раз с тем же каналом и выключенной опцией Wipe Userdata. Перезапишется только системный образ, а домашняя папка, контейнеры Libertine и SSH-ключи останутся.
Libertine: как в Ubuntu Touch задумано ставить обычные программы
Libertine — это контейнер с отдельной полноценной Ubuntu внутри вашей домашней папки. В нём работает обычный apt, туда ставятся привычные deb-пакеты для настольного Linux, и их окна открываются прямо на экране телефона. Основная система при этом не меняется.
Почему корень закрыт для записи
Разработчики Ubuntu Touch сознательно сделали систему неизменяемой. Корень — это готовый образ, который при OTA-обновлении заменяется целиком. Так обновление не может сломаться посередине, а пользователь не испортит систему случайным пакетом. Программы при этом ставятся «сбоку», в трёх местах:
| Способ | Что ставить | Где хранится | Переживает OTA |
| OpenStore (click-пакеты) | Приложения, сделанные под Ubuntu Touch и сенсорный экран | /home/phablet, в песочнице AppArmor | Да |
| Libertine | Настольные программы из репозиториев Ubuntu 16.04 | ~/.cache/libertine-container/ | Да |
apt в корень после remount,rw | Системные утилиты и службы: ssh, nginx, cron-задачи, драйверы | Системный образ / | Нет, затирается (для bacon обновлений уже нет) |
То есть вы поняли верно: основной путь для обычных программ — Libertine, а запись в корень — это обходной путь для того, что должно работать на уровне системы.
Как устроен контейнер
- Внутри лежит отдельная Ubuntu 16.04 (xenial) для armhf со своим
/usr,/etcи apt. - Он хранится в
~/.cache/libertine-container/<имя>/rootfs, то есть на большом разделе пользователя. - Папки «Документы», «Загрузки», «Музыка», «Изображения» и «Видео» общие с телефоном: файл, скачанный в Firefox из контейнера, виден в файловом менеджере.
- Графические программы запускаются через X-сервер поверх оболочки телефона и появляются в общем списке приложений.
- Контейнеров может быть несколько, например отдельный для экспериментов.
Работа через приложение Libertine на телефоне
- Откройте приложение Libertine и нажмите +, чтобы создать контейнер. Выберите Ubuntu Xenial и задайте имя.
- Дождитесь окончания создания: 10–20 минут, нужен Wi-Fi и около 500 МБ свободного места в
/home. - Откройте контейнер, нажмите + и выберите Enter package name (ввести имя пакета) или поиск по репозиторию.
- Введите, например,
firefoxи подтвердите. Прогресс установки виден на экране контейнера. - Готовая программа появится в списке приложений телефона. Если её не видно, потяните список вниз или перезагрузите телефон.
- Удалить пакет можно там же: долгое нажатие на пакет в списке контейнера.
Работа через терминал
Все команды — от пользователя phablet, без sudo:
☯
Terminal:
⌕
≡
✕
# список контейнеров libertine-container-manager list # создать контейнер libertine-container-manager create -i xenial -n "Xenial" # найти, поставить, удалить пакет libertine-container-manager search-cache -i xenial -n firefox libertine-container-manager install-package -i xenial -p firefox libertine-container-manager remove-package -i xenial -p firefox # обновить все пакеты в контейнере libertine-container-manager update -i xenial # выполнить любую команду внутри контейнера libertine-container-manager exec -i xenial -c "apt-get install -y language-pack-ru" # запустить программу из терминала libertine-launch -i xenial firefox # удалить контейнер целиком libertine-container-manager destroy -i xenial
Первым делом после создания стоит поставить русские шрифты и локаль, иначе часть интерфейсов будет на английском или с квадратиками вместо букв: language-pack-ru, fonts-dejavu, fonts-noto.
Что можно поставить в Libertine
- Браузеры и почта: Firefox, Thunderbird.
- Офис: LibreOffice (Writer, Calc), просмотрщики PDF.
- Графика: GIMP, Inkscape.
- Разработка: Geany, Mousepad, Git, компиляторы, Python с библиотеками.
- Медиа: VLC, Audacity.
- Консольные утилиты — через
exec, если не хочется трогать корень.
Чего Libertine не умеет
- Системные службы. sshd, nginx, cron и другие демоны внутри контейнера не стартуют как службы. Их ставят в корень.
- Docker и всё, что требует ядра. Ограничение то же, что у всей системы: ядро 3.4.
- Удобство на сенсорном экране. Настольные программы рассчитаны на мышь, и экранная клавиатура в них работает не всегда. С Bluetooth-клавиатурой и мышью они заметно удобнее.
- Быстрая работа тяжёлых программ. LibreOffice и GIMP запускаются долго, на 2–3 ГБ памяти это нормально.
- Свежие версии. Репозитории xenial заморожены, поэтому версии программ там старые.
Что можно сделать с OnePlus One на Ubuntu Touch
По сути, это 4-ядерный ARM-компьютер с 3 ГБ памяти, экраном, батареей-ИБП, модемом, GPS и камерой, на котором стоит Ubuntu 16.04 с apt и SSH. Главное ограничение — ядро 3.4 и 32-битный процессор: Docker, Waydroid и современные контейнеры здесь не запустятся.
| Сценарий | Как сделать | Ограничения |
| Второй телефон без Google | Звонки, SMS, мобильный интернет, GPS работают из коробки | Нет VoLTE и NFC, мало приложений в OpenStore |
| Мини-сервер для скриптов | SSH по ключу, Python 3 в корне, свои скрипты в /home/phablet | Только armv7, без Docker; держать на зарядке |
| Telegram-бот, парсер, мониторинг сайтов | Python-скрипт + автозапуск через upstart-задачу в ~/.config/upstart/ | Wi-Fi может засыпать при выключенном экране — проверяйте |
| Веб-сервер в домашней сети | apt install lighttpd или python3 -m http.server | Мало места в корне, тяжёлые стеки не встанут |
| Файловое хранилище и синхронизация | SFTP и rsync поверх SSH; Syncthing — готовый бинарник armv7 в /home | Скорость Wi-Fi 802.11ac первого поколения |
| SMS-шлюз | Отправка и чтение SMS скриптом через oFono по D-Bus | Нужно разобраться с API oFono |
| GPS-трекер или логгер | Чтение координат из location-service, запись в файл, отправка на сервер | Первый фикс долгий: нет A-GPS |
| Карманный терминал администратора | ssh, nmap, mtr, iperf3, tcpdump из apt | Мелкие пакеты — в корень, см. раздел о месте |
| Панель умного дома | Браузер Morph в полноэкранном режиме с дашбордом Home Assistant | Экран постоянно включён — следите за нагревом |
| Мини-ПК с клавиатурой | Bluetooth-клавиатура и мышь + беспроводной вывод на монитор (Miracast) + десктоп-программы из Libertine | Производительность уровня 2014 года |
| Медиаплеер и музыкальный центр | Плеер, MPD или Bluetooth-колонка | — |
| Учёба и разработка под Ubuntu Touch | Linux в кармане; сборка приложений через Clickable на ПК | Платформа 16.04 устарела |
| Android-приложения | Anbox (устаревший, но для bacon на 16.04 поддержан) | Работает медленно и не со всеми приложениями |
Совет для режима «сервер». Литий-ионный аккумулятор при постоянной зарядке со временем вздувается. Если телефон будет круглосуточно на кабеле, держите его на открытом месте, без чехла, и периодически осматривайте корпус.
Если нужен именно Docker. На этом железе есть другой путь — postmarketOS на основном ядре Linux, где контейнеры работают. Ubuntu Touch для этого не подходит из-за старого ядра.
Что работает, частые проблемы и итог
На ветке 16.04 OTA-25, по данным страницы устройства, работают звонки, SMS и MMS, мобильные данные, Wi-Fi, Bluetooth, GPS, обе камеры, вспышка, датчики, вибрация, MTP и ADB. Не работают NFC и VoLTE, точка доступа включается нестабильно. Waydroid на bacon не запустится из-за старого ядра. Порт больше не развивается, так что исправлений ждать не стоит.
| Проблема | Что сделать |
fastboot devices пишет no permissions | Перезайти в систему после usermod -aG plugdev, проверить пакет android-sdk-platform-tools-common, в крайнем случае — sudo fastboot … |
| AppImage не запускается | Установить libfuse2, проверить chmod +x, попробовать ключ --no-sandbox |
| Установщик не видит телефон | Другой кабель и порт USB 2.0, подтвердить запрос отладки на экране телефона |
| Установка зависла на «Waiting for device» | Вручную перевести телефон в fastboot: Громкость вверх(и или вниз) + Питание |
apt install ругается на read-only | Выполнить sudo mount -o remount,rw / (сбрасывается после перезагрузки) |
В итоге за полчаса старый OnePlus One превращается в рабочий Linux-смартфон с настоящим терминалом и apt. Если что-то пошло не так, помогут форум UBports по OnePlus One и Telegram-чат помощи с установкой.
Источники
- OnePlus One — 16.04 xenial, devices.ubuntu-touch.io
- OnePlus One — 20.04 focal, devices.ubuntu-touch.io
- UBports Installer, AppImage
p.s.
Почему devel не поможет. Тут сразу два ограничения:
- Процессор 32-битный на уровне железа. В Snapdragon 801 стоят ядра Krait 400 с архитектурой ARMv7. Это свойство чипа, программно его не изменить. На странице устройства так и указано: архитектура arm32, причём и для 16.04, и для 20.04.
- Ядро то же самое, старое. Канал devel — это ветка 20.04 focal на Halium 9 с ядром 3.4.113. Docker нужно ядро новее, с нормальными cgroups и namespaces. К тому же на focal у bacon не работает камера, а звонки не проверены, то есть вы ещё и потеряете в функциях.
Что с Nura. Вы правильно связали: на своей конференции 27 сентября команда объявила, что postmarketOS теперь называется Nura, а сайт переехал на nura.eco. В некоторых частях системы пока ещё встречается старое название, его постепенно заменяют. Пакеты для bacon по-прежнему собираются под armv7.
Ключевое отличие от Ubuntu Touch — возможность запустить телефон на основном (mainline) ядре Linux. В статье на Хабре, которую вы нашли, прямо советуют выбирать mainline-ядро, если нужны современные возможности ядра — контейнеризация и cgroups. С таким ядром Docker работает и на 32-битном ARM. Система будет так же 32-битной, но для Docker это не проблема.
Оговорки, которые стоит учесть заранее:
- Образы только под
linux/arm/v7. Многие популярные образы (nginx, alpine, postgres, redis) такую сборку имеют, но часть проектов её уже бросила. Перед установкой проверяйте нужные образы на Docker Hub, вкладка с архитектурами. - 2–3 ГБ памяти. Нескольких лёгких контейнеров хватит, тяжёлый стек — нет.
- На mainline-ядре часть железа может не работать (модем, камера, звук). Для сервера, который работает по Wi-Fi или через USB-сеть, это обычно неважно. Актуальное состояние смотрите на странице устройства в вики Nura перед установкой.
- Ubuntu Touch при этом сотрётся полностью, совместить две системы не получится.
Sources:
- OnePlus One — 20.04 focal, devices.ubuntu-touch.io
- Notebookcheck: postmarketOS is now Nura
- Habr: PostmarketOS на OnePlus One
-
Создано 18.10.2026 15:40:00
-
Roman Sakhno

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.