Попал ко мне в руки на некоторое время образец телефона с 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. Чтобы получить максимум возможностей при взаимодействии с операционной системой, нам потребуется повысить уровень привилегий, для этого потребуется включить режим суперпользоваля. Введем необходимые для подключения команды:
Итак, мы получили root-доступ к системе. Для начала проделаем простые тесты позволяющие получить информацию о платформе. Попробуем узнать предоставленный нам шелл, версию системы и ядра.
Вполне обычный линукс — Tizen 2.2.0 с ядром 3.0.15, в качестве командной оболочки используется Bash 4.1.5. Запросим информацию о характеристиках платформы таких как процессор и память.
Вполне ожидаемые параметры — четырехядерный 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.
Не все приложения работоспособны «из коробки», для того чтобы ими можно воспользоваться потребуется их сконфигурировать.Так, например, скрипты запуска демона sshd в системе отсутствуют, а сам демон «в лоб» не запускается, выводя сообщение «Missing privilege separation directory: /var/run/sshd». Проблема решается просто — необходмо создать эту директорию и дать необходимые права на нее:
После проделанных манипуляций демон можно запустить:
Подключение к ssh-серверу под root происходит без пароля, поэтому не будем оставлять включенным сервер.
Перейдем к системе управления пакетами. В системе установлен менеджер пакетов Red Hat версии 4.9.1.
Проверим возможность обновления предустановленных пакетов. Zypper — консольный менеджер пакетов, используется в дистрибутиве GNU/Linux openSUSE. Если есть менеджер пакетов, то должены быть и репозитории в которых он берет пакеты. Пробуем обновить список пакетов командой zypper refresh, но тут ждет разочарование – репозиторий не найден.
Судя по тексту сообщения об ошибке, репозиторий Tizen-Main расположен по несуществующему пути. Поищем на официальном сайте репозитории. Как мы уже выяснили в телефоне у нас TIZEN 2.2, на http://download.tizen.org есть несколько подходящих репозиториев. Отключим старый репозиторий и подключим парочку новых. Вместе репозиторием tizen-2.2, заодно подключим чуть более свежий tizen-2.2_20130719.3. Невостребованные репозитории всегда можно будет отключить.
Система готова к установке пакетов и обновлению.
Tizen достаточно гибкая система в которой скрывается большой потенциал. В заключение отмечу, что в подключенных репозиториях нашлись средства разработки: cmake, ccache, gcc и другие. Этот факт открывает новые возможности для разработки под Tizen.
Для того чтобы подключиться к консоли устройства нам потребуется утилита 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!
Не все приложения работоспособны «из коробки», для того чтобы ими можно воспользоваться потребуется их сконфигурировать.Так, например, скрипты запуска демона 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.