Как сменить ядро linux arch

Обновлено: 03.07.2024

Я только что сделал обновление системы, которое включало мое ядро. После чего, мой Wi-Fi сломался. После некоторого google, кажется, я не единственный человек, с которым это произошло.

rt2860 драйверы не играют хорошо с ядром 2.6-32.

Итак, как я могу понизить мой ядра? У меня все еще есть старый в моем кэше pacman, но я не уверен, как удалить текущий и установить старый.

Я попытался сделать ' pacman-Rsn kernel26[прошивка / заголовки], но OSS (звуковая система) жаловалась, что она требует *заголовков в качестве иждивенчества.

безопасно ли просто установить старый kernel26* (прошивка, заголовки, база), а затем удалить ток? Как я могу это сделать? :/

по моему опыту, можно безопасно понизить версию ядра. В последнее время мне приходилось много этим заниматься из-за проблемы с lirc и новые версии ядра. Мой пульт Hauppauge PVR-250 больше не работает после установки последней версии ядра. На самом деле, я сделал это несколько часов назад ;).

переустановка старой версии ядра:

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

Если вы имеете старую пакет kernel, вы можете установить его с помощью pacman -U package-name.pgk.tar.gz . Вы, скорее всего, получите ошибку зависимости после этого. Каждый пакет, указанный в этой ошибке, также должен быть понижен. Поэтому вернитесь в кэш пакетов, найдите именованный пакет в старой версии и попробуйте установить его, снова вызвав pacman, на этот раз со старым ядром и вновь найденным пакетом ( pacman -U package-name.pgk.tar.gz other-package.pkg.tar.gz ).

вам придется повторить эти шаги, пока pacman выполнить успешно. После этого вы должны быть в состоянии перезагрузите систему и новое (фактически старое) ядро будет загружено. Если pacman скажет вам, что он не может удалить пакет, несовместимый со старым ядром, вам придется удалить его вручную ( pacman -Rd conflicting-package.pkg.tar.gz ), перед установкой старого ядра. Но будьте осторожны с этим шагом, он может сломать вашу систему.

в моем случае, я должен понизить 7 пакетов, включая ядро, glibc, kernel-headers, lirc и два пакета моего драйвера nvidia.

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

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

С помощью Arch Build System можно собрать собственное ядро на основе официального пакета linux . Данный метод автоматизирует весь процесс компиляции и основан на тщательно протестированном пакете. Отредактировав PKGBUILD, вы можете выбрать произвольные настройки ядра или добавить некоторые патчи.

Contents

Подготовка

Сборка происходит при помощи makepkg, поэтому необходимо следовать "лучшим практикам", приведённым в соответствующей статье. Например, запустить makepkg от root/sudo не получится; следовательно, прежде всего необходимо создать каталог build внутри домашнего каталога.

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

В данный момент дерево файлов в каталоге должно иметь примерно следующий вид (могут быть дополнительные файлы):

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

Редактирование PKGBUILD

Внесите необходимые изменения в PKGBUILD . Обратите внимание на параметр pkgbase — в нём следует указать название вашего нового пакета, например:

Важно: Ни в коем случае не добавляйте строку linux в массив provides . Ваше ядро не будет совместимо с двоичными модулями стандартного ядра, поэтому удовлетворить такую зависимость будет невозможно. По той же причине не добавляйте linux-headers в provides пакета с заголовочными файлами.

Отключение создания документации

Создание документации отнимает много времени в процессе компиляции. На данный момент (16 июня 2021) следующий патч к PKGBUILD позволяет её отключить:

Изменение prepare()

Внутри этой функции можно применить необходимые патчи или изменить настройки сборки.

Если необходимо изменить несколько опций, отредактируйте файл настроек в исходниках.

Также можно воспользоваться графическим инструментом для переключения опций. Закомментируйте строку make olddefconfig в функции prepare() в файле PKGBUILD и добавьте свою утилиту.

Обновление контрольных сумм

Если вы заменили загруженный config другим, то перед запуском makepkg установите пакет pacman-contrib и обновите котрольные суммы командой:

Компиляция

Теперь можно скопилировать ядро командой makepkg .

Если для настройки параметров ядра была выбрана интерактивная программа (например, menuconfig), то во время компиляции потребуется ваше присутствие.

С параметром -s makepkg загрузит все необходимые зависимости, используемые последними ядрами, такие как xml и docs.

Установка

После компиляции в каталоге

/build/linux появится два пакета, один для ядра и один — для заголовочных файлов. Их названия будут иметь примерно следующий вид:

Лучше всего установить оба пакета одной командой, т.к. они могут потребоваться одновременно (например, для DKMS).

(замените названия пакетов на свои).

Загрузчик

Если вы изменили значение pkgbase , чтобы новое ядро устанавливалось рядом со стандартным, то необходимо внести изменения в настройки загрузчика, добавив новые значения ('default' и 'fallback') для вашего ядра и его initramfs-образа.

Обновление

Изначально метка HEAD локального bare-репозитория в archlinux-linux/ указывает на

т.е. где-то между v5.2.5-arch1 и v5.2.6-arch1.

А эта команда (показывает последнюю по времени метку) вывела более свежую метку archlinux, v5.2.7-arch1. Отсутствие новых меток означало бы, что исходники archlinux не изменились.

Теперь можно обновить файлы с исходным кодом:

Проверить, что всё верно, можно следующим образом:

В выводе видно archlinux-патчи между ядрами Arch Linux kernel v5.2.7-arch1 и Linux 5.2.7 .

Новейшие PKGBUILD и настройки ядра можно скачать командой asp :

Примечание: Иногда asp не обновляет файлы, даже если найдена более новая метка исходников archlinux. Это может быть связано с тем, что файлы сборки появляются лишь через некоторое время после добавления исходников.

/build/linux/linux/* с файлами в каталоге

Очистка

После объединения файлов имеет смысл удалить

/build/linux/linux/ . Кроме того,

/build/linux/src/archlinux продолжит собирать ветки вида 5.2.7-arch1 при последующих обновлениях. Ненужную ветку тоже можно удалить:

В этой статье я покажу вам, как обновить ядро ​​Arch Linux с помощью диспетчера пакетов. Я также покажу вам, как скомпилировать ядро ​​из исходного кода и использовать его в Arch Linux. Давайте начнем.

Обновление ядра с помощью диспетчера пакетов:

Сначала проверьте версию ядра, которое вы используете в настоящее время, с помощью следующей команды:


Теперь выполните следующую команду, чтобы выполнить обновление системы с помощью pacman:


Как видно из отмеченного раздела на скриншоте ниже, пакет ядра также будет обновлен. Теперь нажмите «y», а затем нажмите продолжить.


Менеджер пакетов Pacman должен начать загрузку и установку обновлений.


На этом этапе обновлены все пакеты, включая ядро.


Теперь перезапустите компьютер Arch Linux с помощью следующей команды:


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

Как видно на скриншоте ниже, ядро ​​обновлено до 4.15.1.


Компиляция ядра из исходников:

В этом разделе я покажу вам, как это сделать.


Теперь нажмите на отмеченный раздел, как показано на скриншоте ниже.


Последняя версия ядра Linux на момент написания - 4.15.2. Ваш веб-браузер должен предложить вам сохранить его. Нажмите «Сохранить файл», а затем нажмите «ОК», как показано на скриншоте ниже.


Архивный файл ядра Linux должен начать загрузку.


После завершения загрузки перейдите в каталог, в который вы загрузили файл. В моем случае это каталог Downloads / в домашнем каталоге пользователя USER.

$ компакт диск Загрузки /


Я перечислил содержимое каталога с помощью команды ls и, как видите, linux-4.15.2.tar.xz файл есть.


Теперь извлеките файл архива с помощью следующей команды:

$ деготь xvf linux-4.15.2.tar.xz


Файл следует распаковать.


ПРИМЕЧАНИЕ. Для компиляции ядра Linux вам потребуется более 20 ГБ свободного места. Вы можете проверить, сколько места у вас осталось, с df -h команда.


После извлечения файла следует создать новый каталог. В моем случае это Linux-4.15.2 / каталог, как показано на скриншоте ниже.


Теперь перейдите в каталог с помощью следующей команды:

$ компакт диск Linux-4.15.2


Перед запуском процесса компиляции ядра убедитесь, что вы выполнили следующую команду для установки ncurses, сделать, gcc, bc, и openssl пакеты:

$ судо Пакман -S ncurses делать gcc До нашей эры openssl


Нажмите ‘y’, а затем нажмите продолжить.


Требуемые пакеты должны быть установлены.


Теперь скопируйте файл конфигурации, который использует текущее ядро, в Linux-4.15.2 каталог с помощью следующей команды:

$ zcat / прока / config.gz > .config


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


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

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


Когда вы будете удовлетворены файлом конфигурации, перейдите в вариант и нажмите


Затем вы должны увидеть следующее окно. нажимать опять таки.


Затем вы должны увидеть следующее окно. нажимать опять таки.


Вы должны вернуться в главное окно конфигурации.


Перейти к и нажмите


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


Теперь выполните следующую команду, чтобы начать процесс компиляции:


Должен начаться процесс компиляции ядра.


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


Теперь установите все скомпилированные модули ядра с помощью следующей команды:

$ судо делать modules_install


Все модули ядра должны быть установлены.


Теперь скопируйте вмлинуз файл для вашей архитектуры в каталог / boot. Для 32-битной операционной системы выполните следующую команду:

$ судо cp -v арка / x86 / ботинок / bzImage / ботинок / вмлинуз-4.15.2

Для 64-битной операционной системы выполните следующую команду:

$ судо cp -v арка / x86_64 / ботинок / bzImage / ботинок / вмлинуз-4.15.2


Файл следует скопировать.


Теперь сгенерируйте initramfs образ и сохраните его в каталоге / boot с помощью следующей команды:

$ судо mkinitcpio -k 4.15.2-АРКА -г / ботинок / initramfs-4.15.2.img


В initramfs файл должен быть сгенерирован.


Теперь скопируйте System.map файл в /boot каталог с помощью следующей команды:

$ судо cp -v System.map / ботинок / System.map-4.15.2


Теперь создайте символическую ссылку на System.map-4.15.2 файл в /boot/System.map с помощью следующей команды:

$ судо пер -sf / ботинок / System.map-4.15.2 / ботинок / System.map


Теперь сгенерируйте grub.cfg файл с помощью следующей команды:

$ судо grub-mkconfig -о / ботинок / жратва / grub.cfg


Новый grub.cfg файл должен быть сгенерирован.


Теперь перезагрузите компьютер с помощью следующей команды:


Когда на вашем компьютере отображается меню GRUB, выберите параметр «Дополнительные параметры для Arch Linux» и нажмите .


Затем выберите из списка меню для недавно установленного ядра и нажмите .


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

Ядро должно быть обновлено, как вы можете видеть на скриншоте ниже.


Вот как вы обновляете ядро ​​Arch Linux. Спасибо, что прочитали эту статью.

Кроме т.н. «ванильных» (оригинальных, немодифицированных) ядер, в дистрибутиве Arch Linux есть возможность установки и/или сборки из исходного кода кастомных ядер Linux, включающих в себя новые возможности, оптимизации или собирающиеся с обеспечением повышенной безопасности работы. В этом материале предлагаю собственный мини-обзор кастомных ядер для Arch Linux, который поможет определиться нужен ли вам кастомный пингвин под капотом (спойлер: нужен) и какое ядро выбрать под свои задачи.

Linux Zen

Ядро Zen содержит множество оптимизаций и улучшений по сравнению с «ванильным» ядром, нацеленных на предоставление «десктопного» ядра Linux для решения повседневных задач и игры, подо что и оптимизировано.

Установка Linux Zen

Zen ядро лежит в официальном репозитории «extra» Arch Linux, поэтому компилить ничего не надо. Ставится стандартным пакетным менеджером Pacman:

Linux Xanmod

Отличная модификация ядра Linux. Имеется большое количество улучшений, в том числе использование в качестве планировщика ЦП CacULE («какуля», у него и логотип соответсвующий). Не смотря на название — один из лучших планировщиков ЦП. В ядре содержатся модули Ashmem и Binder, с помощью которых можно запускать Anbox. С полным списком изменений и улучшений ядра Xanmod можно ознакомиться на официальном сайте. Кстати, там же есть инструкции по добавлению реп с ядром Xanmod в Debian/Ubuntu/Linux Mint. А вот в Arch Linux ядро Xanmod нужно собирать самостоятельно, с помощью PKGBUILD-сценария из AUR.

Установка Linux Xanmod

В AUR есть множество сценариев сборки данной модификации ядра. Обратите внимание, что по умолчанию собирается «generic» версия ядра, хотя можно собрать версию Xanmod, оптимизированную для своего процессора, о чём я хочу написать отдельный материал позже. А пока рассмотрим самые интересные варианты Xanmod в AUR.

linux-manjaro-xanmod

Xanmod с модификациями для дистрибутива Manjaro:

linux-xanmod-anbox

Вариант Xanmod с модулями Binder и Ashmem для Anbox:

linux-xanmod-cacule

Xanmod с планировщиком центрального процессора CacULE:

linux-xanmod-cacule-uksm

Xanmod с ЦП планировщиком CacULE и патчем UKSM (Ultra Kernel Samepage Merging). Последнее — очень классная штука, позволяющая в некоторых ситуациях сильно экономить оперативную память проводя её дедубликацию. Например, если на обычном ядре запустить 10 одинаковых виртуальных машин — они будут жрать ОЗУ как 10 виртуальных машин. С патчем UKSM эти же 10 виртуалок сожрут ОЗУ только как одна виртуальная машина. В этом мощь UKSM!

Linux Liquorix

Ядро Liquorix содержит все тюны ядра Zen, но в дополнение к ним использует I/O планировщик MuQSS, предназначенный для игры, мультимедиа и задач, требующих минимальные задержки. Подробности есть на официальном сайте проекта.

Установка Liquorix

Ядро собирается с помощью сценария из AUR:

Linux CK

Ядро CK собрано с патчами от Con Kolivas, включает планировщик ЦП MuQSS. Linux CK обеспечивает максимальную производительность и отзывчивость для настольных систем и не предназначено для серверов. Пользователи Arch Linux отмечают отличную отзывчивость системы, работающей на CK ядре под любыми нагрузками.

Установка Linux CK

CK ядро в AUR есть в нескольких вариантах.

linux-ck

Стандартная модификация ядра CK. Установка:

linux-ck-uksm

Модификация Linux CK с патчем UKSM. Именно этот вариант ядра использую и я:

Linux PF

Данная версия модифицированного ядра Linux так же ориентирована на использование в десктопных системах. Включает UKSM в станадртонй поставлке. Вариант для тех, кому нужно минимально модифицированное ядро Linux с поддержкой UKSM.

Установка Linux PF

Собираем сценарием из AUR.

Какое ядро выбрать?

Конечно же, лучше всего будет попробовать все варианты модификаций и выбрать тот, который понравится больше всего. Рекомендую сначала собрать Xanmod если хочется попробовать максимально тюнингованное ядро. Если же просто нужно UKSM — можно поступить как я и остановиться на ядре CK с патчем UKSM. Любое ядро будет работать скорее всего не хуже стокового, по крайней мере я деградаций не замечал, хотя перебрал все модификации, представленные в данном материале. Пробуйте, экспериментируйте!


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

Ядро операционной системы похоже на вашу сердечно-сосудистую систему.

Вы склонны забывать об этом, пока что-то пойдет не так.

Когда обновленное ядро не позволит вам использовать ваш компьютер, пришло время понизить версию.

Загрузитесь в старое ядро


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

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

В некоторых системах сразу будут показаны более старые ядра, в то время как в Ubuntu вам нужно будет выбрать «Advanced options for Ubuntu», чтобы найти более старые ядра.

Выбрав старое ядро, вы загрузитесь в свою систему.

Все должно работать как раньше.

Если проблема не устранена, значит она не в ядре.

Удалите проблемное ядро

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

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


Вы можете сделать это, используя инструменты управления пакетами вашего дистрибутива. Это будет отличаться в зависимости от системы, которую вы используете. Вам также необходимо знать версию ядра, которое вы хотите удалить. Версию можно найти во время загрузки на экране GRUB. Для Ubuntu и других основанных на apt дистрибутивов вы можете использовать команду, подобную следующей: Вам нужно заменить вышеприведенную VERSION точным номером версии проблемного ядра, которое вы хотите удалить. Если вы просто хотите отложить ядро на некоторое время, вы можете использовать следующую команду:


Как избежать таким проблем в будущем

Особенно следует следить за пользователями со схожим оборудованием.

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

Эти обновления более редкие, за исключением обновлений безопасности.

Это означает, что вы можете рассчитывать на то, что они будут более стабильными, чем ваш стандартный дистрибутив.

Заключение

Хотя понижение версии является самым простым способом решения проблем, связанных с ядром, это не единственный способ.

Иногда это просто невозможно.

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

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

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