У меня есть машина с несколькими загрузочными разделами. У меня Ubuntu 14.04 на одном разделе, Ubuntu 15.04 на втором и Ubuntu 16.04 на третьем. Есть ли способ узнать из командной строки, с какого раздела я загрузился, чтобы узнать, на каком разделе используется тот, /boot/grub/grub.cfg
который использовался для процесса загрузки? У меня есть /boot/grub/grub.cfg
на каждом из трех разделов.
12
/boot/grub/grub.cfg
файл, использованный для загрузки, мог быть удален, этот раздел мог быть удален из таблицы разделов, а этот диск физически удален из системы.Ответы:
После того, как GRUB передал загрузку ядру, ядро понятия не имеет, с чего оно началось, и
/boot
может не быть тем, которое использовал GRUB. Вы можете проверить время доступаboot/grub/grub.cfg
в каждом из разделов, чтобы увидеть, к какому из них последний раз обращались. Это может сказать вам, какой конфигурационный файл раздела GRUB использовал.Если время доступа не обновляется, вам придется искать различия в параметрах ядра, используемых различными файлами конфигурации GRUB. Если вы можете изменить их, например, добавить
foo=1
,foo=2
и т.д. , чтобыGRUB_CMDLINE_LINUX
в каждом из них, запускатьsudo update-grub2
и перезагрузки, то вы можете проверить ,/proc/cmdline
чтобы увидеть , какие из этих значений были использованы.источник
/boot
он находится, но это может быть не то, что использовал grub, а вы и Кату обнаруживает, что раздел, на котором смонтирован раздел/
, смонтирован, но, как заметил Ravexina, это, вероятно, имеет еще меньше связи/
, наверняка. Нахождение конфигурации GRUB какого раздела использовалось при загрузке? Я не понимаю, как это связано.Как вы знаете, файл, который вы ищете, находится в
/boot
каталоге вашей работающей системы. либо/boot
это отдельный раздел, либо это не так; Если у вас/boot
отдельный раздел, вы должны искать это:Означает,
grub.cfg
что использованный находится вsda2
.В противном случае вы должны искать
root
:на этот раз он находится в
sda1
.Или даже для удовольствия мы можем проверить параметры времени загрузки:
затем используйте,
UUID
чтобы узнать, какой раздел является вашим корнем.Что значит от
sda1
.Вы также можете проверить эти параметры загрузки, чтобы увидеть, какой из ваших
grub.cfg
файлов содержит их, это работает только тогда, когда ваши параметры загрузкиgrub.cfg
отличаются друг от друга.источник
readlink -f /dev/disk/by-uuid/<UUID>
.Чтобы отобразить устройство, содержащее текущую смонтированную корневую файловую систему:
Чтобы отобразить текущую версию релиза Ubuntu:
источник
lsb_release -rs
каждый раз ПОЦЕЛУЙМы могли бы добавить простой пользовательский пункт меню в каждой ОС, и мы увидели бы в меню Grub, из которого ОС Grub загружал свой файл конфигурации.
Пример:
Мы загружаемся в 16.04 и редактируем файл,
/etc/grub.d/40_custom
чтобы добавить пункт меню.Мы уверены, что файл является исполняемым и запускается
sudo update-grub
.Затем мы делаем те же изменения в других ОС, мы просто используем разные имена для входа в меню, например, мы меняем
16.04
на15.04
и так далее.Если мы выберем этот пункт меню в меню Grub во время загрузки, машина просто перезагрузится, мы создали их не для загрузки какой-либо ОС, а для того, чтобы увидеть, какая ОС фактически используется для загрузки
grub.conf
.Дополнительная информация
Такая путаница возникает, когда мы устанавливаем несколько ОС, которые все используют Grub, и во время установки ОС мы выбираем одно и то же расположение загрузчика. Нам действительно нужна только одна ОС, которая устанавливает Grub, Grub может загружаться в любой дистрибутив Linux, поэтому, если у нас установлен один дистрибутив (включая Grub), мы можем установить дополнительные ОС без установки Grub.
В устаревших установках довольно легко обрабатывать расположение для установки загрузчика, так как мы можем выбрать в качестве расположения раздел-загрузочная запись, но мы должны позаботиться о том, чтобы выбрать правильный раздел. Таким образом, одна ОС устанавливает загрузчик в MBR, а дополнительные ОС устанавливают загрузчик в PBR раздела ОС. Эта возможность у нас есть только тогда, когда мы используем
Something else
опцию -option во время установки.В UEFI-установках это немного более странно, загрузчик будет установлен в папку в системном разделе EFI (ESP), и несколько загрузчиков могут легко сосуществовать. Проблема в том, что все версии Ubuntu, а также некоторые другие дистрибутивы linux будут устанавливать Grub в ту же папку в ESP, и у нас нет выбора. Поэтому установка дополнительного Linux-дистрибутива перезапишет наш уже существующий загрузчик. Единственный способ избежать этого - загрузить сеанс live и запустить установщик
sudo ubiquity -b
.Еще одно простое решение
Давайте предположим, что у нас есть три дистрибутива Linux, установленных на разделах
sda1
,sda2
иsda3
. Теперь посмотрим на пункты меню загрузки Grub. Во время загрузки мы увидим что-то вроде этого:Первые две записи - это записи для ОС, которая сгенерировала
grub.conf
-файл, который мы фактически используем. Записи № 3 и № 4 на данный момент не интересны. Записи № 5, № 6, № 7 и № 8 - это записи, которые были сгенерированы с помощью OS-prober, и мы видим, на каких разделах находятся ОС для этих записей. Таким образом, в случае этого небольшого примера мы можем заключить, чтоgrub.config
-файл, который мы на самом деле используем, не относится ни к ОС,sda2
ниsda3
к ОСsda1
. В случае, если одна или несколько ОС установлены с отдельным/boot
разделом, нам нужно проверить, какой/boot
раздел принадлежит какой ОС, но это легко сделать, запустив командуfindmnt
-команду в каждой ОС.источник
И проверьте, на каком диске он установлен
/
. Пожалуйста, прочитайте комментарии ниже или ответ Ravexina, если у вас есть/boot
в установленных точках.Если вы не уверены, проверьте UUID
источник
/boot
отдельный раздел? тогда/boot/grub/grub.cfg
не находится в/
разделе./
считается ли раздел?/boot
сначала проверить отдельное .Чтобы узнать, с какого раздела пользователь загрузился, посмотрите меню загрузчика перед загрузкой любой из установленных систем. Трудно сказать, не видя меню загрузчика.
Где посмотреть
На следующих комбинированных снимках экрана я пометил три подсказки, которые можно узнать, с какого раздела пользователь загрузился.
Наиболее очевидный совет - метка (3), которая изменяет фоновое изображение GNU GRUB в системе, управляющей меню загрузчика. Проще всего сказать, если пользователь настроил его заранее.
Ярлык (1) объяснил
Найдите раздел, который не указан в пунктах меню под первой записью. На снимке экрана показаны только две устанавливаемые операционные системы: «Ubuntu» и «Ubuntu 14.04.5 LTS».
Последний упомянул
(on /dev/sda3)
, что означает, что первый может быть расположен на/dev/sda2
или/dev/sda1
. Чтобы быть уверенным, после загрузки системы, то есть «Ubuntu», запустите соответствующую командуlsblk
, чтобы вывести список доступных разделов ( кажется, наиболее простым).Только после сравнения с выводом
lsblk
, мы знаем, что система, то есть «Ubuntu» находится в/dev/sda2
(который не был указан в пунктах меню), из которого осуществляется управление меню загрузчика.Ярлык (2) объяснил
Ищите версию GRUB, которая напечатана в верхней части меню загрузчика. Обратите внимание на эту версию и сравните ее с версией GRUB, которая находится в загруженной системе, то есть «Ubuntu».
На скриншоте (нижняя половина):
GNU GRUB version 2.02~beta2-9
После загрузки системы, т. Е. «Ubuntu», выполните соответствующую команду, чтобы проверить версию пакета GRUB (
grub-install --version
это актуально и наиболее просто).Насколько это актуально? Потому что
grub-install
иupdate-grub
команды предоставляются одним и тем же пакетомgrub2-common
. Учитывая, что меню загрузчика создается и обновляется с использованием инструментов из того же пакета, печатная версия в верхней части меню загрузчика будет одинаковой.Ярлык (3) объяснил
Эту подсказку необходимо настроить вручную, поскольку фоновое изображение по умолчанию в меню загрузчика отсутствует (просто черный). Фоновое изображение должно иметь глубину 8 бит.
Если
desktop-base
пакет установлен в вашей системе, такие фоновые изображения, созданные специально для GRUB, легко найти с суффиксом имени файла*grub.png
в целевом каталоге.Чтобы установить фоновое изображение:
Откройте
/etc/default/grub
файл как суперпользователь, затем добавьте строкуGRUB_BACKGROUND=
с полным путем к выбранному изображению и укажите его в кавычках.Затем запустите
sudo update-grub
для обновления,/boot/grub/grub.cfg
которое включает в себя меню загрузчика. Пользователь увидит вывод, аналогичный следующему.Перезагрузите компьютер и посмотрите, не было ли в меню загрузчика видимых изменений, внесенных командой update из системы.
Иначе, повторите шаги для других систем, по одной за раз. Повторные шаги были бы ненужными, если бы пользователь знал, какая система контролировала меню загрузчика (опять же, это зависит от того, как была произведена установка).
отказ
Этот ответ объясняет проверенные и хорошо проверенные критерии для системы BIOS с настройкой мультизагрузки с использованием версии GNU GRUB для ПК / BIOS. Будут применяться следующие исключения.
Для аналога системы UEFI, использующего версию GNU GRUB EFI, не гарантируется или не известно, будут ли критерии соответствовать описанным выше.
Особое внимание уделяется внешнему виду меню загрузчика (как оно может выглядеть иначе, т.е. верхняя половина снимка экрана), а не демонстрации того, как работает цепная загрузка. Таким образом, относительно того, «как была настроена мультизагрузка, как показано на скриншоте», в этом ответе не будет объяснено.
Если мультизагрузочная настройка когда-либо сделана из точно таких же копий аналогичной операционной системы, то есть Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04 и т. Д., То единственный надежный способ узнать, с какого раздела пользователь загрузился, это метка (3).
Метка (3) может работать лучше, если использовать пользовательское фоновое изображение, которое явно пишет, из которого оно загружается, т.е. «Это меню загрузки управляется из / dev / sda1». Точно так же, относительно того, «как создать пользовательское фоновое изображение для GRUB», не будет объяснено в этом ответе
TL; DR Посмотрите меню загрузчика перед загрузкой любой из установленных систем. Самый простой и надежный способ узнать это - label (3), который заключается в ручной настройке фонового изображения GRUB.
источник