Как должна быть настроена двойная загрузка с grub?

Хотя вы не сказали, чего вы пытаетесь достичь, для cd $(ls -d */|head -n 1)внутри рейнджера вам нужно использовать:

map g1 eval from ranger.ext.spawn import spawn; fm.cd(spawn("ls -d */|head -n 1").strip())
0
07.11.2021, 02:34
1 ответ

«Монтирование файловой системы» — это концепция Linux/Unix :, на самом деле ее нет в GRUB.

Указание $prefixили $rootдля GRUB на самом деле не похоже на монтирование файловой системы в Linux/Unix. Это буквально просто префиксы к относительным или абсолютным путям соответственно.

$prefixиспользуется, когда GRUB загружает какие-либо модули GRUB, а также может использоваться как удобная переменная для ссылки на любой файл в (, что в конечном итоге будет после загрузки ОС )в каталоге /boot/grubабсолютный путь к GRUB. Когда используется команда GRUB insmod, она принимает значение $prefixи добавляет специфичное для архитектуры имя каталога -и имя модуля для загрузки (с добавленным суффиксом .mod)..

GRUB имеет свои собственные (только для чтения -)драйверы файловой системы, которые принимают абсолютные пути в форме (раздел )/каталог... /имя файла, где компонент раздела может быть что-то вроде hd0,gpt1.

$rootможно назначать и повторно назначать -несколько раз в одном файле конфигурации GRUB; в современных конфигурациях для этого обычно используется команда search, а не явное назначение, позволяющее указать файловую систему по ее UUID.

В системе Debian 9 (с использованием загрузки в стиле BIOS -)Однажды я видел конфигурацию GRUB, которая первоначально устанавливала $rootи $prefixдля загрузки некоторых модулей GRUB, а затем указывала $rootна отдельный раздел /usr, чтобы загрузить фоновое изображение и файл шрифта из каталога темы GRUB где-то в /usr/share/.... Для фактических параметров загрузки он затем указывал $rootобратно на файловую систему /bootдля загрузки фактического ядра или на раздел Windows для последовательной загрузки загрузочной записи раздела.

GRUB $rootне имеет ничего общего с корневой файловой системой Linux. Как только GRUB загрузит ядро ​​Linux и файл initramfs в ОЗУ, он передаст управление ядру. В этот момент будут сохранены только три вещи из GRUB:

  • ядро ​​в ОЗУ
  • initramfs в ОЗУ после ядра
  • параметры загрузки, указанные в командной строке ядра.

Все переменные GRUB, включая $rootи $prefix, в этот момент полностью забываются и перестают иметь какое-либо значение. Когда ядро ​​запускается, оно активирует свои собственные драйверы устройств хранения, а файловая система, которая будет смонтирована как корневая файловая система Linux, определяется:

  • параметр загрузки ядра root=, если он указан, или
  • содержимое файла initramfs (он может включать копию /etc/fstab, указывающую корневую файловую систему, или сценарии, определяющие файловую систему для использования другим способом ), или
  • корневая файловая система по умолчанию может быть указана параметрами, встроенными в образ ядра (, особенно если используется пользовательское ядро ​​без initramfs ).

UEFI-версия GRUB обычно ищетgrub.cfgв том же каталоге, где grubx64.efiнаходится в . Три -строки grub.cfg´ you found in /boot/efi/EFI/debian/grub.cfg effectively tells GRUB where the actual GRUB configuration file (and the/boot/grub directory) is, by filesystem UUID. If you wanted, you could replace the UUID with the UUID of the/dev/nvme0n1p5 filesystem, to make GRUB use the/boot `этого экземпляра Debian вместо первая установка.


Если у вас установлен пакет os-proberв Debian, он будет автоматически запускаться всякий раз, когда вы запускаете update-grub, и будет пытаться автоматически -обнаружить другие операционные системы, включая параллельные установки Debian, и добавить их основную загрузку. опции в конфигурационный файл GRUB.

Вы также можете добавить подобный пункт меню в /etc/grub.d/40_customнаnvme0n1p2:

menuentry 'Switch to GRUB configuration of /dev/nvme0n1p5' {
        search --no-floppy --fs-uuid --set=root UUID-OF-nvme0n1p5-FS-HERE
        configfile /boot/grub/grub.cfg
}

и аналогично в /etc/grub.d/40_customна nvme0n1p5, чтобы вернуться к конфигурации GRUB nvme0n1p2. Не забудьте запустить update-grub, чтобы изменения вступили в силу.

Затем вы можете установить строку search.fs_uuidв /boot/efi/EFI/debian/grub.cfg(, то есть в nvme0n1p1), в соответствии с тем, какую конфигурацию вы хотите, чтобы GRUB использовал по умолчанию. Пока оба экземпляра Debian продолжают использовать достаточно схожую версию GRUB, чтобы принимать одни и те же файлы конфигурации, вы сможете легко переключаться между двумя экземплярами ОС, и они оба смогут поддерживать свои собственные файлы конфигурации GRUB независимо от друг друга.

1
07.11.2021, 19:58

Теги

Похожие вопросы