· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linux Hotplug

리눅스에서 Hotplug가 어떤 방식으로 동작하고 어떠한 장치들이 지원되는지 설명한다.

LinuxHotplug 를 사용하기 위한 준비


  • 리눅스 커널 2.4 이상

  • 커널 설정에서 General setup -> Support for hot-pluggable devices 옵션이 켜져있어야 한다.
  • hotplug 스크립트

  • [http]Linux Hotplugging에서 받아서 설치한다.
  • hotplug가 가능한 하드웨어

  • usb, ieee1394, pci, pcmcia(2.6.13이상) hotplug장치 등등.

LinuxHotplug 동작방식


  • hotplug를 지원하는 장치가 연결된다.
  • 연결되면 장치의 클래스 드라이버에서 /proc/sys/kernel/hotplug에 등록된 프로그램을 호출한다. (주로 /sbin/hotplug )

  • hotplug의 인자로 장치클래스의 이름이 붙는다. (ex: usb, ieee1394 ...)
  • /sbin/hotplug에서는 /etc/hotplug.d/장치클래스/*.hotplug 와 /etc/hotplug.d/default/*.hotplug 스크립트를 수행한다.

  • 각각의 스크립트를 hotplug agent라고 부른다.
  • /etc/hotplug.d/default/default.hotplug는 linux-hotplug.sf.net에서 제공하는 것으로 해당 장치가 필요로 하는 커널 모듈을 적재하는 역할을 한다.
  • /etc/hotplug.d/default/udev.hotplug는 리눅스 2.6에서 동작하는 것으로 기존의 devfs를 교체하고 유연한 장치이름을 제공한다.
  • /etc/hotplug.d/default/hal.hotplug는 HAL Daemon에 해당장치가 연결되었다는 것을 dbus를 통해 알려준다.
  • 각 스크립트에서 환경변수를 참조해서 장치에 대한 작업을 수행한다.
  • 환경변수는 다음과 같다.

Linux 2.4


  • USB
    ACTION=%s [add or remove] 
    DEVPATH=%s
    PRODUCT=%x/%x/%x 
    INTERFACE=%d/%d/%d [ for interface 0, if TYPE=0/*/* ] 
    TYPE=%d/%d/%d 
    


  • IEEE1394
    ACTION=%s [add or remove] 
    VENDOR_ID=%x [24 bit vendor id]
    GUID=%x [64 bit globally unique id]
    SPEFICIER_ID=%x [24 bit id of owner of specification]
    VERSION=%d.%d [version of specification]
    


  • PCI
    ACTION=%s [add or remove] 
    PCI_CLASS=%06X 
    PCI_ID=%04X:%04X 
    PCI_SLOT_NAME=%s 
    PCI_SUBSYS_ID=%04X:%04X
    


Linux 2.6


  • 리눅스 커널 2.6 에서는 장치의 클래스드라이버가 아닌 kobject수준에서 hotplug스크립트를 호출한다.
  • 더불어 각 장치에 대해 대응되는 sysfs의 경로가 함께 환경변수로 넘어온다.
  • SCSI, SCSI_HOST, SCSI_DEVICE, BLOCK, INPUT, NET

ACTION=%s [add or remove]
DEVPATH=/%s/%s...

LinuxHotplug의 실제 활용예


gphoto2

  • gphoto2는 여러 Unix시스템에서 쓸 수 있는 디지털카메라 관리 프로그램이다.
  • gphoto2를 설치하면 /etc/hotplug/usb/usbcam 스크립트가 등록된다.
  • usbcam스크립트는 gphoto2에서 지원하는 카메라가 연결되었을 때 현재 console을 쓰는 사용자에게 디지털카메라에 접근할 수 있는 허가권을 준다.

ID
Password
Join
Sin has many tools, but a lie is the handle which fits them all.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-09-06 15:49:31
Processing time 0.0056 sec