У меня есть машина, которая имеет мультиразделы начальной загрузки. У меня есть Ubuntu 14.04 на одном разделе, Ubuntu 15.04 на втором и Ubuntu 16.04 на третьей. Есть ли способ знать из командной строки, из которого раздела я загрузился для нахождения Вас, на которых раздел /boot/grub/grub.cfg
который использовался для процесса начальной загрузки? Я имею /boot/grub/grub.cfg
на каждом из этих трех разделов.
После того как GRUB вручил от начальной загрузки ядру, ядро понятия не имеет, что запустилось, это, и /boot
не могло бы быть то, которое использовал тот GRUB. Вы могли бы проверить времена доступа boot/grub/grub.cfg
в каждом из разделов для наблюдения, к какому последний раз получили доступ. Это могло сказать Вам, какой конфигурационный файл раздела GRUB использовал.
stat -c %x /boot/grub/grub.cfg
, Если времена доступа не обновляются, необходимо будет искать любые различия в параметрах ядра, используемых различными конфигурационными файлами GRUB. Если можно изменить их, например, добавьте foo=1
, foo=2
, и т.д. к GRUB_CMDLINE_LINUX
в каждом из них, работайте sudo update-grub2
и перезагрузка, то можно проверить /proc/cmdline
для наблюдения, какое из этих значений использовалось.
Отобразить устройство, содержащее в настоящее время монтируемую корневую файловую систему:
awk '$2=="/"{print $1}' /proc/mounts
Для отображения в настоящее время рабочей версии выпуска Ubuntu:
lsb_release -rs
lsblk
И проверяют, какой диск смонтирован в /
. Прочитайте комментарии ниже или ответ Ravexina, если Вы имеете /boot
в Ваших смонтированных точках.
, Если Вы не уверены, проверьте UUID
lsblk -o UUID,NAME,SIZE,MOUNTPOINT
Поскольку Вы знаете файл, который Вы ищете, расположен в /boot
каталог Вашей рабочей системы. также /boot
отдельный раздел, или это не; Если Ваш /boot
отдельный раздел, необходимо искать это:
$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot
Средства grub.cfg
в котором используемый расположен sda2
.
Othewise необходимо искать root
:
$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /
на этот раз это расположено в sda1
.
Или даже для забавы мы можем проверить параметры времени начальной загрузки:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet
затем используйте UUID
узнать, какой раздел является Вашим корнем.
$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"
Что означает от sda1
.
Можно также проверить на эти параметры начальной загрузки для наблюдения который Вашего grub.cfg
файлы содержат их, это только работает когда Ваши параметры начальной загрузки в grub.cfg
отличаются друг от друга.
Мы могли добавить простую запись пользовательского меню в каждой ОС, и мы будем видеть в меню Личинки, из которого загрузилась Личинка ОС, это - конфигурационный файл.
Пример:
Мы загружаемся в 16,04 и редактируем файл /etc/grub.d/40_custom
добавить запись меню.
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # menuentry 'grub.conf loaded from 16.04' { reboot }
Мы удостоверяемся, что файл является исполняемым файлом и выполненный sudo update-grub
.
Затем мы делаем те же изменения в другой ОС, мы просто используем различные названия menuentry, i.g. мы изменяемся 16.04
кому: 15.04
и так далее.
Если мы выберем эту запись меню в меню Личинки во время начальной загрузки, то машина просто перезагрузит, мы создали их, чтобы не загрузить любую ОС, но видеть, который ОС на самом деле используется для загрузки grub.conf
.
Дополнительная информация
Этот вид беспорядка появляется, когда мы устанавливаем несколько ОС, которая вся Личинка использования и во время установки ОС мы выбираем то же местоположение загрузчика. Нам нужна действительно только одна ОС, которая устанавливает Личинку, Личинка может загрузиться в любой дистрибутив Linux, поэтому если у нас есть одно установленное распределение (включая Личинку), мы могли бы установить дополнительную ОС, не устанавливая Личинку.
В установках прежней версии довольно легко обработать местоположение для установки загрузчика, поскольку мы можем выбрать загрузочную запись раздела в качестве местоположения, но мы должны заботиться для выбора корректного раздела. Таким образом, одна ОС устанавливает загрузчик на MBR и установке дополнительной ОС загрузчик к PBR раздела ОС. Эта возможность, которую мы имеем только, когда мы используем Something else
- опция во время установки.
В UEFI-установках это немного более странно, загрузчик будет установлен на папке в Системном разделе EFI (ESP), и несколько загрузчиков могут легко сосуществовать. Проблема здесь состоит в том, что все ароматы Ubuntu и также некоторые другие дистрибутивы Linux установят Личинку на той же папке в ESP, и у нас нет выбора. Так установка дополнительного дистрибутива Linux перезаписала бы наш уже существующий загрузчик. Единственным путем я знаю, чтобы избежать, чтобы это загрузилось в живую сессию и запустить установщик с sudo ubiquity -b
.
Другое простое решение
Давайте предположим, что у нас есть три дистрибутива Linux, установленные на разделах sda1
,sda2
и sda3
. Теперь мы смотрим на записи меню начальной загрузки Личинки. Во время начальной загрузки мы будем видеть что-то вроде этого:
1 Ubuntu 2 Advanced options for Ubuntu 3 Memory test (memtest86+) 4 Memory test (memtest86+, serial console 115200) 5 Ubuntu (on /dev/sda2) 6 Advanced options for Ubuntu (on /dev/sda2) 7 Ubuntu 17.04 (on /dev/sda3) 8 Advanced options for Ubuntu (on /dev/sda3)
Первые две записи являются записями для ОС, которая генерировала grub.conf
- файл мы на самом деле используем. Записи № 3 и № 4 не интересны в данный момент. Записи № 5, № 6, № 7 и № 8 являются записями, которые были сгенерированы с тестером ОС, и мы видим, на котором делит ОС для этих записей, находятся. Таким образом в случае этого небольшого примера мы можем прийти к заключению что grub.config
- файл, который мы на самом деле используем, не принадлежит ОС на sda2
или sda3
но к ОС на sda1
. В случае один или несколько ОС установлены с отдельным /boot
- раздел мы должны были бы проверить который /boot
- раздел принадлежит, к которому ОС, но это легко сделано путем выполнения findmnt
- команда в каждой ОС.
Знать, от которого делят пользователя, загрузилось, посмотрите на меню загрузчика прежде, чем загрузить любую из установленных систем. Трудно сказать, не видя меню загрузчика.
Где посмотреть на
В следующих объединенных снимках экрана я маркировал три подсказки, что можно было бы знать, от которого делят пользователя, загрузился.
Маркируйте (1): записи меню GNU GRUB ниже первой записи
Маркируйте (2): GNU версия GRUB наверху меню загрузчика
Маркируйте (3): GNU фоновое изображение GRUB (ручная требуемая установка)
Самая очевидная подсказка, маркируют (3), который должен изменить GNU фоновое изображение GRUB в системе, которые имеют контроль над меню загрузчика. Является самым легким сказать, предоставленный пользователю настраивает его заранее.
Маркируйте (1) объясненный
Ищите раздел, который не перечислен в записях меню ниже первой записи. В снимке экрана существует только две устанавливаемые операционных системы т.е. "Ubuntu" и "Ubuntu 14.04.5 LTS".
Ubuntu
Advanced options for Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Advanced options for Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Последний упомянул (on /dev/sda3)
, что означает, что первый мог бы быть расположен на /dev/sda2
или /dev/sda1
. Безусловно, после начальной загрузки системы т.е. "Ubuntu", выполненная соответствующая команда для списка вниз доступных разделов (lsblk
кажется, является самым простым).
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 13G 0 disk
├─sda1 8:1 0 976M 0 part [SWAP]
├─sda2 8:2 0 6G 0 part /
└─sda3 8:3 0 6G 0 part
sr0 11:0 1 55.7M 0 rom
Только после по сравнению с выводом lsblk
, затем мы знаем, что система т.е. "Ubuntu" найдены в /dev/sda2
(который не был перечислен в записях меню), от которого управляют меню загрузчика.
Маркируйте (2) объясненный
Ищите версию GRUB, которая печатается наверху меню загрузчика. Обратите внимание, что версия и выдерживает сравнение с версией GRUB, которая найдена в загруженной системе т.е. "Ubuntu".
В снимке экрана (нижняя половина): GNU GRUB version 2.02~beta2-9
После начальной загрузки системы т.е. "Ubuntu", выполненная соответствующая команда для проверки версии пакета GRUB (grub-install --version
является релевантным и самым простым).
$ grub-install --version
grub-install (GRUB) 2.02~beta2-9
Как это релевантно? Поскольку grub-install
и update-grub
команды оба обеспечиваются тем же пакетом grub2-common
. Учитывая, что меню загрузчика создается и обновило инструменты использования от того же пакета, печатная версия наверху меню загрузчика будет тем же.
Маркируйте (3) объясненный
Эта подсказка требует, чтобы быть настроенной вручную, так как фоновое изображение по умолчанию меню загрузчика не ни один (просто черный). Фоновое изображение должно быть 8-разрядной глубиной.
Если desktop-base
пакет установлен в Вашей системе, такие фоновые изображения, которые сделаны особенно для GRUB, с готовностью найдены с суффиксом имени файла *grub.png
в целевом каталоге.
$ ls /usr/share/images/desktop-base/*grub.png
/usr/share/images/desktop-base/desktop-grub.png
/usr/share/images/desktop-base/joy-grub.png
/usr/share/images/desktop-base/moreblue-orbit-grub.png
/usr/share/images/desktop-base/spacefun-grub.png
Настраивать фоновое изображение:
Открытый /etc/default/grub
файл как суперпользователь, затем добавьте строку GRUB_BACKGROUND=
с полным путем к предпочтительному изображению и заключенный в кавычки.
$ sudo nano /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Show background in GRUB boot menu
GRUB_BACKGROUND="/usr/share/images/desktop-base/spacefun-grub.png"
...
Затем выполненный sudo update-grub
обновить /boot/grub/grub.cfg
это включает меню загрузчика. Пользователь будет видеть подобный вывод к следующему.
$ sudo update-grub
Generating grub configuration file ...
Found background: /usr/share/images/desktop-base/spacefun-grub.png
Found background image: /usr/share/images/desktop-base/spacefun-grub.png
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 14.04.5 LTS (14.04) on /dev/sda3
done
Перезагрузите машину и посмотрите, имело ли меню загрузчика какие-либо видимые изменения, внесенные командой обновления от системы.
Еще, повторите шаги для других систем по одному. Повторные шаги были бы ненужными, должен пользователь, знающий, какая система управляла меню загрузчика (снова, это зависит от того, как установка была сделана).
Отказ от ответственности
Этот ответ объясняет для доказанных и хорошо протестированных критериев системы BIOS со много установкой начальной загрузки с помощью GNU GRUB ПК/версия BIOS. Следующие исключения будут применяться.
Для системного дубликата UEFI с помощью GNU GRUB версия EFI это не гарантируется или не известно, если критерии, казалось бы, совпадали бы с описанный выше.
Акцент дан взглядам меню загрузчика (как это может появиться другая т.е. верхняя половина снимка экрана) а не продемонстрировать, как chainloading работает. По сути, относительно "то, как много начальная загрузка была настроена, как замечено в снимке экрана", не будет объяснено в этом ответе.
Если много установка начальной загрузки когда-либо делается из точно тех же копий подобной операционной системы т.е. Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04, и т.д., то единственный надежный способ знать, от которого делят пользователя, загрузился, маркируют (3).
Маркируйте (3), мог бы работать лучшее использующее пользовательское фоновое изображение, которое явно пишет, от которого это загружается, т.е. "Этим меню начальной загрузки управляют от/dev/sda1". Точно так же относительно "то, как создать пользовательское фоновое изображение для GRUB", не было бы объяснено в этом ответе.
TL; Взгляд DR на меню загрузчика прежде, чем загрузить любую из установленных систем. Самый легкий и самый надежный способ знать, маркируют (3), который должен настроить фоновое изображение GRUB вручную.