]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
Consollidate the qemu virtualization detection
authorDaniel Molkentin <dmolkentin@suse.com>
Tue, 14 May 2019 12:17:14 +0000 (14:17 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Fri, 19 Jul 2019 14:26:42 +0000 (16:26 +0200)
Eventually, we could add a full virt detection routine.
This would be useful e.g. to determine inclusion of
ucode for hostonly setups.

dracut-init.sh
modules.d/90qemu-net/module-setup.sh
modules.d/90qemu/module-setup.sh
modules.d/95virtfs/module-setup.sh

index e1ced79d91d1e365530f88dbce372a7cd2a5f7dd..58d87831984f8cdee2a86a8764b0ee044ec088d6 100644 (file)
@@ -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
index 121e83dfa58811ab8fc2212b8cfcee665777e810..0e45a417f78703fc1a9bfb837c28b37dfb697dc1 100755 (executable)
@@ -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
index 7e5ea6a40a75c2efa36fc424ad707b354034b78b..1a808db2255050ba5f219e719ce88acbff8ea7a2 100755 (executable)
@@ -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
 
index 96036ee342338d43f3cf3379bfadffe6a3eb72fb..935483ebe5dbf8bb9f0e38389392edc1fa4ffd76 100755 (executable)
@@ -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
 }