3rd July 2018
The ch device driver for SCSI medium changers is included in the Linux kernel source from kernel.org. Red Hat Enterprise Linux supplies it as a separate module. For each device, ch provides device nodes of the form /dev/sch where identifies an individual device. The identifier, is assigned when Linux is booted or when a device is set online. As a result, there is no fixed mapping between physical media changer devices and the media changer device nodes. When trying to install virtio-win 0.1-74 drivers on Windows XP SP3 for 'SCSI Controller' (aka Red Hat VirtIO SCSI pass-through controller), an error occurs - Code 39 Version-Release number of selected component (if applicable): virtio-win 0.1-74.
Virtio drivers are paravirtualized device drivers for KVM virtual machines.
Paravirtualized drivers enhance the performance of machines, decreasing I/O latency and increasing throughput to near bare-metal levels.
It is recommended to use the paravirtualized drivers for fully virtualized machines.
Most Linux distributions include the virtio drivers as standard. This guide explains how to install them in Windows.
This guide was written for Zetastack users but applies to any Windows guest VM running on a KVM host.
This includes Nutanix, Red Hat Virtualization (RHEV), Proxmox VE, oVirt and OpenStack.
If your device manager looks like this, then this guide will help you.
Download ISO
We recommend the stable release, the same as what is shipped with Red Hat Enterprise Linux.
This is the link to download:
Download and add the ISO to your virtualization platform.
In Zetastack this is done in Settings Import.
Machine Configuration
Edit the machine configuration and set these:
- Disk bus: Virtio SCSI pass-through controller
- NIC model: Virtio Ethernet
- Video model: QXL
- Video RAM: 32MB
Attach ISO
This bit depends on whether you are installing a new Windows VM or you already have an existing Windows VM.
If you are installing a new Windows VM, set the ISO to be the 2nd CD-ROM drive leaving the Windows install ISO as the 1st CD-ROM drive.
Begin Install
If you are not installing a new Windows VM, you can skip this section.
Storage Driver
At the disk detection stage, the Windows installer cannot detect any disks for installation.
This is expected behaviour, since the virtio drivers have not been loaded yet and are not included by Microsoft in the installation media.
Click 'Load driver' and select 'CD Drive (E:) virtio-win-0.1.1'
The driver required is the 'VirtIO SCSI pass-through controller' located at:
For other editions of Windows, the driver will be located in the relevant directory on the ISO.
Select the driver and click 'Next'.
The driver is loaded and the and the disk is now detected.
Select the disk for installation and click 'Next'.
Post Install
Once the installation is complete and the VM has booted, the next steps are to install the guest agent and resolve any missing drivers.
Guest Agent
It is essential the guest agent is installed.
The guest agent is used by the hypervisor to communicate directly with the VM.
The guest agent is required for clean VM shutdown and to enable live snapshots of the VM images.
On the task bar click 'File Explorer'.
Select 'This PC' then double click 'CD Drive (E:) virtio-win-0.1.1'.
Open the 'guest-agent' folder.
Right click the 'qemu-ga-x64' file and select 'Install'.
The QEMU guest agent will now install.
Once installed the VM must be completely shutdown before the agent can run.
When the VM is started again, the guest agent service will automatically start.
Device Manager
In Device Manager we can see the following unconfigured devices.
This table lists the devices and the drivers required.
Device | Driver |
---|---|
Storage controller | Virtio SCSI pass-through controller (already installed) |
Ethernet controller | Virtio Ethernet adapter |
PCI device | Virtio balloon driver |
PCI input device | Virtio input driver |
PCI simple communications controller | Virtio serial driver |
Display adapter | QXL video driver |
HID button over interrupt driver | Generic bus |
The procedure is simple but repetitive.
Generic Bus
This is a Microsoft bug which is easily resolved.
Right click on 'HID Button over Interrupt Driver' and select 'Update Driver Software...'
Select 'Browse my computer for driver software'.
Select 'Let me pick from a list of device drivers on my computer'.
Select the model 'Generic Bus'.
This resolves the bug, and removes the driver warning.
Virtio Ethernet Adapter
This is a high speed driver capable of 10GbE and better.
Right click on 'Ethernet Controller' and select 'Update Driver Software...'.
Select 'Browse my computer for driver software'.
Select 'CD Drive (E:) virtio-win-0.1.1' and click OK.
Device Manager will automatically find the correct driver. The path to the driver does not need to be specified.
At the prompt click 'Install'.
The driver is installed.
The device description has now changed in Device Manager.
Virtio Balloon Driver
The balloon driver allows the memory in the VM to be changed dynamically.
Right click on 'PCI Device' and select 'Update Driver Software...'.
Follow the same steps for the Ethernet adapter above to complete the driver installation.
Virtio Input Driver
This provides accurate mouse tracking within the console.
Right click on 'PCI Input Device' and select 'Update Driver Software...'.
Follow the same steps for the Ethernet adapter above to complete the driver installation.
Virtio Serial Driver
This is a virtual serial port for communication between the hypervisor and the VM.
Right click on 'PCI Simple Communications Controller' and select 'Update Driver Software...'.
Follow the same steps for the Ethernet adapter above to complete the driver installation.
QXL Video Driver
This is a video driver that improves performance and allows for higher resolutions.
It also provides a seamless cursor when using the console to manage the VM.
Right click on 'Microsoft Basic Display Adapter' and select 'Update Driver Software...'.
Follow the same steps for the Ethernet adapter above to complete the driver installation.
Cursor Tweak
When using the QXL driver, the mouse cursor needs to be tweaked.
This will provide a seamless cursor in web based VM consoles.
On the start menu click 'Settings'.
Click 'Devices'.
Click 'Mouse & touchpad'.
Click 'Additional mouse options'.
In the Pointers tab, enable 'Enable pointer shadow' and click OK to update.
This allows the use of black and extra large cursors.
This concludes the guide.
A question from Matt Vogt prompted this, where he wants to go from the BusLogic SCSI controller to the LSI Logic SAS controller. It’s actually a straightforward conversion if you have the right steps. This is based on Red Hat Enterprise Linux 3, 4, and 5, but the principle should be the same for everything. It’s basically: snapshot, change config files, change hardware.
Red Hat Enterprise Linux 6, in contrast, appears to have all the LSI Logic, parallel & SAS, drivers, as well as the paravirtual SCSI drivers, so all you need to do is shut the VM down and change the type of SCSI controller you’re using.
I always recommend trying this on a test VM before you try it on something big and important. :) As always, while I strive for 100% accuracy I assume no responsibility for this b0rking your whole setup. There are parts to this that require you to find your own information and substitute it for the example I’ve given. Please do that, don’t copy the commands by themselves. Some of them will look like they work fine… until you reboot.
Step 1: Take a snapshot of the VM in question. Did you know that VMware snapshots archive the VM hardware configuration, too?
Step 2: Copy /etc/modules.conf (for RHEL AS 3) or /etc/modprobe.conf (for RHEL 4 or 5) to /tmp, just in case.
On RHEL hosts that have tmpwatch installed files that haven’t been accessed in 10 days will be removed from /tmp. In this case that’s my desired behavior, as you won’t need the original after the conversion operation, and I always discourage people from leaving cruft sitting around on hosts, cluttering them up. Besides, if you do need the original file after 10 days just pull it out of your file-level backups.
Step 3: Open the original file in an editor. If you’re new to Linux try to use the ‘nano’ or ‘pico’ editor, it’s more straightforward than vi. Remember to use sudo or do this as root, which will be true of all of the rest of the directions here.
Step 4: Find the line or lines that say “alias scsi_hostadapter.” There may be more than one of them, they may have numbers, and they may not all pertain to the controller you want to replace (there may be lines for ata_piix, for example). Remove the lines pertaining to your old SCSI adapter. In Matt’s case there would be a line saying “alias scsi_hostadapter BusLogic”
Step 5: Add the correct lines to /etc/modules.conf or /etc/modprobe.conf:
Red Hat Restaurant Irvington
RHEL AS 3, /etc/modules.conf for LSI Logic SAS:
RHEL 4, /etc/modprobe.conf for LSI Logic SAS:
RHEL 5, /etc/modprobe.conf for LSI Logic SAS:
Step 6: Fix the numbering so that it’s consistent. This is pertinent if you have other scsi_hostadapter lines, like for ata_piix or something. Just alter the number to be right, sequentially. Then save the file and exit the editor.
Step 7: Rebuild your initial RAM disk. The initial RAM disk is the thing that the kernel loads drivers from, so it can find the rest of the OS. We want the new drivers to be in there, too. This process is kernel-specific. First, look in /etc/grub.conf:
and note the line that says “default=”. Starting from 0, count the entries in the file for kernels (the sections start with “title”). Find the entry in the file that corresponds to your default= setting. In my case it’s default=1, so I take the second section, which looks like:
You can confirm this with the ‘uname –a’ command. The third field should be your running kernel version. Back in /etc/grub.conf, the “initrd” line will show you the file you need to update. It’s in /boot, so the file in my case is:
Confirm that the file is there using ‘ls’. Once you know the filename, issue the command:
Substitute the right string for KERNEL_VERSION. For example, in my case it’d be:
Your kernel version might have “smp” in the name, too, like “2.4.21-63.ELsmp.” If you get any warnings from this process stop and fix them. Remember, worst case, you have a snapshot. You also have a copy of the original files in /tmp.
Step 8: Use ‘ls’ to confirm that the RAM disk has been updated recently (like right now).
Step 9: Shut the VM down. Edit the hardware settings. Select the SCSI controller and click the ‘Change Type’ button. Pick the one you set the VM’s drivers up for. Save your changes.
Red Hat Linux
Step 10: Power the VM on. Bask in the glory of a new SCSI controller. Realistically, this should be anti-climactic. :) Hopefully everything went as planned, and you don’t need to restore the snapshot.
Drivers Red Hat Scsi & Raid Devices List
Step 11: Remove that snapshot when you are sure everything is fine! (Thanks for the reminder, John Walsh!)
Red Hat Stock
Please let me know via the comments if there are mistakes or clarifications that could be made. Like I said, I strive for accuracy, despite the continually changing world of virtualization. :)