Инструменты пользователя

Инструменты сайта


it:xen_-_pvgrub

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
it:xen_-_pvgrub [2020/05/18 17:52] – создано puse_vivatit:xen_-_pvgrub [2020/05/18 18:22] puse_vivat
Строка 1: Строка 1:
 ====== XEN - pvgrub ====== ====== XEN - pvgrub ======
 +
 +По мотивам [[https://wiki.xenproject.org/wiki/PvGrub2|умной статьи]]
  
 PVGrub - вариант загрузчика grub, собираемый из исходных кодов оригинального grub для загрузки на архитектуре Xen. Никаких BIOS, UEFI и тому подобного - только PV, только хардкор. Не хотел бы я быть на месте этого загрузчика - каково это, очнуться и понять, что ты существуешь где-то, но у этого где-то нет никаких привычных свойств... PVGrub - вариант загрузчика grub, собираемый из исходных кодов оригинального grub для загрузки на архитектуре Xen. Никаких BIOS, UEFI и тому подобного - только PV, только хардкор. Не хотел бы я быть на месте этого загрузчика - каково это, очнуться и понять, что ты существуешь где-то, но у этого где-то нет никаких привычных свойств...
Строка 17: Строка 19:
 Памятуя про проблему изменившегося формата конфига между версиями 2.02 и 2.04 ставим сначала версию 2.02, собираем pvgrub, затем ставим 2.04 и собираем ещё один pvgrub: Памятуя про проблему изменившегося формата конфига между версиями 2.02 и 2.04 ставим сначала версию 2.02, собираем pvgrub, затем ставим 2.04 и собираем ещё один pvgrub:
  
-''GRUB_PLATFORMS="pc xen" emerge -av1 =sys-boot/grub-2.02-r4 +''GRUB_PLATFORMS="pc xen" emerge -av1 =sys-boot/grub-2.02-r4\\ 
-grub-mkimage -O x86_64-xen -c ./grub.cfg -o grub-2.02-x86_64-xen.bin /usr/lib/grub/x86_64-xen/*.mod -p /usr +grub-mkimage -O x86_64-xen -c /root/grub.cfg -o grub-2.02-x86_64-xen.bin /usr/lib/grub/x86_64-xen/*.mod -p /usr\\ 
-GRUB_PLATFORMS="pc xen" emerge -av1 =sys-boot/grub-2.04-r1 +GRUB_PLATFORMS="pc xen" emerge -av1 =sys-boot/grub-2.04-r1\\ 
-grub-mkimage -O x86_64-xen -c ./grub.cfg -o grub-2.04-x86_64-xen.bin /usr/lib/grub/x86_64-xen/*.mod -p /usr''+grub-mkimage -O x86_64-xen -c /root/grub.cfg -o grub-2.04-x86_64-xen.bin /usr/lib/grub/x86_64-xen/*.mod -p /usr'' 
 + 
 +Всё, мы готовы к любым ударам судьбы! Теперь немного подробностей. 
 + 
 +pvgrub позволяет вкомпилить в себя default-конфиг (/root/grub.cfg), который, естественно, имеет низший приоритет и используется только тогда, когда нет никаких других вводных. Вводные задаются в "командной строке" вызова загрузчика, т.е. в нашем случае чере опцию "extra" конфига xen-гостя. В конфиг я записал 
 + 
 +''normal (xen/xvda,msdos1)/boot/grub2/grub.cfg'' 
 + 
 +...что означает "загрузи в качестве конфига файл /boot/grub2/grub.cfg с файловой системы, расположенной на первом разделе ms-dos разметки блочного устройства xvda". По счастливой случайности на наших centos-гостях разметка разделов именно такая, так что шрузиться будет без проблем даже без дополнительной конфигурации. 
 + 
 +Так как мы собираем загрузчик исходя из требований универсальности, то включаем в него все доступные модули (поддержка ФС, накопителей и т.п.) - *.mod это как раз про это. 
 + 
 +Прейикс /usr мы указываем, чтобы уточнить, где находятся файлы установленного grub, по образу которых мы и собираем нашего "узкого специалиста". Чтож, если используется не gentoo, то геморрой с ручной компиляцией нужного grub в "папочку" не баг, а фича ) 
 + 
 +Что жу происходит далее? 
 + 
 +Берём сферический конфиг виртуалки в вакууме. Ну, к примеру, вот такой: 
 + 
 +''name = 'vm0'\\ 
 +cpu_weight=192\\ 
 +\\ 
 +bootloader = "/usr/lib/xen/bin/pygrub"\\ 
 +\\ 
 +memory = 4096\\ 
 +maxmem = 4096\\ 
 +vcpus = 2\\ 
 +vif = ['mac=00:00:00:00:00:00, bridge=br001']\\ 
 +\\ 
 +disk = ['phy:/dev/vg0/vm0.0,xvda,w',\\ 
 +        'phy:/dev/vg0/vm0.1,xvdb,w',\\ 
 +        'phy:/dev/vg0/vm0.2,xvdc,w',\\ 
 +        'phy:/dev/vg0/vm0.3,xvdd,w']\\ 
 +\\ 
 +on_poweroff = 'destroy'\\ 
 +on_reboot = 'restart'\\ 
 +on_crash = 'restart' 
 +'' 
 + 
 +... и вместо строки bootloader... пишем: 
 + 
 +''kernel = "/etc/xen/grub-2.02-x86_64-xen.bin"''\\ 
 + 
 +и, если вдруг захочется, дополнительные параметры: 
 + 
 +''normal (xen/xvda,msdos1)/boot/grub2/grub.cfg'' 
 + 
 +Voila! Теперь при старте гостевой виртуальной машины внутрь загружается "ядро"-pvgrub, который, используя встроенный конфиг, лезет в xvda1, читает там grub.cfg и отображает привычное нам grub-меню и далее по тексту. Всё работает, можно начинать хейтить pygrub.
it/xen_-_pvgrub.txt · Последнее изменение: 2020/05/18 19:23 — puse_vivat