- Hot plug (Hot swapping)
http://linux-hotplug.sourceforge.net/?selected=overview
https://en.wikipedia.org/wiki/Hot_swapping
https://linux.die.net/man/8/hotplug
https://wiki.linuxfoundation.org/networking/generic_netlink_howto
http://decdream.tistory.com/406
http://iamhjoo.tistory.com/17
HW BUS 구조라고 생각하면 되지만, SW로 구현을 하려면 dbus-daemon 기반의 Server를 이용하여 각 Process는 Client가 되어 통신
상위그림은 wiki에서 가져왔으며, wiki 참조
https://en.wikipedia.org/wiki/D-Bus
https://dbus.freedesktop.org/doc/dbus-tutorial.html
https://blogs.gnome.org/rodrigo/2012/03/20/netlink-based-d-bus/
udev의 개념을 이곳에서도 이용한다고 보면되겠으며, Linux의 Network 관련설정
아래의 설정은 SysVinit의 Shell script를 통해 설정되어짐
Network Manager를 사용하다면 아래와 같이설정
세부내용은 wiki 참고
https://en.wikipedia.org/wiki/NetworkManager
https://wiki.debian.org/udev
libudev를 이용하여 Netlink를 통하여, Network Manager를 걸쳐 D-BUS와 연결동작
Kernel --> udev --> Network Manager <-->D-Bus <-->Evolution-->-->
https://en.wikipedia.org/wiki/Udev
https://en.wikipedia.org/wiki/HAL_(software)
1.2 udev와 sysfs의 기본동작방식
이제 Linux에서 사용되어지는 udev와 sysfs의 기본 동작 방법에 대해 좀 알아보자
물론 Linux version 마다 동작 방식이 다를 수 있으며, Filesystem 구조에 따라 다를 수 있다
또한 Android Version의 Linux 경우 동작방식이 약간 다르지만 기본개념은 거의 동일한 것 같다.
상위 그림은 (안드로이드의 모든것 분석 포팅) 책을 보며 그렸으며, 구조를 간단히 보면 아래와 같다
udevd으로 가는 interface를 netlink interface이다
2. udev 의 기본구성
systemd는 init 부분의 일종이며, 현재 init 부분이 점점 systemd로 변경되어 가고 있다. 기존의 init를 사용한다고 하면 init와 같이 사용하는 경우가 많다
앞으로 init가 많이 변경 될 것이며, 상위 Network Manger도 동일하다.
udev의 rules을 다음 곳에서 정의한다고 한다.
아래 링크를 반드시 참조
http://reactivated.net/writing_udev_rules.html
https://wiki.gentoo.org/wiki/Udev/ko
http://man7.org/linux/man-pages/man8/systemd-udevd.8.html
https://coreos.com/os/docs/latest/using-systemd-and-udev-rules.html
DM36x의 systemd Makefile
http://presbrey.scripts.mit.edu/doc/libudev/
https://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/libudev-udev-device.html
https://www.freedesktop.org/software/systemd/man/libudev.html#
https://en.wikipedia.org/wiki/Hot_swapping
https://linux.die.net/man/8/hotplug
- Cold plug
- Netlink 구조 및 Programming 예제
https://wiki.linuxfoundation.org/networking/generic_netlink_howto
http://decdream.tistory.com/406
http://iamhjoo.tistory.com/17
- D-Bus (Desktop Bus)
HW BUS 구조라고 생각하면 되지만, SW로 구현을 하려면 dbus-daemon 기반의 Server를 이용하여 각 Process는 Client가 되어 통신
상위그림은 wiki에서 가져왔으며, wiki 참조
https://en.wikipedia.org/wiki/D-Bus
https://dbus.freedesktop.org/doc/dbus-tutorial.html
https://blogs.gnome.org/rodrigo/2012/03/20/netlink-based-d-bus/
- NetworkManger
udev의 개념을 이곳에서도 이용한다고 보면되겠으며, Linux의 Network 관련설정
아래의 설정은 SysVinit의 Shell script를 통해 설정되어짐
/etc/network/interfaces /etc/resolv.conf
Network Manager를 사용하다면 아래와 같이설정
/etc/NetworkManager/NetworkManager.conf
세부내용은 wiki 참고
https://en.wikipedia.org/wiki/NetworkManager
https://wiki.debian.org/udev
libudev를 이용하여 Netlink를 통하여, Network Manager를 걸쳐 D-BUS와 연결동작
Kernel --> udev --> Network Manager <-->D-Bus <-->Evolution-->-->
https://en.wikipedia.org/wiki/Udev
https://en.wikipedia.org/wiki/HAL_(software)
1.2 udev와 sysfs의 기본동작방식
이제 Linux에서 사용되어지는 udev와 sysfs의 기본 동작 방법에 대해 좀 알아보자
물론 Linux version 마다 동작 방식이 다를 수 있으며, Filesystem 구조에 따라 다를 수 있다
또한 Android Version의 Linux 경우 동작방식이 약간 다르지만 기본개념은 거의 동일한 것 같다.
상위 그림은 (안드로이드의 모든것 분석 포팅) 책을 보며 그렸으며, 구조를 간단히 보면 아래와 같다
- Interrupt 가 발생하며 이를 처리한다.
- kernel의 sysfs update한다
- user space의 /sys 의 sysfs를 반영한다.
- Kernel에서는 uevent 를 udevd로 보내어 준다.
- udevd는 /sys 의 sysfs를 반영한다
- /dev 에 관련 device update하여 추가한다
udevd으로 가는 interface를 netlink interface이다
2. udev 의 기본구성
- libudev : device information을 접근을 허용해주는 library로 현재는 systemd 에서 이것을 사용하고 있다.
- udevd: user space의 damon이며 /dev를 관리를 하며, uevent를 커널에서 받는다.
systemd는 init 부분의 일종이며, 현재 init 부분이 점점 systemd로 변경되어 가고 있다. 기존의 init를 사용한다고 하면 init와 같이 사용하는 경우가 많다
앞으로 init가 많이 변경 될 것이며, 상위 Network Manger도 동일하다.
udev의 rules을 다음 곳에서 정의한다고 한다.
$ ls /lib/udev/rules.d // 기본설치 lib 있는 만큼 가급적 일반사용자는 수정 하지말지 말라고함 $ ls /etc/udev/rules.d // lib/udev/rule.d 부분의 link 와 유저가 추가 혹은 수정한 부분 $ ls /run/udev/rules.d // 거의 미사용
- udev Rule 및 분석방법
http://reactivated.net/writing_udev_rules.html
https://wiki.gentoo.org/wiki/Udev/ko
- udevd 사용법
- systemd-udevd 관련 Manual
http://man7.org/linux/man-pages/man8/systemd-udevd.8.html
https://coreos.com/os/docs/latest/using-systemd-and-udev-rules.html
DM36x의 systemd Makefile
USB Serial에서 Custom PID 사용시
https://unix.stackexchange.com/questions/67936/attaching-usb-serial-device-with-custom-pid-to-ttyusb0-on-embedded
2.1 udev tool 과 libudev
https://linux.die.net/man/8/udevinfo
https://wiki.gentoo.org/wiki/Udev/ko
https://wiki.archlinux.org/index.php/udev
https://unix.stackexchange.com/questions/67936/attaching-usb-serial-device-with-custom-pid-to-ttyusb0-on-embedded
2.1 udev tool 과 libudev
- udevadm : 진단과 관리용으로 만들어진 Tool
- udevinfo: udevadm으로 통합되어 관리되어 지는 Tool
https://linux.die.net/man/8/udevinfo
https://wiki.gentoo.org/wiki/Udev/ko
https://wiki.archlinux.org/index.php/udev
- libudev Reference Manual
http://presbrey.scripts.mit.edu/doc/libudev/
https://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/libudev-udev-device.html
https://www.freedesktop.org/software/systemd/man/libudev.html#
2. Android System의 ueventd 동작
Android에서의 udev는 일반 Linux와의 동작이 조금 다르지만 기본개념은 유사하다고 보면될 것 같다
하지만, Android Linux Kernel은 ueventd 이 존재하며 이에 대한 정확한 이해가 필요하다.
http://daem0n.tistory.com/entry/Android-Kernel-3-Ueventdc
http://blog.secmem.org/88
안드로이드의 모든것의 분석과 포팅 참조
Android에서의 udev는 일반 Linux와의 동작이 조금 다르지만 기본개념은 유사하다고 보면될 것 같다
하지만, Android Linux Kernel은 ueventd 이 존재하며 이에 대한 정확한 이해가 필요하다.
- Android ueventd 동작
http://daem0n.tistory.com/entry/Android-Kernel-3-Ueventdc
http://blog.secmem.org/88
안드로이드의 모든것의 분석과 포팅 참조