В этой статье я расскажу, как установить 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)
Теперь можно загрузиться в 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 адресу.
Далее, где-нибудь на телефоне создаём шелл-скрипт с таким содержанием.
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
Простой считыватель бар-кодов.
На этом всё. Спасибо, что дочитали до конца. И, как всегда, удачного вам плавания!
Комментарии (33)
Taumer
08.08.2016 10:44>Ну и да, можно устанавливать Андроид приложения, при острой необходимости. Говорят, что примерно 90% всех приложений работают без каких-либо проблем.
Поддержка Андроид-приложений есть только в смартфонах Jolla, разве нет?
Для всех прочих устройств используется костыль в виде Sfdroid
rughost
08.08.2016 10:44Ох на восьмерке веселуха эти adb драйвера ставить. Самая сложная часть во всех этих прошивках.
Кстати есть еще неплохая утилита mtk droid tools, если рекавери поменяли, то можно получить рут права через нее. Но опять же, лучше палить 4pda под конкретную модель телефона, у каждого есть нюансы.for611bing
08.08.2016 15:38Самое главное, запустить режим без проверки подписи драйверов, после этого адб драйвера и usb-драйвера ок ставятся. Это актуально для всех ОС семейства windows от восьмерки и до десятки.
kirikch
08.08.2016 11:32Так же сама СM потребляет немало заряда батареи: если первая Йолла жила у меня четыре дня от одной зарядки, Нексус уже тянет максимум полтора-два.
Вряд ли это из-за CM. В прошивках Sailfish OS нет наиболее прожорливых компонентов Android — его служб и приложений.
Скорее, дело в аккумуляторе бэушного нексуса.w32blaster
08.08.2016 11:37На форуме многие жаловались, что именно CM11 сливает батарею. Автор выложил снапшот CM12.1, указав, что с таким образом улучшилась работа с Bluetooth, запись видео и немного улучшилась работа с батареей. Кстати, я поменял батарею на Нексусе сразу же, благо она стоит недорого :)
kirikch
08.08.2016 11:56Принято. Но это, на сколько понял, не общая проблема использования libhybris, а баг конкретной адаптации.
3ap
08.08.2016 22:37А расскажите, можно ли выпилить всё из CM так, чтобы там осталось только необходимое? Без запуска большинства служб и приложений Android'а, с отключенной ненужной периферией (далеко не всем нужен тот же Bluetooth). По моему опыту ту же сеть можно настраивать без Android'овского network manager'а.
Как я понимаю, там ведь просто chroot в Jolla и запуск из-под него Wayland'а?
Если это всё так, то оставив минимум от Android'а (если уже так не сделали, конечно), можно существенно экономить батарею, прямо как при запуске «нативно», без прослойки в виде Android'а.kirikch
08.08.2016 23:44И так минимум от Android'а оставляется.
Подробности про libhybris: https://en.wikipedia.org/wiki/Hybris_(software)
Не делается chroot, наоборот из окружения Mer подтягиваются нужные драйверы.
denis_obrezkov
08.08.2016 15:04+3У меня, как всегда, есть один вопрос: а где нормальные приложения? Где описание того, чем пользуется каждый человек: смс, календарь, почта, контакты, карты с точки зрения разработчика? Чем эти приложения лучше, чем варианты для Android? Могут ли эти приложения взаимодействовать между собой, к примеру, могу ли я отметить точку на карте, выбрать в меню пункт «Провести встречу здесь» и разослать приглашение группе лиц с координатами выбранного места по e-mail?
webmasterx
Тормоза уже пофикисли? Низкое разрешение камеры тоже?
ИМХО: такая инструкция должна быть (и есть, за исключением может быть установки приложений) на 4пда, а не на хабре
Diaskhan
Что есть в Sailfish чего нет в Андроиде ???
kirikch
Да хотя бы репозитории (openrepos.net), знакомая структура файловой системы, адекватный bash из коробки. Плюс, мегапрактичный интерфейс.
Nagg
Ох да ведь все эти вещи, особенно bash, очень нужны 99% андроид пользователей! Ума не приложу как эти пользователи жили раньше.
kirikch
«Обожаю» подобный категоризм со взятыми с потолка числами. Откуда у Вас данные про 99%? Может, исследование проводили?
Есть вполне определённая категория людей и для которых эта статья интересна, и которым будет полезен тот же баш. Полагаю, в вашей интерпретации, 99% пользователей сидят на стоковой прошивке без всяких там рекавери и cyanogenmod.
Извините, сарказм включился в ответ на сарказм.
Nagg
Рынок мобильных ОС давно поделен. Новым ооочень сложно в него просунуться, уже много примеров мертвых ос типа Badu, Tizen, Firefox OS и т.п. Вы правда считаете что киллерфичами очередной ос станет баш, репозитории и прочие вещи из вашего комменатария? Вы же не станете отрицать что «категория людей которым нужен баш» просто ничтожна мала по сравнению с обычнми пользователями? Врядли производители, разработчики будут активно продвигать\поддерживать ОС для очень узкой нишы. По роду своей деятельности мне часто удается смотреть различные статистики по ОС и пользователям.
kirikch
Я не утверждал, что это киллер-фичи для всех, а вполне описал, для кого именно.
Для других ниш будут другие фичи.
Конечно, сейчас у Sailfish OS нет целей превзойти по продажам Android или iOS, но интересные категории пользователей и соответствующие возможности есть.
Боюсь, что более подробно сейчас прокомментировать я не могу.
dion
https://f-droid.org/
kirikch
На сколько вижу, это тот же магазин приложений. В нем есть библиотеки, которые могу быть использованы другими приложениями?
dion
Библиотек нет. Просто сторонний репозиторий опенсорса.
wholeman
Кстати, да. Больше всего мне не хватает в Android нормальных библиотек. Повторное использование своего кода в своих же приложениях там сделано через оригинальное место.
lieff
Можно например заблокировать всю рекламу из коробки фаерволом. На оф андройде подозреваю все блокировщики из плея будут иметь ограничения на блокировку (странно если бы гугл такое пропустил).
w32blaster
Я даже приложу конкретную ссылку к комментарию про блокировку рекламы: Hosts-adblock Просто поднимается крон, который раз в неделю обновляет /etc/hosts
Diaskhan
Можно вопрос а Батарейку как держит Sailfish OS?
он работает из без всяких промежуточных слоев ???
Бедный
Ёрик(нокиа)w32blaster
Первая Йолла держит батарею отличнейше, всем бы так. 3-4 дня без проблем. С портами дела хуже. Мотог2 держит ну полтора дня, Нексус5 держит до двух дней.
Не совсем понял вопрос про промежуточный слой. На телефонах Jolla, Jolla C операционка стоит на голом железе. Все порты ставятся поверх CM.
wholeman
А на Jolla/Jolla C ядро с драйверами свои или от Android?
lieff
Наколько я понял, работает и то и то
https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)
>Wayland works with all Mesa-compatible drivers with DRI2 support[87] as well as Android drivers via the Hybris project.
В репах mer я вижу и mesa и hybris. Но не одновременно, поставиш mesa — придется удалить hybris и поддержку андройда.
wholeman
Это немного о другом — мне интересно, какое ядро на официальных аппаратах.
lieff
На телефоне Jolla при установке Android Support ставится hybris и как миниум opengl начинает идти через его юзерспейские so. Насчет ядра не знаю, в /lib/modules ничего похожего на андройдовское не видно.
Насколько я знаю, поддержка Snapdragon 400/Adreno 305 добавлена в ванильное ядро:
https://en.wikipedia.org/wiki/Adreno
>As of September 2013, the kernel components (DRM and KMS driver) of freedreno have been accepted into mainline Linux kernel version 3.12.[16] These components are used together with user-space parts libDRM and Mesa 3D.
w32blaster
Разные проблемы зависят от прошивки, к сожалению. Могу сказать только то, что тормоза не ощущаются (субъективно), на МотоГ2 камера вообще не работает, на Нексусе5 ок.
kirikch
Ну, в совокупности-то нормальная статья для хабра. Другое дело, непонятно, почему в категории «Разработка».