마운트: 특수 장치 sda/sda1이 존재하지 않습니다

마운트: 특수 장치 sda/sda1이 존재하지 않습니다

Linux Yocto(arm_v7)를 기반으로 IoT Edge 디바이스를 개발 중이며 USB 드라이브를 설치해야 합니다.

리눅스 버전:

root@7426a4ffc838:/# uname -a
Linux 7426a4ffc838 4.9.80-rt62 #1 SMP PREEMPT RT Thu May 14 17:11:08 UTC 2020 armv7l GNU/Linux

장치에는 셸(웹 페이지만 있음)이 없기 때문에 도커 컨테이너를 사용하여 USB 드라이브를 마운트해 보았습니다.

내 컨테이너는 하드웨어에 액세스하기 위해 권한 모드에서 실행 중입니다.

"lsblk" 명령을 실행하면 다음과 같은 결과가 나타납니다.

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 363.6M  1 loop 
sda           8:0    1  14.8G  0 disk 
`-sda1        8:1    1  14.8G  0 part 
mmcblk0     179:0    0   7.4G  0 disk 
|-mmcblk0p1 179:1       61.1M  0 part 
|-mmcblk0p2 179:2    0  61.1M  0 part 
`-mmcblk0p3 179:3    0   7.3G  0 part 

내 USB 드라이브 이름은 "sda"입니다.

따라서 명령을 사용하여 USB 드라이브를 마운트하려고 하면 mount /sda/sda1 /mnt/usb/다음 오류가 발생합니다.

mount: special device /sda/sda1 does not exist

이 드라이브를 마운트할 수 있는 방법이 있나요?

도움을 주셔서 미리 감사드립니다.

BR, 페데리코

답변1

lsblk장치가 검색(통과 /sys/) 될 수 있더라도 mount마운트하려면 유효한 블록 장치가 여전히 필요합니다. 내장된 장치가 유사한 도구를 실행하지 않거나 udev컨테이너 환경이 /dev/호스트와 같이 완전히 채워진 디렉터리를 제공하지 않기 때문에 생성되지 않은 경우에도 수동으로 생성할 수 있습니다.

주요/부 블록을 확인하는 데 사용해야 하는 출력은 lsblk -o NAME,MAJ:MIN관련 부분이 다음과 같다고 가정해 보겠습니다.

# lsblk -o NAME,MAJ:MIN
NAME                MAJ:MIN
[...]
sda                   8:0  
`-sda1                8:1  
[...]

그런 다음 이전 정보를 사용하여 필요한 블록 장치를 생성할 수 있습니다.

mknod /dev/sda1 b 8 1

이제 다음을 설치해야 합니다.

mount /dev/sda1 /mnt

내장되어 있기 때문에 해당 파티션의 파일 시스템용 드라이버가 커널에 내장되어 있지 않고 어떤 이유로 자동으로 로드되지 않으면 추가 문제가 발생할 수 있습니다. 따라서 첫 번째 시도가 작동하지 않으면 모듈을 명시적으로 로드하거나(예: ) modprobe vfat내장 모듈을 로드하십시오(커널을 다시 컴파일...). 일부 파일 시스템은 사용하기가 쉽지 않습니다(예: exfatLinux 4.9에서는 직접적인 커널 지원이 없으며 FUSE가 필요함).

답변2

해당 디렉토리가 없습니다 /sda.

당신이 정말로 하고 싶은 것은 마운트하는 것입니다 /dev/sda1:

mount /dev/sda1 /mnt/usb/

관련 정보