Embedded Linux에서 USB AutoMount 하기 위하여

kleeck의 이미지


안녕하세요

현재 임베디드 보드에서 usb를 꼽았을 경우 자동으로 마운트하여 사용을 해야 하는데요..

hotplug를 통해서 usb장치가 인식은 됩니다. 그 다음이 mount를 해야 하는데 하지를 못하네요

그렇다고 소스레벨에서 강제로 /dev/sdb 뭐 이런식으로 지정해 줄수는 없는 노릇이구요 왜냐면 usb 마운트를 한 상태에서

강제로 뺏다가 다시 꼽았을 경우에는 /dev/sdc로 바뀌어 버리기 때문입니다.

아.. 이거 진짜 어떻게 해야 하나요? 인터넷에 나와 있는 방법대로 다 해보았습니다만 않됩니다.

여전히 hotplug만 인식하고..

답답한 마음에 혹시 이런일 당해보신 분~

해결책좀 알려주세요

dorado2의 이미지

인터넷에 있는 어떤 방법을 사용하셨나요?

udev rule 작성해주시고, USB disk 인식되면 자동 mount하는 스크립트 작성하셔서 rule 안에서 호출되도록하면 됩니다.
반대로 unplug되면 unmount하는 스크립트도 같이 작성하셔서 쓰시면 되구요.

저는 그렇게 잘 사용하고 있습니다.

kleeck의 이미지


이벤트 시그널이 어떻게 감지를 하여 해야 할찌 모르겠습니다.

적어도 USB를 꼽으면 ADD라는 시그널이 있다면은 이것을 감지하여 마운트를 시켜주고

뺐을때는 REMOVE라는 시그널이 들어와 언마운트를 시켜주면 될텐데

이 시그널이 어떤 종류가 들어오는지를 알지를 못하겠습니다. ㅜ.ㅜ

madman93의 이미지

먼저 udev rule 에 대해서 공부를 하시면 될것 같은데요 ^.^

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

kasi의 이미지

udevd 소스를 보시거나, 로그 찍어서 돌려보시면 이게 어떻게 동작하는지 알 수 있을 겁니다.

저는 이걸 소스레벨에서 컨트롤해서 udev rule을 쓰지는 않았지만 udev rule이 좀 더 좋은 방법 처럼보이는 군요.

philnet의 이미지

/sys/block 에 있는 정보를 이용해서 (USB) 장치의 변화를 추적하는 기능을 script 또는 application에서 작성하실 수 있습니다.

# ls -d /sys/block/sd*
/sys/block/sda /sys/block/sdb

# ls -l /sys/block/sda
...
lrwxrwxrwx 1 root root 0 Jan 18 00:00 device -> ../../devices/pci0000:01/0000:01:00.0/host0/target0:0:0/0:0:0:0
...

# ls -l /sys/block/sdb
...
lrwxrwxrwx 1 root root 0 Jan 18 02:28 device -> ../../devices/platform/brcm-ehci-1.1/usb2/2-1/2-1:1.0/host2/target2:0:0/2:0:0:0
...

제 경우는 주기적으로 위의 정보를 parsing 해서, 변화가 생기면 이를 application에 알려 주는 script를 하나 작성했고요, application은 IPC를 통해 이 정보를 원하는 다른 application들에게 정보를 전파하고, mount/unmount 기능을 담당하는 application이 최종적으로 정해진 규칙에 의해 mount/unmount 하는 것으로 구현하였습니다.

(덧붙임)
저도 이 thread를 통해, udev rule을 알게 되었는데, 임베디드 보드에 포함시킬 수 있다면 이걸 사용하는 게 여러 모로 좋을 것 같습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.