2010-10-20 25 views
0

我想分配/ dev/fbX設備,如下所示。用於USB-LCD設備的
/dev/fb0。主顯示設備的
/dev/fb1。
我嘗試過。
1版:創建/etc/udev/rules.d/91-udev-fb.rules如何分配/ dev/fbX?

KERNEL=="fb0", ATTR{name}=="VESA VGA", ACTION=="add", NAME="fd1" 
KERNEL=="fb1", ATTR{name}=="I-O DATA USB-RG", ACTION=="add", NAME="fd0" 

結果。
ls/dev只顯示一個/ dev/fb0。

第2版:創建/etc/udev/rules.d/91-udev-fb.rules

KERNEL=="fb0", ATTR{name}=="VESA VGA", ACTION=="add", NAME=="fd1" 
KERNEL=="fb1", ATTR{name}=="I-O DATA USB-RG", ACTION=="add", NAME=="fd0" 

結果。
ls/dev顯示/ dev/fb0和/ dev/fb1,但/ dev/fb0是VESA VGA。 udevadm測試的/ dev/FB0

parse_file: reading '/etc/udev/rules.d/50-udev.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/51-android.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/60-persistent-input.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/60-persistent-storage-tape.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/60-persistent-storage.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/60-persistent-v4l.rules' as rules file 
parse_file: reading '/dev/.udev/rules.d/61-dev-root-link.rules' as rules file 
parse_file: reading '/lib/udev/rules.d/64-xorg-xkb.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/75-cd-aliases-generator.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/75-persistent-net-generator.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/80-drivers.rules' as rules file 
parse_file: reading '/lib/udev/rules.d/85-hwclock.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/90-hal.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/91-permissions.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/91-udev-fb.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/95-late.rules' as rules file 
parse_file: reading '/etc/udev/rules.d/z60_xserver-xorg-input-wacom.rules' as rules file 
unable to open device '/dev/fb0' 

和udevadm信息-a -n的/ dev/FB0示出爲相同VESA VGA。

我認爲我創建的規則不正確。請建議我如何驗證udev規則。
此環境是VMware上的Debian Lenny。
目標是測試通過udev分配從啓動過程更改主監視器。
VESA VGA < - 通過udev轉換 - > USB-LCD切換。

默認情況下,不會添加到/etc/udev/rules.d。
當我啓動linux時,/ dev/fb0是主顯示器,/ dev/fb1是USB-LCD。
這是dev信息。

-/dev/fb0 
    looking at device '/class/graphics/fb0': 
    KERNEL=="fb0" 
    SUBSYSTEM=="graphics" 
    DRIVER=="" 
    ATTR{bits_per_pixel}=="8" 
    ATTR{blank}=="" 
    ATTR{console}=="" 
    ATTR{cursor}=="" 
    ATTR{mode}=="" 
    ATTR{modes}=="U:800x600p-75" 
    ATTR{pan}=="0,0" 
    ATTR{virtual_size}=="800,600" 
    ATTR{name}=="VESA VGA" 
    ATTR{stride}=="800" 
    ATTR{rotate}=="0" 
    ATTR{state}=="0" 

    looking at parent device '/devices/platform/vesafb.0': 
    KERNELS=="vesafb.0" 
    SUBSYSTEMS=="platform" 
    DRIVERS=="vesafb" 
    ATTRS{modalias}=="platform:vesafb" 

    looking at parent device '/devices/platform': 
    KERNELS=="platform" 
    SUBSYSTEMS=="" 
    DRIVERS=="" 


-/dev/fb1 
looking at device '/class/graphics/fb1': 
    KERNEL=="fb1" 
    SUBSYSTEM=="graphics" 
    DRIVER=="" 
    ATTR{bits_per_pixel}=="16" 
    ATTR{blank}=="" 
    ATTR{console}=="" 
    ATTR{cursor}=="" 
    ATTR{mode}=="" 
    ATTR{modes}=="U:1280x1024p-60" 
    ATTR{pan}=="0,0" 
    ATTR{virtual_size}=="1280,1024" 
    ATTR{name}=="I-O DATA USB-RG" 
    ATTR{stride}=="2560" 
    ATTR{rotate}=="0" 
    ATTR{state}=="0" 

    looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb2/2-1': 
    KERNELS=="2-1" 
    SUBSYSTEMS=="usb" 
    DRIVERS=="usb" 
    ATTRS{configuration}=="" 
    ATTRS{bNumInterfaces}==" 1" 
    ATTRS{bConfigurationValue}=="1" 
    ATTRS{bmAttributes}=="c0" 
    ATTRS{bMaxPower}=="500mA" 
    ATTRS{urbnum}=="143" 
    ATTRS{idVendor}=="17e9" 
    ATTRS{idProduct}=="0151" 
    ATTRS{bcdDevice}=="0101" 
    ATTRS{bDeviceClass}=="00" 
    ATTRS{bDeviceSubClass}=="00" 
    ATTRS{bDeviceProtocol}=="00" 
    ATTRS{bNumConfigurations}=="1" 
    ATTRS{bMaxPacketSize0}=="64" 
    ATTRS{speed}=="480" 
    ATTRS{busnum}=="2" 
    ATTRS{devnum}=="2" 
    ATTRS{version}==" 2.00" 
    ATTRS{maxchild}=="0" 
    ATTRS{quirks}=="0x0" 
    ATTRS{authorized}=="1" 
    ATTRS{manufacturer}=="DisplayLink" 
    ATTRS{product}=="I-O DATA USB-RGB_D" 
    ATTRS{serial}=="122937" 

    looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb2': 
    KERNELS=="usb2" 
    SUBSYSTEMS=="usb" 
    DRIVERS=="usb" 
    ATTRS{configuration}=="" 
    ATTRS{bNumInterfaces}==" 1" 
    ATTRS{bConfigurationValue}=="1" 
    ATTRS{bmAttributes}=="e0" 
    ATTRS{bMaxPower}==" 0mA" 
    ATTRS{urbnum}=="49" 
    ATTRS{idVendor}=="1d6b" 
    ATTRS{idProduct}=="0002" 
    ATTRS{bcdDevice}=="0206" 
    ATTRS{bDeviceClass}=="09" 
    ATTRS{bDeviceSubClass}=="00" 
    ATTRS{bDeviceProtocol}=="00" 
    ATTRS{bNumConfigurations}=="1" 
    ATTRS{bMaxPacketSize0}=="64" 
    ATTRS{speed}=="480" 
    ATTRS{busnum}=="2" 
    ATTRS{devnum}=="1" 
    ATTRS{version}==" 2.00" 
    ATTRS{maxchild}=="6" 
    ATTRS{quirks}=="0x0" 
    ATTRS{authorized}=="1" 
    ATTRS{manufacturer}=="Linux 2.6.26-2-686 ehci_hcd" 
    ATTRS{product}=="EHCI Host Controller" 
    ATTRS{serial}=="0000:02:03.0" 
    ATTRS{authorized_default}=="1" 

    looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:03.0': 
    KERNELS=="0000:02:03.0" 
    SUBSYSTEMS=="pci" 
    DRIVERS=="ehci_hcd" 
    ATTRS{vendor}=="0x15ad" 
    ATTRS{device}=="0x0770" 
    ATTRS{subsystem_vendor}=="0x15ad" 
    ATTRS{subsystem_device}=="0x0770" 
    ATTRS{class}=="0x0c0320" 
    ATTRS{irq}=="17" 
    ATTRS{local_cpus}=="ff" 
    ATTRS{local_cpulist}=="0-7" 
    ATTRS{modalias}=="pci:v000015ADd00000770sv000015ADsd00000770bc0Csc03i20" 
    ATTRS{enable}=="1" 
    ATTRS{broken_parity_status}=="0" 
    ATTRS{msi_bus}=="" 

    looking at parent device '/devices/pci0000:00/0000:00:11.0': 
    KERNELS=="0000:00:11.0" 
    SUBSYSTEMS=="pci" 
    DRIVERS=="" 
    ATTRS{vendor}=="0x15ad" 
    ATTRS{device}=="0x0790" 
    ATTRS{subsystem_vendor}=="0x0000" 
    ATTRS{subsystem_device}=="0x0000" 
    ATTRS{class}=="0x060401" 
    ATTRS{irq}=="0" 
    ATTRS{local_cpus}=="ff" 
    ATTRS{local_cpulist}=="0-7" 
    ATTRS{modalias}=="pci:v000015ADd00000790sv00000000sd00000000bc06sc04i01" 
    ATTRS{enable}=="1" 
    ATTRS{broken_parity_status}=="0" 
    ATTRS{msi_bus}=="1" 

    looking at parent device '/devices/pci0000:00': 
    KERNELS=="pci0000:00" 
    SUBSYSTEMS=="" 
    DRIVERS=="" 

謝謝你的任何建議,這:-)

回答

2

創建一個udev規則文件。 (在/etc/udev/rules.d/爲Ubuntu)

KERNEL == 「FB0」,ATTR {名稱} == 「VESA VGA」,ACTION == 「添加」,NAME = 「FD1」
KERNEL == 「FB1」 ,ATTR {name} ==「IO DATA USB-RG」,ACTION ==「add」,NAME =「fd0」

規則目錄會自動監控更改。
(或使用udevadm control --reload-rules)。

+0

非常感謝N 1.1的快速響應。我嘗試創建一個50-udev-fb.rules然後在系統日誌add_to_rules:invalid KERNEL ...並嘗試使用==來設置變量。即KERNEL ==「fb0」...然後在syslog中沒有關於它的錯誤。但是「udevadm info -a -n/dev/fb0」的結果與之前相同。 – tknv 2010-10-20 15:33:34

+0

是的。 '=='必須與'KERNEL'一起使用。將文件命名爲「81-udev-fb.rules」或「91-udev-fb.rules」。 50人很低,可能會輾轉反側。 – 2010-10-20 16:19:32

+0

謝謝迴應。我創建了91-udev-fb.rules, #1-NAME = - KERNEL ==「fb0」,ATTR {name} ==「VESA VGA」,ACTION ==「add」,NAME =「fd1」 KERNEL ==「fb1」,ATTR {name} ==「IO DATA USB-RG」,ACTION ==「add」,NAME =「fd0」 - 僅爲/ dev/fb0,不會出現/ dev/fb1。KERNEL ==「fb0」,ATTR {name} ==「VESA VGA」,ACTION ==「add」,NAME ==「fd1」KERNEL ==「fb1」,ATTR { name} ==「IO DATA USB-RG」,ACTION ==「add」,NAME ==「fd0」 /dev/fb0和/ dev/fb1出現。但/ dev/fb0是VESA VGA。 --- 兩者都沒有工作。 – tknv 2010-10-21 07:57:21