Сборка ядра linux

Проверка работоспособности механизма автоматической пересборки модуля после обновления ядра ОС

После того, как фреймворк DKMS настроен для автоматической пересборки драйвера , я предлагаю рассмотреть изменения в системе, которые произойдут в результате обновления версии ядра ОС. Я буду обновлять ядро ОС версии до версии . В качестве тестового окружения будет использоваться дистрибутив CentOS 7, поэтому для обновления версии ядра ОС я воспользуюсь утилитой

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

Перед обновлением необходимо узнать версии драйвера и текущего ядра ОС.

$ modinfo ixgbe

Несложно заметить, что драйвер устройства версии был установлен средствами DKMS в директорию модулей ядра Linux версии .

А теперь попробуем установить новую версию ядра ОС и соответствующих заголовочных файлов:

$ sudo yum install kernel kernel-devel

После перезагрузки с задействованием новой версии ядра ОС следует снова проверить версию драйвера .

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

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

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

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

$ sudo yum install kernel-devel
$ sudo dkms build ixgbe/4.3.15
$ sudo dkms install ixgbe/4.3.15

Алгоритм загрузки linux (UEFI)

Сейчас на смену BIOS пришёл UEFI (Unified Extensible Firmware Interface). UEFI содержит множество преимуществ перед BIOS, одна из которых это поддержка GPT.

Раньше диски разбивались на разделы с помощью MBR, при этом диск не мог быть больше 2 TB, а разделов не могло быть больше четырёх. При этом таблица разделов и первичный загрузчик помещались на первый сектор диска в MBR. А GPT позволяет использовать очень большие диски и помещает загрузчик на специальный раздел, а также позволяет создавать очень много разделов.

Диск разбитый на разделы с помощью таблицы разделов GPT в первом секторе продолжает хранить MBR запись. Это делается для того, чтобы старые системы с BIOS могли использовать GPT диски.

UEFI не использует загрузчик из MBR, вместо этого используется загрузчик со специального раздела на диске, который отформатирован в FAT32 и называется ESP или EFI. Это специальный загрузчик от UEFI. Обычно это файл /efi/boot/bootx64.efi.

Secure Boot

UEFI имеет специальный режим, который называется Secure Boot. Если этот режим включен, то загрузчик без специальной подписи не будет работать. Windows и некоторые системы Linux имеют такие подписи, а для других систем приходится этот режим отключать.

Или можно не отключать Secure Boot, а просто очистить ключи производителя и добавить туда ключи от необходимого загрузчика. Например в Ubuntu – GRUB 2 подписан подписью от Canonical, именно эту подпись и следует добавить в Secure Boot.

Дальнейшая загрузка

А дальше все происходит также как и в системах с BIOS. Загрузчик запускает GRUB 2, хотя может сразу запустить и ядро Linux, но тогда мы теряем гибкость GRUB 2.

GRUB 2 в свою очередь запускает ядро Linux. Дальше ядро запускает систему инициализации. А уже система инициализации запускает все остальные процессы в системе.

Предупреждение перед обновлением ядра

Необходимо помнить, что из-за несовместимости ядра с программами (в первую очередь, с проприетарными видео драйверами), вы можете столкнуться с проблемами, в том числе с чёрным экраном во время загрузки.

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

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

Следует быть особенно осторожным владельцам старых дистрибутивов — настоятельно рекомендуется обновлять ядро только на последних версиях ОС.

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

Какие операционные системы подходят для ARM?

В принципе на ARM-устройствах можно запустить любую операционную систему, которая была скомпилирована под данную архитектуру. Поэтому обычные Линукс версии, которые мы уже привыкли наблюдать на своих ПК, просто не подойдут, даже если они легковесны и подходят по другим параметрам. Но в то же время в сети можно найти приличное количество уже «готовых» дистрибутивов Linux для ARM-процессоров. Ярким представителем является известный всем Android, из менее известных, но популярных — Kali Linux.

Кстати, а вы знали, что популярный Android мегакорпорации Google — это всего лишь «операционка» на основе ядра Linux? Притом, что Андроид является самой популярной операционной системой для мобильных телефонов — этот факт, как видите, малоизвестен. Но вообще нужно понимать, что Linux здесь является всего лишь «ядром». А ядро — это всего лишь основной функционал, предполагающий использование устройствами опций аппаратной системы, драйверов, управления, утилиты для командной строки и др. Семейство Linux подразумевает совокупность всех операционных систем, использующих его ядро, но это не есть самостоятельное ядро. Различие всем системам «семейства» придает графическая оболочка, но это совсем другая история. Однако возможность использовать эти ОС без графической оболочки, а только через текстовую командную строку, расширяют сферу их применения. Именно поэтому их можно «заметить» в необычных местах:

  • в сетевом оборудовании;
  • в производственных станках;
  • в начинке самолета или автомобиля;
  • даже в современных стиральных машинах.

Итак, из семейства Linux для ARM можно подобрать конфигурации у следующих дистрибутивов:

  1. Debian. Это одна из самых старых версии Линукса, большое сообщество, много программ, написанных для этой системы, стабильность работы и мн.др. Его можно «найти» практически везде, также и в ARM-процессорах.
  2. Ubuntu. Кто не слышал об Убунту, тот не слышал о Линукс. Считается, что у него более продвинутое интерфейсное оформление, чем у Дебиан, да и вообще он сам более продвинутый. Встречается в ARM-процессорах, но совсем недавно анонсирована Ubuntu Phone — специальная ОС для смартфонов, которая будет призвана конкурировать с Android. Проект анонсирован, но пока должного «движения» не замечено.
  3. Kali, Arch, Gentoo и др., и каждый со своей отличительной особенностью, и каждый используется в ARM-системах.

На самом деле, этот список можно продолжать очень долго, потому что прогресс не стоит на месте, а земля наша славится умельцами. И многие разработчики «подтачивают» тот или иной дистрибутив Linux под ARM-процессор.

General setup

Содержит общие настройки

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

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

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

Поддержка ядром своп-файла. Включаем.

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

— очередь для сообщений формата POSIX с использованием
приоритетов. Часть механизма связи между процессами. Нужно, если запускать программы написанные под этот формат, например с ОС Solaris.

— поддержка дополнительных сведений о процессах
(время запуска, владелец, командная строка запуска, использование памяти).
Полезно для контроля процессов.

— включение механизма проверки ядра. Например
используется системой SELinux (система расширенной безопасности для Linux).

— включение системных вызовов для
механизма проверки ядра.

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

Если эта опция включена, вы сможете получать параметры текущего ядра из

Рекомендуется включить. Пригодится.

Поддержка группирования процессов. Используется такими подсистемами как CPUSETS,
CFS, контроль памяти или устройства изоляции.

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

Включает поддержку интерфейса некоторых файловых систем (таких как debugfs). Предназначена для эффективного механизма передачи больших объёмов данных из пространства ядра в пользовательское пространство.

Поддержка initrd/initramfs.

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

Оптимизация кода ядра по размеру. Может быть полезно для создания загрузочных дискет. В обычных случаях не требуется.

Включение расширенной поддержки профилирования (например, OProfile). Обычно не нужно.

Установка Debian 11

Debian 11, как и предыдущий релиз имеет три способа установки. Два из них доступно во время загрузки: Graphical Debian installer и Debian Installer, с графической оболочкой и без. Но также имеется графический установщик Calamares, доступный после запуска Live-системы. Именно его мы и будем использовать, хотя он имеет несколько особенностей.

Шаг 1. Запуск Live-системы

Для запуска системы выберите Debian Live with Localisation Support.

После этого найдите русский язык и продолжите запуск системы.

Шаг 2. Первоначальная настройка Live-системы

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

И опять нажимаем Далее, русская раскладка выбрана по умолчанию.

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

Подключив учётные записи некоторые приложения смогут получать информацию с ваших аккаунтов. Например, Календарь свяжется с сервером Google и загрузит ваши события (справедливо для оболочки GNOME).

Настройка завершена, можно приступать к следующему этапу.

Оболочка рабочего стола GNOME также покажет советы по использованию интерфейса. Можете закрыть это окно, если знаете, как работать с чистой оболочкой.

Шаг 3. Запуск установщика

Установщик находится в док-панели, которая станет доступна при нажатии кнопки Обзор.

Мы выбрали самый простой установщик Calamares, поэтому стоит сразу оговорить его отличия от стандартного установщика Debian. Последний имеет большее количество настроек: задание имени домена сети и пароля root, согласие на установку загрузчика и так далее. Обычному пользователю это может даже навредить, если он не уверен в своих действиях.

Установщик сам выставляет текущий язык системы. Просто нажимаем Далее.

Часовой пояс проще всего выбрать на карте, время в верхней панели поменяется автоматически.

По умолчанию раскладка выбрана на основании языка системы.

Шаг 7. Разметка диска

Если устанавливаете систему на компьютер без операционной системы, то просто выбирайте автоматический режим Стереть диск. В нижней части изображена разметка после установки. Calamares по умолчанию выделяет около 8 ГБ под файл подкачки, стандартный установщик в свою очередь всего 1 ГБ.

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

С UEFI будет создан ещё один раздел объёмом 300 МБ под загрузчик.

Ручная разметка заметно сложнее, но она позволяет задать все параметры самостоятельно, в том числе установить дистрибутив параллельно основной системе. В случае с EFI и неразмеченным накопителем будет необходимо создать раздел FAT32 с точкой монтирования /boot/efi и флагом Boot. Аналогичным образом создаётся раздел под файл подкачки с одноимённой файловой системой, хотя рядовому пользователю вовсе не обязательно выделять под это отдельный раздел, в основном он нужен для спящего режима.

В общем случае достаточно иметь один единственный раздел (помимо EFI) с точкой монтирования . Также можете выделить раздел под /home, а подробнее о разметке диска узнать из нашей статьи.

Шаг 8. Создание пользователя

Как было сказано ранее, Calamares не задаёт пароль root, поэтому вашей учётной записи будут предоставлены права суперпользователя. В текущей версии установщика имеется незначительный баг, раскладки клавиатуры перепутаны местами.

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

Шаг 10. Установка

На следующем этапе пойдёт автоматическая установка Debian 11. К сожалению, посмотреть терминал нельзя, узнать подробности не получится.

По завершении процесса перезагрузите компьютер.

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

Шаг 12. Первоначальная настройка

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

Как видите, выбор раскладки в панели исчез, установлена только русская раскладка.

Где находится ядро Linux?

Каждый раз во время запуска (или перезапуска) системы первым компонентом, который загружается в память компьютера, является ядро Linux.

В системах Debian/Ubuntu файлы присутствующих в системе ядер расположены в каталоге /boot и именуются в виде vmlinuz- (выполнив в терминале команду , мы получим информацию о текущей версии установленного ядра):

В папке /boot вы также найдете и другие очень важные файлы:

   img- — используется в качестве RAM-диска, в который распаковывается и с которого загружается ядро;

   map- — используется для управления памятью до полной загрузки ядра;

   config- — сообщает ядру, какие параметры и модули следует загрузить в образ ядра при его компиляции.

Когда Линус Торвальдс только начинал разрабатывать свое ядро, оно носило простое название — linux. С появлением технологии к ядру добавилась приставка vm (сокр. от «virtual memory»). Со временем ядро настолько разрослось, что к нему стали применять сжатие, об этом нам говорит буква z (от «zlib compression») в слове vmlinuz.

Примечание: Также для сжатия ядра часто применяются алгоритмы LZMA или bzip2, а сами ядра именуются zImage.

Обновление ядра Debian

Когда вы используете Debian, вы должны понимать, что самые новые версии пакетов вы не всегда можете получить. Один из таких компонентов — ядро. Вы можете взять ядро, собранное для других дистрибутивов, например, Ubuntu, но там использованы свои патчи, и скорее всего, оно не будет правильно работать в Debian. Самым простым способом получить новое ядро в этой системе будет использование тестовых репозиториев, таких, как backports и experimental. Например, сейчас самая новая версия Debian — 9. В ней используется ядро 4.9. Но в репозитории experimental есть ядро 4.13, на данный момент, это самая новая версия, доступная на Kernel.org.

Давайте рассмотрим как установить ядра из exprimental и backports. Пакеты из backports тоже свежие, но не настолько как из experimental, поэтому они более стабильны. Сначала рассмотрим backports, а уже затем experimental. Нам нужно добавить репозиторий в систему, для этого откройте файл /etc/apt/sources.list и добавьте туда такую строку:

Обновите список пакетов:

Дальше нужно обновить список пакетов, а затем смотрим, какие версии ядра появились в системе:

Как видите, в репозитории backports уже есть ядро 4.11, в то время как в официальном стабильном репозитории только 4.9. Теперь мы можем обновить ядро debian:

После завершения установки ядра будет автоматически обновлен загрузчик Grub и вам останется только перезагрузить компьютер чтобы изменения вступили в силу

Обратите внимание, что если вы используете ноутбук, то вам еще нужно будет установить прошивку firmware из репозитория backports. Например, для iwlwifi:

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

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

Теперь добавьте репозиторий в систему:

И обновите список пакетов:

Проверьте, сработала ли настройка приоритета:

Дальше ищем доступные версии ядра:

Тут мы уже видим новую версию ядра Linux 4.13 из репозитория experimental, о которой я говорил выше. Дальше мы можем ее установить:

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

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

Установка KDE

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

Этого достаточно, чтобы после его завершения и перезапуска мы могли войти на наш новый рабочий стол. Если вы посмотрите в конце, я добавил LightDM и я объясняю почему. Когда мы устанавливаем пакет kde-плазма-рабочий стол, это устанавливает нас KDM который для меня очень тяжелый, поэтому я заменяю его на LightDM. Как только мы дадим Enter, мастер спросит нас, какой из них мы хотим использовать, вы выбираете тот, который хотите.

LightDM он также установит пакеты для графического сервера. Поскольку я использую интеллект, я просто добавляю: xserver-xorg-видео-Intel, будучи таким образом:

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

Это пакеты, с помощью которых мы будем улучшать приложения. Gtk которые мы используем, и некоторые значки, которые мы добавляем. Если вы не используете кошелек KDE для управления паролями вы можете удалить kwalletmanager.

Processor type and features

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

Для старых систем SMP, которые не имеют надлежащей поддержки ACPI.

Поддержка платформ, отличных от PC.

Поддержка паравиртуализации (например, для Xen).

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

Включение технологии Hyperthreading.

Для процессоров Intel Core, AMD Athlon64/Phenom.

Для поддержки UEFI. В данном примере она отключена.

Как восстановить Linux после установки ядра

Если ваш компьютер загружается с чёрным экраном, зависает или что-то не работает после обновления ядра, перезагрузитесь и выберите Дополнительные параметры для вашего дистрибутива в меню GRUB:

Затем выберите предыдущую версию ядра и нажмите Enter:

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

Если вы не видите меню GRUB2, нажмите и удерживайте клавишу Shift или несколько раз нажмите клавишу Esc (это может варьироваться в зависимости от загрузки BIOS или UEFI и от используемой вами версии Ubuntu/Linux Mint) при загрузке GRUB. Должно появиться меню Grub, позволяющее выбрать предыдущую версию ядра.

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

Для удаления ядра XanMod в Debian и производных выполните команду:

sudo apt remove linux-xanmod
sudo apt remove `sudo apt show linux-xanmod | grep Depends | sed 's/,//' | awk '{print $2,$3}'`

Если это не было сделано автоматически, то обновите настроки GRUB:

sudo update-grub

Шаг 2. Получение необходимых для сборки пакетов

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

Выполните следующие команды для установки основных пакетов:

sudo apt-get update
sudo apt-get build-dep linux
sudo apt-get install kernel-package

Далее всё зависит от того, каким способом вы хотите произвести конфигурацию ядра. Это можно сделать несколькими способами.

  • config — традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Не рекоммендуется для неопытных пользователей.
  • oldconfig — файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих.
  • defconfig — файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию.
  • menuconfig — псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале.
  • xconfig — графический (X) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров.
  • gconfig — графический (GTK+) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в среде GNOME.
  • localmodconfig — файл конфигурации, создающийся автоматически, в который включается только то, что нужно данному конкретному устройству. При вызове данной команды большая часть ядра будет замодулирована
  • localyesconfig — файл конфигурации, похожий на предыдущий, но здесь большая часть будет включена непосредственно в ядро. Идеальный вариант для начинающих.

В случае, если вы хотите использовать config, oldconfig, defconfig, localmodconfig или localyesconfig, вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.

Для установки пакетов, необходимых для использования menuconfig выполните следующую команду:

sudo apt-get install libncurses5-dev

Для установки пакетов, необходимых для использования gconfig выполните следующую команду:

sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Для установки пакетов, необходимых для использования xconfig выполните следующую команду:

До Ubuntu 12.04:

sudo apt-get install qt3-dev-tools libqt3-mt-dev

C Ubuntu 12.10:

sudo apt-get install libqt4-dev
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

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