Я хочу, чтобы два разных дистрибутива Ubuntu загружались на одном жестком диске. Я установил первый, с внешним / загрузочным разделом (например, /dev/sda2
).
Затем я установил второй дистрибутив с отдельным разделом / boot (например, /dev/sda5
).
Я подумал, что после установки второго Ubuntu, update-grub
автоматически добавит записи для первого Ubuntu путем цепной загрузки / dev / sda2 из / dev / sda5. Этого не случилось.
Теперь, мне интересно, каков рекомендуемый способ загрузки по цепочке / dev / sda2 из / dev / sda5. Я полагаю, что рекомендуемый метод будет включать использование существующих сценариев в /etc/grub.d, потому что /boot/grub/grub.cfg будет заменен, если я изменю его вручную.
Прежде всего, нужный мне эффект (соединение меню grub из одного дистрибутива с другим) не требует загрузки по цепочке ; достаточно просто перегрузить конфигурацию grub с помощью команды configfile
Grub 2 в файле /etc/grub.d/40_custom
, например:
menuentry "Ubuntu Precise 64 bit" {
configfile (hd0,gpt2)/grub/grub.cfg
}
где (hd0,gpt2)
- адрес раздела / boot раздела другой Linux (в данном примере это 2-й раздел на GPT-диске sda).
После редактирования важно запустить sudo update-grub
, поэтому изменения распространяются в /boot/grub/grub.cfg
Таким образом, можно сохранить элегантный и безошибочный способ поддержки двух отдельных установок Linux. (который может, например, использовать один и тот же корневой раздел btrfs, но в разных подобъемах)
В системе bios я предпочитаю загружать по цепочке с помощью опции мультизагрузки:
menuentry "Ubuntu, Trusty (on lvm/nantes-trusty)" --class gnu-linux --class gnu --class os {
insmod part_gpt
insmod lvm
insmod ext2
set root='lvm/nantes-trusty'
multiboot /boot/grub/i386-pc/core.img
}
Преимущество в том, что вы можете воссоздать раздел, посвященный grub, который никогда не изменится, если вы не захотите удалить или добавить другая ОС, и вы не делаете ОС зависимой от самих себя, что очень полезно, когда есть изменения в версиях grub.
Потому что у меня была версия grub, которая загружала старый файл grub.cfg. Этого здесь не происходит, потому что когда вы загружаете core.img, вы загружаете grub, который идет вместе с его собственным файлом grub.cfg.
На самом деле это похоже на то, что делает uefi при загрузке grub, потому что вы даете ему что-то вроде core.efi вместо core.img