Linux native что это
Как всем известно, Android имеет под собой фундамент в виде ядра Linux. Из этого следует, что в теории на смартфоне можно запустить все те приложения, что доступны на десктопном Linux. На практике же все сложнее. Поскольку набор Native-библиотек в Android отличается от такового на десктопе (не говоря уже об архитектуре платформы), приложения требуется компилировать статически. А иногда еще и патчить. Но и в этом случае работоспособность приложения не всегда гарантирована.
Что касается модулей ядра, которые могут быть весьма полезны на смартфоне (поддержка NTFS, например), то здесь все еще интереснее. Во многих ядрах от вендора отключена функция загрузки модулей (начиная с Android 4.3, это фактически требование Google. — Прим. ред.). Поэтому нам придется не только подобрать правильную версию ядра для сборки модулей, но и, возможно, пересобрать само ядро, включив такую поддержку, или просто добавить модуль в сам образ ядра.
Далее в статье мы рассмотрим, как побороть эти проблемы, и попробуем собрать модули Linux-ядра и несколько приложений.
Подготовка
Для сборки модулей (ядра) и приложений нам потребуется тулчейн, то есть связка из кросс‑компилятора и линковщика, плюс набор стандартных инструментов сборки, которые можно установить из репозитория (пример для Ubuntu):
$ sudo apt- get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 git libtoolТеперь можно установить тулчейн. Их существует как минимум два — стандартный гугловский NDK и тулчейн от Linaro, куда сильнее оптимизирующий код. Различаются они еще и набором target-библиотек — если NDK содержит те библиотеки, которые имеются в Android и, соответственно, могут не подходить для сборки обычных POSIX-совместимых приложений, то Linaro включает минимальный набор стандартных POSIX-библиотек под ARM, для использования которых в гуглооси понадобится статическая линковка.
$ tar xjvf arm-unknown-linux-gnueabi-linaro_4.6.4-2013.05-build_2013_05_18.tar.bz2 $ mv arm-unknown-linux-gnueabi-linaro_4.6.4-2013.05 linaro-toolchain-4.6Добавим путь к тулчейну в
/.bashrc (и заодно определим отдельные переменные, которые на время компиляции ядра, возможно, и не пригодятся, но в дальнейшем могут ой как понадобиться):
export PATH = $PATH : $ < HOME >/ android- ndk- r10c/ toolchains/ arm- linux- androideabi- 4. 6/ prebuilt/ linux- x86_ 64/ bin: $ < HOME >/linaro-toolchain-4.6/bin export ANDROID_SYSROOT = $ < HOME >/android-ndk-r10c/platforms/android-18/arch-arm export LINARO_SYSROOT = $ < HOME >/linaro-toolchain-4.6/arm-unknown-linux-gnueabi/sysroot export CROSS_COMPILE_LINARO = arm-unknown-linux-gnueabi-Компиляция модулей и ядра
Для начала определим, поддерживает ли стоковое ядро модули. Для этого смотрим, есть ли на устройстве файл /proc/modules. В зависимости от этого мы поймем, что делать дальше. В случае если модули поддерживаются, мы берем ванильное ядро той же версии (но лучше, конечно, взять от вендора), конфигурируем его, компилируем только модули, закидываем их в /system/lib/modules и загружаем с помощью команды insmod на устройстве. Если же ядро модулей не поддерживает, можно либо взять готовое кастомное ядро с поддержкой модулей (об этом читай в статье «Выбираем кастомное ядро для своего Android-аппарата»), либо собрать свое, включив нужные модули в образ ядра.
Далее настраиваем ядро с помощью стандартной команды make menuconfig, чтобы включить нужные нам модули. Затем собираем:
Сборка модулей
Для сборки исключительно модулей без самого ядра можно использовать либо команду make modules, либо, если ты включил всего один модуль, следующие команды (вместо net/netfilter подставь каталог собираемого модуля):
После сборки нам нужно все получившиеся файлы скопировать в единый каталог:
Затем, в случае полной компиляции, нужно собрать файлы в ZIP-архив. Не абы какой, а сформированный определенным образом (речь идет о файле обновления для кастомной консоли восстановления. — Прим. ред.). Для этого клонируем с гитхаба шаблон для данного файла:
Поскольку те утилиты, что имеются в этом автоматическом апдейтере, немного устарели (во всяком случае, на моем планшете они завершались с сегфолтом), нужно их заменить рабочими, которые берем на d-h.st/RgI, и, распаковав, заменяем ими файлы с теми же названиями в каталоге AnyKernel/kernel/. Кроме того, нужно изменить скрипт для автоапдейтера, находящийся в AnyKernel/META-INF/com/google/android/updater-script. В конечном итоге должно получиться примерно следующее:
run_ program ( "/ sbin/ busybox" , "dd" , "if=/ dev/ block/ mmcblk0p9" , "of=/ tmp/ boot. img" ) ; run_ program ( "/ tmp/ unpackbootimg" , "-i" , "/ tmp/ boot. img" , "-o" , "/ tmp/ " ) ; run_ program ( "/ sbin/ busybox" , "dd" , "if=/ tmp/ newboot. img" , "of=/ dev/ block/ mmcblk0p9" ) ;Путь /dev/block/mmcblk0p9 здесь — та часть, которую необходимо изменить. Это раздел boot, и почти на всех устройствах он будет представлен разными файлами. Чтобы узнать имя файла на своем устройстве, выполни следующую команду:
После правки запаковываем каталог:
Затем кидаем файл на устройство и устанавливаем его с помощью кастомного рекавери (TWRP или CWM).
После сборки и установки ядра должна получиться примерно такая картинка
Сборка приложений
Модули ядра позволяют добавлять функциональность исключительно низкого уровня, которую в общем случае нельзя использовать напрямую. Для добавления же функциональности, которую можно использовать напрямую, нужно собирать программы, чем мы сейчас и займемся, — попробуем собрать несколько приложений. Перед сборкой почти всех приложений нужно экспортировать ряд переменных:
И лишь затем можно приступать.
Bash собирать с помощью тулчейна Linaro очень легко — скачиваем исходники c официального FTP и распаковываем:
Выполняем скрипт configure и собираем:
$ . / configure --host = arm- linux --enable-static-link --without-bash-malloc --disable-rpath --disable-nlsПосле сборки появится файл bash, который мы и копируем на устройство в /system/xbin.
Bash, запущенный под Android
Стоит дать комментарии, почему bash нужно компилировать с помощью тулчейна Linaro. В Bionic, стандартной реализации библиотеки libc в Android, отсутствуют некоторые POSIX-совместимые функции, используемые bash (такие, например, как mkfifo() или wctomb()). Соответственно, собрать bash с использованием этой библиотеки без танцев с бубном не выйдет. В Linaro же, с другой стороны, используется стандартная POSIX-совместимая библиотека glibc. Поскольку мы собираем bash статически, нам все равно, что используется в Android, — главное, чтобы версия glibc, с которой мы собираем, подошла к ядру. Впрочем, сегодня обратное маловероятно.
Lshw — удобная консольная утилита, позволяющая быстро собрать информацию о доступном железе. Компилировать ее (опять же используя Linaro) достаточно просто. Скачиваем последнюю версию, распаковываем и заменяем в файлах src/Makefile и src/core/Makefile компилятор C++ на компилятор от Linaro (переменной CXX нужно присвоить значение arm-unknown-linux-gnueabi-g++), добавив также опцию --static в CXXFLAGS. Затем собираем обычным образом.
Это достаточно удобный консольный менеджер процессов для Linux. Для вывода информации он использует библиотеку ncurses, так что для его компиляции потребуется чуть больше времени. Создаем каталог htop, переходим в него и скачиваем ncurses:
Устанавливаем переменную $SYSROOT_ADDITIONS, запускаем configure с нужными параметрами и собираем:
$ . / configure --with-normal --without-shared --without-cxx-binding --enable-root-environ --disable-widec --disable-GPM --without-ada --without-tests --host = arm- linux --prefix = $SYSROOT_ADDITIONSПоскольку нам нет смысла включать поддержку юникода и мыши и мы не собираемся делать эту библиотеку динамической, отключаем эти опции (а также отключаем поддержку языка Ada).
Скачиваем и распаковываем сам htop, предварительно перейдя на уровень выше:
Вновь переопределяем переменные окружения для сборки:
$ export CFLAGS = "--static -I $ < SYSROOT_ADDITIONS >/ include --sysroot= $LINARO_SYSROOT " $ export LDFLAGS = "-L $ < SYSROOT_ADDITIONS >/ ncurses-5. 9/ lib --sysroot= $LINARO_SYSROOT "Конфигурируем и собираем:
Все бы хорошо, но после попытки запуска на устройстве вываливается ошибка «Error opening terminal: screen». Лечится это просто — достаем откуда‑нибудь каталог terminfo (я его выдернул из Terminal IDE, просто потому, что он оказался под рукой), копируем в /system/etc и выполняем в терминале на гаджете следующую команду:
После этого htop запустится без заморочек.
Htop, запущенный под Android
Tmux — менеджер терминалов, более продвинутая альтернатива известного всем админам screen, созданная разработчиками OpenBSD. В случае с Android его удобно использовать для работы с устройством через adb shell или SSH (например, ходить на TV Box или HDMI-стик под управлением Android. — Прим. ред.).
Для компиляции tmux нам понадобится все та же ncurses — ее можно взять из предыдущей сборки, скопировав каталог rootdir. Помимо ncurses, потребуется библиотека libevent. Создаем каталог tmux, устанавливаем переменную $SYSROOT_ADDITIONS и скачиваем libevent и сам tmux:
$ . / configure --host = arm- linux --disable-shared --disable-openssl --disable-samples -prefix = $SYSROOT_ADDITIONSПодготавливаемся к сборке tmux:
$ export CFLAGS = "--static -I $ < SYSROOT_ADDITIONS >/ include -I/ $ < SYSROOT_ADDITIONS >/ include/ ncurses --sysroot= $LINARO_SYSROOT " $ export LDFLAGS = " -L $ < SYSROOT_ADDITIONS >/ lib -L $ < SYSROOT_ADDITIONS >/ include -L $ < SYSROOT_ADDITIONS >/ include/ ncurses --sysroot= $LINARO_SYSROOT " $ export LIBEVENT_CFLAGS = "-I $ < SYSROOT_ADDITIONS >/ include --sysroot= $LINARO_SYSROOT " $ export LIBEVENT_LIBS = "-L $ < SYSROOT_ADDITIONS >/ lib -levent --sysroot= $LINARO_SYSROOT "И наконец, собираем сам tmux:
После сборки и заливки исполняемого файла перед запуском tmux, помимо переменной TERMINFO, нужно определить переменную TMPDIR — лично я использовал /data/local/tmp.
Стоит заметить, что tmux может работать только от рута, потому что права доступа не позволяют писать в вышеуказанную папку кому попало.
Сеанс SSH-соединения с Android. Для разделения терминала используется tmux. В левой части можно увидеть вывод lshw
Ngrep
А это крайне полезная утилита, позволяющая отлавливать пакеты с заданным паттерном (может быть нужно, например, для отладки RESTful-приложений). Для ее сборки потребуется собрать еще и libpcap. Как обычно, создаем каталог, куда и скачиваем libpcap, распаковываем его и собираем:
$ . / configure --host = arm- linux --disable-shared --with-pcap = linux --disable-dbus --prefix = $SYSROOT_ADDITIONSСкачиваем сам ngrep, распаковываем, собираем:
$ export CFLAGS = "--static -I $ < SYSROOT_ADDITIONS >/ include -I $ < SYSROOT_ADDITIONS >/ include/ pcap --sysroot= $LINARO_SYSROOT " $ export LDFLAGS = " -L $ < SYSROOT_ADDITIONS >/ lib -L $ < SYSROOT_ADDITIONS >/ include -L $ < SYSROOT_ADDITIONS >/ include/ pcap --sysroot= $LINARO_SYSROOT " $ . / configure --enable-static --disable-dropprivs --host = arm- linux --with-pcap-includes = $ < SYSROOT_ADDITIONS >/include/pcapРазберем опции обоих configure. В случае с libpcap мы отключили поддержку DBUS по понятной причине отсутствия его в Android и указали тип захвата пакетов (поскольку компилируем мы в конечном итоге под Linux, то и тип захвата ставим соответствующий). Для ngrep же мы указали путь к заголовочным файлам libpcap и отключили понижение привилегий по причине отсутствия файла /etc/passwd в Android, куда эта функциональность смотрит.
Перехватываем пакеты, содержащие слово google, используя ngrep
Linux Deploy
Компиляция программ может занять немало времени, да и не всякое приложение можно с легкостью собрать (например, текстовый torrent-клиент rtorrent потребует сборку libtorrent, а уж эта библиотека, в свою очередь, потянет за собой Boost). И если для пары‑тройки приложений это не столь критично, то в случае сборки большего количества трудозатраты становятся слишком велики. Да и сами приложения в случае статической компоновки могут раздуваться до невообразимых размеров. Однако есть решение и для этой ситуации — Linux Deploy, который с легкостью можно найти в Google Play.
Поскольку Android построен на базе ядра Linux, а изменения в нем не настолько сильны, чтобы мешать запуску обычных POSIX-приложений (что и было продемонстрировано выше), существует возможность развертывания chroot-окружения (с пробросом соответствующих псевдофайловых систем) и установки в нем userland-части дистрибутивов, поддерживающих архитектуру ARM. Приложение Linux Deploy делает именно это, создавая образ и монтируя его как loop-устройство.
Поддерживаются следующие дистрибутивы:
- Ubuntu;
- OpenSUSE;
- Fedora;
- Arch Linux;
- Gentoo;
- и, наконец, Kali Linux (его наличие, несомненно, обрадует пентестеров).
После развертывания и запуска системы в нее необходимо каким‑то образом войти. Для этого существует два метода: по SSH и через VNC. При наличии SSH-сервера в самом Android в Linux Deploy нужно либо его отключить, либо переопределить порт. А если использовать VNC, необходимо доустановить в Android VNC-клиент (рекомендую bVNC). Стандартные имя пользователя / пароль — android/changeme соответственно.
Запуск окружения Ubuntu в Linux Deploy Ubuntu в Linux Deploy по виду неотличим от десктопного
В данном контейнере можно производить практически те же действия, что и в обычном настольном дистрибутиве Linux, — со скидкой на поддерживаемую ядром функциональность. Замечу, что контейнер не изолирован от основной системы, и запуск служб в некоторых дистрибутивах не поддерживается по причине использования в них современных систем инициализации. Также стоит помнить, что приложения в контейнере нативные, — это изрядно кушает батарею.
Заключение
В статье были описаны два (а если считать компиляцию ядра с модулями, то три) метода расширения функциональности на Android. Подведем итоги.
Компиляция ядра и модулей имеет смысл только в тех случаях, когда тебе нужна низкоуровневая функциональность — будь то поддержка ФС или, допустим, модуль iptables. В современных стоковых ядрах поддержка загрузки модулей чаще всего отключена, так что для добавления функциональности всяко потребуется компиляция всего ядра.
В случае с компиляцией небольших POSIX-приложений можно попытаться использовать гугловский NDK, идущий с Bionic и практически несовместимый с POSIX, а можно использовать сторонний тулчейн для архитектуры ARM, в котором, как правило, есть библиотека glibc, и компилировать приложения статически. Однако следует помнить, что статически слинкованное приложение весит достаточно много, таким образом, нелишним будет еще раз подчеркнуть, что этот метод годится лишь для небольших приложений.
Для запуска крупных приложений можно использовать Linux Deploy, позволяющий развернуть на Android полноценную userland-часть популярных дистрибутивов. Однако и у него есть недостатки. Во‑первых, он изрядно кушает батарею, а во‑вторых, размер образа с данной userland-частью не может быть больше 4 Гб, так что, если раскатал губу на кучу приложений, закатай ее обратно.
В целом же запуск POSIX-приложений в Android вполне возможен — что и было показано в статье. А уж каким способом ты будешь что‑то делать, ты волен выбирать сам. Stay freedom.
Библиотеки, портированные на Android
Несмотря на то что Android не является в полной мере POSIX-совместимой ОС, под него все же были портированы некоторые из библиотек, доступных под десктопной Linux. Посмотрим, что это за библиотеки:
- SDL — удобная «обертка» вокруг низкоуровневых мультимедиафункций; используется в основном для разработки игр;
- FFmpeg — конвертация большинства аудио- и видеоформатов;
- Qt — начиная с пятой версии, Qt доступна и под Android;
- Unity — игровой движок;
- Ogre — «обертка» вокруг OpenGL для работы с 3D-графикой.
В общем, с точки зрения портирования приложений выбрать есть из чего.
Дистрибутивов для пентеста множество. Одни популярны, другие — не очень, но все они преследуют цель дать хакеру удобный и надежный инструмент на все случаи жизни. Большинством из программ в составе таких кастомизированных сборок средний хакер никогда не воспользуется, но для понтов статусности их добавляют («Смотри, у тебя 150 утилит, а у меня — 12 000!»). Сегодня мы постараемся сделать обзор большинства интересных дистрибутивов, как популярных, так и незаслуженно забытых. Если же мы что-то упустили — не стесняйся использовать комментарии. Поехали!
WARNING
Хотя эти дистрибутивы и предназначены для атак, ответственность за их использование несешь только ты! Не забывай, что применение этих знаний во вред карается по закону.
Начнем с малоизвестного, но оттого не менее интересного дистрибутива. NST (Network Security Toolkit) основан на Fedora и предназначен для сетевых атак. В основе интерфейса — MATE, который вызывает ощущение начала нулевых. В комплекте идет несколько десятков самых важных инструментов, в основном сетевые сканеры, клиенты для всевозможных служб и разного рода перехватчики трафика. Но не хватает таких полезностей, как, например, masscan, и даже банального aircrack, хотя airsnort имеется.
Основная часть софта лежит в папке Internet
Больше всего вкусностей можно найти в папке Applications → Internet. Тут у нас и Angry IP Scanner, написанный, кстати, на Java, и Ettercap, и даже OWASP ZAP, о котором мы уже писали в «Хакере». Есть неплохой сборник модулей для всевозможного спуфинга и скана у пакета netwag. В деле он показал себя неплохо, жаль только, не очень удобен и жутко устарел.
Весь проверенный мной софт работает прекрасно. В общем, всем скучающим по древнему интерфейсу и привычным инструментам рекомендуется.
- Первый релиз: 2013 год
- Основан на: Debian
- Платформы: x86, x64, ARM, VirtualBox
- Графическая оболочка: Xfce
Как ты, конечно, знаешь, Kali — один из самых распиаренных дистрибутивов для хакеров, и было бы странно, если бы мы про него не написали. О нем знают даже школьники, а с относительно недавних пор он доступен в виде приложения прямо из Microsoft Store! Конечно, доступность — несомненный плюс, но система слегка перегружена набором инструментов (хотя и не так сильно, как BlackArch), к тому же часть из них из коробки работает криво или не работает вообще.
Защиты от дурака в Kali тоже не предусмотрено. Как показывает практика, не всем пользователям понятно, что не стоит делать эту систему основной. От ядра до оболочки она была создана и оптимизирована для выполнения боевых задач на фронтах ИБ и плохо пригодна для спокойной ежедневной работы. Многие нужные в быту механизмы там попросту отсутствуют, а попытка их установить, скорее всего, вызовет сбои в нормальной работе ОС, если не выведет ее из строя полностью.
Короче, Kali как спички — мощная штука в умелых руках, ее легко достать, но детям лучше не давать. Охватить разом все возможные официальные и неофициальные утилиты (а их, на минуточку, больше 600) этой системы не представляется возможным хотя бы потому, что постоянно появляются новые и новые модули, фреймворки, утилиты и прочие прибамбасы.
Kali предназначена для широкого спектра задач, но основная из них — атаки в сетевой среде, например, поиск уязвимостей в веб-приложениях и получение доступа к беспроводным сетям. Как наследник BackTrack, Kali вообще неплохо приспособлена для работы с беспроводными каналами связи, в особенности Wi-Fi. Проверка на прочность удаленных хостов тоже возможна с помощью, например, Metasploit (подробнее о нем — в нашем недавнем обзоре), но именно на работу с Wi-Fi ориентировано ядро и значительная часть инструментов.
Еще из плюсов отмечу наличие в штатной поставке большого количества словарей для различных атак, не только на Wi-Fi, но и на аккаунты в интернете и на сетевые службы.
Kali работает в WSL
Для еще большего удобства использования на официальном сайте предлагается версия дистрибутива для виртуальных машин, ведь при взломе куда разумнее использовать систему без установки — мало ли кто потом будет копаться в твоем компе!
Вердикт такой: если умеешь пользоваться — классная штука, но не вздумай показывать ее ребенку. Один из авторов видел, что будет, если нарушить это указание.
Родина DEFT — солнечная Италия, и он щедро, как пицца сыром, посыпан разнообразными инструментами для разведки и взлома. При этом они не примотаны к дистрибутиву синей изолентой, а вполне гармонично встроены в него. Все вместе напоминает интересный и полезный в жизни швейцарский нож.
Разработан DEFT на платформе Lubuntu и снабжен удобным графическим интерфейсом. В продукт входит набор профильных утилит, начиная с антивирусов, систем поиска информации в кеше браузера, сетевых сканеров и других полезностей и заканчивая инструментами, которые необходимы при поиске скрытой информации на диске.
Используя эту ОС, не составит труда получить доступ к стертым, зашифрованным или поврежденным данным на различных видах физических носителей.
Основной инструментарий прячется в разделе DEFT, который, в свою очередь, находится в некотором подобии меню «Пуск».
Изначально этот дистрибутив был предназначен для нужд сетевой полиции и специалистов по реагированию на инциденты в области ИБ, поэтому еще одна сильная сторона DEFT — это конкурентная разведка, в том числе анализ взаимосвязей аккаунтов соцсетей.
Есть даже интересная утилита для обнаружения геолокации заданного аккаунта LinkedIn или Twitter. Я не смог проверить, насколько эффективно это работает в данный момент, но с определением принадлежности аккаунта к стране и городу она справляется.
В отличие от Kali Linux или Tsurugi, в DEFT защита от дурака встроена. Без должной подготовки почти ни один инструмент попросту не запустить, а без глубокого понимания работы защитных механизмов тут вообще делать нечего.
Буквально каждое приложение или опция требует прав root, так что не спеши сразу запускать все подряд или создавать непривилегированного пользователя.
Также я обнаружил «подарочек»: несколько репозиториев, откуда DEFT берет обновы, закрыты ключами. Пару дней я рылся по форумам, пока не нашел, откуда запросить данные, да и сами ключи тоже нашлись.
В итоге эта система хороша для форензики и расследования инцидентов, в особенности если есть физический доступ к носителям информации — будь то диск, флешка или смартфон (хакера, начальника, сотрудника, конкурента, жены, любовницы, ее бати — нужное подчеркнуть).
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
8 марта фонд CNCF, созданный при The Linux Foundation, представил значительно обновлённую версию своей «карты ранее неизведанной территории облачных (cloud native) технологий» — Cloud Native Landscape 2.0. Собранная в рамках этого проекта информация ориентирована на компании, которые только начинают свой путь в мир инфраструктуры для cloud native-приложений, и призвана познакомить их с множеством имеющихся решений с открытым исходным кодом и не только.
Путь к cloud native
Для начала разберёмся, что же называют «cloud native» в фонде с созвучным названием (Cloud Native Computing Foundation). В понимании CNCF это приложения (и сопутствующая инфраструктура), которые наделены следующими свойствами:
- возможность эксплуатации, т.е. управления жизненным циклом приложения/системы внешними инструментами;
- возможность наблюдения, т.е. наличие механизмов получения текущего состояния и производительности;
- эластичность, позволяющая увеличиваться и уменьшаться в размерах в рамках доступных ресурсов и в зависимости от меняющейся нагрузки;
- отказоустойчивость, гарантирующая быстрое автоматическое восстановление в случае падений;
- динамичность, включающая в себя быстрые развёртывания (деплой), итерации, изменения конфигурации.
Итак, рекомендуемый в CNCF Trail Map — процесс освоения облачной инфраструктуры — выглядит следующим образом:
Cloud Native Landscape
Сам же «ландшафт» — это довольно обширный каталог продуктов, не ограниченных проектами самой CNCF и даже свободными лицензиями (хотя большинство из них относятся к Open Source). Для удобства они разбиты по категориям:
- Разработка приложений: базы данных и хранилища данных (Vitess, CockroachDB…), очереди (RabbitMQ, Kafka…), управление исходным кодом (GitLab, GitHub…), моделирование/определение приложений (Docker Compose, Bitnami…), непрерывная интеграция и доставка (GitLab Runner, Jenkins…);
- Оркестровка и управление: планирование/оркестровка (Kubernetes, Mesos…), взаимодействие и обнаружение сервисов (CoreDNS, Consul…), управление сервисами (gRPC, Linkerd…);
- Окружение для исполнения: облачные хранилища (Rook, Ceph…), runtime для контейнеров (containerd, rkt…), облачные сетевые решения (CNI, open vSwitch…);
- Provisioning: tooling и управление для хостов (Ansible, Chef…), инфраструктурная автоматизация (Helm, Terraform…), реестры контейнеров (Docker Registry, Quay…), безопасность образов (Notary, Clair…), управление ключами (Vault, Spire…);
- Платформы: сертифицированные дистрибутивы Kubernetes (OpenShift, Tectonic…), сертифицированные платформы Kubernetes (Google Kubernetes Engine, Azure Container Service…), несертифицированные реализации Kubernetes (Amazon EKS, ContainerShip…), PaaS и контейнерные сервисы (Heroku, Hyper.sh…);
- Наблюдение и анализ: мониторинг (Prometheus, Datadog…), логирование (fluentd, Graylog…), трассировка (Jaeger, Zipkin…), serverless (множество подкатегорий вынесено в отдельную таблицу);
- Облака: публичные (AWS, Google Cloud…) и частные (OpenStack, MAAS…);
- Сертифицированные сервис-провайдеры Kubernetes (Heptio, Huawei…).
(Полное изображение в GitHub.)
(Примечание: в этой таблице можно также увидеть, что Kubernetes стал первым в истории CNCF проектом, достигнувшим статуса graduated, т.е. «выпускника». Об этом было объявлено совсем недавно — 6 марта. Все остальные проекты CNCF относятся к категориям incubating и inception.)
Интерактивный Landscape
Кроме того, со второй версией Cloud Native Landscape в CNCF запустили интерактивную веб-версию каталога, доступную как landscape.cncf.io (для serverless — s.cncf.io).
Контент для Landscape
Каталоги Cloud Native Landscape генерируются на основе данных, получаемых из специального YAML, к которому добавляются сведения из внешних сервисов (информация о проекте в GitHub, финансовые показатели из Crunchbase и Yahoo Finance), в результате чего получается новый YAML, а также JSON, который уже и используется приложением для вывода данных.
В CNCF приветствуют добавление новых проектов, что делается через pull request к упомянутому landscape.yml. У проекта должно быть хотя бы 250 звёздочек на GitHub и он должен соответствовать одной из имеющихся категорий (подробнее о предъявляемых требованиях см. здесь).
Основная таблица Cloud Native Landscape, как и её аналог для serverless, и упомянутый ранее Trail Map, доступны в разных форматах. Все данные проекта распространяются на условиях свободной лицензии Apache License 2.0 за исключением графических файлов и YAML (они лицензированы под Creative Commons Attribution 4.0), сведений от Crunchbase и логотипов проектов/продуктов.
Данная статья поможет настроить рабочее окружение React Native на операционной системе Linux под мобильную операционную систему Android . В данной статье будет использован популярный дистрибутив - Ubuntu .
Установка пакетов Node.js, OpenJDK
Приступаем к установке пакета Node.js через терминал. Для начала установки необходимо установить Curl для этого вставьте в терминал следующую команду:
А затем, после окончания загрузки, вставьте следующую команду:
Теперь можно установить Node.js командой:
Таким образом Вы установите Node.js , актуальную инструкцию по установке можно найти на официальном сайте Node.js.
Для установки OpenJDK вставьте в терминал следующую команду:
Проверить правильность установки OpenJDK можно вставив в терминал команду:
Установка Android Studio
Теперь вам потребуется установить Android Studio . В Ubuntu его можно установить используя Snap Store . Для этого в поиске Snap Store введите Android Studio .
Выберите его и нажмите кнопку Install .
После окончания загрузки запустите Android Stuido и следуйте инструкциям установки. Рекомендуется оставить все настройки по умолчанию.
Когда Android Studio завершит установку он запуститься автоматически.
Установка Android SDK
Для начала работы с ОС Android нужно установить определенные компоненты Android SDK . Для их установки откройте Android Studio и нажмите справа внизу кнопку Configure -> SDK Manager . Если ее нет, перезапустите приложение.
В открывшемся SDK Manager в правом нижнем углу установите флажок Show Package Details .
Найдите и разверните список Android 10 (Q) , и убедитесь, что отмечены следующие элементы:
- Android SDK Platform 29
- Intel x86 Atom_64 System Image и/или Google APIs Intel x86 Atom System Image
Затем выберите вкладку SDK Tools и также установите флажок рядом с Show Package Details .
Найдите и разверните запись с пунктом Android SDK Build-Tools , убедитесь, что выбрана версия 29.0.2 .
Нажмите Apply , чтобы загрузить и установить Android SDK и соответствующие инструменты сборки.
Во время установки примите лицензионное соглашение.
Настройка переменной сред ANDROID_HOME
Для настройки переменной ANDROID_HOME перейдите в папку Home
и включите отображение скрытых файлов.
Папка Home будет выглядеть примерно так:
Далее Вам нужно открыть файл .bashrc
и добавить в него следующие строки:
Затем введите в терминал следующую команду:
Таким образом вы добавите переменную ANDROID_HOME . Вы можете убедиться в правильности установки введя команды:
Настройка эмулятора Android
Для того что бы создать или настроить эмулятор нужно, находясь на главном окне Android Studio , выбрать пункт Configure -> AVD Manager .
Далее нажать кнопку Create Virtual Device. ,
выбираем модель эмулируемого смартфона (Например, Pixel 2) и нажимаем кнопку Next .
В открывшемся окне в столбце Release Name выбрать Q Download (Download является ссылкой на скачивание выбранного образа эмулятора), скачивание и установка начнется автоматически. На момент создания инструкции рекомендуемый API Level 29 , при установке уточните актуальную версию.
Затем нажмите кнопку Next -> Finish .
Можно проверить работу эмулятора нажав на зеленую кнопку в форме треугольника, должен появится интерфейс в виде смартфона.
Подключение реального Андроид девайса
Если возникли проблемы с эмулятором, можно использовать реальный смартфон. Для этого нужно стать разработчиком в своем смартфоне. Для этого переходим в настройки смартфона и выбираем пункт Об устройстве Далее нужно найти пункт Версия. и нажать 5-7 до того пока не появится надпись "Вы стали разработчиком". Подключаем смартфон через USB кабель и в зависимости от прошивки включаем режим отладки по USB. Для каждой прошивки алгоритм включения отличается друг от друга. Подробнее.
Установка Watchman
Watchman - это инструмент от Facebook для просмотра изменений в файловой системе. Его установка не обязательна, но без него может возникнуть множество проблем. Для установки Watchman потребуется установить Homebrew . Для этого вставьте в терминал следующую команду:
Рекомендуется установить Homebrew в папку home , для этого введите пароль от своей учетной записи и нажмите кнопку Enter .
Читайте также: