Изучаем Android. Ядро (Kernel) - что это такое

Многие владельцы Android устройств на различных форумах и сайтах часто встречают упоминание о чем-то непонятном, что называют ядром, или по-английски kernel. Его можно поменять и упоминание о нем встречается в меню настроек устройства, в разделе «О планшете (телефоне)».

Если копнуть поглубже, то окажется, что ядро – это часть операционной системы, и оно есть не только у Android, но и у других операционных систем: Windows, iOS, MacOS и прочих. Но нас будет интересовать ядро Android, и что это такое я попытаюсь объяснить на уровне начинающих пользователей.

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

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

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

Ядро управляет абсолютно всем оборудованием: Wi-Fi, Bluetooth, GPS, памятью и прочими устройствами. Не является исключением и «сердце» устройства – его процессор. Ядро может управлять его частотой и энергоснабжением.
Ядро операционной системы Android, позаимствовано ее разработчиками, компанией Google, у операционной системы Linux.

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

Как и прошивки , ядра бывают стоковыми (заводскими) и кастомными – альтернативными, созданные независимыми разработчиками.

Зачем нужны кастомные ядра? Стоковое ядро максимально оптимизируется производителем для конкретного устройства, но в нем обычно заблокированы такие важные функции ядра, как, например, управление частотой процессора. И если вам понадобится разогнать процессор своего планшета, вам нужно будет сменить ядро на кастомное, в котором функция управления частотой процессора разблокирована.

Кроме того, кастомные ядра, обычно основаны на более свежих версиях Linux ядер. Вот примерный перечень возможностей, которые нам дают кастомные ядра:

  • Изменение частоты процессора в широких пределах;
  • Разгон графической подсистемы (GPU);
  • Снижение частоты и напряжения питания процессора, что позволяет достичь более длительного времени работы от батареи;
  • Более свежие и качественные драйверы, например, ускоряющие работу GPS или добавляющие новые функции;
  • Широкие возможности по настройки и конфигурации звука и цветовой гаммы экрана;
  • Поддержка альтернативных файловых систем (XFS, ReiserFS и прочих).

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

В этом посте будет описано обновление ядра для Ubuntu, его причины и результаты. Также расскажу об установке модуля Virtualbox на него.

Являясь «счастливым» обладателем ноутбука с процессором я не устаю удивляться, что до сих пор Linux корректно не поддерживает интегрированное видео. Хотя в последнее время были , однако с ядром 3.1-rc10, которое я попробовал, загрузиться не удалось.

Итак, что же мы имеем на данный момент. Интегрированная графика не поддерживается на ядрах 2.6.36 — 2.6.38, есть патченные ядра от адама, с которыми она работает нормально. 2.6.37-vaioz у меня работала стабильно (если не считать вылета сессии Gnome после ввода Enter). Свеженькая Ubuntu 11.10 c ядром 3.0.4, у меня не завелась. А я очень на это надеялся. Ядра 3.1.x еще сыроваты, т.к. находятся в разработке.

На хабре в теме про проскочила замечательная на ppa-репозитарии с ядрами в deb пакетах. Это была для меня хорошая новость, т.к. теперь можно было просто перебрать все ядра и выяснить, какие из них будут работать с моим оборудованием. Начал я с версии . Система загрузилась, но потом ушла в kernel panic. Ок, дальше я попробовал . Система загрузилась, и уже пол-часа работает нормально (тьфу-тьфу-тьфу). Со второй попытки угадал, неплохо. Дальше будет мануалка по установке. Хотя там всё просто в общем-то.

Установка ядрышка 3.0.8 + модуля ядра для VirtualBox

1. Качаем три пакета из репозитария:

Wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.0.8-oneiric/linux-headers-3.0.8-030008_3.0.8-030008.201110250135_all.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.0.8-oneiric/linux-headers-3.0.8-030008-generic_3.0.8-030008.201110250135_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.0.8-oneiric/linux-image-3.0.8-030008-generic_3.0.8-030008.201110250135_amd64.deb

2. Ставим пакеты.

Sudo dpkg -i ./linux-headers-3.0.8-030008_3.0.8-030008.201110250135_all.deb sudo dpkg -i ./linux-headers-3.0.8-030008-generic_3.0.8-030008.201110250135_amd64.deb sudo dpkg -i ./linux-image-3.0.8-030008-generic_3.0.8-030008.201110250135_amd64.deb

Пишу, чтобы во-первых самому не забыть очередность, а во вторых чтобы был чёткий алгоритм.

3. Перезагружаем систему, в grub выбираем новое ядро. Грузимся, скрестив пальцы
4. Если загрузились, то ставим модуль для VirtualBox:

Sudo /etc/init.d/vboxdrv setup WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/. * Stopping VirtualBox kernel modules [ OK ] * Uninstalling old VirtualBox DKMS kernel modules [ OK ] * Trying to register the VirtualBox kernel modules using DKMS [ OK ] * Starting VirtualBox kernel modules [ OK ]

Теперь виртуалки должны запускаться нормально. Проверяем.

Глюки с падающей при логине сессией исчезли, единственное, что напрягает, так это то, что на ноутбуке не горит светодиод выбранной видеокарты.

Спасибо!

Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:

Часто возникает необходимость определить версию дистрибутива Ubuntu, которая установлена у вас на компьютере и текущую версию ядра. Например, это требуется при установке каких-нибудь программ, собранных под разные версии Ubuntu. В заметке я расскажу о нескольких способах определения версии Ubuntu.

Как нумеруются версии Ubuntu

Версии Ubuntu нумеруются в формате Год.Месяц (YY.MM). Дата указывает на то, когда был выпущен релиз. Помимо числовой версии к каждой версии приписывается кодовое имя. Например, Jaunty Jackalope или Lucid Lynx.

Определяем версию Ubuntu из командной строки

Команда lsb_release

Команда lsb_release предназначена для вывода информации о текущей версии дистрибутива Ubuntu. Чтобы получить требуемую информацию, выполните в командной строке команду lsb_release -a:

$ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 9.10 Release: 9.10 Codename: karmic

Как видите, мы получили версию (Release) и кодовое имя (Codename).

Файл /etc/lsb-release

Так же информация о версии Ubuntu хранится в файле /etc/lsb-release . Чтобы вывести файл, выполните в командной строке команду cat /etc/lsb-release:

$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=9.10 DISTRIB_CODENAME=karmic DISTRIB_DESCRIPTION="Ubuntu 9.10"

Файл /etc/issue

Есть еще один простой способ определить версию, это просмотреть содержимое файла /etc/issue , хотя сам файл предназначен несколько для других целей. Для этого в командной строке выполните:

$ cat /etc/issue Ubuntu 9.10 \n \l

Определяем версию Ubuntu без использования командной строки

Есть несколько простых способов определения версии, не используя командную строку.

В системном мониторе Ubuntu

На панели Gnome выполните Система->Администрирование->Системный монитор. Откроется окно Системного монитора, на главной вкладке которого будет указана версия Ubuntu и текущая версия ядра.

В справке Ubuntu

В меню на панели Gnome выполните Система->О системе Ubuntu . Загрузится документация по Ubuntu. На главной странице справки будет указано, какую версию вы используете.

Определяем текущую версию ядра

Выше я написал, как можно определить версию ядра Ubuntu, используя Системный монитор. Для определения версии ядра можно также воспользоваться командой uname . Выполните в командной строке:

$ uname -r 2.6.31-20-generic

Параметр -r используется для того, чтобы вывести информацию о версии ядра. Также можно вывести всю информацию, предоставляемую командой uname , для этого выполните команду с параметром -a:

$ uname -a Linux yuriy 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux