Выбор ядра по умолчанию linux

Обновлено: 04.07.2024

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

До сих пор мне удалось выбрать только ОС по умолчанию . и по какой-то причине /boot/grub.cfg уже предполагается, что я хочу загрузить rt-ядро и поместить его в общий пункт меню linux (в моем случае Arch Linux).

Но как узнать номер? Числа grub.cfg только соответствуют ОС, а не ядрам.

Я думаю, что большинство дистрибутивов перенесли дополнительные ядра в подменю расширенных опций на данный момент, как обнаружил TomTom в случае с его Arch.

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

1) Найдите $menuentry_id _пцию для подменю:

2) Найдите пункт $menuentry_id_option меню для ядра, которое вы хотите использовать:

3) Закомментируйте ваш текущий набор по умолчанию /etc/default/grub и замените его подменю $menuentry_id_option с первого шага, а выбранное ядро $menuentry_id_option с второго шага разделите > .

В моем случае модифицированным GRUB_DEFAULT является:

4) Обновите grub, чтобы внести изменения. Для Debian это делается так:

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

После двух часов борьбы я нашел гораздо более простой способ добиться этого. Я просто RTFM. ;)

Добавьте две строки в / etc / default / grub

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

Как упоминалось в комментариях, вы можете установить ядро ​​по умолчанию для загрузки с помощью grub-set-default X команды, где X - это номер ядра, в которое вы хотите загрузиться. В некоторых дистрибутивах вы также можете установить этот номер, отредактировав /etc/default/grub файл и настройку GRUB_DEFAULT=X , а затем запустив update-grub .

Число - это индекс массива ядер / настроек ядра, отображаемых в меню GRUB во время загрузки, при этом 0 - это первая (самая верхняя) запись. Обычно вы можете найти правильное число, посмотрев menuentry строки /boot/grub/grub.cfg , например:

Вы увидите каждое ядро ​​в списке с именем, которое отображается в меню загрузки GRUB. Первый - 0, второй - 1 и т. Д.

Это не работает для меня. Последнее ядро ​​в моей установке - 4.4.0-64-generic (menuentry 0), но я хочу, чтобы 4.4.0-59-generic (menuentry 9) было загрузочным ядром по умолчанию. Я побежал, grub-set-default 9 а затем grub-update и перезагрузился. Я позволил grub загружаться с ядром по умолчанию, и он по-прежнему загружается с 4.4.0-64-generic . Я также попытался редактировать /etc/default/grub и установить GRUB_DEFAULT=9 и запустить grub-update . При перезагрузке ничего не меняется, система все еще загружается с 4.4.0-64-generic . Может я что-то упустил, кто-нибудь может мне помочь?

Простое выполнение grep 'menuentry' /boot/grub/grub.cfg перечисляет дополнительные записи, которые не относятся к фактическим версиям ядра или ОС. Например, он перечисляет

Я хотел бы предложить небольшое улучшение метода поиска этого файла: использовать awk

С помощью приведенной ниже команды и ее вывода вы можете увидеть, что awk код соответствует фактической версии ОС, и указать номер, который вы затем можете использовать в /etc/default/grub файле.

В дополнение к редактированию /etc/default/grub файла вручную, я предлагаю использовать sed . В приведенной ниже команде замените X на соответствующий номер, полученный из команды awk выше:

sudo sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=X/g' /etc/default/grub; sudo update-grub

Это не ответ. Это читается как комментарий. В ответе должно быть сказано «Вот как установить запись по умолчанию в GRUB», а не «позвольте мне добавить дополнение к другому ответу». Вы можете легко отредактировать это в правильный ответ, но может быть разумнее просто оставить комментарий к ответу jkt123 об использовании awk вместо grep.

Я думаю, jkt123 будет работать для большинства дистрибутивов. Однако для Arch Linux это не сработало, по крайней мере, с теми пакетами, которые у меня есть.

Индексы, которые вы можете установить, grub-set-default соответствуют только пунктам главного меню. Однако параметры ядра находятся в подменю. Таким образом, вы либо перемещаете запись ядра из подменю в главное меню, либо помещаете запись в верхней части списка подменю и выбираете подменю.

Мое меню Grub

  • Arch Linux
  • Расширенные опции для Arch Linux
    • Ядро 1
    • Ядро 2

    Чтобы иметь возможность загружать ядро ​​2, вы должны либо поменять его местами с ядром 1, либо поместить его вне подменю на том же уровне, что и Arch Linux или Windows. А затем установите номер по умолчанию для одного из индексов главного меню. Например, в меню выше «0» загружает «Arch Linux» и «1» загружает ядро ​​1.

    Чтобы изменить иерархию и обмен, откройте /boot/grub/grub.cfg и переместите запись, которую вы хотите переместить. Запись может выглядеть так

    Затем вам нужно применить ваши изменения. В моем случае с grub-mkconfig . Но это может варьироваться от системы к системе.

    Выбор ядра Linux по умолчанию

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

    Так или иначе 100%-ой гарантии старта ОС с новым ядром никто дать не сможет. Хорошо когда под руками есть физическая консоль сервера и мы можем перезагрузив линукс в меню GRUB выбрать работоспособное ядро, но в случае с виртуальными частными серверами у клиента его купившего нет такой возможности.

    После установки/обновления ядра, в большинстве ОС Linux, оно попадает в файл /etc/grub.conf, где также прописано загружаемое по умолчанию ядро (kernel). Файл /etc/grub.conf выглядит примерно следующим образом:

    В примере выше при старте ОС всегда по умолчанию используется ядро под номером "0" (default=0). Для выбора ядра загружаемого единожды при старте Linux нужно выполнить одну из перечисленных ниже команд:

    После старта проверяем версию ядра uname -a и если там указана именно та версия которую мы выбрали для загрузки единожды, то в файле vi /etc/grub.conf выбираем ядро для загрузки по умолчанию под нашим номером "1" (ака default=1), а если же сервер остался недоступен, то его нужно запустить/перезагрузить удалённо (через веб консоль) или локально (на физической консоли).

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

    Рекомендуемый контент

    Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).

    Ядру Linux можно передавать различные параметры для изменения стандартного поведения или информирования о нестандартной конфигурации оборудования. Делать это можно непосредственно перед загрузкой ядра или уже во время выполнения. Во время выполнения параметры ядра можно установить отредактировав файлы в подсистеме /proc или /sys. Перед загрузкой параметры передаются с помощью загрузчика Grub.

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

    Настройка параметров ядра Grub в системе

    Файл шаблона конфигурации Grub в Debian подобных системах находится по адресу /etc/default/grub. Добавьте параметр ядра в виде имя = значение в переменную GRUB_CMDLINE_LINUX_DEFAULT:

    sudo vi /etc/default/grub

    Здесь же вы можете удалить нежелательные параметры ядра Grub установленные по умолчанию, например, заменить quiet на verbose для подробного вывода информации о процессе загрузки. Затем выполните следующее чтобы обновить конфигурацию загрузчика:

    Если такой команды не существует нужно установить пакет grub2-common:

    sudo apt install grub2-common

    В Fedora и CentOS скрипта update-grub для обновления конфигурации загрузчика нет, поэтому надо вручную сгенерировать новый конфигурационный файл:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg

    Лучше всего добавлять параметры загрузки ядра linux именно этим способом, но давайте рассмотрим ещё несколько альтернативных вариантов

    Параметры загрузки ядра в grub.cfg

    Если вы не можете воспользоваться способом, описанным выше можно отредактировать непосредственно конфигурационный файл загрузчика который находится по пути /boot/grub/grub.conf. В этом файле нужно найти секцию отвечающую за стандартную загрузку Linux. Обычно, это первая секция menuentry:


    Найдите её, а затем в этой секции найдите строчку linux /boot/vmlinuz. в конец этой строки вы и можете дописать свои параметры, в таком же формате. Затем сохраните изменения в файле и перезагрузите компьютер. Ядро загрузится с новыми параметрами. Если вас интересовал вопрос какой командой загружается ядро linux в grub, то это именно команда linux. Синтаксис её такой:

    linux параметры_ядра

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

    Параметры ядра Grub при загрузке

    Загрузчик Grub позволяет также редактировать пункты меню перед запуском системы. Для этого в меню Grub выберите нужный пункт и нажмите клавишу E. Откроется редактор текущей секции меню. Здесь надо, аналогично предыдущему способу найти строчку linux /boot/vmlinuz. и дописать в конец ваши параметры ядра Linux, например, init=/bin/bash:


    Затем нажмите кнопку F10 или Ctrl+X чтобы продолжить загрузку с новыми параметрами. Эти параметры будут актуальны до следующей перезагрузки. На этом всё. Надеюсь информация из статьи была для вас полезной.

    Изменение загружаемого по умолчанию ядра в Ubuntu Linux

    При установке системных обновлений в виртуальной машине с Ubuntu Server 14.04 32-bit я столкнулся с ситуацией, когда вновь установленное в систему ядро Linux не смогло загрузиться. Если система была установлена с загрузчиком GRUB, то в процессе каждой загрузки у нас есть возможность вручную выбрать ядро (предполагается, что при обновлении мы сохранили старое работоспособное ядро), которое будет загружено.

    Когда процесс загрузки отобразит меню GRUB, выберем пункт меню Advanced options for Ubuntu

    image_thumb21

    image_thumb311

    В появившемся списке доступных для загрузки ядер Linux выберем предыдущее ядро, с которым загрузка ВМ проходила успешно до обновления (в моём случае это ядро версии 3.13.0.-24).

    Однако при следующей перезагрузке системы без ручного вмешательства в процесс загрузки, загрузчик GRUB всё-равно запустит более новое ядро, так как оно назначено в качестве ядра по умолчанию. Для того, чтобы переопределить загружаемое по умолчанию ядро, запомним позицию нужного нам ядра в списке GRUB (в моём случае это 2 позиция с учётом того, что нумерация идёт с 0). Загрузим систему, вручную выбрав нужное ядро, и отредактируем конфигурационный файл GRUB:

    В файле отредактируем строчку, как описано здесь , указав индекс нужных позиций структуры меню GRUB, чтобы добраться до ядра, которое будет загружаться по умолчанию (первая цифра означает позицию меню первого уровня, вторая – второго уровня соответственно):

    Сохраним изменения в файле и обновим информацию в самом загрузчике:

    Перезагрузим сервер и убедимся в том, что система успешно запускается c нужным нам ядром:

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