Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5)

в 21:10, , рубрики: linux, mobile, open source, ROM, sailfish, sailfishos, tutorial, Разработка под Linux

SailfishOS on nexus5 Moto g2

В этой статье я расскажу, как установить Sailfish OS на свой смартфон и все тонкости этого процесса.

У меня был самый первый телефон от Jolla и он мне вполне нравился. Но время его не пощадило: у него сломался слот СИМ-карты и он превратился в оффлайн-смартфон. Какое-то время я пользовался Андроидом, но хочется возвратиться обратно и я начал смотреть в сторону неофицильных прошивок. Первый телефон Jolla морально устарел на сегодня, у него отвратительная камера, железо уже неактуальное и экран с небольшим разрешением. У меня завалялся телефон Moto G 2, на который я попробовал установить SFOS, но она была не совсем готова (камера не работала, Bluetooth работал частично, нету проигрывания видео и многие другие недочёты) и её польский автор как-то не торопился её допиливать. Поэтому я посидел несколько недель на eBay и нашёл для себя б/у телефон Nexus 5 для экспериментов. Сегодня я постараюсь вам описать все подводные камни процесса установки SailfishOS на Андроид-смартфон.

В этой статье:

  1. Немного о портах
  2. Разблокируем загрузчик
  3. Ставим свой загрузчик MultiROM
  4. Ставим CyanogenMod (СМ) и SailfishOS (SFOS)
  5. Обновляемся до SFOS 2 (опционально)
  6. Как ставить приложения?
  7. ТОП-10 программ для новичка

Немного о портах

Итак, неофициальные прошивки, портированные на разные устройства энтузиастами (далее "порт") существуют для разных моделей телефонов. Но чем они отличаются от официальной? Во-первых, вы должны понимать. что они пишутся обычными людьми, такими как мы с вами. А это значит, что скорее всего что-то может не работать, что-то может быть недоступно, что-то может поломаться с приходом обновлений. Также вся поддержка зависит целиком от авторов прошивки и сама Jolla к этому отношения, по большому счёту, не имеет. Во-вторых, вечная проблема с железом. Порты ставятся поверх CyanogenMod, дабы не писать драйвера с нуля, но всё равно не всё работает корректно. Так же сама СM потребляет немало заряда батареи: если первая Йолла жила у меня четыре дня от одной зарядки, Нексус уже тянет максимум полтора-два.

Итак, с чего нужно начать? Для начала, поглядите на матрицу готовых портов по ссылке:

wiki.merproject.org/wiki/Adaptations/libhybris

Там видно, для каких телефонов уже написаны свои порты, какой их статус и какие версии доступны. Благодаря таблице активности я решил взять себе для экспериментов именно Nexus 5, потому что для него прошивка одна из самых стабильных. Обязательно просмотрите список, что уже сделано в порте для вашего смартфона, а какой функционал ещё не работает. Инструкции по установке обычно одинаковые, но часто есть какие-то дополнительные шаги, специфичные для конкретной версии смартфона. Вот например инструкции для нексуса.

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

Ну, если вы морально готовы, тогда можно начинать. Проверьте, что у вас на компе стоит Android SDK (нам нужны будут утилиты adb и fastboot).

Разблокируем загрузчик

Я сначала пробовал использовать родной загрузчик для МотоG2, но это оказалось плохой идеей. Есть хороший проверенный временем MultiROM, который, к тому же, позволяет устанавливать несколько операционок, если есть желание. Для того, чтобы его установить, нужно сначала разблокировать родной загрузчик, поставляемый со смартфоном. Подключаем свой (пока ещё Андроид) телефон к компу, входим в Developer Mode, разрешаем дебаг по USB и пишем в коммандной строке:

   $ adb reboot bootloader

Когда телефон загрузится в режим fastboot mode, нужно для начала удостовериться, что ваш компьютер всё ещё видит подключённый телефон:

   $ adb devices

и, собственно, разблокируем загрузчик:

   $ sudo fastboot oem unlock

Сам девайс покажет предупреждающее сообщение, с которым нужно согласиться (но помните, что вы потеряете гарантию!).

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 2

Ставим свой загрузчик MultiROM

Сначала идём на сайт twrp.me и качаем последнюю версию загрузчика для вашего телефона (например, для Нексуса вот тут). Потом из командной строки пишем:

    $ sudo fastboot flash recovery ~/Downloads/twrp-3.0.2-0-hammerhead.img 
    target reported max download size of 1073741824 bytes
    sending 'recovery' (14524 KB)...
    OKAY [  0.665s]
    writing 'recovery'...
    OKAY [  1.129s]
    finished. total time: 1.794s

Ставим CyanogenMod (СМ) и SFOS

Перед тем, как начать установку, нужно скачать образы операционок. Качаем снапшот СМ11 (важно именно 11, так как порт написан под эту версию). Для Нексуса я брал вот этот образ. Ну и, конечно же, качаем сам порт для вашего телефона. Ссылка обычно лежит на Вики или на форуме. Для Нексуса это такой образ. Закидываем оба файла на телефон.

    $ adb push ~/Downloads/cm-11-20141008-SNAPSHOT-M11-hammerhead.zip /sdcard/
    6565 KB/s (373041464 bytes in 55.489s)
    $ adb push ~/Downloads/sailfishos-hammerhead-release-1.1.9.28-beta0-201510022255.zip /sdcard/
    6555 KB/s (348973612 bytes in 51.983s)
Небольшая ремарка для Nexus5

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

Теперь можно загрузиться в Recovery Mode, чтобы войти в загрузчик. Нам нужно сделать тут три вещи: почистить телефон, установить СМ, установить SFOS. Выключаем телефон, затем с зажатыми клавишами громкости, включаем его и входим в меню загрузки.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 3

Выбираем Recovery Mode и заходим в загрузчик MultiROM.

Далее идём в Wipe и стираем всё, кроме Internal Storage.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 4

Потом заходим в Install, находим СМ и устанавливаем его. (к сожалению, на фотографии у меня неправильный образ СМ13, а нужно СМ11)

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 5

ну и, наконец, таким же образом устанавливаем SailfishOS.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 6

По окончании перезагружаем телефон и после этого он уже должен загрузиться совершенно другим смартфоном. Самая первая загрузка системы может занять довольно продолжительное время, так что не беспокойтесь, это нормально. У меня это заняло около пяти минут.

Обновляем версию операционки до 2.0

Этот шаг нужен только для Нексуса, потому что его порт основан на старой версии SailfishOS, но и для других телефонов это может быть полезным подходом. Для этой процедуры нам нужно настроить обновления «по воздуху». Для этого добрые люди написали небольшой скрипт, который нам нужно запустить.

Подключаемся к телефону по SSH.

Поскольку SailfishOS — это прежде всего линукс, то и консоль у нас доступна изначально. А так же и SSH-сервер, к которому нам можно подключиться. Консоль можно открыть на самом смартфоне, она доступна для вас по умолчанию, но тыкать пальцем в экран телефона не совсем удобно. Этот вариант скорее для экстренных ситуаций, когда нет лаптопа под рукой.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 7

Второй вариант — подлкючиться к телефону с компа через SSH, что намного удобнее. Это очень выручает в повседневной работе, так как мы можем очень много операций сделать с компьютера, используя нормальную человеческую клавиатуру и мышь.
Итак, для начала нам нужно подключиться к WiFi. Затем открыть Settings > Development mode, где можно поставить свой пароль для root, ну и увидеть уже готовый IP-адрес, к которому можно подключиться внутри вашей сетки:

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 8

Заходим под пользователем nemo по указанному IP адресу.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 9

Далее, где-нибудь на телефоне создаём шелл-скрипт с таким содержанием.

готовый скрипт update.sh

RELEASE=2.0.1.11

devel-su sed -i -e 's#^adaptation=.*$#adaptation=http://repo.merproject.org/obs/nemo:/testing:/hw:/lge:/hammerhead/sailfish_latest_armv7hl/#' 
/usr/share/ssu/repos.ini

ssu dr adaptation0

ssu release $RELEASE
ssu dr extra
ssu dr mw
ssu ar mw http://repo.merproject.org/obs/home:/RealJohnGalt:/testing:/common/sailfish_latest_armv7hl/
ssu er mw
ssu ar dhd http://repo.merproject.org/obs/nemo:/testing:/hw:/lge:/hammerhead/sailfish_latest_armv7hl/
ssu lr
# ^ double-triple check that no -two- enabled repos point to the same URL

# You may have many of OpenRepos enabled. It's recommended to disable them, even
# though version --dup will do its best-effort to isolate repositories:
ssu lr | grep openrepos

devel-su zypper clean -a
devel-su zypper ref -f

version --dup
# if above fails, try again
version --dup

sync
reboot

Даём ему права и запускаем. Ждём. Перезагружаемся. Наслаждаемся последней версией SailfishOS 2.0.

Как ставить приложения?

Ок, теперь у нас в руках голый телефон и руки чешутся поставить на него кучу софта. Давайте научимся это делать. У нас есть четыре пути.

1. Jolla Store

Официальный магазин. Тут даже особо описывать нечего: заходите, жмёте «установить», всё. Одно могу добавить, что Jolla Store может отсутствовать на некоторых портах.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 10

2) Warehouse

Как и на любом дистрибутиве Линукса, программы можно устанавливать из разных источников (репозиториев). Нужно просто добавить желаемый репозиторий и все пакеты из него будут доступны для установки. Поэтому существует самый главный аналог официальному магазину приложений — сайт openrepos.net. У него есть небольшое приложение для телефона, которое называется Warehouse.

image

Выглядит он весьма простенько:
Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 12

Самый простой способ установить его — зайти с браузера телефона на этот сайт, скачать rpm пакет и установить его, тапнув на скаченном файле (все закачки можно посмотреть в Settings > Transfers; на голой системе скорее всего вам нужно будет разрешить установку программ из сомнительных источников, эту функцию можно включить в Settings > Untrusted Software).

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 13

Если вы посмотрите на любое приложение из этого магазина, то сначала вы найдёте кнопку «Enable repository», и добавив репозиторий автора к себе на телефон, для вас будет доступна кнопка «Install». Так можно установить любое приложение из openrepos.net

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 14

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 15

3) RPM

Как вы уже заметили в предыдущем шаге, программу или пакет можно установить либо из браузера (разрешив установку из ненадёжных источников, как было описано выше), либо прямо из консоли. Предыдущий шаг установки Warehouse через консоль может выглядеть так:

curl -o warehouse.rpm https://openrepos.net/sites/default/files/packages/1/harbour-warehouse-0.3-22.armv7hl.rpm
devel-su rpm -i warehouse.rpm

4) pkcon, zypper

Ну и давайте подробнее остановимся на «ручном» управлении вашими репозиториями. Для того, чтобы управлять ими, вам доступна команда ssu.

Список установленных репозиториев ssu lr:

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 16

Таким же образом, временно деактивировать какой-то репозиторий:

   ssu dr home

Добавить новый репозиторий:

   ssu addrepo ...

Устанавливать программы можно с помощью pkcon или zypper. Давайте для примера установим, скажем, gPodder (приложение для подкастов).

Сначала, добавим репозиторий sailfish.openrepos.net/thp/personal-main.repo (найденный на странице автора):

    [nemo@Nexus5 ~]$ ssu addrepo openrepos-thp https://sailfish.openrepos.net/thp/personal/main
    [nemo@Nexus5 ~]$ devel-su pkcon refresh
    Password: 
          ....                         
    Refreshing software list

Потом найдём название пакета.

[nemo@Nexus5 ~]$ zypper search gpodder
Loading repository data...
Reading installed packages...

S | Name                         | Summary                      | Type
--+------------------------------+------------------------------+--------
  | harbour-org.gpodder.sailfish | Media and podcast aggregator | package

Ну и, собственно, установим саму программу, используя zypper:

    [nemo@Nexus5 ~]$ devel-su zypper install harbour-org.gpodder.sailfish
    Password: 
    Loading repository data...
    Reading installed packages...
    Resolving package dependencies...

    The following NEW packages are going to be installed:
      harbour-org.gpodder.sailfish libpython3_4m1_0 libsailfishapp-launcher pyotherside-qml-plugin-python3-qt5 python3-base 

    5 new packages to install.
    Overall download size: 8.6 MiB. After the operation, additional 34.0 MiB will be used.
    Continue? [y/n/?] (y): y

    ....длинный список установленных пакетов....

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

    [nemo@Nexus5 ~]$ devel-su pkcon install python
    Password: 

    ....                                                                                                                                                                                                         

    Installing packages                                                                                                                                 [=========================================================================]        
    The following packages have to be installed:
     gdbm-1.8.3-1.1.4.armv7hl   GNU Database Routines
     python-2.7.9-1.4.1.armv7hl An interpreted, interactive, object-oriented programming language
     python-libs-2.7.9-1.4.1.armv7hl    Runtime libraries for Python
    Proceed with changes? [N/y] y

    ....

Ещё в некоторых портах по умолчанию не установлена подстановка слов в клавиатуре. Будет не лишним её добавить.

    [nemo@Nexus5 ~]$ devel-su pkcon install jolla-xt9 jolla-xt9-cp

Топ-10 программ для новичков

Подразумевается, что данная статья рассчитана на тех, кто не имеет опыта работы с SFOS, поэтому я просто перечислю самые интересные (исключительно на мой личный взгляд) программы, которые нужно уставить в первую очередь.

image
1) Lighthouse.
Очень удобный просмотрщик текущих процессов, он также показывает нагрузку на ЦПУ в реальном времени, использование памяти и других ресурсов телефона. Помогает, когда нужно прибить пару процессов или просто посмотреть, какие процессы у тебя бегают на фоне.

image
2) Meecast.
Программа просто показыват погоду. Дело в том, что эта программа (заслуженно!) была в топе установок долгое время в официальном магазине приложений Jolla. Помимо неё в топе только программы от самой Йоллы, которые идут с самим телефоном. Она умеет лишь показывать погоду, но делает это очень красиво. И, с точки зрения поддержки, эта программа — долгожитель. Авторы присылают разные обновления до сих пор.

image
3) gPodder
Аппка для подкастов. Программа была портирована с легендарной Maemo. Неидеальна, но лучшее, что есть на данный момент.

image
4) Sailogram
Клиент для Телеграмма. Вполне себе отличное приложение, сам использую каждый день. Поддерживается большинство нативного функционала Телеграмма.

image
5) OwnKeepass
Клиент для менеджера паролей KeePassX. Очень удобно держать саму базу паролей где-то в облаке, ключик от неё — в оффлайне, а пароль в голове. Поддерживает обе версии KeepassX, удобна в использовании.

image
6) FileCase
Файловый менеждер. Поддерживает так же работу с облачными хранилищами, типа Dropbox. Незаменимый помощник в любом телефоне.

image
7) Situations
Программа перешла к нам от Meego. Автоматический переключатель режимов в зависимости от каких-то условий (время, месторасположениие, доступные сети), или, как автор называет это, «ситуаций». Скажем, ночью вы хотите активировать тихий профиль (отключать сеть и звук) с 24-00 до 7-00. Когда доступна ВайФай сетка с названием Work, то вы — на работе и нужно активировать профиль Work (подключиться к сетке и сделать звук потише). Если заряд батареи остался ниже 10%, то активируется режим энергосбережения. Ну и так далее.

image
8) Tweetian
Легендарный клиент для твиттера, который перешёл к нам из мира Мииго и Симбиана.

9) Карты
С картами в SFOS не всё так сказочно и прекрасно, как на Андроиде. Все карты основаны на Open Street Maps или HERE. Вот, скажем, главная карта от Йоллы, которая весьма незамысловато называется Maps, основана на HERE и устанавливается на всех Jolla телефонах.

Устанавливаем Sailfish OS на свой смартфон (на примере Nexus 5) - 25
Установить её самостоятельно можно командой:

devel-su pkcon install sailfish-maps

Но есть и другие варианты от сообщества. Самый известный из них это — Poor Maps.

image
Poor maps

Она основана также на Open Street Maps и ей можно более-менее пользоваться.

image
10) Codereader
Простой считыватель бар-кодов.

Ну и да, можно устанавливать Андроид приложения, при острой необходимости. Говорят, что примерно 90% всех приложений работают без каких-либо проблем.

На этом всё. Спасибо, что дочитали до конца. И, как всегда, удачного вам плавания!

Автор: w32blaster

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js