В этой статье я расскажу, как установить Sailfish OS на свой смартфон и все тонкости этого процесса.
У меня был самый первый телефон от Jolla и он мне вполне нравился. Но время его не пощадило: у него сломался слот СИМ-карты и он превратился в оффлайн-смартфон. Какое-то время я пользовался Андроидом, но хочется возвратиться обратно и я начал смотреть в сторону неофицильных прошивок. Первый телефон Jolla морально устарел на сегодня, у него отвратительная камера, железо уже неактуальное и экран с небольшим разрешением. У меня завалялся телефон Moto G 2, на который я попробовал установить SFOS, но она была не совсем готова (камера не работала, Bluetooth работал частично, нету проигрывания видео и многие другие недочёты) и её польский автор как-то не торопился её допиливать. Поэтому я посидел несколько недель на eBay и нашёл для себя б/у телефон Nexus 5 для экспериментов. Сегодня я постараюсь вам описать все подводные камни процесса установки SailfishOS на Андроид-смартфон.
В этой статье:
- Немного о портах
- Разблокируем загрузчик
- Ставим свой загрузчик MultiROM
- Ставим CyanogenMod (СМ) и SailfishOS (SFOS)
- Обновляемся до SFOS 2 (опционально)
- Как ставить приложения?
- ТОП-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
Сам девайс покажет предупреждающее сообщение, с которым нужно согласиться (но помните, что вы потеряете гарантию!).
Ставим свой загрузчик 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. Выключаем телефон, затем с зажатыми клавишами громкости, включаем его и входим в меню загрузки.
Выбираем Recovery Mode и заходим в загрузчик MultiROM.
Далее идём в Wipe и стираем всё, кроме Internal Storage.
Потом заходим в Install, находим СМ и устанавливаем его. (к сожалению, на фотографии у меня неправильный образ СМ13, а нужно СМ11)
ну и, наконец, таким же образом устанавливаем SailfishOS.
По окончании перезагружаем телефон и после этого он уже должен загрузиться совершенно другим смартфоном. Самая первая загрузка системы может занять довольно продолжительное время, так что не беспокойтесь, это нормально. У меня это заняло около пяти минут.
Обновляем версию операционки до 2.0
Этот шаг нужен только для Нексуса, потому что его порт основан на старой версии SailfishOS, но и для других телефонов это может быть полезным подходом. Для этой процедуры нам нужно настроить обновления «по воздуху». Для этого добрые люди написали небольшой скрипт, который нам нужно запустить.
Подключаемся к телефону по SSH
Поскольку SailfishOS — это прежде всего линукс, то и консоль у нас доступна изначально. А так же и SSH-сервер, к которому нам можно подключиться. Консоль можно открыть на самом смартфоне, она доступна для вас по умолчанию, но тыкать пальцем в экран телефона не совсем удобно. Этот вариант скорее для экстренных ситуаций, когда нет лаптопа под рукой.
Второй вариант — подлкючиться к телефону с компа через SSH, что намного удобнее. Это очень выручает в повседневной работе, так как мы можем очень много операций сделать с компьютера, используя нормальную человеческую клавиатуру и мышь.
Итак, для начала нам нужно подключиться к WiFi. Затем открыть Settings > Development mode, где можно поставить свой пароль для root, ну и увидеть уже готовый IP-адрес, к которому можно подключиться внутри вашей сетки:
Заходим под пользователем nemo по указанному IP адресу.
Далее, где-нибудь на телефоне создаём шелл-скрипт с таким содержанием.
готовый скрипт 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 может отсутствовать на некоторых портах.
2) Warehouse
Как и на любом дистрибутиве Линукса, программы можно устанавливать из разных источников (репозиториев). Нужно просто добавить желаемый репозиторий и все пакеты из него будут доступны для установки. Поэтому существует самый главный аналог официальному магазину приложений — сайт openrepos.net. У него есть небольшое приложение для телефона, которое называется Warehouse.
Выглядит он весьма простенько:
Самый простой способ установить его — зайти с браузера телефона на этот сайт, скачать rpm пакет и установить его, тапнув на скаченном файле (все закачки можно посмотреть в Settings > Transfers; на голой системе скорее всего вам нужно будет разрешить установку программ из сомнительных источников, эту функцию можно включить в Settings > Untrusted Software).
Если вы посмотрите на любое приложение из этого магазина, то сначала вы найдёте кнопку «Enable repository», и добавив репозиторий автора к себе на телефон, для вас будет доступна кнопка «Install». Так можно установить любое приложение из openrepos.net
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:
Таким же образом, временно деактивировать какой-то репозиторий:
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, поэтому я просто перечислю самые интересные (исключительно на мой личный взгляд) программы, которые нужно уставить в первую очередь.
1) Lighthouse.
Очень удобный просмотрщик текущих процессов, он также показывает нагрузку на ЦПУ в реальном времени, использование памяти и других ресурсов телефона. Помогает, когда нужно прибить пару процессов или просто посмотреть, какие процессы у тебя бегают на фоне.
2) Meecast.
Программа просто показыват погоду. Дело в том, что эта программа (заслуженно!) была в топе установок долгое время в официальном магазине приложений Jolla. Помимо неё в топе только программы от самой Йоллы, которые идут с самим телефоном. Она умеет лишь показывать погоду, но делает это очень красиво. И, с точки зрения поддержки, эта программа — долгожитель. Авторы присылают разные обновления до сих пор.
3) gPodder
Аппка для подкастов. Программа была портирована с легендарной Maemo. Неидеальна, но лучшее, что есть на данный момент.
4) Sailogram
Клиент для Телеграмма. Вполне себе отличное приложение, сам использую каждый день. Поддерживается большинство нативного функционала Телеграмма.
5) OwnKeepass
Клиент для менеджера паролей KeePassX. Очень удобно держать саму базу паролей где-то в облаке, ключик от неё — в оффлайне, а пароль в голове. Поддерживает обе версии KeepassX, удобна в использовании.
6) FileCase
Файловый менеждер. Поддерживает так же работу с облачными хранилищами, типа Dropbox. Незаменимый помощник в любом телефоне.
7) Situations
Программа перешла к нам от Meego. Автоматический переключатель режимов в зависимости от каких-то условий (время, месторасположениие, доступные сети), или, как автор называет это, «ситуаций». Скажем, ночью вы хотите активировать тихий профиль (отключать сеть и звук) с 24-00 до 7-00. Когда доступна ВайФай сетка с названием Work, то вы — на работе и нужно активировать профиль Work (подключиться к сетке и сделать звук потише). Если заряд батареи остался ниже 10%, то активируется режим энергосбережения. Ну и так далее.
8) Tweetian
Легендарный клиент для твиттера, который перешёл к нам из мира Мииго и Симбиана.
9) Карты
С картами в SFOS не всё так сказочно и прекрасно, как на Андроиде. Все карты основаны на Open Street Maps или HERE. Вот, скажем, главная карта от Йоллы, которая весьма незамысловато называется Maps, основана на HERE и устанавливается на всех Jolla телефонах.
Установить её самостоятельно можно командой:
devel-su pkcon install sailfish-maps
Но есть и другие варианты от сообщества. Самый известный из них это — Poor Maps.
Poor maps
Она основана также на Open Street Maps и ей можно более-менее пользоваться.
10) Codereader
Простой считыватель бар-кодов.
На этом всё. Спасибо, что дочитали до конца. И, как всегда, удачного вам плавания!