4 лучших эмулятора android для linux

Шаг 2. Установка эмулятора терминала и проверка правильности его работы.

После того как откроется рабочее окно приложения, введите слово «su». Утилита запросит у вас предоставить root-доступ, и вы должны дать их, поскольку она запускает системные скрипты, которые мы позже будем использовать для запуска Ubuntu.

Чтобы проверить, работают ли правильно терминал и библиотеки BusyBox, введите команду «busybox arping —help». Если терминал выдаст вам текст с множеством параметров, таких как -f -q -b, всё работает. Если нет, проверьте, есть ли в вашем телефоне рут-права, правильно ли выполнена установка BusyBox, и есть ли у терминала разрешения. Если всё в порядке, можно продолжить.

Процесс установки

Сам процесс установки довольно прост и не способен нанести вред гаджету. Несмотря на это, ответственность за любые неисправности, которые могут возникнуть в процессе инсталляции, лежат на пользователе устройства

Важно убедиться, что на планшете или смартфоне получен рут, а также установлены библиотеки BusyBox

Установка эмулятора терминала

Наиболее популярный эмулятор терминала типа Linux on Android можно скачать в официальном магазине Play Market (). Достаточно установить его на планшет и запустить в обычном режиме. После открытия основного рабочего окна необходимо ввести команду «su» и предоставить программе рут-доступ. Сделать это нужно обязательно, так как будут выполняться системные скрипты, которые использует Ubuntu.

Обратите внимание! Проверить работоспособность терминала просто. Достаточно вписать команду «busybox arping —help»

Если система выдаст множество параметров, то все нормально. Если нет, то следует проверить гаджет на наличие рут-прав.

Скрипты в BusyBox помогают установиться систему

Загрузка скриптов и системы Ubuntu

Если установка терминала и предоставление ему соответствующих привилегий прошли успешно, то дело за малым, ведь следующие шаги достаточно просты. Необходимо подключить устройство к ПК в режиме USB-накопителя, чтобы SD-карта могла определиться на компьютере.

Далее следует создать на ней папку под названием «Ubuntu» и скачать некоторые файлы. Они содержат скрипты запуска и саму файловую систему ОС. После разархивации два файла перемещаются в созданный каталог.

Запуск Linux

На последнем шаге переходят в приложение с эмулятором терминала и снова вводят «su». Вторая команда выглядит так: «cd /mnt/sdcard». Для проверки работоспособности системы можно написать «ls» и проверить, распознает ли эмулятор папки, включая недавно созданную директорию.

Для запуска операционной системы вводят «cd/ubuntu», а потом — «sh ubuntu.sh». Начнется процесс установки, в конце которого потребуется указать разрешение экрана. Можно установить «1280×720» или меньшее, что повысит производительность.

Ubuntu на андроид должна устанавливаться довольно быстро

Обратите внимание! Теперь ОС работает, но увидеть ее будет нельзя. Для этого можно подключить графический интерфейс на основе любого клиента VNC, скачанного из Play Market

В них необходимо указывать логин (user), пароль (ubuntu) и адрес (localhost).

Установка эмулятора терминала и проверка правильности его работы

После того как откроется рабочее окно приложения, введите слово «su». Утилита запросит у вас предоставить root-доступ, и вы должны дать их, поскольку она запускает системные скрипты, которые мы позже будем использовать для запуска Ubuntu.

Чтобы проверить, работают ли правильно терминал и библиотеки BusyBox, введите команду «busybox arping —help». Если терминал выдаст вам текст с множеством параметров, таких как -f -q -b, всё работает. Если нет, проверьте, есть ли в вашем телефоне рут-права, правильно ли выполнена установка BusyBox, и есть ли у терминала разрешения. Если всё в порядке, можно продолжить.

Когда следует использовать chroot?

Среда chroot обеспечивает функциональность, аналогичную виртуальной машине, но это более легкое решение. Связанная система не требует установки и настройки гипервизора, например VirtualBox или же Диспетчер виртуальных машин. Также не требуется, чтобы ядро ​​было установлено в связанной системе. Связанная система использует ваше существующее ядро.

В некотором смысле среды chroot ближе к контейнерам, таким как LXC чем к виртуальным машинам. Они легкие, быстро развертываются, а создание и запуск можно автоматизировать. Как и в случае с контейнерами, один из удобных способов их настройки — это установить достаточно операционной системы, чтобы вы могли выполнить то, что требуется. На вопрос «что требуется» можно ответить, посмотрев, как вы собираетесь использовать свою среду chroot.

Вот некоторые распространенные варианты использования:

Разработка программного обеспечения и проверка продукта. Разработчики пишут программное обеспечение, а группа проверки продукта (PV) тестирует его. Иногда PV обнаруживает проблемы, которые невозможно воспроизвести на компьютере разработчика. На компьютере разработчика установлены всевозможные инструменты и библиотеки, которых не будет у обычного пользователя и PV. Часто новое программное обеспечение, которое работает для разработчика, но не для других, оказывается, использует ресурс на ПК разработчика, который не был включен в тестовую версию программного обеспечения. chroot позволяет разработчикам иметь на своем компьютере простую ванильную среду, в которую они могут опустить программное обеспечение, прежде чем передавать его PV. Адаптивная среда может быть настроена с минимальным набором зависимостей, необходимых для программного обеспечения.

Снижение риска развития. Разработчик может создать специальную среду разработки, чтобы все происходящее в ней не могло испортить его настоящий компьютер.

Запуск устаревшего программного обеспечения. Иногда нужно просто запустить старую версию чего-то. Если к старому программному обеспечению предъявляются требования, которые могут противоречить вашей версии Linux или быть несовместимыми с ней, вы можете выполнить chroot среду для проблемного ПО.

Приложения для ограждений. Запуск FTP-сервера или другого подключенного к Интернету устройства в среде chroot ограничивает ущерб, который может нанести внешний злоумышленник. Это может быть ценным шагом в усилении безопасности вашей системы.

Установка приложения Complete Linux Installer

Вводим в меню поиска Google Play слово “emulator” и получаем список из нескольких десяткой примерно одинаковых утилит

Все они хороши, но мы остановили внимание на приложении Complete Linux Installer. Оно совершенно бесплатно, прекрасно локализовано и снабжено подробнейшей инструкцией для новичков

Программу можно загрузить по адресу . Алгоритм установки программы ничем не отличается установки любого другого программного обеспечения, поэтому на этом моменте мы останавливаться не будем.

к содержанию

Работа с приложением Complete Linux Installer

Перед началом работы с программой хотелось бы подчеркнуть еще раз: то, что мы описываем в данной статье, это не установка Linux вместо Android, а эмуляция работы одной системы в другой.

Итак, запускаем приложение и соглашаемся на установку дополнительных программных компонентов. Именно работа с этими модулями впоследствии существенно облегчит вам работу в ОС Linux.

Первый запуск

Как и упоминалось ранее, данное программное обеспечение требует для полноценного функционирования права root, о чем приложение и напомнит вам во всплывающем окне. Предоставляем программе полный доступ к системным функциям мобильного устройства.

Запрос суперпользователя

На этом первоначальная подготовка эмулятора к работе закончена. Перед вами откроется основное меню приложения. Переходим к подпункту “Руководство по установке”.

Руководство по установке

Эмулятор просканирует аппаратную начинку вашего гаджета и выдаст список операционнок, которые гарантированно запустятся на вашем мобильном устройстве. Выбираем для примера Ubuntu 13.10.

Загрузка образа

С этого момента программа начинает “вести” вас по этапам установки операционной системы, сопровождая каждое необходимое действие подробнейшими инструкциями. Например, ознакомившись с требованиями эмулятора на первом шаге, обязательно установите “Терминал” и “VNC Viewer” на втором. Только после этого выбирайте пункт “Скачать образ”.

Загрузка файлов

Прочтите описание различий между дистрибутивами операционной системы Линукс и выберите необходимый именно вам.

Далее укажите приложению предпочтительный метод получения архива с образом системы (прямая загрузка или скачивание с помощью торрент-клиента) и дождитесь окончания загрузки файла. О том, как работать с торрент-файлами на Android-устройствах можно узнать из другой нашей статьи.

Создайте в корне внешнего накопителя гаджета папку с именем будущей системы. Это значительно упростит программе поиск необходимых файлов. В нашем случае мы создаем директорию “Ubuntu”. Распакуйте скачанный архив в эту папку.

Операции с файлами

В итоге в каталоге “Ubuntu” должны появиться два файла. Один из них – с расширением .img. Это и есть образ запускаемой платформы Линукс.

После выполнения указанных действий перейдите в подпункт “Запуск” основного меню complete Linux Installer и перейдите во вспомогательное меню “Settings” в правом верхнем углу окна. Выбрав опцию “Изменить”, укажите приложению полный путь к исполняемому файлу системы. Подтвердите свой выбор нажатием на кнопку “Сохранить изменения”.

Завершение установки

На этом очередной этап установки альтернативной операционной системы в память вашего гаджета закончен. Можете смело выбирать опцию “Запуск Linux”.

Запуск системы

Приложение в фоновом режиме запустит терминал для выполнения тестовых команд и запросит для него root-доступ к системным функциям устройства. Разрешаем.

Запрос системы

Теперь ваш смартфон или планшет сможет работать как эмулятор Linux для Android и вам будут доступны все возможности ОС с пингвином на логотипе – от выполнения простейших команд в терминале до установки полноценного графического окружения.

Рабочий стол Linux

к содержанию

Сервер для резервного копирования под Linux

UrBackupВеб-интерфейс UrBackup

  • Установить настоящий дистрибутив через Linux Deploy — опенсорсное приложение с открытым исходным кодом для простой и быстрой установки GNU/Linux на Android.
  • Установить Linux-окружение Termux.

Magiskинструкции

  1. Подключаем HDD/SSD к телефону. Можно подключить его USB-кабелем напрямую: в этом случае мы получим максимально возможную скорость. Но на реальном файл-сервере или сервере бэкапов скорость не всегда является самым критичным фактором, разве что на очень больших объёмах чтения/записи. Важнее стабильность. С USB-кабелем гораздо выше риск столкнуться с ошибками ввода-вывода в процессе копирования.
    Поэтому для повышения надёжности лучше использовать USB-хаб, в котором есть microUSB для выхода на телефон и стандартный USB для подключения HDD, плюс дополнительный разъём для питания.
    В идеале нужно покупать хаб с адаптером Ethernet. Сервер может работать и по WiFi, но кабельное подключение надёжнее.USB-хаб с разъёмом Ethernet и выходом microUSB
  2. Примонтировать HDD к телефону, то есть сделать его доступным для операционной системы на телефоне. Если не планировать форматирование диска в будущем, то его можно сразу добавить в — и он будет монтироваться при каждой загрузке. После примонтирования его уже не получится форматировать, да это обычно и не нужно. Лучше монтировать его как логический диск, а не физическое устройство, потому что в последнем случае его имя () может измениться после перезагрузки, а это нежелательно. Если примонтировать его как логический диск (), то имя не изменится.
    Найти подключённый HDD, то есть узнать его имя в системе, можно командой .
  3. На рутованный телефон скачиваем файлы .apk Linux Deploy и BusyBox. После этого устанавливаем BusyBox, конфигурируем Linux Deploy: выбираем Linux-дистрибутив, архитектуру, путь установки (HDD), размер образа, файловую систему, устанавливаем логин и пароль, разрешение использовать SSH-сервер и т. д. Указываем месторасположение BusyBox, затем ставим Linux Deploy. После установки нажимаем кнопку — и на телефоне Android загружается нормальный Linux. Например, Debian.
  4. Поскольку мы при установке разрешили использовать SSH-сервер, то к нему можно подключиться по стандартному порту 22 с учётными данными, которые указали при установке Linux Deploy. IP-адрес можно посмотреть в программе.
  5. Скачиваем и устанавливаем UrBackup:

  6. Создаём рабочую директорию, устанавливаем стартовый скрипт, запускаем сервис и создаём крон для него. После этого сервер будет доступен через веб-интерфейс по адресу .
  7. Подключаем пользователей(это можно сделать через веб-интерфейс) Windows, Linux и т. д. У пользователей на машинах необходимо поставить соответствующее программное обеспечение, там будут инструкции, как соединиться с сервером и добавить конкретную машину на сервер.

Root Android и установить Linux

Для пользователей с root-правами или тех, кто хочет потратить время на рутирование своего Android-устройства

, установка Linux проще и быстрее.

Как установить Linux на устройство Android с рутом

Если у вас есть рутированное устройство, вы можете установить различные версии Linux на Android, используя инструмент Linux Deploy. Это лучше всего сделать, сначала подключив телефон к сети Wi-Fi.

Начните с установки BusyBox, который обеспечивает некоторые расширенные возможности root. Далее установите Linux Deploy, При первом запуске нажмите Начало чтобы убедиться, что права root включены, нажмите настройки в правом нижнем углу.

Используйте отображаемое меню параметров, чтобы выбрать нужный распределение, Debian, Ubuntu, Gentoo, Fedora и многие другие доступны для установки. Мы использовали Arch Linux.

Вам нужно будет проверить включить коробка под графический интерфейс пользователя для просмотра рабочего стола Linux на вашем телефоне. Также убедитесь, что VNC выбран для Графика подсистема. Далее проверьте разрешение экрана под Настройки графического интерфейсаи убедитесь, что вы довольны Среда рабочего стола,

Наконец, найдите Имя пользователя и Пользовательский пароль записей. Или запишите их или замените на что-нибудь более запоминающееся для вас.

Выйдите из этого меню, затем нажмите три точки в правом верхнем углу и выберите устанавливать, тогда Ok,

Когда это будет сделано, установите VNC Viewer из магазина Play. В Linux Deploy нажмите Начало запустить Linux. Затем откройте VNC Viewer и подключитесь к локальный: 5900 для просмотра рабочего стола Linux с учетными данными, которые вы ввели ранее.

После запуска вы можете установить программное обеспечение Linux с помощью терминала обычным способом.

Поздравляем: теперь у вас Linux работает на Android!

Как установить Kali Linux на Android (требуется рут)

Вышеприведенный метод Linux Deploy для запуска дистрибутивов Linux на Android, вероятно, является лучшим. Он предоставляет хороший выбор версий Linux, включая Kali Linux.

Хотите использовать свой телефон или планшет на Android в качестве устройства для тестирования на проникновение? В то время как вы найдете различные полезные сетевые инструменты для Android, лучшим вариантом будет портативная версия Kali Linux. Просто следуйте инструкциям выше, используя Linux Deploy, и выберите Kali Linux для установки на Android.

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

Как мы тестировали эмуляторы

Мы начали с установки разных решений, чтобы посмотреть, с какими проблемами вы можете столкнуться перед тем, как будете готовы запускать приложения. Например, Anbox, согласно информации на его сайте, находится на стадии пре-альфа. Далее мы попытались установить приложения напрямую, с помощью Google Play и технологий сторонней загрузки. Один из методов — использовать adb на работающем экземпляре. Мы также замерили производительность каждого эмулятора и требуемый объем памяти.

Еще один аспект тестирования — зачем разработан каждый пакет; например, для того, чтобы играть в игры Android на своем ПК. Кстати, наша тестовая машина — Intel Core i3 CPU с 4 ГБ памяти, что для запуска эмуляторов весьма ограничивает. И если у вас есть серьезная причина запускать приложения Android на своем компьютере Linux, купите и установите ОЗУ побольше.

Зачем использовать удаленное приложение?

Поскольку ваша цель — управлять компьютером с мобильного устройства, в большинстве случаев необходимо установить на компьютер дополнительное программное обеспечение. Большая часть программного обеспечения для удаленного управления (иногда называемого «программным обеспечением для удаленного рабочего стола») работает по принципу клиент / сервер.

Для упрощения это означает, что вы должны настроить одно устройство в качестве сервера (в нашем случае, компьютер). Затем вы устанавливаете клиентские приложения на любые устройства, к которым хотите подключиться (Android). Эти клиентские устройства предлагают различные степени контроля над устройством, обозначенным как сервер.

Но зачем использовать приложения удаленного управления? Некоторые из применений включают в себя:

  • Выполнять резервное копирование
  • Контролируйте свои загрузки
  • Скопируйте важный файл для проверки или редактирования
  • Подтвердите безопасность вашего устройства Linux
  • Приостановить фильм в вашем медиацентре Linux
  • Удаленное администрирование
  • Удаленная техническая поддержка

Что вы можете ожидать от приложений удаленного управления? Это зависит от области применения приложения:

  • Некоторые ведут себя как удаленная мышь
  • Другие обеспечивают ввод текста через клавиатуру Android
  • Удаленные приложения доступны для определенных настольных приложений
  • Приложения для совместного использования (зеркального отображения) рабочего стола обеспечивают удаленный доступ ко всему рабочему столу

Давайте посмотрим на лучшие удаленные приложения Linux для Android, охватывающие все возможные области применения.

Шаг 1. Установите библиотеки BusyBox.

Убедитесь, что у вас получены права суперпользователя. Практически на каждом устройстве вы можете это сделать, проверив, есть ли у вас приложение Superuser. Если рут-прав нет, можно их получить. Для этого узнайте инструкции, касающиеся именно вашего девайса.

Библиотеки BusyBox помогут вам взаимодействовать с системой Андроид. Вы можете скачать инсталлятор из Play Store (или Android Market), перейдя сюда (https://play.google.com/store/apps/details?id=stericson.busybox) и загрузив его. Перейдите на вкладку «Установка BusyBox» и нажмите кнопку «Установить». Как только утилита будет установлена, можно перейти к следующему шагу, установив эмулятор терминала.

Доступность источника

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

Но это не всегда так. У всего от Google есть две ветви: одна для внутренней разработки и одна для публики. Google делает это, чтобы сохранять в секрете новые функции вплоть до выпуска. Постоянные разработчики и особо одаренные могут использовать общественную ветвь, чтобы присылать заплатки. В этом разделе мы рассмотрим, какие используются языки программирования и доступно ли дерево для скачивания. Мы также выясним размер дерева исходника. Помните, что дерево для одного пакета обычно поверх исходного кода ядра и инструментов разработки.

Всё дерево Android доступно на www.source.android.com. Пакет, который включает набор инструментов dev, весит около 10 ГБ, но будет умно отвести на него 20 ГБ.

Этот пакет стандартный, но и немалый, поэтому убедитесь, что на вашем компьютере хватает ресурсов для его использования.

Android_x86 имеет размер 4.5 МБ. поверх дерева ядра. Проект по большей части использует C++ и скрипты, в основном в оболочке. Этот проект интереснее всего, если вы хотите запускать Android на других устройствах, а не когда вы хотите тестировать приложения для мобильных устройств.

Исходник для скачивания Anbox невелик, всего 1.5 МБ. а программируется Anbox по большей части на C++. Если вы хотите изучить технологию контейнеров, вы можете взяться за некоторые задачи в этом проекте, поскольку именно она там используется. Если вы пожелали серьезно изучить самую важную используемую в настоящее время технологию, здесь-то и копайте. Anbox размещен на GitHub.

Genymotion реализует собственный код на C++, и большая часть его скриптов использует Perl. Скрипты используют модифицированное ядро для виртуальных машин. Их исходный код для скачивания весит 135 МБ.

Исходным кодом Shashlik, похоже, больше никто не занимается, но он доступен на GitHub. Есть даже ответвление, которое обновлялось в течение 2017 г., так что надежда не угасает. Кто-то сделал файл Docker, чтобы можно было запускать его с контейнерами Docker. Скачиваются 6 МБ. а программирование велось на C++ и С. Скрипты в основном написаны на Python.

Что такое ядро?

Каждая операционная система использует ядро. Без ядра, у вас не может быть операционной системы, которая действительно работает. Windows, Mac OS X и Linux имеют ядра, и все они разные. Это ядро ​​также выполняет основную работу операционной системы. Помимо ядра, есть много приложений, связанных с ядром, чтобы сделать весь пакет чем-то полезным – об этом чуть позже.

Задача ядра – общаться с аппаратным и программным обеспечением и максимально эффективно управлять ресурсами системы. Оно взаимодействует с оборудованием через драйверы, которые включены в ядро ​​(или дополнительно установлены позже в виде модуля ядра). Таким образом, когда приложение хочет что-то сделать (скажем, изменить настройку громкости динамиков), оно может просто отправить этот запрос ядру, и ядро ​​может использовать драйвер для динамиков, чтобы фактически изменить громкость.

Ядро активно участвует в управлении ресурсами. Необходимо убедиться, что для запуска приложения достаточно памяти, а также разместить приложение в нужном месте в памяти. Ядро пытается оптимизировать использование процессора, чтобы он мог выполнять задачи как можно быстрее. Оно также направлено на то, чтобы избежать взаимоблокировок, которые являются проблемами, которые полностью останавливают систему, когда одному приложению требуется ресурс, который использует другое приложение. Это довольно сложный “цирковой акт”, чтобы координировать все эти вещи, но это нужно сделать, для этого и нужно ядро.

Запуск графических приложений в среде chroot

Если у вас есть запущенный X-сервер, вы сможете запускать даже графические приложения в среде chroot.

Чтобы разрешить среде chroot соединение с сервером X, откройте виртуальный терминал внутри сервера (то есть, внутри рабочего стола пользователя, который в данный момент вошел в систему), запустите команду xhost, которая даст права каждому подключаться к X-серверу пользователя:

$ xhost +local:

Теперь, для соединения приложений с сервером X, установите переменной окружения DISPLAY в сеансе chroot значение, совпадающее с переменной окружения DISPLAY пользователя, от имени которого запущен сервер. То есть, выполните

$ echo $DISPLAY

от имени этого пользователя для того, чтобы узнать значение переменной, и выполните

# export DISPLAY=:0

в среде chroot, установив переменной нужное значение (в данном примере это ).

Подождите, разве Android уже не Linux?

Ну, это так, но не совсем…

Android построен на ядре Linux, программном стеке, который взаимодействует с аппаратным обеспечением устройства. Это в основном позволяет операционной системе взаимодействовать с устройством, будь то ПК, смартфон или другое оборудование.

Операционная система Linux на самом деле должна называться GNU/Linux. Но со временем слово «Linux» стало взаимозаменяемо описывать ядро, а также различные операционные системы, которые его используют, такие как Ubuntu, Gentoo и многие другие.

Так что, хотя Android использует ядро ​​Linux, он не предлагает среду рабочего стола. Это то, о чем думает большинство людей, когда рассматривают способы установки Linux на Android.

Выводы

Android стал ведущей ОС в смартфонах. Всё большая и большая часть сетевой активности имеет мобильное происхождение. Любой новый web-дизайн должен быть готов для мобильного использования. И любая попытка действий в Сети или в области программирования должна учитывать это. Чтобы ваша web-страница или программа достигла как можно большего количества людей, вам надо перенести ее на мобильный, если тут есть смысл для вашего приложения. Чтобы этого добиться, вы должны или напрямую писать его для мобильного, или найти решение, объединяющее оба подхода. В нашем обзоре мы рассматривали возможность сделать мобильные программы доступными на любом устройстве Linux.

Если вы хотите протестировать программу для разных устройств 8 нескольких сценариях, два коммерческих решения. Android Virtual Device и Genymotion, намного превосходят остальные. Для разработчиков они вполне универсальны и полезны.

Для тех, кто просто хочет запустить приложение или игру на своем рабочем столе, больше подойдут другие приложения. Anbox и Shashlik разработаны как раз для этой цели. К сожалению, они недостаточно зрелые для использования AVD. Android Studio — пакет, лучше всего подходящий для разработки приложений специально для Android. Они работают в тандеме для разработки и тестирования. Genymotion — еще одна весьма достойная среда для поддержки вашего тестирования.

Другие пакеты более интересны в случаях, когда вы используете существующие приложения. Кроме того, вы можете использовать их в качестве стартовой точки, если хотите больше узнать о С и C++, и, возможно. перейти к программированию ядра.

Anbox использует контейнеры Linux; Ixc — горячая тема для разработчиков. Здесь вы можете приобрести опыт, пригодный для других проектов, особенно в средах сервера.

Shashlik не лишен интереса, ведь этот проект неплохо стартовал, а поскольку над ним трудится очень мало людей, вы можете сами привести его в форму. Что касается виртуализации, Docker-файл доступен на GitHub, и вы можете изучить его, если хотите больше узнать о Docker. Найдите LXF227 и прочитайте о нем, а затем продолжайте свое приключение в области разработки для всех сред.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: