블록 디바이스 파일을 통한 특정 디렉토리 액세스
글쓴이: khsharpy / 작성시간: 목, 2007/08/30 - 2:10오후
특정 디렉토리를 어떤 블록 디바이스 파일을 통해 액세스하도록 하게 하는 방법이 있을지 궁금합니다.
왜 이것을 찾냐면, g_file_storage라는 usb gadget 드라이버를 사용하는데,
파라미터로 backing file 이나 블록 디바이스 파일만 줄 수 있다고 해서입니다.
g_file_storage는 usb mass storage로 사용할 수 있게 해주는 겁니다.
# insmod g_file_storage file="backing file"
or
# insmod g_file_storage file="device file"
제가 하고 싶은 것은 특정 디렉토리의 내용을 usb mass storage로써 액세스 되도록 하려는 것입니다.
Forums:
http://www.linux-usb.org/gadg
http://www.linux-usb.org/gadget/file_storage.html
이런걸 찾으시는 듯 싶은데요? ^^ pmp 개발하시는 모양;;
########### 기운이 솟아나는 티거 호랑이 노래 ###########
폴짝폴짝 폴짝폴짝 비켜나세요. 티거가 나가거든요 폴짝폴짝폴짝~
저기가는 저 푸우 조심하세요~ 바지벗고 다니다가 어흥!!
저 문서 등을 보다가 생긴 궁금해져서 올린 거거든요 ^^;;
안녕하세요~~
저 문서를 보면 파라미터로 넘겨주는게 storage block device file 혹은 backing file 이잖아요?
제가 궁금한 건 제 storage 중에서 특정 디렉토리만(보여주고 싶은 내용만) usb host에게 usb mass storage 로써 나타나게 하고 싶다면 어떻게 해야 할까입니다.
특정 디렉토리를 어떤 block device file과 연결지을 수 있다면,(뭐라고 표현해야 할지 모르겠네요)
그 block device file을 g_file_storage에 넘겨서 가능하게 될 것 같아서요...
뭐 다른 방법이 있다면 또 좋겠네요...
안녕하세요~~~
그러시면
아마 하고 싶으신게 이를테면 pmp를 구성하는 소형 disk 장치는 하나를 장착을 하는데, 실제로 사용자가 pmp를 usb storage를 마운트할때 pmp의 OS부는 못보게 하고 싶고, 그냥 usb storage 로 구성된 별도의 공간만 보게 하고 싶으신 뭐 그런거잖아요? ^^ (뭐 꼭 같진 않더라도 그 비슷하겠죠?)
usb storage 구성하실때 두가지 방법이 있을텐데..(Linux 버전의 pmp라고 보면..)
1. 파티셔닝(block device)
그냥 애초에 시스템 구성하실 때 파티셔닝을 여러개로 한 다음에 다른 파티셔닝 부분에는 일반적인 OS작업 및 기타 등등등을 하시고, 외부 shared를 위하여 남겨둔 공간을 FSG로 외부 shared 하시면 되죠.
2. backing file 생성시
이것 역시 간단하게 보자면, 그냥 backing file 생성해서 외부로 shared 하시면 그 부분만 shared가 되는거죠.
결국 지금 생각하시는것이 그 특정 디렉토리가 일반적인 OS공간의 파티셔닝 부분과 같은 곳에 있는 "일반 디렉토리" 를 대상으로 생각하시는 것 같은데, 그렇게 하시면 곤란하구요. ^^ 아니면 그냥 지금 가지고 있는 스토리지 공간 전체를 던져줄 수 밖에 없다고 생각하시는 것 같은데..^^
일단 backing file로 생성해서 loop device로 마운트해서 사용을 하시던지, 아니면 별도로 파티셔닝 하셔서 해당 파티션 공간을 마운트하셔서 사용하시던지 어떤식으로든 그 디렉토리 공간은 일반적인 공간과 분리하셔서 사용하셔야 됩니다. FSG 자체가 별도의 block device나 loop device file을 대상으로 외부에 virtual device로써 제공하는것이지 무슨 cifs나 nfs 같이 아무 디렉토리나 export한다 라는 개념으로 접근하는것이 아니니까요 ^^ 항상 device 개념으로 접근해야 한다는 것 잊지 마세요.
########### 기운이 솟아나는 티거 호랑이 노래 ###########
폴짝폴짝 폴짝폴짝 비켜나세요. 티거가 나가거든요 폴짝폴짝폴짝~
저기가는 저 푸우 조심하세요~ 바지벗고 다니다가 어흥!!
좋은 방법이네요...
안녕하세요~~~
파티셔닝 방법 괜찮네요.
하지만 그렇게 할 수 있는 상황은 아니고요...
그래서 혹시 어느 디렉토리를 디바이스 파일에 연결할 수 있는 방법이 있는지 질문 올렸습니다.
예를 들어 loop device file을 이미지 파일(backing_file)로 연결시켜 놓으면 언제라도 그 디바이스 파일을 마운트해서 사용하는 것 비슷하게
# losetup /dev/loop0 "backing file"
# mount /dev/loop0 /mnt/loop
무언가의 방법으로
# 어느명령 /dev/dir0 "file directory"
이런 식으로 연결(용어가 적당할런지 모르겠네요)시켜 놓아 저 /dev/dir0을 사용할 수 있게끔... 그런 방법이 없을까 하는거죠.
그러면
# insmod g_file_storage file=/dev/dir0
가 가능해져서 "file directory"만 매스 스토리지로 보이도록 할 수 있을 것 같아서 입니다.
안녕하세요~~~
mass-storage class 는
mass-storage class 는 호스트의 파일 시스템에 의존적입니다.
호스트의 파일시스템이 FAT 이라면, 호스트는 FAT 의 스펙에 따라 특정한 블럭에서 데이타를 읽거나 쓰기를 시도하고,
USB 는 단지 "통로" 만을 제공할 뿐입니다.
mass-storage class 만큼 자유롭진 않지만, still-image class 가 있습니다.
(XP 이상에서는 still-image class driver 가 포함되어 있는데, 그 밑은 잘 모르겠습니다.)
khsharpy 님이 원하시는 대로 slave 쪽의 임의의 디렉토리 내용이 host 에 보여집니다.
still-image class 는 단점이 있습니다.
1. closed spec 이기 때문에 공개된 소스가 없습니다.
(gphoto2/libptp 를 보며 드라이버와 데몬을 작성해야 합니다.)
2. storage 가 아닙니다.
호스트의 파일 탐색기에서 slave의 avi 파일을 더블클릭하면, 그 avi 파일이 직접 접근되는 게 아니라 "My Documents" 에 먼저 복사되고, 이 복사된 파일이 접근됩니다.
3. 호스트의 파일 탐색기에 나타나는 드라이브가 카메라 아이콘입니다. (-.-;;)
... 이런 단점들 때문인지 몰라도 still-image class를 사용하는 디지털카메라가 흔지 않습니다. 프린터에 바로 물려서 사진 프린팅이 가능한 카메라들은 대부분 이것을 지원합니다.
OTL
댓글 달기