안경잡이개발자

File Storage Gadget

기타2021. 2. 22. 22:18
728x90
반응형

  FSGFile Storage Gadget의 약자이다. 리눅스(Linux) 기반 장치에서 Mass Storage Gadget(MSG) 클래스의 기능을 제공하기 위해 FSG를 사용할 수 있다.  자세한 내용은 커널 공식 문서를 참고할 수 있다. 기본적으로 FSG는 USB 스펙에서 bulk-in과 bulk-out 엔드포인트를 필요로 하고, 별도의 블록 장치(block device)를 만든 뒤에 이를 특정한 LUN에 적용하여 사용할 수 있다. 이때 LUN(Logical Unit Number)이란 각각의 논리 장치(저장 장치)를 식별하기 위해 사용하는 번호를 의미한다.

 

  기본적으로 Mass Storage Gadget의 구현은 커널의 drivers/usb/gadget/function/f_mass_storage.c에서 확인할 수 있다. (참고: elixir.bootlin.com/linux/latest/source/drivers/usb/gadget/function/f_mass_storage.c) 참고로 여기에서 커널 모듈을 불러오기 위한 파라미터는 fsg_config_from_params 함수 내부에서 확인할 수 있다.

 

  하나의 FSG는 여러 개의 LUN을 가질 수 있으며, 하나의 LUN은 다음과 같이 정의된다.

 

struct fsg_lun_config {
	const char *filename;
	char ro;
	char removable;
	char cdrom;
	char nofua;
	char inquiry_string[INQUIRY_STRING_LEN];
};
728x90
반응형