haldaemon & udevd
HAL은 Hardware Abstraction layer의 약자로 Kernel 2.6.X기반의 배포판에서는Udev, hotplug , D-bus , autofs(automounting) 과 함께 각종 디바이스 장치를 인식하는데 있어 중요한 역활을 합니다.
HAL은 아래의 주소에서 좀더 상세한설명을 참고하실수 있습니다. http://www.freedesktop.org/Software/hal
HAL은 시스템에서 하드웨어에 대해 몇몇 소스들로부터 정보를 수집하고 관리하기 위한 데몬입니다. 이것은 D-BUS를 통하여 탄력적인 디바이스 리스트를제공합니다.
[root@www ~]# pstree -p | grep hald ├─hald(1893)───hald-addon-acpi(1898)
[root@www ~]# pstree -p | grep bus ├─dbus-daemon(1883)
사실 HAL Daemon은 2.6.13부터 devfs(Device Filesystem)이 여러가지 문제로인해 제거되면서
그대안으로 Udev(Userspace Device Filesystem)라는 것이 나왔는데, 이 Udev를 견고하게 지원하기
위한 방법으로 HAL이 탄생하고 쓰이고 있다고할수 있습니다.
이왕 설명한거 좀더 구체적으로 설명해보도록 하겠습니다.
이동식 USB 저장장치를 인식했을ㄸㅒ의 동작구조를 설명해보도록 하겠습니다.
USB 2.0 저장장치를 플러그인하면 2.6 Kernel의 Hotplug Device는 이 장치를 인식하여
/sbin/udevsend를 실행합니다. 이 udev는 Serializing를 위해 아래의 /sbin/udevd 을 호출하게 됩니다.
[root@www ~]# pstree -p | grep udev ├─udevd(773)
이것은 이제 HAL device name helper의 도움을 받아서 local socket을 통하여 hald(HAL daemon)에게 메세지를 보냅니다. 참고로, hald는 init script에 의에 start되어 아래처럼 항시 실행됩니다.이 hald는 /etc/hal/device.d/을 통하여 /etc/fstab의 엔트리들을 갱신합니다. 이제 마지막으로 automount daemon을 통하여 /media 디렉토리에 오토마운팅이됩니다.
[root@linux ~]# cat /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
#LABEL=/ / ext3 defaults 1 1
/dev/hdb1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
........................................ 중간생략 .......................................................
/dev/sda1 /media/USB_512M vfat <-------- USB를 꼽은후 hald에 의해 자동으로 생성된 라인입니다.
pamconsole,exec,noauto,iocharset=utf8,noatime,sync,managed 0 0
아래는 automount 데몬이 실행되고 있는지 확인하여 본것입니다.
[root@www ~]# pstree -p | grep auto ├─automount(1632) ├─automount(1662)
여기서 한가지 짚고 넘어 갈것은 hald 데몬만으로 /etc/fstab에 plugin된 usb 이동식 저장장치의
엔트리가 추가되고 마운팅되어 /media/USB_512M 를 사용할수 있는데 그럼 automount daemon은
무엇인가? 이 automount 데몬은 좀더 다양한 옵션( sambfs을 마운팅 한다라던가? USB 이동장치가
60초동안 사용안되면 자동으로 언플러그 한다라던가?) 을 지원하기 때문에 hald daemon + automount가
같이 쓰이게 되었었습니다.
[root@www etc]# /etc/init.d/autofs status
Configured Mount Points:
------------------------
/usr/sbin/automount --timeout=60 /misc file /etc/auto.misc
/usr/sbin/automount --timeout=60 /net program /etc/auto.net
Active Mount Points:
--------------------
/usr/sbin/automount --timeout=60 /misc file /etc/auto.misc
/usr/sbin/automount --timeout=60 /net program /etc/auto.net
이렇게 최종적으로 오토마운팅이 되면 사용자는 #> df 를 통하여 마운트 된것을확인 하실수 있습니다. 그리고, 마운트된 /media/USB_512M 을 사용하실수 있게됩니다.
결론적으로 님이 이동식 저장장치를 사용하시고자 한다면 Failed가 된
HAL daemon(hald)과 D-bus daemon(dbus-daemon)을 정상적으로 설치하셔야 합니다. 참고로, FC3의 배포판에 장착된 udev은 심각한 버그가 있다고 레드헷(페도라측)에서공지한 바 있으니 최근의 udev으로 업데이트 함으로써 본 문제가 해결되실수 있으니이 부분도 참고하여 해결하시기 바랍니다.
댓글 없음:
댓글 쓰기