Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

USB Printing in VE

2,269 bytes added, 16:51, 17 April 2012
no edit summary
Please note that ownership/permission/devices are referred to my system and you have to adapt to YOUR configuration: they are reported only as an EXAMPLE.
* Install '''usbutils ''' in both HN and VE.
* In a shell on HN type '''lsusb''' and you'll get the list fo the usb devices on your system:
Bus 002 Device 006: ID 0dda:2026 Integrated Circuit Solution, Inc. USB2.0 Card Reader
** a '''printer inside''' the /dev/usb directory: <code>crw-rw---- 1 root lp 180, 0 Nov 28 14:14 lp0</code>
** a '''bus/usb''' directory
** '''many directories''' in bus/usb: named with the bus numer number that you get got with the first lsusb command. In this example the relevant one is '''008'''
** in the numbered subdirectory '''1 file for every usb device attached to this bus''', the first one is the usb port:
***<code>crw-rw-r-- 1 root usb 189, 896 Nov 24 16:16 001</code>
***<code>crw-rw-r-- 1 root usb 189, 902 900 Nov 28 14:14 007005</code>* Now that you have an idea fo of the general structure of your usb devices you have to replicate them on your VE.** enter your VE: <code>vzctl enter VE_NUMBER</code>
** create in /dev (if not present) the usb directory
** create in /dev/usb the printer device typing: <code>mknod lp0 c 180 0</code>
**** <code>chown root:lp lp0</code>
**** <code>chmod 660 lp0 </code>
**** check with <code>ls -l lp0</code> if the new device is '''IDENTICAL''' to the one in HN --> <code>crw-rw---- 1 root lp 180, 0 Nov 28 1427 13:14 51 lp0</code>** go back to /dev and create a symlink to the printer device: <code>ln -s /dev/usb/lp0 /dev/usblp0</code>** create all the needed directories:*** <code>mkdir /dev/bus</code>*** <code>mkdir /dev/bus/usb</code>*** <code>mkdir /dev/bus/usb/008</code>** switch to /dev/bus/usb/008 directory and create there the needed devices: one for the usb port and one for the printer*** <code>mknod 001 c 189 896</code>*** <code>mknod 005 c 189 900</code>** assign ownership/permissions:*** <code>chown root:usb *</code>*** <code>chmod 664 * </code>*** check everything: <code>ls -l</code> should give the same results as in HN:***<code>crw-rw-r-- 1 root usb 189, 896 Nov 27 13:29 001</code>***<code>crw-rw-r-- 1 root usb 189, 900 Nov 27 13:30 005</code>* '''Doublecheck everything!'''* Now edit your VE_NUMBER.conf adding this line: <code>DEVICES="c:180:0:rw c:189:896:rw c:189:900:rw"</code>** These are the devices replicated in the VE with mknod.* Almost there: restart your VE and enter it.* In VE type: <code>lsusb</code> and you should see the two devices created before: Bus 008 Device 005: ID 04b8:0005 Seiko Epson Corp. Stylus Printer Bus 008 Device 001: ID 1d6b:0001* If not '''RECHECK''' everything.* Start cups and access it via your browser* You should be able to see the printer attached to the usb port == Sample bash shell script for compute vzctl command for dynamically assigning some devices to one VZ ==Be care, the command <code>vzctl set xxx --devices "dddd" --devnodes "nnnn" --save</code> will reassignthe entire list of devices shared to one VZ, even suppressing some already presents.<code> #!/bin/bash VZ=1234 DEVICES="[bB]luetooth|[pP]rinter" VZDEV="" VZNOD="" while read A B C D E;do if [[ "$E" =~ (${DEVICES}) ]] ;then BUS=${B#0} DEV=${D%:} BUS=${B#0} DEV=${DEV#0} DEV=${DEV#0} VZDEV="$VZDEV c:189:$(((BUS-1)*128+DEV-1)):rw" VZNOD="$VZNOD bus/usb/$B/${D}rw" fi done < <(lsusb) printf "DEVICES=\"%s\"\n" "${VZDEV# }" printf "DEVNODES=\"%s\"\n" "${VZNOD# }" printf "vzctl set %d --devices '%s' --devnodes '%s' --save\n" $VZ "${VZDEV# }" "${VZNOD# }"</code> [[Category:HOWTO]]
Anonymous user