- Android базируется на Linux, но что это значит?
- Сравниваем «Linux» и ядро Linux
- Различия
- Почему не удастся запустить в Android приложение, предназначенное для настольного компьютера с Linux
- Почему не удастся запустить программное обеспечение для Android на настольном компьютере с Linux
- Android – это Linux? Сравнение Android и Linux
- Что такое Linux?
- Что такое Android?
- Android и ядро Linux
- Почему Android не является Linux?
- Android не использует стандартное ядро Linux
- Android не содержит ПО и библиотек GNU
- Вы не можете запускать приложения Linux на Android и наоборот
- Android — это продукт Google
- Дебаты по поводу статуса Android как «ОС с открытым исходным кодом»
- Отсутствие возможности кастомизации Android
- Краткий экскурс в операционные системы
- Различия между Android и Linux
- Заключение
Android базируется на Linux, но что это значит?
Android, может быть, базируется на Linux, но он не базируется на том типе системы Linux, которую вы, вероятно, используете на вашем персональном компьютере. Вы не можете запускать приложения Android в типичных дистрибутивах Linux и вы не можете запускать программы Linux, с которыми вы знакомы, в системе Android.
Linux составляет ядро Android, но Google не добавил все типичное программное обеспечение и библиотеки, которые вы можете найти в дистрибутиве Linux, таком как Ubuntu. В этом все различия.
Сравниваем «Linux» и ядро Linux
Большая разница здесь сводится к тому, что мы подразумеваем под Linux. Люди используют термин «Linux» для обозначения многих различных вещей. По своей сути, Linux означает ядро Linux. Ядро является основной частью любой операционной системы.
Мы также ссылаемся на дистрибутивы Linux как просто «Linux». Тем не менее, дистрибутивы состоят не только из ядра Linux. Они содержат много других частей программного обеспечения, таких как утилиты командной оболочки GNU, графический сервер Xorg, рабочий стол GNOME, веб-браузер Firefox и так далее. Вот почему некоторые люди считают, что для «дистрибутивов», таких как Ubuntu, Mint, Debian, Fedora, Arch, OpenSUSE и другие, следует использовать термин GNU/Linux.
Android под капотом использует ядро Linux. Поскольку Linux имеет открытый исходный код, разработчики Android из компании Google имели возможность модифицировать ядро Linux под свои нужды. Linux предоставляет разработчикам Android для начала предварительно собранное и уже поддерживаемое ядро операционной системы с тем, чтобы им не нужно было писать свое собственное ядро. Это тот метот, с помощью которого было построено много различных устройств, например, в PlayStation 4 используется ядро FreeBSD с открытым исходным кодом, тогда как в Xbox Один использует ядро Windows NT, которое можно найти в современных версиях Windows.
Вы даже увидите версию ядра Linux, которая работает на вашем устройстве, в пункте меню About phone (О телефоне) или About tablet (О планшете) в меню Android’s Settings (Настройки Android).
Различия
Существует некоторая дискуссия по поводу того, можно ли квалифицировать Android как «дистрибутив Linux». В нем используется ядро Linux и другое программное обеспечение, но в него не входит большая часть программного обеспечения, которое обычно входит в Linux дистрибутивы.
Когда вы загружаете устройство с Android, ядро Linux загружается так же, как это было бы в дистрибутиве. Тем не менее, большая часть остального программного обеспечения различается. В Android не входит библиотека GNU C Library (glibc), используемая в стандартных дистрибутивах Linux, а также не входят все те библиотеки GNU, которые вы обнаружите в типичном дистрибутиве Linux. В нем также сервера X, например, Xorg, так что вы не сможете запустить стандартные графические приложения Linux.
Вместо того, чтобы запускать типичные приложения Linux, Android использует виртуальную машину Dalvik исключительно для того, чтобы запускать приложения, написанные на языке Java. Эти приложения ориентированы на устройства Android и интерфейсы прикладного программирования (API), которые представлены в Android, а не на Linux в целом.
Почему не удастся запустить в Android приложение, предназначенное для настольного компьютера с Linux
Поскольку в состав Android не входит графический X-сервер или все стандартные библиотеки GNU, вы не сможете просто запускать приложения Linux на Android. Вы должны запускать приложения, написанные специально для Android.
В Android есть командная оболочка, похожая на ту, что вы найдете на Linux. Но «прямо из коробки» нет способа получить к ней доступ, но вы можете установить приложение, например, Android Terminal Emulator, для того, чтобы получить доступ к этой терминальной среде.
Здесь, по умолчанию, вы не сможете сделать слишком многого. Терминал будет работать в ограниченной среде, поэтому вы не сможете получить полный доступ к корню системы без того, чтобы не выполнить рутование вашего устройства Android (прим.пер.: получить права доступа суперпользователя root). Многие стандартные команды, которые вам, возможно, потребуются, не доступны — вот почему те, кто выполнил рутование своих устройств в целом, устанавливают приложение BusyBox, устанавливающее много утилит командной строки. Эти утилиты используются приложениями, которым нужно что-либо делать с правами суперпользователя.
Почему не удастся запустить программное обеспечение для Android на настольном компьютере с Linux
В состав Linux не входит виртуальная машина Dalvik, поэтому Linux не может запускать приложения Android. Виртуальная машина Dalvik и все другое программное обеспечение Android, нельзя просто поместить в настольный компьютер с Linux — например, вам придется сделать больше работы для того, чтобы приложения для Android выдавали результат в в окно на обычном рабочем столе через Xorg. Теоретически, если выполнить всю работу, разработчики могли бы сделать, чтобы Dalvik работал на настольном с Linux и пользователи настольных компьютеров с Linux могли запускать приложения Android на своих рабочих столах. Была сделана попытка создать приложение (теперь уже не работающее) для Ubuntu, которое пытались сделать что-то вроде этого, интегрируя Ubuntu и Android на телефоне и позволяющее сделать так, чтобы эти программы можно было запустить на рабочем столе Ubuntu.
Для ОС Windows и Mac была попытка сделать это с помощью эмулятора BlueStacks и других приложений Android. Они запускают Android в виртуальной среде на виртуальной машине, что позволяет им запускать приложения Android на рабочем столе с большой потерей производительности. Но эти решения оказались не очень популярными.
ОС Chrome, созданная Google, также базируется на Linux. Как и Android, ОС Chrome не предоставляет стандартную оконную систему X, поэтому стандартные приложения Linux не могут работать на ОС Chrome. В отличие от Android, ОС Chrome ближе к стандартным дистрибутивам Linux для настольных компьютеров, поэтому вы можете использовать режим разработчика для того, чтобы установить недостающее программное обеспечение, предназначенное для настольного Linux.
Источник
Android – это Linux? Сравнение Android и Linux
Обновл. 14 Июл 2021 |
В этой статье мы рассмотрим взаимосвязь между операционной системой Android и Linux, сравним их сходства и различия, а также ответим на главный вопрос: «Android — это Linux?».
Что такое Linux?
Когда кто-то произносит слово «Linux», он может иметь в виду:
Ядро Linux. Небольшая, но существенная часть операционной системы, которая отвечает за взаимодействие с аппаратным обеспечением устройства, обслуживание остальной части системы и выполнение таких задач, как управление процессором и памятью устройства. Ядро Linux, как и любое другое ядро, может функционировать только как часть более обширной операционной системы. Невозможно иметь операционную систему, состоящую исключительно из ядра. Поскольку Android является полноценной операционной системой, то в этом контексте мы сразу можем сделать вывод, что Android не является Linux.
Дистрибутив Linux. Это операционная система, которая содержит ядро Linux и дополнительное программное обеспечение: различные утилиты, библиотеки, окружение рабочего стола, браузеры, текстовые редакторы, музыкальные проигрыватели и пр. Даже если это дополнительное программное обеспечение было разработано специально для работы вместе с ядром Linux, оно не является частью ядра Linux. При обсуждении операционных систем, использующих ядро Linux, термины «дистрибутив» и «операционная система» являются взаимозаменяемыми. Любой может взять ядро Linux, добавить свое собственное программное обеспечение и создать полноценную операционную систему. В настоящее время доступно огромное количество различных дистрибутивов Linux.
GNU/Linux. Большинство дистрибутивов Linux представляют собой сочетание ядра Linux и программного обеспечения GNU, что заставило некоторых людей утверждать, что мы все должны называть дистрибутивы Linux термином «GNU/Linux».
Что такое Android?
Android — это проект, созданный для удовлетворения потребности в мобильной операционной системе с открытым исходным кодом. Изначально разработка велась компанией Android, Inc. Впоследствии проект перекупила корпорация Google. Поскольку Android является операционной системой, то в её состав входит ядро, драйверы и программное обеспечение пользовательского пространства.
Хотя вокруг термина «Android» и близко нет такой путаницы, как в случае с «Linux», все же существуют две различные разновидности операционной системы Android:
Проект Android с открытым исходным кодом (сокр. «AOSP» от англ. «Android Open Source Project»), в котором Google предоставляет пользователям исходный код Android. Хотя данный исходный код действительно можно использовать для создания функционирующей операционной системы, установив её на смартфон или планшет, мы не получим того функционала, которое большинство пользователей имеют от своего текущего Android-устройства; в первую очередь это касается мобильных сервисов Google (сокр. «GMS» от англ. «Google Mobile Services»).
AOSP с добавлением значительного количества проприетарного кода от производителя смартфона или планшета (например, GMS от Google или TouchWiz от Samsung). Операционная система Android, которая присутствует на вашем смартфоне или планшете, по своей сути является данной разновидностью Android.
Большинство аргументов «за» или «против» классификации Android как Linux применимы к обеим версиям Android, но есть несколько случаев, когда ответ зависит от того, определяете ли вы Android как AOSP или как операционную систему, которая поставляется с вашим смартфоном или планшетом Android.
Android и ядро Linux
На самом деле есть только один аргумент в пользу классификации Android как Linux: каждый смартфон или планшет с ОС Android содержит ядро Linux. Вы даже можете увидеть, какая версия ядра установлена на вашем устройстве, открыв «Настройки» и перейдя в раздел «Система» > «О телефоне» > «Сведения о ПО»:
Однако Android — это не просто ядро Linux; это полностью функционирующая операционная система, которая содержит дополнительные библиотеки, графический интерфейс, приложения и многое другое. Следовательно, стоит уточнить наш вопрос: «Является ли Android дистрибутивом Linux?».
Почему Android не является Linux?
Android не использует стандартное ядро Linux
Чтобы создать операционную систему, отвечающую уникальным потребностям мобильных устройств, команда Android внесла ряд изменений в ядро Linux, включая добавление специализированных библиотек, API и утилит, которые по большей части являются производными от операционных систем семейства BSD или написаны с нуля, специально для Android.
Ядро Linux выпущено под лицензией GNU GPL v2.0, поэтому любой может свободно изменять его исходный код, что и делают многие дистрибутивы Linux. Когда дело доходит до вопроса о том, насколько радикально команда Android изменила ядро Linux, Embedded Linux wiki приходит к выводу, что количество изменений, внесенных командой Android, «не очень велико и соответствует порядку изменений, которые обычно вносятся в ядро Linux разработчиками ПО для встраиваемых систем».
Android не содержит ПО и библиотек GNU
Если вы согласны с тем, что программное обеспечение GNU является определяющей характеристикой дистрибутива Linux до такой степени, что мы все должны называть дистрибутивы Linux термином «GNU/Linux», то Android никоим образом не может быть дистрибутивом Linux. Android включает в себя очень мало программного обеспечения GNU. В частности, команда Android, вместо того, чтобы использовать библиотеку GNU C (glibc), разработала кастомную библиотеку под названием Bionic.
Даже если вы не согласны с тем, что дистрибутив Linux должен включать программное обеспечение GNU, все равно нельзя отрицать тот факт, что отсутствие GNU сильно отличает Android от большинства дистрибутивов Linux.
Вы не можете запускать приложения Linux на Android и наоборот
Если бы вы наугад выбрали несколько разных дистрибутивов Linux, то, скорее всего, единственным общим программным компонентом у них было бы ядро Linux. По факту, Android имеет так мало общего с другими дистрибутивами Linux, что на нем невозможно запускать обычные приложения Linux.
Верно и обратное: для приложений Android требуются библиотеки Android, специализированное окружение, а также ряд других программ, которые доступны только в Android, поэтому по умолчанию вы не можете запускать приложения Android на платформе, отличной от Android.
Операционные системы на базе Android для запуска приложений используют специальную виртуальную машину, известную как Dalvik. Приложения для Android пишутся на языке программирования Java (или другом, поддерживаемом платформой Android) и компилируются в специальный промежуточный байт-код, предназначенный для выполнения в Dalvik. Сама же виртуальная машина Dalvik оптимизирована для максимально эффективной работы на мобильных устройствах, которые, обычно, оснащены медленными процессорами.
В отличие от Android, Linux не содержит виртуальной машины Dalvik, и поэтому не может запускать приложения для Android. Виртуальную машину Dalvik и всё другое программное обеспечение Android нельзя просто перенести на настольную машину Linux — вам придется проделать большую работу, чтобы приложения Android выводились в окно на стандартном рабочем столе Linux.
Примечание: BlueStacks и другие эмуляторы приложений для Android пытаются сделать это для Windows и macOS. Они запускают Android на виртуальной машине, что позволяет им запускать приложения для Android (со снижением производительности) на рабочем столе. Однако эти решения оказались не очень популярными.
Android — это продукт Google
Google может сделать исходный код базовой системы Android общедоступным через AOSP, но последующий релиз AOSP разрабатывается Google в частном порядке. Фактически, на сайте AOSP четко указано, что «Google сохраняет ответственность за стратегическое направление Android как платформы и продукта».
Кроме того, хотя разработчики, не являющиеся сотрудниками Google, могут вносить свой вклад в AOSP в различных объемах, официальный сайт AOSP четко указывает, что руководители проектов, как правило, являются сотрудниками Google. Еще один нюанс заключается в том, что Google владеет правами на название и логотип Android, поэтому, даже если вы создадите операционную систему на основе кода AOSP, вам все равно потребуется связаться с Google, если вы захотите опубликовать свою работу, включив в её название часть «Android».
В то время как некоторые дистрибутивы Linux действительно имеют тесные связи с определенной компанией (например, Canonical и Ubuntu или Red Hat и Fedora), для большинства дистрибутивов Linux необычно, чтобы разработка велась в частном порядке только одной организацией.
Дебаты по поводу статуса Android как «ОС с открытым исходным кодом»
Несмотря на рекомендации Фонда свободного программного обеспечения (сокр. «FSF» от англ. «Free Software Foundation») разработчикам удалить всё несвободное программное обеспечение из своих дистрибутивов Linux, нет строгого правила, согласно которому дистрибутивам Linux запрещено содержать несвободное (проприетарное) программное обеспечение. В реальности многие дистрибутивы включают скомпилированные вендором двоичные файлы драйверов, также известные как BLOB-объекты, поэтому возникает вопрос: «Насколько открыт Android по сравнению с «типичным» дистрибутивом Linux?».
Хотя многие почитатели ПО с открытым исходным кодом согласились бы с тем, что AOSP далек от идеального проекта с открытым исходным кодом, его код свободно доступен для изменения и распространения другими людьми.
Однако прежде чем базовая версия AOSP станет полноценным Android, в нее добавится большое количество проприетарного кода, и это верно независимо от того, выбираете ли вы устройство с «чистым Android» (Nexus или Pixel) или устройство с модификациями производителя.
Несмотря на то, что многие дистрибутивы Linux содержат собственный код, термин «Linux» тесно связан с программным обеспечением с открытым исходным кодом, а весь проприетарный код пользовательской части Android превращает данную ОС в гораздо более закрытую систему, нежели «типичный» дистрибутив Linux.
Отсутствие возможности кастомизации Android
Хотя, как правило, довольно легко изменить дистрибутив Linux на уровне операционной системы, по умолчанию владельцы Android не могут получить доступ к «базовой» операционной системе на своем смартфоне или планшете, а «чувствительные» разделы ОС надежно заблокированы.
Краткий экскурс в операционные системы
Операционные системы позволяют взаимодействовать пользователю с аппаратной частью компьютера с помощью прикладного программного обеспечения.
Основные функции типичной современной операционной системы:
Управление памятью и контроль её использования приложениями.
Управление использованием вычислительной мощности приложениями.
Управление файловыми системами и жесткими дисками (HDD и SSD).
Предоставление интерфейса для создания драйверов устройств (чтобы иметь возможность добавлять в систему новое оборудование).
Предоставление графического пользовательского интерфейса для взаимодействия с программным обеспечением.
Работа служб, запускающих такие приложения, как: HTTP-серверы, FTP-серверы, SSH-серверы, SQL-серверы и т.д.
Для выполнения вышеуказанных функций в операционной системе, обычно, выделяют следующие основные части:
Ядро — состоит из планировщика, менеджера ресурсов и предварительно загруженных драйверов оборудования.
Слой аппаратных абстракций (сокр. «HAL» от англ. «Hardware Abstraction Layer») — слой абстрагирования, реализованный в программном обеспечении, позволяющий взаимодействовать инструкциям высокоуровневых языков программирования с аппаратным обеспечением.
Графический интерфейс пользователя (сокр. «GUI» от англ. «Graphical User Interface») — система средств, позволяющая пользователю взаимодействовать с программным и аппаратным обеспечением компьютера.
Утилиты, библиотеки и фреймворки, которые совместно используются всеми службами и приложениями.
Службы и приложения конечных пользователей.
Вышеперечисленные части можно условно разделить на 2 области, в которых они работают:
Пространство пользователя (или «пользовательское пространство») — вытесняемые части оперативной памяти, в которой работают обычные программы, библиотеки, службы и приложения конечных пользователей.
Пространство ядра — область оперативной памяти с повышенными привилегиями, в которой размещены драйверы ядра и аппаратных устройств. Обычным программам и приложениям доступ к данной области памяти запрещен.
Примечание: Графический интерфейс пользователя, в зависимости от архитектуры операционной системы, может принадлежать либо пользовательскому пространству (как в Linux), либо пространству ядра (как в Windows).
Различия между Android и Linux
Рассмотрим общие различия между Android и Linux:
Android | Linux | |
Тип ПО | Операционная система. | Ядро. |
Канал передачи данных | Оптимизировано под сотовые сети. | Оптимизировано под Ethernet и Wi-Fi. |
Причины создания | Сделать мобильные устройства «умными», конкуренция с iOS. | Исследовательские цели в области разработки ПО, а также желание создать свободное программное обеспечение с открытым исходным кодом. |
Способ монетизации | Продвижение продуктов Google, ежемесячная оплата сервисов и комиссионные вознаграждения от продажи приложений/фильмов/книг и пр. в Google Play. | Большинство дистрибутивов поддерживаются сообществом и некоммерческими организациями. Основным источником дохода коммерческих организаций является платная техническая поддержка для корпоративных клиентов. |
Тип лицензии | Apache License. | GNU GPL v2.0. |
Основной тип устройств | Смартфоны, планшеты. | Персональные компьютеры и серверы. |
Простота использования | Прост в использовании. | Сложность варьируется в зависимости от выбранного дистрибутива. Но стоит отметить, что изначальная сложность в разы больше сложности использования Android. |
Разработчик и поддержка | Google. | Коммерческие и некоммерческие компании и организации, сообщества разработчиков-энтузиастов по всему миру. |
А теперь рассмотрим технические различия между Android и Linux:
Android | Linux | |
Архитектура процессора | ARM. | x86 и x64. |
Пространство пользователя | Android Runtime (модифицированный Java Runtime Environment) и библиотеки Core. | Преимущественно GNU и X Window System. |
Оптимизация ядра | Оптимизировано на пониженное энергопотребление. | Баланс между производительностью и энергопотреблением. |
Доступ к терминалу (shell) | Обычно заблокирован, необходимо получить доступ к root, чтобы иметь возможность взаимодействовать с терминалом. | Доступно «из коробки», так как терминал является чрезвычайно важной частью Linux-дистрибутивов. |
Основа GUI | Google SurfaceFlinger поверх OpenGL. | Большинство дистрибутивов используют GUI на основе X Window System. |
Основные архитектурные элементы | Только ядро, HAL и отличное от GNU пользовательское пространство, и собственное окружение рабочего стола. | Ядро, HAL, пользовательское пространство GNU (приложения) и слой пользовательского интерфейса (окружение рабочего стола). |
Драйверы оборудования | Почти все драйверы являются проприетарными. | Большинство драйверов поставляются с открытым исходным кодом. |
Загрузчик | Простой загрузчик, который выполняет необходимый минимум и передает управление ядру. | Стандартизированные загрузчики, подобно GRUB2, с возможность кастомизации. |
BIOS/EFI | Отсутствует на устройствах ARM. | Стандарт для всех материнских плат x86/x64. |
Библиотека C | Облегченный вариант стандартной библиотеки — Bionic. | Библиотека GNU C (glibc). |
Заключение
Итак, возвращаясь к нашему первоначальному вопросу: «Является ли Android дистрибутивом Linux?». В конечном счете всё зависит от того, что вы вкладываете в это понятие. Если вы согласны с тем, что мы все должны называть дистрибутивы Linux термином «GNU/Linux», а не «Linux», то ответ отрицательный, поскольку Android включает в себя очень мало программного обеспечения GNU.
Если вы определяете «дистрибутив Linux» как операционную систему, включающую ядро Linux и удовлетворяющую одному или нескольким дополнительным критериям, то, опять же, ответ, скорее всего, будет отрицательным. Хотя каждый смартфон и планшет на базе Android включает ядро Linux, ОС Android полностью не соответствует ни одной из других характеристик, обычно ассоциируемых с дистрибутивами Linux. Например, Android явно является продуктом одной компании, он несовместим с обычными приложениями Linux, и, хотя исходные коды AOSP являются открытыми, версия Android, с которой вы сталкиваетесь на коммерческих устройствах, кажется значительно более закрытой, чем можно было бы ожидать от дистрибутива Linux, благодаря включению большого количества взаимодействующего с пользователем проприетарного кода.
Однако, если для вас дистрибутив Linux — это операционная система, основанная на ядре Linux, то Android является дистрибутивом Linux. Это может быть необычный, узкоспециализированный дистрибутив, но это такой же дистрибутив, как Ubuntu, Fedora, Debian и любая другая операционная система, основанная на ядре Linux.
Источник