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
내장 모듈을 로드하십시오(커널을 다시 컴파일...). 일부 파일 시스템은 사용하기가 쉽지 않습니다(예: exfat
Linux 4.9에서는 직접적인 커널 지원이 없으며 FUSE가 필요함).
답변2
해당 디렉토리가 없습니다 /sda
.
당신이 정말로 하고 싶은 것은 마운트하는 것입니다 /dev/sda1
:
mount /dev/sda1 /mnt/usb/