Загрузка другой системы, находящейся не в корне раздела
Diversant 27 сентября, 2012 - 14:24
Давно задавался оным вопросом, но методов решения найти не удалось. Было предположение что loopback GRUB2 сможет в этом деле помочь.
Суть в том что, допустим хочется загрузить какую-нибудь другую систему, корень которой находится, скажем, в (hd0,3)/path_to/
Реально ли это как-то осуществить? (своего рода "chroot" что ли сделать, но на уровне загрузчика еще)
И как я понимаю передача ядру параметра root=/dev/sda... с указанием директории нереальна.
Вопрос конечно возможно наивен в своей сущности, но все ж возможная реализация была бы уместна.
»
- Для комментирования войдите или зарегистрируйтесь
Возможно, но вам придётся
Возможно, но вам придётся писать свой init сценарий для initrd, который в начале смонтирует раздел, предположим в /mnt/root, а затем выполнит switch_root не в /mnt/root, а в /mnt/root/path..., значение path можно также получать в качество дополнительного параметра, передаваемого ядру.
Со стороны же grub менять ничего не нужно.
Но вопрос готовы ли вы это сделать ?
http://en.gentoo-wiki.com/wiki/Initramfs
Возможно сделать сие и не
Возможно сделать сие и не буду готов, но за ссылку спасибо ;) Ибо вопросы создания своего initrd тоже параллельно беспокоят :) Во вред не пойдет почитать всяко.
Возможно, если корень на
Возможно, если корень на btrfs, и /path_to/ это subvolume
В таком случае надо просто передать ядру параметр rootflags=subvol=/path_to/
А непосредственно GRUB2?
А непосредственно GRUB2 как таковой подобное не позволит осуществить? Или это уже зависит от файловой системы и загружаемого ядра впоследствии?
Ещё раз вам говорю, здесь
Ещё раз вам говорю, здесь загрузчик особой роли не играет. Загрузчик нужен только для загрузки собственно ядра операционной системы и передачи ему параметров, которые может обработать либо непосредственно само ядро, либо сценарий init в initrd и последний этап, для которого нужен загрузчик, это собственно передача управления загруженному ядру операционной системы.
Поэтому, как я сказал в первом соощении, вам нужно писать свой init сценарий, что будет проще, чем редактирвоать уже существующий, к примеру поставляющийся вместе с initramfs, генерируемым genkernel., который может выполнить монтирования корня находящегося в директории на определённом разделе.