Пользователь
0,0
рейтинг
9 октября 2013 в 17:24

Разработка → Tizen — взгляд изнутри из песочницы

Tizen Xeyes Попал ко мне в руки на некоторое время образец телефона с Tizen OS. Я решил воспользоваться возможностью посмотреть, какой же Linux скрывается внутри. Большинство обзоров Tizen OS описывают интерфейс взаимодействия со стороны пользователя, в данной статье я проведу небольшой обзор телефона и операционной системы со стороны системного администратора. Будут рассмотрены наиболее интересные предустановленные консольные приложения, работа с графическим интерфейсом и возможность обновления из репозитория.

Для того чтобы подключиться к консоли устройства нам потребуется утилита Smart Development Bridge (SDB) из состава Tizen SDK. С сайта разработчика ее можно скачать отдельно. В виде бинарного файла Smart Development Bridge доступен под те же платформы, что и Tizen SDK: Windows 7(32 и 64 бит), Ubuntu(32 и 64 бит), Mac OS X (64 бит). Указание Ubuntu в данном случае несколько условно, у меня утилита без проблем заработала под Fedora 19 (x64). Smart Development Bridge способен работать с несколькими устройствами и предоставляет базовый набор команд для работы с устройством, в том числе удаленный доступ к командной оболочке устройства. Он то нас и интересует в первую очередь. Все дальнейшие манипуляции будут производиться из консоли.

В Tizen изначально предусмотрено два основных пользователя под которыми возможна работа: developer и root, по-умолчанию используется developer. Чтобы получить максимум возможностей при взаимодействии с операционной системой, нам потребуется повысить уровень привилегий, для этого потребуется включить режим суперпользоваля. Введем необходимые для подключения команды:
$sdb root on
Switched to 'root' account mode
$sdb shell
sh-4.1#


Итак, мы получили root-доступ к системе. Для начала проделаем простые тесты позволяющие получить информацию о платформе. Попробуем узнать предоставленный нам шелл, версию системы и ядра.
sh-4.1# echo $SHELL
/bin/sh
sh-4.1# sh --version
sh --version
GNU bash, version 4.1.5(1)-release (armv7l-unknown-linux-gnueabi)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

sh-4.1$ cat /etc/system-release 
Tizen release 2.2.0 (Tizen)
sh-4.1# uname -a   
Linux TRATS2 3.0.15-00002-g277d62a #1-Tizen SMP PREEMPT Tue Jul 16 13:12:44 KST 2013 armv7l GNU/Linux


Вполне обычный линукс — Tizen 2.2.0 с ядром 3.0.15, в качестве командной оболочки используется Bash 4.1.5. Запросим информацию о характеристиках платформы таких как процессор и память.

sh-4.1# cat /proc/cpuinfo
Processor	: ARMv7 Processor rev 0 (v7l)
processor	: 0
BogoMIPS	: 1590.88
processor	: 1
BogoMIPS	: 1590.88
processor	: 2
BogoMIPS	: 1590.88
processor	: 3
BogoMIPS	: 1590.88

Features	: swp half thumb fastmult vfp edsp neon vfpv3 tls 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

Chip revision	: 0011
Hardware	: TRATS2
Revision	: 000c
Serial		: 4df764b878e3cf00

sh-4.1# cat /proc/meminfo | grep Mem
MemTotal:         797944 kB
MemFree:          385720 kB

sh-4.1# fdisk -l
WARNING: GPT (GUID Partition Table) detected on '/dev/mmcblk0'! 
The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/mmcblk0: 15.8 GB, 15758000128 bytes
1 heads, 16 sectors/track, 1923584 cylinders, total 30777344 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1    30777343    15388671+  ee  GPT

Вполне ожидаемые параметры — четырехядерный armv7 c частотой 1.6 ГГц c гигабайтом оперативной памяти из которых доступно системе около 800Мб. Накопитель на 16 Gb. Характеристики полностью соответствуют Samsung Galaxy S III (GT-i9300), который в качестве деволепер-образца предоставляется разработчикам Tizen.

Попробуем получить информацию о доступных исполняемых файлах, нажав дважды TAB. В ответ на это шелл предлагает вывести около тысячи наименований. Точное число не привожу, так как при нескольких запусках число вариантов варьировалось от 952 до 1003. В любом случае, такое количество довольно велико для операционной системы телефона. Весь список перечислять очень долго, поэтому отмечу наиболее интересные на мой взгляд: X11,enlightenment, scp, ssh, sshd, rpm, zypper, xclock, xeyes, xmessage. Из этого можно сделать вывод, что на телефоне установлена операционная система по набору приложений не уступающая настольной – есть иксы, оболочка, пакетные менеджеры. В качестве среды рабочего стола используется Enlightenment. Некоторые приложения при запуске из консоли отображаются на экране телефона, закрывая меню. Если запустить xeyes увидим на экране телефона глаза следящие за касаниями к экрану. Пример результата запуска xeyes показан на фото в начале статьи. Аналогичным образом на дисплей можно вывести oclock, xclock, xlogo, xmessage.

sh-4.1$ xmessage  -geometry 240x120 -center HELLO HABRAHABR!

Tizen xmessage Hello Habrahabr!

Не все приложения работоспособны «из коробки», для того чтобы ими можно воспользоваться потребуется их сконфигурировать.Так, например, скрипты запуска демона sshd в системе отсутствуют, а сам демон «в лоб» не запускается, выводя сообщение «Missing privilege separation directory: /var/run/sshd». Проблема решается просто — необходмо создать эту директорию и дать необходимые права на нее:
mkdir /var/run/sshd
chmod 0755 /var/run/sshd

После проделанных манипуляций демон можно запустить:
start-stop-daemon --start --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- -p 22

Подключение к ssh-серверу под root происходит без пароля, поэтому не будем оставлять включенным сервер.
start-stop-daemon --stop --pidfile /var/run/sshd.pid

Перейдем к системе управления пакетами. В системе установлен менеджер пакетов Red Hat версии 4.9.1.
sh-4.1# rpm --version
RPM version 4.9.1

Проверим возможность обновления предустановленных пакетов. Zypper — консольный менеджер пакетов, используется в дистрибутиве GNU/Linux openSUSE. Если есть менеджер пакетов, то должены быть и репозитории в которых он берет пакеты. Пробуем обновить список пакетов командой zypper refresh, но тут ждет разочарование – репозиторий не найден.
sh-4.1# zypper refresh
Retrieving repository 'Tizen-main' metadata [\]
Specified path '/srv/snapshots//tizen-2.2/common/tizen-2.2_20130717.6/repos/tizen-main/armv7l/packages/' is not a directory: file:/srv/snapshots//tizen-2.2/common/tizen-2.2_20130717.6/repos/tizen-main/armv7l/packages/

Retrieving repository 'Tizen-main' metadata [error]
Repository 'Tizen-main' is invalid.
[|] Valid metadata not found at specified URL(s)
Please check if the URIs defined for this repository are pointing to a valid repository.
Skipping repository 'Tizen-main' because of the above error.
Could not refresh the repositories because of errors.

Судя по тексту сообщения об ошибке, репозиторий Tizen-Main расположен по несуществующему пути. Поищем на официальном сайте репозитории. Как мы уже выяснили в телефоне у нас TIZEN 2.2, на http://download.tizen.org есть несколько подходящих репозиториев. Отключим старый репозиторий и подключим парочку новых. Вместе репозиторием tizen-2.2, заодно подключим чуть более свежий tizen-2.2_20130719.3. Невостребованные репозитории всегда можно будет отключить.
zypper mr -d 1
zypper ar http://download.tizen.org/releases/2.2/tizen-2.2/repos/tizen-base/armv7l/packages/  Base
zypper ar http://download.tizen.org/releases/2.2/tizen-2.2/repos/tizen-main/armv7l/packages/  Main
zypper ar http://download.tizen.org/releases/2.2/tizen-2.2_20130719.3/repos/tizen-base/armv7l/packages/  Base20130719
zypper ar http://download.tizen.org/releases/2.2/tizen-2.2_20130719.3/repos/tizen-main/armv7l/packages/  Main20130719
zypper refresh

Система готова к установке пакетов и обновлению.

Tizen достаточно гибкая система в которой скрывается большой потенциал. В заключение отмечу, что в подключенных репозиториях нашлись средства разработки: cmake, ccache, gcc и другие. Этот факт открывает новые возможности для разработки под Tizen.
@Spetros
карма
49,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (74)

  • +7
    Первый раз, когда я услышал о Тизене что-то, что мне стало интересно. Вопрос один теперь мучает меня только: почему ядро такое старое?
    • 0
      Хороший вопрос.
      Полагаю, это пока устройство для разработчиков.
      Есть и другие варианты.
      Например, у эмулятора ядро 3.4.0+.
    • 0
      Старый девелоп девайс. На новом 3.4.0
      • +2
        Нет, девайс M0, распоследняя доступная релизная прошивка 2.2, и там версия 3.0.15-00002-g277d62a.
        • 0
          Удалено
  • 0
    Отлично! В качестве бонуса хотелось бы увидеть сравнение с аналогичными возможностями эмулятора, входящего в состав Tizen SDK.
    • +1
      Сейчас посмотрел — по возможностям примерно тоже самое. На флешке с SDK сборка ОС в эмуляторе немного посвежее, чем в телефоне. И у него есть одно важное отличие от телефона — он x86, а не arm.
  • 0
    Получается, Tizen основан на openSUSE или они только Zypper оттуда взяли?
    • 0
      Он в Tizen из MeeGo перекочевал, судя по всему.
  • 0
    Вполне обычный линукс — Tizen 2.2.0 с ядром 3.0.15, в качестве командной оболочки используется Bash 4.1.5.
    Это, вообще-то, необычно — для встроенного линукса чаще используют busybox, да и у Убунты /bin/sh -> dash. А тут — баш в полный рост.
    • 0
      Кстати, в N900 и на андроидном планшете bash вполне полноценно работал
      • 0
        Раз уж на то пошло, на N900 по-умолчанию BusyBox.

        И, если придираться к словам, то автор сказал «обычный линукс», а не «обычный мобильный линукс».
        Вообще, думаю, что с bash ситуация тоже из MeeGo перекочевала.
    • 0
      До этого мобильные ОС не исследовал, поэтому сравнивал с настольным линуксом под которым статья писалась. Для меня федора — обычный линукс.
  • +1
    Вот и думаю, что выбрать — tizen, jolla, или таки мобильную убунту
    • 0
      Пока что Tizen — единственная из перечисленных платформ (при всём к ним уважении), которая поддерживается как OEM, так и операторами связи.
      • 0
        А в чём заключается эта поддержка? Пресловутая экосистемность? Возможность купить залоченный аппарат подешевле?
        • 0
          Разработка сервисов, ПО, железок.
          Финансовые вливания, в конце концов.
          • +2
            А у jolla могут сделать заднюю панельку в виде выдвижной клавы, вот :-)
            Ну, что к новому году выживет, то и возьму
            • 0
              Ну, пока не сделали.
              Но будет любопытно посмотреть что получится.
        • 0
          В том, что разработка Tizen (инвестиции, маркетинг, человеческие и другие ресурсы) ведётся консорциумом Tizen Association, в который входят как OEM-производители, так и операторы связи.
          Даже если условный DOCOMO захочет выпустить своё залоченное устройство на Tizen, никто не заставляет вас его покупать. Но в любом случае в этой ситуации DOCOMO льёт воду на мельницу Tizen.
      • 0
        Справедливости ради, нужно сказать, что у Jolla есть контракт с финским DNA.
        Но это гораздо более локально, чем ситуация с Tizen.
        • 0
          Вот еще один.
          • 0
            Угу.
            Но с поддержкой Tizen не сравнимо. Некоторые заявления и компании удалось собрать тут.

            Вообще, я жду появления и Sailfish на рынке. Довольно интересно то, что ребята делают.
      • 0
        Так а Sailfish разве операторами не будет поддерживаться?
      • 0
        Вы про Ubuntu Touch вообще слышали?

        www.ubuntu.com/phone/carrier-advisory-group
        • 0
          Конечно слышали.

          Я вижу список операторов.
          Где OEM?
          Кто будет разрабатывать устройства и компоненты?
          Кто обеспечит экосистему?
          История с кикстартером тоже очень показательна.

          Безусловно, ситуация может измениться.
          Но на данный момент в плане поддержки из систем новой волны (назовём их так) у Tizen лучшая поддержка.
          • 0
            В пункте Benefits of joining написано, чем будут заниматься члены GAG:

            Differentiation for OEMs and operators
            Developer ecosystems and application portability
            HTML5 standards, performance and compatibility
            Marketplaces for apps, content and services
            Revenue share models for publishers, operators, and OEMs
            Payment mechanisms and standards
            Platform fragmentation
            Consumer and enterprise market segments and positioning
            • 0
              Написано, чем будут. Но не написано кто. Общих слов можно написать очень много, но пока кто-то конкретно не заинтересуется — эта платформа никому не нужна. И история с кикстартером это подтверждает.

              В Tizen уже давно занимаются и доступен весь список.

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

              Но объективно у Tizen наилучшая поддержка.
              • 0
                Собрано 13 млн. долларов. Это по вашему никому не нужна?
                • 0
                  А надо было сколько? 32 млн. долларов как минимум. Даже минимум не достигнут, даже половины не собрали, понимаете?
                  • 0
                    Надо было 36. Это значит, что они слишком много запросили. Собрана третья часть, а значит народу платформа интересна. Просто немного меньшему его количеству. А может быть они знали, что не соберут, а решили просто таким образом попиариться
                    • 0
                      Ей Богу, вы законченный оптимист.
                      Треть от минимума!
                      И я сомневаюсь, что это реально был пиар, т.к. результат очень сомнительный.
                      Если раньше были шансы, то сейчас маловероятно, что кто-то из вендоров сделает на них серьёзную ставку.
                      • 0
                        Словосочетание «самая успешная краудфандинговая компания в истории» о чем либо говорит?
                        • 0
                          … и она же первая кампания такого рода…
                          Всё относительно, Николай.
                          • 0
                            Все верно. Вопрос только в том, с какой стороны это приподнести людям и как они отреагируют. В общем, чего гадать, на следующей неделе она выходит, а там видно будет. Я не вижу причин, почему бы, например, Самсунгу не попробовать, что ему терять
                            • 0
                              «Я вам не скажу за всю Одессу...»
                              Всё может быть.
                              Я лишь хотел отметить, что когда что-то происходит в первый раз, очень важно, но при этом очень трудно провести линию нулевого потенциала. И спекуляций на эту тему, как правило, бывает очень много.
                      • 0
  • 0
    Стоит еще сказать, что на борту стоит Python интерпретатор 2.7.1, что открывает кое-какие возможности ;)
    • +8
      Ох, всегда воспринимал подобные новости как нечто ужасное :( Как по мне, так в мобильных устройствах, которые слабее десктопов, стоит запретить все ненативное. Там ресурсы на вес золота.
      • –2
        По-моему, эта информация устарела несколько лет назад.
        Андройд со своей прожорливостью породил сумасшедшую гонку ресурсов.
        • +1
          Вы не понимаете. Да, современные устройства могут быстро обрабатывать интерпретируемые языки. Но они все равно будут делать это медленнее и не так эффективно, как компилируемые. И если у вас запущено только одно приложение, то вам все равно. А если их десять? Вот тут то и начинаешь понимать прелесть нативных инструментов.
          • 0
            Предлагаете закрыть всё, кроме нативного кода?
            Следуя вашей логике, управляемый (managed) код тоже запретим/упраздним?
            • +2
              В маломощных устройствах — да. На десктопах — пусть будет.
              • +6
                Сегодняшний смартфон — это мой десктоп 7-летней давности.
                Я уже молчу про разрешение экрана.
          • +2
            Да нет, я хорошо понимаю ситуацию.
            И всеми руками «за» эффективные приложения.
            Хотя за нативную разработку у нас в основном агитирует Amarantine.

            Но я хочу обратить внимание на то, что нынешние мобильные устройства очень неплохо сравнимы по производительности с ноутбуками двух-трехлетней давности, которые отлично справлялись с интерпретируемыми приложениями.

            Кстати, приложения на том же питоне были популярны еще на устройствах Symbian S60, которые значительно уступали в производительности доступным сейчас монстрам.

            Но прошу понять меня правильно.
            Я не говорю, что гонка за гигагерцами и ядрами, в ущерб качеству кода, — это хорошо.
            Нет, но учитывать доступную производительность тоже нужно.
            • –5
              На моем старом ноутбуке Убунта очень сильно тормозила, просто потому, что почти вся юнити была написана на Python. Так что моя ненависть к интерпретируемому далеко не случайна.
  • 0
    Можно будет туда ставить Qt-приложения с интерфейсом на QML? Или только на вебките?
    • 0
      Уже можно. Пока только с Tizen Store у Qt есть сложности.
      • 0
        Хорошая новость. Будем надеяться, эта проблема скоро решится.
        • 0
          Так QML это хорошая новость или интерпретируемые языки на мобильных платформах это зло? Противоречиво получается
          • 0
            QML компилируется в бинарь при первом запуске.

            А во-вторых, вы не путайте интерфейс и бекенд.
            • 0
              Ну не в бинарь, а в нативные плюсовые классы. Питон он тоже в pyc перегоняется при желании.
              А кроме того в QML может быть JS любой сложности, который уж точно в бинарь не компилируется
              • 0
                Ну я не сторонник использования JS. Для меня QML это всего лишь способ визуализации C++-классов. Если JS и использую, то крайне редко и не особо сложный.
            • 0
              На случай если я не прав про компиляцию — где лежат результаты этой компиляции между запусками? Никогда их не видел
              • –1
                Да, я был не прав. QML объекты это точно такие же C++ классы, только приватные и недоступные из C++ кода. Соответственно, компилятся они при компилировании приложения и хранятся в бинаре:

                habrahabr.ru/post/150064/
                habrahabr.ru/post/150133/
                • 0
                  Вот тут ты точно не прав — QML-файл парсится в рантайме, в процессе компиляции он не обрабатывается. Можно без перекомпиляции приложения подменить qml
                  • 0
                    Я всего лишь резюмировал статьи по приведенным ссылкам. Мне и самому интересно как оно на самом деле там работает.
                    • 0
                      Я в статьях не видел ничего про то, что qml-файлы компилируются вместе в плюсовым кодом и кладутся в бинарь

                      Этап компиляции, приведенный в статье, происходит в рантайме при загрузке QML-файла, но такая загрузка происходит каждый раз при запуске приложения
                      • 0
                        Ну это я сам домыслил из этих слов:

                        Большинство людей знают, что каждый элемент в QML файле опирается на конкретный C++ класс. Когда QML файл загружен, движок QML как-то создает один C++ объект для всех элементов в файле.


                        Каюсь :(
            • 0
              Если моя память меня не подводит, QML-файл компилируется в байт-код, который содержит инструкции, как создать нужный объект. А JavaScript-код выполняется как обычно.
  • 0
    А устройства на полки магазинов когда поступать будут?

    P. S. В Маунтин-вью, наверное, уже точат ножи. Tizen-то в первую очередь начнет отжирать долю именно у Android, а не у iOS или Windows Phone.
  • +4
    Я влюбился в ОС при виде окошка xmessage
    • 0
      Как по мне, так лучше бы они использовали Mir или Wayland вместо Xorg
      • 0
        Wayland стоит в планах.
        Не всё сразу.
      • 0
        они бы и использовали, будь он не сырым
  • 0
    Довелось подизайнить интерфейс для Тизена. Правда, еще тогда для какой-то ранней беты. Спецификаций не было никаких, все приходилось интуитивно ловить из редких скриншотов. Но в целом, концепция интерфейса мне понравилась. Не столь стройная, как iOS, но все наладится, я думаю. Зато потенциал у системы куда более широкий в плане UI/UX заморочек. Скажем так, я бы подумал о гибкости и масштабу возможностей как у Android, но при этом держал бы в уме изящество решений от iOS плюс простоту и отзывчивость WP8. Весьма перспективная система, я думаю. Хотя бы с точки зрения дизайн-девелопинга.
    • 0
      вот только наверное ее не поставить на другие телефоны
  • 0
    У меня вопрос… А ведь если на Tizen поставить JVM, то, теоретически, на нём можно запускать андроид-приложения? Причём с той же производительностью, что и на самом Андроиде? Если это так, то эту фичу очень не помешает встроить в Tizen. Это могло бы существенно упростить жизнь тем, кто хочет пересесть с Андроида.
    • +1
      Пока окончательно ничего не ясно.
      Но вот здесь можно найти кое-что интересное на данную тему.
      Сам результат продемонстрирован здесь.
    • 0
      Есть, по крайней мере, два проекта, которые этим занимаются.
      ACL от OpenMobile и PAG от Infraware.
      Обсуждение с примерами работы.
  • 0
    Это все хорошо, но телефоны то где?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.