I was required to auto map a USB DoK to a KVM VM (specific VM, mind you!), as a result of connecting this device to the host. I’ve looked it up on the Internet, and the closest I could get there was this link. It was almost a complete solution, but it had a few bugs, so I will re-describe the whole process, with the fixes I’ve added to the process and udev rules file. While this guide is rather old, it did solve my requirement, which was to map a specific set of devices (“known USB devices”) to the VM, and not any and every USB device (or even – USB DoK) connected to the system.
In my example, I’ve used SanDisk Corp. Ultra Fit, which its USB identifier is 0781:5583, as can be seen using ‘lsusb’ command:
[root@localhost ~]# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 020: ID 0781:5583 SanDisk Corp. Ultra Fit
My VM is called “centos7.0” in this example. I am using integrated KVM+QEMU+LIBVIRT on a generic CentOS 7.5 system.
Preparation
You will need to prepare two files:
USB definitions file (for easier config of libvirt)
UDEV rules file (which will be triggered by add/remove operation, and will call the USB definitions file)
USB Definitions file
I’ve placed it in /opt/autousb/hostdev-0781:5583.xml , and it holds the following (mind the USB device identifiers!)
I’ve created a file /etc/udev/rules.d/90-libvirt-usb.rules with the content below. Note that the device identifiers are there, but in the “remove” section they appear differently. Remove leading zero(s) and change the string. This is caused because on removal, the device does not report all its properties to the OS. Also – you cannot connect more than three (3) such devices to a VM, so when you fail to detach three devices (following a consecutive insert/remove operations, for example), you will not be able to attach a fourth time.
Lately I have been overloaded above my capabilities. This did not prevent me from doing all kind of things, but most of them are too small to justify a real entry here, so I have decided to make a small collection of small stuff someone might need to know, in order to make it indexed…
With the migration of Enterprise Linux to ‘chronyd’ ntp clock toolset, some of the more common commands were deprecated, and do not exist anymore. In this article I will go over the most common uses I have in the context of NTP, and how to address them using ‘chronyc’ command line. Perform ‘ntpdate’ command A…
I add to this blog all pieces of information which I might think could help other people. One of the things I have encountered short while ago had to do with DL140 G1 system cannot boot Linux. It’s Linux system (RedHat 4 32bit) was deployed by an external system and the system could not boot….
I was required to utilize a transparent proxy. The general idea was to follow a diagram as the one here: The company did not want any information (http, https, ftp, whatever) to pass directly through the firewall from the internal network to the external network. If we can move it all via some sort of…
I have noticed there is no fixed guide for L2TP for cable connection in Israel. Since I’ve been doing just this thing today, I’ve decided to put online my own comments on the issue, with hope it would help other people too. Subject: L2TP cables connection to an ISP called Actcom in Israel, using Fedora…
While DL140 G3 is quite a new piece of hardware, RHEL4, even with the later updates, is rather old. When you decide to install RHEL4 on a DL140 G3 server, my first recommendation is this: if you decide to use the embedded SATA-II RAID controller – don’t. This is a driver-based RAID, much like the…
One Comment