From: Daniel Molkentin Date: Tue, 14 May 2019 12:17:14 +0000 (+0200) Subject: Consollidate the qemu virtualization detection X-Git-Tag: 050~180 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6b1bf92021b1c8f70f450dc212cb6de9554de36;p=thirdparty%2Fdracut.git Consollidate the qemu virtualization detection Eventually, we could add a full virt detection routine. This would be useful e.g. to determine inclusion of ucode for hostonly setups. --- diff --git a/dracut-init.sh b/dracut-init.sh index e1ced79d9..58d878319 100644 --- a/dracut-init.sh +++ b/dracut-init.sh @@ -1070,3 +1070,25 @@ else ln -sfn -- "$(convert_abs_rel "${_dest}" "${_source}")" "${initdir}/${_dest}" } fi + +is_qemu_virtualized() { + # 0 if a virt environment was detected + # 1 if a virt environment could not be detected + # 255 if any error was encountered + if type -P systemd-detect-virt >/dev/null 2>&1; then + vm=$(systemd-detect-virt --vm >/dev/null 2>&1) + (($? != 0)) && return 255 + [[ $vm = "qemu" ]] && return 0 + [[ $vm = "kvm" ]] && return 0 + [[ $vm = "bochs" ]] && return 0 + fi + + for i in /sys/class/dmi/id/*_vendor; do + [[ -f $i ]] || continue + read vendor < $i + [[ "$vendor" == "QEMU" ]] && return 0 + [[ "$vendor" == "Red Hat" ]] && return 0 + [[ "$vendor" == "Bochs" ]] && return 0 + done + return 1 +} \ No newline at end of file diff --git a/modules.d/90qemu-net/module-setup.sh b/modules.d/90qemu-net/module-setup.sh index 121e83dfa..0e45a417f 100755 --- a/modules.d/90qemu-net/module-setup.sh +++ b/modules.d/90qemu-net/module-setup.sh @@ -3,21 +3,7 @@ # called by dracut check() { if [[ $hostonly ]] || [[ $mount_needs ]]; then - if type -P systemd-detect-virt >/dev/null 2>&1; then - vm=$(systemd-detect-virt --vm >/dev/null 2>&1) - (($? != 0)) && return 255 - [[ $vm = "qemu" ]] && return 0 - [[ $vm = "kvm" ]] && return 0 - [[ $vm = "bochs" ]] && return 0 - fi - - for i in /sys/class/dmi/id/*_vendor; do - [[ -f $i ]] || continue - read vendor < $i - [[ "$vendor" == "QEMU" ]] && return 0 - [[ "$vendor" == "Bochs" ]] && return 0 - done - + is_qemu_virtualized && return 0 return 255 fi return 0 diff --git a/modules.d/90qemu/module-setup.sh b/modules.d/90qemu/module-setup.sh index 7e5ea6a40..1a808db22 100755 --- a/modules.d/90qemu/module-setup.sh +++ b/modules.d/90qemu/module-setup.sh @@ -3,22 +3,7 @@ # called by dracut check() { if [[ $hostonly ]] || [[ $mount_needs ]]; then - if type -P systemd-detect-virt >/dev/null 2>&1; then - vm=$(systemd-detect-virt --vm 2>/dev/null) - (($? != 0)) && return 255 - [[ $vm = "qemu" ]] && return 0 - [[ $vm = "kvm" ]] && return 0 - [[ $vm = "bochs" ]] && return 0 - fi - - for i in /sys/class/dmi/id/*_vendor; do - [[ -f $i ]] || continue - read vendor < $i - [[ "$vendor" == "QEMU" ]] && return 0 - [[ "$vendor" == "Red Hat" ]] && return 0 - [[ "$vendor" == "Bochs" ]] && return 0 - done - + is_qemu_virtualized && return 0 return 255 fi diff --git a/modules.d/95virtfs/module-setup.sh b/modules.d/95virtfs/module-setup.sh index 96036ee34..935483ebe 100755 --- a/modules.d/95virtfs/module-setup.sh +++ b/modules.d/95virtfs/module-setup.sh @@ -9,20 +9,8 @@ check() { return 255 } - if type -P systemd-detect-virt >/dev/null 2>&1; then - vm=$(systemd-detect-virt --vm >/dev/null 2>&1) - (($? != 0)) && return 255 - [[ $vm = "qemu" ]] && return 0 - [[ $vm = "kvm" ]] && return 0 - [[ $vm = "bochs" ]] && return 0 - fi + is_qemu_virtualized && return 0 - for i in /sys/class/dmi/id/*_vendor; do - [[ -f $i ]] || continue - read vendor < $i - [[ "$vendor" == "QEMU" ]] && return 0 - [[ "$vendor" == "Bochs" ]] && return 0 - done return 255 }