- Android – это Linux. Или нет?
- Константин Иванов
- Так что же такое Linux?
- Почему Android – Linux?
- Почему Android – не Linux?
- Он не использует стандартное ядро Linux
- Android не включает в себя ПО GNU и библиотеки
- Вы не можете запускать приложения Linux на Android – и наоборот
- Android – это продукт Google
- «Открытый» статус Android под вопросом
- Вы не можете кастомизировать ОС Android – по умолчанию
- Заключение
- 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? Казалось бы, это тот вопрос, на который должен существовать прямой ответ – да или нет. Но вместо этого сообщества пользователей Android и Linux годами обсуждают, как обстоят дела на самом деле, и не могут прийти к согласию.
Есть два фактора, которые делают особенно сложным поиск четкого ответа на вопрос, являются ли Android и Linux одним и тем же.
- Люди часто используют слово Linux для обозначения определенного числа связанных между собой, но однозначно разных вещей.
- Нет четкого, однозначного и повсеместно принятого определения, что позволяет считать то или иное ПО Linux.
Задача этого материала – прояснить, почему возникает путаница вокруг различных типов ПО, которое люди могут иметь в виду, используя слово Linux, а затем обговорить все аргументы, которые неизбежно приводятся в любом споре на тему «Android – это Linux или нет».
Так что же такое Linux?
Когда кто-то говорит «Linux», это может относиться к следующим вещам:
- Ядро Linux. Это малая, но ключевая часть операционной системы. Ядро выполняет функцию взаимодействия с аппаратной частью устройства, обеспечивая сервисами остальную часть системы и формулируя задачи, такие как управление процессором или памятью устройства. Ядро Linux, как и любое другое ядро, может работать исключительно в качестве части операционной системы в более широком смысле. Существование ОС, которая состоит исключительно из ядра Linux, попросту невозможно. Поскольку Android – полноценная операционная система, мы совершенно спокойно можем исключить определение Android как ядра Linux.
- Дистрибутив Linux. Это операционная система, которая содержит ядро Linux и дополнительное ПО, такое как утилиты, библиотеки, графический интерфейс, а также предустановленные приложения, такие как веб-браузеры, текстовые редакторы, музыкальные проигрыватели и др. Это дополнительное ПО было разработано специально для того, чтобы работать на ядре Linux, но оно не является частью самого ядра Linux. Если в разговоре речь заходит об операционных системах, которые используют ядро Linux, термины «дистрибутив» и «операционная система» взаимозаменяемы. Поскольку кто угодно может взять ядро Linux и свое собственное ПО и создать свою операционную систему, в настоящее время существует бесчисленное количество доступных дистрибутивов Linux.
- GNU/Linux. Большая часть дистрибутивов Linux – это комбинация ядра Linux и программного обеспечения GNU, что заставляет некоторых людей утверждать, что дистрибутивы Linux – то же самое, что GNU/Linux. Это предмет для отдельной дискуссии, поэтому для того, чтобы несколько упростить объяснения, далее на протяжении материала будет использоваться термин «дистрибутив Linux» — просто отметим, что между ядром Linux и программным обеспечением GNU существует прочная связь.
В свою очередь, вокруг термина Android нет такой путаницы. Есть, тем не менее, два вида ОС Android.
Первый – это Android Open Source Project (AOSP), проект, в рамках которого Google предоставляет доступ к исходному коду Android. Этот код можно использовать для того, чтобы создать рабочую операционную систему, которую можно установить на смартфон или планшет, но в итоге ей будет не хватать функциональности, которую большая часть пользователей ожидают получить от своего опыта взаимодействия с Android, наиболее характерный пример – это мобильные сервисы Google. Это набор приложений и API от Google, которые для большого числа пользователей являются основной частью опыта работы с Android, аналогично тому, как iTunes и App Store являются основной частью опыта на macOS. AOSP имеет открытый исходный код, но не обеспечивает тех возможностей, которых ожидает типичный конечный пользователь устройства, работающего на ОС Android.
Второй вариант – это ОС Android, на которой работает ваше типичное устройство, будь то смартфон или планшет, по сути, она основана на AOSP, возможно, имеет ряд модификаций, привнесенных производителем устройства, а также в нее добавлено значительное количество проприетарного кода.
Большая часть аргументов за и против того, чтобы расценивать Android как Linux, относится к обоим вариантам Android, но есть ряд пунктов, в которых ответ будет различаться. И это будет зависеть от того, определяем ли мы Android как AOSP или как операционную систему, на которой работает ваш обычный смартфон или планшет.
Почему Android – Linux?
Существует всего лишь один реальный аргумент в пользу того, чтобы расценивать Android как Linux, но это серьезный аргумент. Каждый смартфон или планшет на Android содержит ядро Linux. Вы даже можете увидеть, какая версия ядра установлена на вашем устройстве. Для этого надо зайти в Настройки – Об устройстве – Версия ядра.
Тем не менее, Android – это не только ядро Linux. Это полнофункциональная операционная система, в которой имеются множество дополнительных библиотек, графический интерфейс, приложения и многое другое. Поэтому когда мы задаем вопрос «Android – это Linux?», мы на самом деле спрашиваем «Является ли Android дистрибутивом Linux?»
Поскольку даже оценить реальное количество дистрибутивов Linux не представляется возможным, тем более сложно написать список правил, позволяющих определить, что делает операционную систему дистрибутивом Linux.
Помимо обязательного условия наличия ядра Linux, определение дистрибутива Linux допускает достаточно свободную интерпретацию. Поэтому оставшаяся часть материала будет посвящена аргументам, которые люди чаще всего приводят против того, чтобы расценивать Android как дистрибутив Linux.
Почему Android – не Linux?
Он не использует стандартное ядро Linux
Для того, чтобы создать операционную систему, которая отвечает уникальным потребностям мобильных устройств, команда разработчиков Android внесла в ядро Linux рад изменений, включая добавление специализированных библиотек, API и инструментов, которые по большей частью взяты из BSD или написаны с нуля специально для Android.
Поскольку основной аргумент в пользу того, чтобы расценивать Android как дистрибутив Linux, базируется на том факте, что Android использует ядро Linux, может показаться, что тут и всяким спорам конец, все и так вполне очевидно. Однако для дистрибутива Linux не является обычным делом внесение изменений в ядро.
Ядро Linux подпадает под действие Универсальной общественной лицензии GNU, каждый волен как хочет изменять его исходный код, что и делается во многих дистрибутивах Linux. Если говорить о том, насколько значительным изменениям подвергла команда разработчиков Android ядро Linux, в Embedded Linux wiki приходят к заключению, что количество изменений, внесенных командой Android, «не особенно велико и не выходит за рамки того, что обычно делают с ядром Linux разработчики ОС на его базе».
Android не включает в себя ПО GNU и библиотеки
Если вы согласны с тем, что наличие ПО GNU является определяющей характеристикой для дистрибутива Linux вплоть до того, что мы должны расценивать дистрибутивы Linux как GNU/Linux, тогда Android ни в коем случае не может быть дистрибутивом Linux. Android включает в себя лишь некоторые системные библиотеки GNU. Из самого заметного – команда разработчиков Android разработала кастомизированную C-библиотеку под названием Bionic вместо того, чтобы использовать C-библиотеку GNU.
И даже если вы не согласны с тем, что дистрибутив Linux должен включать в себя ПО GNU, трудно отрицать, что отсутствие GNU делает Android очень отличным от большей части представителей сообщества дистрибутивов Linux.
Вы не можете запускать приложения Linux на Android – и наоборот
Если вы возьмете несколько выбранных случайным образом дистрибутивов Linux, есть шанс, что единственным общим программным компонентом у них у всех будет ядро Linux. В реальности у Android так мало общего ПО с другими дистрибутивами Linux, что запускать обычные приложения Linux на Android невозможно.
Верно и обратное утверждение. Приложения для Android требуют специальных библиотек Android, среды выполнения и ряда других программ, которые есть только в ОС Android, так что по умолчанию вы не можете запускать приложения для Android на какой-то другой платформе, кроме Android.
Android – это продукт Google
Google может сделать основной исходный код Android общедоступным через AOSP, но следующий релиз AOSP готовить в закрытую. На самом деле, на сайте AOSP ясно утверждается, что «Google оставляет за собой ответственность за стратегическое направление развития Android как платформы и как продукта».
Вдобавок к этому, не задействованные в Google разработчики могут участвовать в AOSP на различных ролях, но сайт AOSP совершенно четко говорит, что руководят проектом обычно сотрудники Google. И еще один маленький факт: Google принадлежат права на имя и логотип Android, так что если вы создаете операционную систему, основанную на коде AOSP, вам потребуется связаться с Google, если вы хотите выпустить свою работу под именем Android.
Несмотря на то, что некоторые дистрибутивы Linux тесно связаны с конкретными компаниями (на ум тут же приходят Canonical и Ubuntu), для дистрибутивов Linux нехарактерно разрабатываться в закрытую и полностью одной организацией.
«Открытый» статус Android под вопросом
Несмотря на рекомендацию Фонда свободного программного обеспечения, предписывающую разработчикам убрать все проприетарное программное обеспечение из их дистрибутивов Linux, нет строгого правила, которое бы запрещало дистрибутивам Linux содержать проприетарное ПО. В реальности многие дистрибутивы включают в себя скомпилированные бинарные драйверы, известные также как блобы. Поэтому на самом деле вопрос стоит так: насколько открыт Android в сравнении с вашим типичным дистрибутивом Linux?
Несмотря на то, что многие энтузиасты ПО с открытым кодом единодушны в том, что AOSP далек от идеального open source проекта, его код бесплатно доступен для изменения и распространения другими людьми.
Тем не менее, к моменту, когда AOSP доходит до пользователя Android, к нему добавляется большое количество проприетарного кода, и, в сущности, нет большой разницы между тем, что вы расцениваете как «чистый Android» на устройствах вроде Nexus или Pixel, и тем, что претерпело модификации, сделанные производителем.
Это не обязательно означает, что Android невозможно расценивать как дистрибутив Linux, но нельзя не отметить, что большая часть кода, который пользователи могут видеть и с которым могут взаимодействовать, является проприетарной, таковы мобильные сервисы Google и модификации производителя, как, например, TouchWiz от Samsung.
Несмотря на то, что многие дистрибутивы Linux включают в себя проприетарный код, для многих людей термин Linux четко ассоциируется с программным обеспечением с открытым кодом. И этот проприетарный пользовательский код вызывает ощущение, что Android гораздо более закрыт, чем типичный дистрибутив Linux.
Вы не можете кастомизировать ОС Android – по умолчанию
Если дистрибутив Linux как правило достаточно просто модифицировать на уровне операционной системы, пользователи Android по умолчанию не могут получить доступ к базовой ОС на своем смартфоне или планшете. Чувствительные разделы надежно защищены от их вмешательства. Но эта оговорка «по умолчанию» имеет значение, поскольку вы можете получить доступ к разделам, обычно закрытым на вашем устройстве, используя дыры в безопасности Android – это процесс получения рут-прав.
Итак, несмотря на то, что Android значительно меньше подвержен кастомизации, чем типичный дистрибутив Linux, существуют возможности получить доступ к базовой операционной системе.
Заключение
Итак, возвращаемся к исходному вопросу: является ли Android дистрибутивом Linux? В целом, все сводится к тому, что вы подразумеваете под дистрибутивом 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.
А каково ваше мнение? Является ли Android дистрибутивом Linux просто по причине наличия в нем ядра 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.
Источник