У меня есть Ubuntu 14.04.1 (ubuntu-14.04.1-server-amd64.iso
) гость, работающий в хосте KVM. Хост запускает Ubuntu 16.04. Я пытаюсь узнать, как Ubuntu 14.04.1 дифференцируется между virsh shutdown
и virsh reboot
команды даются в хосте. Я вижу это в обоих случаях вызовы гостя halt -d -f -i -p -h
от /etc/rc0.d/S90halt
. Я не вижу изменения в runlevel 6 когда virsh reboot
используется (подтвержденное эхо использования в файл в /etc/rc0.d/S90halt
и /etc/rc6.d/S90reboot
).
Я также нашел, что в Ubuntu 14.04.1 systemd-logind обрабатывает acpi событие и в свою очередь делает вызов dbus для получения systemd-shim
выполнение, которое называет завершение работы для изменения runlevel на '0' через выскочку. Любая справка в понимании этого лучше это очень ценило.
Гостевые детали:
srinij@ubuntu:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
Детали хоста:
srinij@ubuntu-server-16x:~/Downloads$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
srinij@ubuntu-server-16x:~/Downloads$ virsh version
Compiled against library: libvirt 1.3.1
Using library: libvirt 1.3.1
Using API: QEMU 1.3.1
Running hypervisor: QEMU 2.5.0
libvirt сначала запрашивает гостя завершить работу в обоих случаях (Перезагрузка/Завершение работы) с помощью события кнопки питания ACPI. Затем в случае Перезагрузки, libvirt самой перезапускает VM. Благодаря Paolo Bonzini от qemu-devel для указания на это
Я не на 100% уверен, но гипервизор может заказать гостю ОС, чтобы закрыть или перезагрузить путем эмуляции аппаратного события ACPI, т.е. касания кнопки питания.
нет никакого дифференцируемого сигнала для завершения работы или перезагрузки насколько я знаю, просто кнопка нормального питания.
, Который означает virsh shutdown
и virsh reboot
, должен и эмулировать касание кнопки питания, которое регистрируется гостем демон ОС ACPI и приводит к завершению работы (на сервере Ubuntu по умолчанию) или интерактивная подсказка (на рабочем столе Ubuntu по умолчанию) или однако гость, ОС настроена для обработки этого события.
единственная разница, я думаю, который, после того как закрыл VM, если команда была virsh shutdown
, это остается неизменным, но если это было virsh reboot
, это включается снова сразу. Это равнялось бы "холодной" начальной загрузке хотя, не горячая перезагрузка.
Однако рассмотрение man virsh
руководство, на которое это походит, существует более различные варианты для отправки команды перезагрузки кроме просто события ACPI. Однако я ничего не могу сказать Вам о тех, к сожалению.
reboot domain [--mode MODE-LIST]
Reboot a domain. This acts just as if the domain had the reboot
command run from the console. The command returns as soon as it
has executed the reboot action, which may be significantly before
the domain actually reboots.
The exact behavior of a domain when it reboots is set by the
on_reboot parameter in the domain's XML definition.
By default the hypervisor will try to pick a suitable shutdown
method. To specify an alternative method, the --mode parameter can
specify a comma separated list which includes "acpi", "agent",
"initctl", "signal" and "paravirt". The order in which drivers will
try each mode is undefined, and not related to the order specified
to virsh. For strict control over ordering, use a single mode at a
time and repeat the command.