Линукс или андроид на ноутбук

Обновлено: 03.07.2024

«Блог системного администратора» продолжает размышления на одну из самых спорных тем современности — Android это Линукс или нет?

Рекомендация — не правило

Существует рекомендация Free Software Foundation разработчикам удалять все проприетарное ПО. Но лишь пожелание, строгого правила нет. Впрочем, в мире Linux, со строгими правилами негусто. Открытость означает широкие возможности дальнейшего использования кода. В том числе и такими способами, которые не всегда соответствуют представлениям Linux-энтузиастов о том, каким надлежит быть «правильному» дистрибутиву. Линукс не принадлежит какой-то определенной компании или группе компаний, но не принадлежит он и энтузиастам.

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

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

Сильно модифицирован

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

Пользователям Linux доступна возможность внесения изменений в дистрибутив на уровне ОС. У пользователей Android такая возможность по умолчанию отсутствует. Доступ к базовой операционной системе и чувствительные разделы закрыты.

Тем не менее, пользователь может получить права администратора устройства посредством рутирования (рутинга). Таким образом, способ получения доступа к базовой ОС существует.

Ответ зависит от вас

Таким образом, ответ на вопрос о том, является ли Android дистрибутивом Linux, каждый может дать себе сам. Если вы определяете как Линукс только GNU/Linux, то ответ будет отрицательным.

Если же считать, что любая операционная система, основанная на ядре Linux, является Линуксом, то ответ будет положительным. В любом случае, даже если так, то это необычный узкоспециализированный дистрибутив.

Все зависит от дополнительных критериев, которые делают ОС Линуксом в ваших глазах. В экосистеме Android широко используется свойственный Linux подход — вендоры устройств создают свои скины, добавляют ПО и функционал. Эти оболочки можно считать подобием дистрибутивов. Система не унифицирована и зачастую с телефона одной компании на модель другого бренда приходится переучиваться.

Что такое Linux?

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

Что такое Android?

Android — это проект, созданный для удовлетворения потребности в мобильной операционной системе с открытым исходным кодом. Изначально разработка велась компанией Android, Inc. Впоследствии проект перекупила корпорация Google. Поскольку Android является операционной системой, то в её состав входит ядро, драйверы и программное обеспечение пользовательского пространства.

AOSP с добавлением значительного количества проприетарного кода от производителя смартфона или планшета (например, GMS от Google или TouchWiz от Samsung). Операционная система Android, которая присутствует на вашем смартфоне или планшете, по своей сути является данной разновидностью Android.

Android и ядро Linux


Почему Android не является Linux?

Android не использует стандартное ядро Linux

Чтобы создать операционную систему, отвечающую уникальным потребностям мобильных устройств, команда Android внесла ряд изменений в ядро Linux, включая добавление специализированных библиотек, API и утилит, которые по большей части являются производными от операционных систем семейства BSD или написаны с нуля, специально для Android.

Android не содержит ПО и библиотек GNU

Даже если вы не согласны с тем, что дистрибутив 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

В то время как некоторые дистрибутивы Linux действительно имеют тесные связи с определенной компанией (например, Canonical и Ubuntu или Red Hat и Fedora), для большинства дистрибутивов Linux необычно, чтобы разработка велась в частном порядке только одной организацией.

Отсутствие возможности кастомизации Android

Краткий экскурс в операционные системы

Операционные системы позволяют взаимодействовать пользователю с аппаратной частью компьютера с помощью прикладного программного обеспечения.

Основные функции типичной современной операционной системы:

Управление памятью и контроль её использования приложениями.

Управление использованием вычислительной мощности приложениями.

Управление файловыми системами и жесткими дисками (HDD и SSD).

Предоставление интерфейса для создания драйверов устройств (чтобы иметь возможность добавлять в систему новое оборудование).

Предоставление графического пользовательского интерфейса для взаимодействия с программным обеспечением.

Для выполнения вышеуказанных функций в операционной системе, обычно, выделяют следующие основные части:

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

Утилиты, библиотеки и фреймворки, которые совместно используются всеми службами и приложениями.

Службы и приложения конечных пользователей.

Вышеперечисленные части можно условно разделить на 2 области, в которых они работают:

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

Примечание: Графический интерфейс пользователя, в зависимости от архитектуры операционной системы, может принадлежать либо пользовательскому пространству (как в Linux), либо пространству ядра (как в Windows).

Различия между Android и Linux

Рассмотрим общие различия между Android и Linux:

А теперь рассмотрим технические различия между Android и Linux:

Заключение

Однако, если для вас дистрибутив Linux — это операционная система, основанная на ядре Linux, то Android является дистрибутивом Linux. Это может быть необычный, узкоспециализированный дистрибутив, но это такой же дистрибутив, как Ubuntu, Fedora, Debian и любая другая операционная система, основанная на ядре Linux.


Android – это Linux? Казалось бы, это тот вопрос, на который должен существовать прямой ответ – да или нет. Но вместо этого сообщества пользователей Android и Linux годами обсуждают, как обстоят дела на самом деле, и не могут прийти к согласию.

Есть два фактора, которые делают особенно сложным поиск четкого ответа на вопрос, являются ли Android и Linux одним и тем же.

  1. Люди часто используют слово Linux для обозначения определенного числа связанных между собой, но однозначно разных вещей.
  2. Нет четкого, однозначного и повсеместно принятого определения, что позволяет считать то или иное ПО Linux.

Задача этого материала – прояснить, почему возникает путаница вокруг различных типов ПО, которое люди могут иметь в виду, используя слово Linux, а затем обговорить все аргументы, которые неизбежно приводятся в любом споре на тему «Android – это Linux или нет».

Так что же такое Linux?

Когда кто-то говорит «Linux», это может относиться к следующим вещам:

В свою очередь, вокруг термина 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?

Favorite

Добавить в избранное (3 оценок, среднее: 3,67 из 5)

В чем разница между Linux и Android

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

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

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

Один из примеров такого типа приложений можно увидеть в телевизионной приставке. Раньше это было устройство с фиксированной функцией, работающее на встроенном Linux. Благодаря увеличению функциональности и динамичности телевизора в приставке теперь можно загружать приложения и обновлять программное обеспечение, аналогично устройствам Android. Более того, в Android происходят изменения, аналогичные тем, с которыми сталкивается встроенный Linux. Это не просто операционная система для планшета или система мобильной связи.

Особенность Android заключается в его способности настраиваться и оптимизироваться, сохраняя при этом общие компоненты и стандартизированные API. Это позволяет среде разработки приложений быть более последовательной. Конечно, это также означает, что образы ядра Android имеют очень большой размер, чтобы поддерживать эту согласованность или стандартизацию. Кроме того, это увеличивает поверхность для профилей уязвимости.

С Android у вас есть большое количество функциональности. В последнее время некоторые из ведущих разработок для поддержки новых графических ускорителей и SoC впервые появляются в среде Android. Затем их подталкивают к другим проектам, связанным с ядром Linux.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: