В последнее время на афтершоке было множество восторженных статей про Sailfish OS, инфоповодом для которых выступила Почта России. Не разделяя восторженность этих статей сначала хотел ворваться с шашкой в комментарии, но потом понял, что написать придётся много и обстоятельно, поэтому решил в отдельную заметку оформить.
Немного обо мне. По образованию инженер, последние 17 лет занимаюсь разработкой коммерческих продуктов. Последние пять лет в связи с производственной необходимостью активно и глубоко копаюсь в внутренностях различных мобильных операционных систем. Много удалось покопаться в Android и iOs, но и во все остальные залазить приходилось.
Итак, оформлю статью как набор тезисов, которые буду раскрывать. А в конце напишу, что за на самом деле надо делать, а не то, что все пытаются делать.
Sailfish не Российская ОС
Очень странно видеть щенячий восторг по поводу того как круто у нас всё сделали. Про круто я напишу ниже, а вот про то, что "у нас" это совсем не правда. Проект был куплен (да и был ли куплен до конца не ясно, там всё мутно) с потрохами, а в России делают локализацию, адаптацию и много маркетинга. Привносят ли что-либо в развитие ОС кардинального – не уверен, но думаю, что нет. Ибо делать это очень дорого, специалистов мало и они все уже разобраны по более вкусным проектам.
Sailfish не полноценная ОС
У термина "полноценная ОС" может быть множество толкований (для кого-то и сто строчек на asm это уже ОС), поэтому я опишу своё видение почему Sailfish не ОС. Есть ключевые компоненты любой современной ОС. Условно можно их разделить: ядро, слой доступа к оборудованию (HAL – hardware abstraction layer), инфраструктура выполнения, пользовательские приложения. Так вот у всех операционных систем самое важное и самое сложное это именно ядро и HAL. Всё остальное либо уже давно написано и есть в open source (см. проект www.gnu.org), либо очевидно и не сложно для воспроизведения.
Так вот у Sailfish OS нет своего полноценного ядра и своего HAL. Про HAL я напишу ниже, а про ядро раскрою. Тут есть нюанс у Sailfish ядро есть, но оно загружается после того как было загружено ядро Android. Да, да, вы не ослышались для того, чтобы заработал Sailfish на устройстве, ему нужно оригинальное ядро Android для этого устройства.
У Sailfish нет своего HAL
HAL это такая достаточно большая программная компонента, которая обеспечивает взаимодействие между оборудованием и, условно, пользовательскими программами. Под оборудованием, поскольку у нас речь про мобильные устройства, понимается, например, сенсорный экран, или камера, или радиомодем. Этот слой очень специфичен не только для определённого процессора мобильного устройства, но и для конкретной версии, конкретной платы. Один из самых сложных для написания и отладки компонент. От этой компоненты зависит скорость и стабильность работы всей остальной операционной системы.
Так вот, в Sailfish OS слой HAL используется опять же от оригинального Android. То есть у Sailfish нет своего слоя HAL. А это, между прочим, с точки зрения обеспечения безопасности ОС один из самых важных компонент системы. И если, потенциально, где-то в Android устройствах есть закладки, то они будут располагаться именно в ядре и слое HAL.
Sailfish не open source система
Как я писал выше, в Sailfish используются два компонента (ядро и HAL), исходных кодов которых у самой Sailfish нет. Кроме этого, движок, обеспечивающий выполнение Android приложений, написан компанией Myriad и называется Alien Dalvik. Исходные коды, естественно, закрыты полностью. Множество других компонент тоже имеют закрытые исходники. Да на самом деле если сравнивать с Android, то в Sailfish гораздо больше объём закрытых исходником чем в том же aosp.
Вот хорошая картинка с официального сайта Sailfish, показывающая компоненты с закрытым исходным кодом:
Как видно, что их чуть больше чем много и они все отвечают за ключевые функции операционной системы.
Слабое железо
Первый шок при знакомстве с Sailfish получаешь когда видишь характеристики телефонов, на которых она работает. Это аппараты с 3-4 летней давности, не ясно откуда они такие устаревшие компоненты в 2017 году умудряются покупать. Но вот когда осознаешь то, что я написал выше, то становится ясно почему оно так.
На самом деле нет ни одного телефона, который был бы сделан специально для Sailfish. Все телефоны, на которых работает Sailfish это были изначально модели, которые проектировались, и производитились для Android. Но потом в них ещё и Sailfish поставили, сохранив весь слой взаимодействия с оборудованием от оригинального Android.
Сертификат у Sailfish ничего не значит
Из предыдущих пунктов можно сделать очевидный вывод, что никакую серьёзную сертификацию Sailfish пройти не мог. Так как для любого более-менее серьёзного допуска нужно предоставлять в сертификационную лабораторию исходных коды абсолютно всех компонент. Без этого сертификат не получить.
У Sailfish два сертификата АК1 и КС1. Очень сложно найти информацию, что же значат эти сертификаты, но на сколько я понимаю первый это про защиту от несанкционированного доступа (условно пароль можно поставить на устройство), а второй это про поддержку всяких крипто-протоколов. Причём оба сертификата базового уровня, при сертификации на который проверяется теоретическое соответствие. То есть, эти сертификаты не гарантируют отсутствие каких-либо закладок или уязвимостей ОС, за это отвечают сертификаты класса НДВ1-4
Хорошо, скажет пытливый читатель, закрытые компоненты откроют, сертификаты получат, недостающее напишут. Зато у sailfish отличная архитектура! Спешу расстроить, с архитектурой у них всё ещё хуже.
Нет изоляции приложений
В современных мобильных операционных системах (да и в настольных тоже) есть сложившая практика изоляция приложений. Чаще всего эту технику называют песочницей или контейнером. Технически это реализуется либо виртуальными машинами, в которых выполняется пользовательская программа, либо очень жесткими ограничениями доступного инструментария в пользовательских программах.
Так вот в Sailfish никакой изоляции для пользовательских программ не предусмотрено от слова совсем. Все программы равнозначны и имеют практически полный и мало чем ограниченный доступ ко всему.
Нет разграничения прав
Тут всё просто, мы все уже привыкли в мобильных устройствах, что каждое пользовательское приложение запрашивает определённые разрешения на доступ к оборудованию и ресурсам. В каких-то системах это происходит при установке, в каких-то при первом доступе, во всяком случае у нас есть выбор дать или не дать доступ, и есть гарантия со стороны системы, что приложение не будет иметь доступ туда, куда я не разрешал.
В Sailfish OS всем пользовательским приложениям доступно всё, никаких ограничений. Есть небольшая разница между системными приложениями и пользовательскими, но она косметическая. И нет никакой возможности ограничить в чём-либо приложения.
Ребята из Sailfish проблему то эту понимают и даже планируют внедрить мандатную систему прав SELinux, но вот только планируют они это уже минимум два года, а реализации как-то не видно. Да и не поможет особо SELinux в разграничении прав.
Нет единого API
Если вы дочитали до этого абзаца, то должны удивляться как же так получилось, что ключевых систем обеспечения безопасности нет. Причина простая – отсутствие единого API (программный интерфейс приложения) для доступа к функциям системы и к оборудованию. Фактически приложения представляют собой обычные Linux исполняемые файлы, написанные на C++ (можно ещё и на python писать, но это не основной способ), которые через множество различных (но при этом стандартных для мира *nix) интерфейсов получают доступ ко всему.
Можно ещё долго топтать Sailfish за всякие более мелкие недостатки, но даже этих, как мне кажется, вполне достаточно для того, чтобы не воспринимать эту систему в сегодня серьёз. Потом - может быть, но не сейчас. Фактически, на текущем этапе развития, Sailfish представляет собой графическую надстройку над андроидом.
Да, большинство проблем в системе решаемо, но на решение этих проблем надо потратить годы упорной работы большой команды профессионалов. А текущее положение Sailfish эквивалентно версии 1.0 Android.
Всё плохо, что же делать?
Если рассматривать проблематику истинно российских мобильных устройств, то большинство людей рассуждает следующим образом: «Google и Apple плохие, они встраивают в свои системы следилки, закладки и т.д.». Но на самом деле всё не так. То есть, утверждение про Google и Apple, я не оспариваю, но вот тот же Google, в плоскости мобильных операционных систем, абсолютно белый и пушистый и принёс кучу пользы миру в целом. Исходные тексты Андроида доступны полностью (см. проект aosp), и для серии устройств Nexus можно собрать из исходников эталонные образы операционной системы, которые будут отлично работать на устройстве. При этом у вас будут исходники почти все, кроме HAL уровня. Можно как угодно модифицировать андроид и не платить ни копейку Гуглу. Заплатить придётся в тот момент, когда вы заходите использовать в своём андроиде магазин приложений Google.Play, но вы его можете и не использовать.
А на самом деле, вот кто главные злодеи мобильного мира, так это производители чипов. Сейчас их три основных: Qualcomm (США), MediaTek (Китай) и Samsung (Корея). Есть ряд ещё более мелких, но их объёмы на уровне шума.
Почему же они злодеи?
Проблема в том, что для того, чтобы на любом мобильном чипе запустить какую-либо операционную систему, не важно какую, необходимо уметь программно взаимодействовать с самим чипом и с тем оборудованием, что он предоставляет и которое у нему присоединено. Для этого взаимодействия производитель чипа (обращаю внимание, именно производитель чипа, а не производитель ОС) разрабатывает тот самый уровень HAL, который я упоминал выше. И тут начинается самое весёлое – производитель чипов почти никому не предоставляет исходные коды этого HAL. Допущены до кода только избранные вендоры, которые производят по нескольку миллионов устройств в год. Всем остальным вендорам HAL поставляется в бинарном виде. И вот что за закладки вендор добавил в эти бинарные файлы никому неизвестно. А эти бинарные модули, между прочим, работают на самом низком уровне операционной системы и имеют доступ ко всему.
Есть и другие проблемы с чипами, но всех их описывать – очень большая статья получится.
Куда надо двигаться?
Вот чего по-настоящему не хватает для разработки своего мобильного устройства так это независимого производителя чипов, который бы открыл в публичный доступ всю техническую и программную документацию.
То есть, России надо не российскую мобильную операционную систему разрабатывать, а свой мобильный чип, открыв при этом в свободный и ничем не ограниченный доступ информацию по нему. И я вас уверяю, что очень быстро, и даже без какой-либо поддержки государства, в течении полугода появятся полностью свои операционные системы. Да, они будут собраны на базе AOSP, Tizen или того же Sailfish, но зато все слои операционной системы будут подконтрольны и их можно будет по-настоящему сертифицировать. И их можно будет по настоящему развивать в нужную России сторону.
Комментарии
Спасибо за разбор ,а то я уже хотел заказать. Теперь не стану.
Реально качественно объяснил, если даже 30% правда, то фтопку sailfish.
Толково.
Была у меня как-то Jolla. С точки зрения пользователя смысла в ней, как в альтернативе андроида не оказалось, ибо родного софта нет (а что есть, ужасный), оставалось гонять андроидовский.
Небыло у тебя Jolla. Ты врёшь.
Была. Врёшь ты.
Нет, небыло.
Была, точно говорю.
Нет такого ядра в природе. Статья - передёрг дилетанта для домохозяек. Обычный эмоциональный околотехнический бред.
Видимо, наши нормально ввалили в проект и гуглообезъяны кинулись защищать свой "рынок".
Может имелось ввиду надстройка над надстройкой? Сейчас это модно - дериватив на деривативе )
Нет. Они используют ядро с драйверами для мобильной платформы. Ядро Linux.
Здесь. Лень погуглить?
За название "андроид-ядро" их Линусу ещё предстоит отыметь.
Это уже другой вопрос. А терминология уже сложилась.
Ты терминоложь как угодно. Твоё право вилку самолётом называть, никто не спорит.
Только состав кода от этого не меняется. Sailfish использует ядро Linux.
Ветка Андроида своя. Так что код отличается.
Это не твоё, не надо спорить.
Не, не буду спорить ))
В этом вопросе я дуб дубом, но тоже удивился. Андроид вроде на ядре Линукса. Автор имеет в виду, что Sailfish это просто перепиленный Андроид или что?
Автор имеет логику и факты. Причём имеет их нагло, в виду у всех.
Если андроид работает на модифицированном ядре линукса, можно ли это считать ядром андроида?
Нет. Читай GPL.
Значит, автору можно просто исправить термин, но суть не изменится?Увидел. В английской Вики по другому написано.Суть чего, бот? Эмоциональной статьи, обсирающей проект? Меняется. А вот твоё задание по обсиру - срывается.
Не кидайся на людей, а то сам говном прослывёшь.
Слив защитан.
Так ты сюда пришёл подпукнуть новому вбросу? Так и скажи, нечего на личности переходить.
Лучше сам статью напиши, растолкуй всё как надо. Говном в комментах кидаться много ума не надо. А сливы у себя в сортире считай.
Да, большая просьба, напишите, пожалуйста, отдельный пост, я добавлю его в раздел "Разоблачение набросов" и добавлю на него ссылку в этом посте
абсолютно согласен, даже зарегистрировался чтобы "разоблачить":)
Знатно потоптались
Спасибо, а то у меня тоже был какой-то энтузиазм насчет этой ОС...
Дельно. Даже более, чем.
Спасибо!
боюсь аффтор даже не догадывается что его маст дай крутится внутри закрытого линуха, который тихо и незаметно с недавних пор стал выполнять фукции bios.
а эта штука почище фауста гёте (с) будет.
UEFI сложно назвать новостью. Или я чего-то пропустил?
Муха - во первых ваше недавно тянется еще с 2007 года, еще с платформ на Socket 771...
И UEFI не базе Linux сделан, а на базе FreeBSD, и BIOS это вообще теперь приложение UEFI, эмуляция так сказать.
А насчет того что якобы Windows работает в виртуальной машине UEFI вы соврали - при типовой загрузке ОС гипервизор UEFI передает управление загрузчику ОС. И дальше Windows уже напрямую работает с железом (за исключение легаси-функций типа последовательных и параллельных портов и прочей архаики, которые в UEFI эмулируются для совместимости с MS DOS 6.1)
Хотя да, есть вариант установки ОС c использованием загрузчика UEFI, но так ставить ОС не надо - хрен ее потом крякнешь по человечески
А если копнуть глубже, то ноги UEFI растут из мэйнфреймов IBM, на которых еще в 80-х были аппаратные разделы (partition) куда можно было ткнуть разные ОС
автор зарегался для этого наброса.
в бан, в общем
Все такие умные! Вот поясните мне неучу, как Сбербанк получает доступ ко всем моим контактам при регистрации на мобил.банк?
И ваш уровень понятен, если эта хрень - дельная.
Для общего развития - вполне. Может, хоть покупать не побегут.
Плохо, что не побегут. Т.к. статья - фэйк.
Напишите опровержение, почитаем. Что в комментах-то сидеть.
Реальное положение дел доказательств не требует.
Если в статье есть ложные утверждения, то это требует опровержения. Ибо не специалисты верят написанному.
Неспециалистам при принятии решения надо спрашивать у специалистов, а не руководствоваться такими статейками.
Когда надо вырезать аппендицит, то, почему-то, никто к бабе-знахарке не бежит. Все идут к специалистам. А здесь почему не так?
Хоть ник у вас может и предполагает знания, но ни одного довода вы не привили, просто обосрать статью. Автор все расписал по полочкам и выложил как надо. И более того обозначил куда и как надо идти что бы добиться успеха.
Напишите свои доводы и это будет уже дискуссия, предметная.
Клон?
Ну да ладно. Если про "полочки", то почитай выше.
Вы пока что, не высказали даже собственной точки зрения, не говоря уже об аргументах в её поддержку.
Даже пример с аппендицитом у Вас неудачный. Есть немалое количество людей, которые врачей боятся больше, чем бабок-знахарок и обращаются именно к последним.
И после этого остаются неживыми.
Скорее, становятся неживыми. Да.
Но веруют до последнего...
Это огрубление стёба.
Собственно, против этого я тут и воюю.
Страницы