diff options
author | Arnaud Patard <rtp@mageia.org> | 2012-12-07 13:58:36 +0000 |
---|---|---|
committer | Arnaud Patard <rtp@mageia.org> | 2012-12-07 13:58:36 +0000 |
commit | 93cca46c26c2078593f663f894193053cc740d43 (patch) | |
tree | 2f7e19f2499f7f1c49bcdfb469a3db6a6b2a6279 | |
parent | 2b1f165d34612d73d37a1cc21089d4e63f4e5fd0 (diff) | |
download | drakx-93cca46c26c2078593f663f894193053cc740d43.tar drakx-93cca46c26c2078593f663f894193053cc740d43.tar.gz drakx-93cca46c26c2078593f663f894193053cc740d43.tar.bz2 drakx-93cca46c26c2078593f663f894193053cc740d43.tar.xz drakx-93cca46c26c2078593f663f894193053cc740d43.zip |
- Add support to detect if we're running in Hyper-V vm and automatically
load storage driver when probing disks in this case.
-rw-r--r-- | perl-install/detect_devices.pm | 6 | ||||
-rw-r--r-- | perl-install/modules.pm | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm index 6ba852fec..a0c6a8c23 100644 --- a/perl-install/detect_devices.pm +++ b/perl-install/detect_devices.pm @@ -1154,6 +1154,11 @@ sub isServer() { || (any { $_->{'model name'} =~ /(Xeon|Opteron)/i } getCPUs()); } +sub isHyperv() { + dmidecode_category('System')->{'Manufacturer'} =~ /Microsoft Corporation/i + && dmidecode_category('System')->{'Product Name'} =~ /Virtual Machine/i +} + sub BIGMEM() { arch() !~ /x86_64|ia64/ && $> == 0 && dmi_detect_memory() > 4 * 1024; } @@ -1231,6 +1236,7 @@ sub matching_types() { mips_ict => is_mips_ict(), mips_st_ls2f => is_mips_st_ls2f(), laptop => isLaptop(), + hyperv => isHyperv(), 'numpad' => hasNumpad(), 'touchpad' => hasTouchpad(), '64bit' => to_bool(arch() =~ /64/), diff --git a/perl-install/modules.pm b/perl-install/modules.pm index 6014c6dc6..ddcfc0268 100644 --- a/perl-install/modules.pm +++ b/perl-install/modules.pm @@ -277,8 +277,13 @@ sub when_load_category { if ($category =~ m,disk/ide,) { $conf->add_probeall('ide-controller', $name); eval { load('ide_gd_mod') }; - } elsif ($category =~ m,disk/(scsi|hardware_raid|sata|firewire),) { + } elsif ($category =~ m,disk/(scsi|hardware_raid|sata|firewire|virtual),) { $conf->add_probeall('scsi_hostadapter', $name); + if (detect_devices::isHyperv()) { + log::l("HyperV detected. Loading storvsc"); + load('hv_vmbus'); + load('hv_storvsc'); + } eval { load('sd_mod') }; } elsif ($category eq 'bus/usb') { $conf->add_probeall('usb-interface', $name); |