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

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


it:xen_-_pvgrub

Различия

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

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

Следующая версия
Предыдущая версия
it:xen_-_pvgrub [2020/05/18 14:52]
puse_vivat создано
it:xen_-_pvgrub [2020/05/18 16:23] (текущий)
puse_vivat
Строка 1: Строка 1:
 ====== XEN - pvgrub ====== ====== XEN - pvgrub ======
  
-PVGrub - вариант загрузчика grub, собираемый из исходных кодов оригинального grub для загрузки на архитектуре Xen. Никаких BIOS, UEFI и тому подобного - только PV, только хардкор. Не хотел бы я быть на месте этого загрузчика - каково это, очнуться и понять,​ что ты существуешь где-то,​ но у этого где-то нет никаких привычных свойств...+По мотивам [[https://​wiki.xenproject.org/​wiki/​PvGrub2|умной статьи]]
  
-Тот факт, что pvgrub выполняется внутри гостя, гарантирует большее соблюдение стандартов безопасности,​ особенно по сравнению с pygrub, который мало того, что написан на python, ​но ещё и выполняется в dom0 и, соответственно,​ полностью подчинён админу или зловредам.+PVGrub - вариант загрузчика grub, собираемый из исходных кодов оригинального grub для загрузки на архитектуре Xen-PV. Никаких BIOS, UEFI и тому подобного - только PV, только хардкор. Не хотел бы я быть на месте этого загрузчика:​ какого это, очнуться и понять,​ что ты существуешь где-то,​ но у этого где-то нет никаких привычных свойств,​ формы, цвета, направлений...\\ 
 + 
 +---- 
 + 
 +Земля же бе невидима и неустроена,​ и тма верху бeздны,​ и дух бжій ношaшеся верху воды. (Бытие 1:2)\\ 
 +«и Дух Божий носился…» В объяснении этих слов толковники довольно сильно расходятся между собою: одни видят здесь простое указание на обыкновенный ветер, ниспосланный Богом для осушения земли (Тертуллиан,​ Ефрем Сирин, Феодорит, Абен-Езра,​ Розенмюллер),​ другие — на Ангела,​ или особую умную силу, назначенную для той же цели (Златоуст,​ Кайзетан и др.), третьи,​ наконец,​ — на Ипостасного Духа Божия (Василий Великий,​ Афанасий, Иероним и большинство прочих экзегетов). Последнее толкование предпочтительнее прочих:​ оно указывает на участие в деле творения и третьего лица Святой ТроицыДуха Божия, являющего Собой ту зиждительно-промыслительную силу, которая,​ по обще-библейскому воззрению,​ обусловливает происхождение и существование всего мира, не исключая и человека (Быт.2:7; Пс.32:6; Иов.27:3; Ис.34:16; Деян.17:​29 и др.). Самое действие Святого Духа на хаос уподобляется здесь действию птицы, сидящей в гнезде на яйцах и согревающей их своей теплотой для пробуждения в них жизни (Втор.32:​11). 
 + 
 +---- 
 + 
 +Тот факт, что <​del>​особая умная сила</​del>​pvgrub выполняется внутри гостя, гарантирует большее соблюдение стандартов безопасности,​ особенно по сравнению с pygrub, который мало того, что написан на python, ​так ​ещё и выполняется в dom0 и, соответственно,​ полностью подчинён админу или зловредам.
  
 Несколько фактов о pvgrub: Несколько фактов о pvgrub:
   * пакет, называющийся как-то типа xen-pvgrub есть в gentoo, но нет в centos   * пакет, называющийся как-то типа xen-pvgrub есть в gentoo, но нет в centos
-  * пакет этот даже в генте абсолютно лишён смысля, так как поставляет пресобранный ​grub-0.97, сегодня мало кому нужный+  * пакет этот даже в генте абсолютно лишён смысла, так как поставляет пресобранный ​pvgrub-0.97, сегодня мало кому нужный
   * лучший способ получить нужный pvgrub - собрать его с помощью команды grub-mkimage (или grub2-mkimage,​ в зависимости от дистрибутива)   * лучший способ получить нужный pvgrub - собрать его с помощью команды grub-mkimage (или grub2-mkimage,​ в зависимости от дистрибутива)
-  * так как pvgrub - плоть от плоти полноценного grub, то наследует все его свойства и нововведения. ​Следовательно, ​чтобы pvgrub начал ​поддерживать изменившийся формат конфигов grub версии 2.04, достаточно собрать ​pvgrub ​с помощью grub2-mkimage ​из grub версии 2.04И всё )+  * так как pvgrub - плоть от плоти полноценного grub, то наследует все его свойства и нововведения. ​К сожалению, это не относится к новому конфигу grub 2.04 
 + 
 +Однако, есть и "​особенность"​. К примерув centos пакет grub собран без ​поддержки архитектуры xen, так что собрать ​загрузчик под архитектуру xen не представляется возможным. 
 + 
 +Памятуя про проблему ​изменившегося формата конфига между версиями 2.02 и 2.04 отключаем ​формирование нового ​типа ​конфига в centos 8: 
 +  * убеждаемся,​ что в /​etc/​default/​grub есть строка "​GRUB_ENABLE_BLSCFG=false"​ 
 +  * перегенерируем конфиг - "​grub2-mkconfig -o /​boot/​grub2/​grub.cfg"​ 
 + 
 +Теперь ​собираем pvgrub. Как всегда,​ на помощь приходит gentoo ) : 
 + 
 +''​GRUB_PLATFORMS="​pc xen" emerge -av1 =sys-boot/​grub-2.04-r1\\ 
 +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 в "​папочку"​ не баг, а фича ) Кстати,​ по ссылке в начале статьи описан именно он - желающие могут причаститься (если кратко,​ то "​./​configure --target=amd64 --with-platform=xen"​). 
 + 
 +Что же далее?​ 
 + 
 +Берём сферический конфиг виртуалки в вакууме. Ну, к примеру,​ вот такой:​ 
 + 
 +''​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... пишем:
  
-Однако,​ есть и "особенность"​. К примеру,​ в centos пакет ​grub не содержит архитектуру ​xen, так что собрать загрузчик под арзитектуру xen не представляется возможным.+''​kernel = "/etc/xen/grub-2.04-x86_64-xen.bin"''​\\
  
-Как всегда, на помощь приходит gentoo )+и, если вдруг захочетсядополнительные ​параметры:
  
-Памятуя про проблему изменившегося формата конфига между версиями 2.02 и 2.04 ставим сначала версию 2.02, собираем pvgrubзатем ставим 2.04 и собираем ещё один pvgrub:+''​normal (xen/xvda,msdos1)/​boot/​grub2/​grub.cfg''​
  
-''​GRUB_PLATFORMS="pc xen" ​emerge ​-av1 =sys-boot/​grub-2.02-r4 +Voila! Теперь при старте гостевой виртуальной машины внутрь загружается ​"ядро"-pvgrub, который,​ используя встроенный конфиг,​ лезет в xvda1, читает там ​grub.cfg ​и отображает привычное нам ​grub-меню, ну и далее по тексту ("...и отделил Бог свет от тьмы...")Всё работает,​ можно начинать хейтить pygrub.
-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_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''​+
it/xen_-_pvgrub.1589813541.txt.bz2 · Последние изменения: 2020/05/18 14:52 — puse_vivat