LINUX.ORG.RU
решено ФорумAdmin

Debian, Xen, как задать параметры dom0?

 ,


0

1

Есть свежепоставленный Debian 12, дефолтно вся память отдается для dom0, на что в дальнейшем будут обижаться domU. Есть в нем файлик /etc/default/grub.d/xen.cfg с таким началом:

# When running update-grub with the Xen hypervisor installed, there are
# some additional variables that can be used to pass options to the
# hypervisor or the dom0 kernel.
#
# The configuration in here makes it possible to have different options set
# for the linux kernel when booting with or without Xen.

echo "Including Xen overrides from /etc/default/grub.d/xen.cfg" >&2

#######################################################################
# Xen Hypervisor Command Line Options
#
# The first two options are used to generate arguments for the hypervisor.
# Commonly used options are:
#
# dom0_mem=<size> (for arm)
# dom0_mem=<size>,max:<size> (for x86)
dom0_mem=1280M,max:1536M
#   Sets the amount of memory dom0 uses to a fixed size. All other memory
#   will be usable for domUs. For x86, this prevents ballooning actions
#   from happening to take away memory from the dom0 or return it back. For
#   arm, setting this option is required. E.g. (for x86) dom0_mem=4G,max:4G
#
dom0_max_vcpus=2-8
#   Limits the amount of physical cpus that dom0 is using, so it will not
*******************

(параметры переменных - это уже мое творчество). И таки да, при update-grub показывается «Including Xen overrides...». Но. Заданные параметры нигде не фигурируют и в дальнейшем не работают.

В том же файлике есть строка «GRUB_CMDLINE_XEN_DEFAULT=» - раскомментируем, добавляем:
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=2G,max:3G" 


И таки да - параметры теперь передаются туда, куда надо:

xl dmesg | grep 'Command line'
(XEN) Command line: placeholder dom0_mem=2G,max:3G no-real-mode edd=off

(обрабатывается оно, если что, в /etc/grub.d/20_linux_xen - хз, зачем там оставлены «placeholder»). И да, после ребута таки имеем 2 ГБ памяти для dom0 и остальную свободную для domU:

# free -m
               total        used        free      shared  buff/cache   available
Mem:            1866         237        1503           0         157        1629
Swap:           1418           0        1418

# xl info | grep memo
total_memory           : 65347
free_memory            : 62649
sharing_freed_memory   : 0
sharing_used_memory    : 0


Собственно, вопрос - а те параметры, которые в «Xen Hypervisor Command Line Options» - они вообще где-то когда-то работают и чем они обрабатываются? Т.е., мне несложно впихнуть все в GRUB_CMDLINE_XEN_DEFAULT, но может я что-то делаю не так?

★★★★★

оверрайды - это такие оверрайды, которые оверрайдят даже оверрайды. Работают ли «те параметры, которые в Xen Hypervisor..» и даже в «если что, в /etc/grub.d/20_linux_xen» теперь уж не узнаешь, ведь было сделано «И таки да, при update-grub».

Хотя, если вас действительно интересует ответ на ваш вопрос, то можно повторить историю и убрать /etc/default/grub.d/xen.cfg перед шагом «И таки да, при update-grub». И посмотреть что будет.

anonymous
()
Ответ на: комментарий от anonymous

и убрать /etc/default/grub.d/xen.cfg

Убрать куда? Это штатный файлик, я его не создавал. Или убрать «GRUB_CMDLINE_XEN_DEFAULT»? Или что? Можно более внятно?
В файле работают только переменные «XEN_OVERRIDE_GRUB_DEFAULT» и «GRUB_CMDLINE_XEN_DEFAULT», остальные не используются. Процедуру я уже описал выше - если я не впишу то, что мне надо в GRUB_CMDLINE_XEN_DEFAULT, то я просто не получу нужного результата.

теперь уж не узнаешь, ведь было сделано «И таки да, при update-grub

Почему? Это обычная команда, выполняемая, например, при обновлении ядра. GRUB строит свой конфиг на базе предоставленных шаблонов и параметров. Как еще заданные параметры окажутся в grub.cfg, как не по update-grub?

YAR ★★★★★
() автор топика
Последнее исправление: YAR (всего исправлений: 1)
Ответ на: комментарий от YAR

Конфигурация граба задаётся в файлике /etc/default/grub. Скрипты в /etc/grub.d обрабатывают этот файлик и пишут результат в /boot/grub/grub.cfg. Максимум, что в этих скриптах могло бы задаваться - это некие параметры по умолчанию, которые будут использованы, если соответствующий параметр не задан в конфигурационном файле. Поэтому свои шаловливые ручки от файликов в /etc/grub.d надо бы убрать, пока чего не вышло, и сосредоточить всё своё внимание на /etc/default/grub.

anonymous
()
Ответ на: комментарий от anonymous

Поэтому свои шаловливые ручки от файликов в /etc/grub.d надо бы убрать

А я их и не трогал, просто рассматривал, когда выискивал, что/куда/как и чем пишется.

Конфигурация граба задаётся в файлике /etc/default/grub

Да. Плюс /etc/default/grub.d/*.cfg, про который тут и речь. Часть параметров из которого читаются и обрабатываются, а часть - нет.

YAR ★★★★★
() автор топика
Последнее исправление: YAR (всего исправлений: 1)
Ответ на: комментарий от YAR

dom0_mem=1280M,max:1536M надо добавлять в GRUB_CMDLINE_XEN_DEFAULT или GRUB_CMDLINE_XEN, в противном случае они будут проигнорированы. Собственно, вся настройка загрузчика идёт через переменные GRUB_ЧТО-ТО_ТАМ.

anonymous
()
Ответ на: комментарий от anonymous

Собственно, я так и сделал. Но в таком случае чем является приведенный в самом начале конфиг? Просто списком примеров в стиле «что можно запихнуть в GRUB_CMDLINE_XEN»? Тогда почему об этом явно не сказать? И параметров-то на деле гораздо больше.

YAR ★★★★★
() автор топика
Ответ на: комментарий от YAR

Ну, вроде как, сказано:

# The first two options are used to generate arguments for the hypervisor.

и сами эти опции:

#GRUB_CMDLINE_XEN_DEFAULT=""
#GRUB_CMDLINE_XEN=""

А всё, что между ними - пример того, что можно задать. Может быть, не совсем очевидно, но все параметры задаются через переменные GRUB_*, поэтому неясности не должно возникать.

anonymous
()
Ответ на: комментарий от anonymous

Разве что предположить, что в конфиге все в весьма вольном стиле написано, из-за чего и возникла ошибка с пониманием. Но ок, все же прокомментирую сообщение:

# The first two options are used to generate arguments for the hypervisor.

и сами эти опции:

Не совсем. Если не выкидывать следующую строку, то правильнее так:

# The first two options are used to generate arguments for the hypervisor.
# Commonly used options are:


 Commonly used options 


И дальше список на закомментированных 7 опций с примерами использования - в общем-то, типичный конфиг. А на деле их гораздо больше, о чем сказано чуть дальше в конфиге.

Да и опции совсем не обязательно должны передаваться GRUB'у / в GRUB: например, на другой машине у меня это выглядит так:

cat /boot/efi/EFI/xen/xen.cfg 
[global]
default=debian9

[debian9]
options=console=vga,com1 com1=115200 loglvl=all dom0_mem=1024M,max:1536M
kernel=vmlinuz root=/dev/mapper/mls-root ro net.ifnames=0 biosdevname=0 bootdegraded=true memtest=17 systemd.journald.forward_to_console=1 systemd.debug-shell=1
ramdisk=initrd.img


Тут ^^^ вообще GRUB не фигурирует, это параметры гипервизора, который грузится напрямую через UEFI.

Но - да, раз это (в начальном примере) /etc/default/grub.d/xen.cfg, то подразумевается, что это должно как-то обрабатываться GRUB'ом / его скриптами. И, как я предположил - в процессе работы скриптов выделяться из конфига и помещаться в нужные места загрузчика. Чего не происходило и чем я и был озадачен. Собственно, ничего не мешает скриптам парсить /etc/default/grub.d/xen.cfg и из параметров (не переменных) собирать уже переменную GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT.

YAR ★★★★★
() автор топика
Ответ на: комментарий от YAR

Собственно, ничего не мешает скриптам парсить /etc/default/grub.d/xen.cfg и из параметров (не переменных) собирать уже переменную GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT.

Для этого скрипты должны знать, какие параметры относятся к гипервизору, а какие к ядру. console=vga относится к гипервизору? А почему не к ядру, запущенному под этим гипервизором?

Вот, чтобы таких вопросов не возникало, и есть переменные GRUB_CMDLINE_XEN_DEFAULT и GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT. Первая задаёт загрузочные параметры гипервизора, а вторая - параметры ядра линукса, работающего под этим гипервизором, которые, между прочим, могут отличаться от параметров ядра, работающего на чистом железе.

anonymous
()
Ответ на: комментарий от anonymous

Ага, так вроде становится яснее, спасибо. Хотя насыпать параметров в конфиг, которыми нельзя напрямую пользоваться - все равно странное решение.

YAR ★★★★★
() автор топика