mkfs.fat Device or resource busy 에러 해결법

 리눅스에서 SD 카드를 포맷할 때 아래와 같이 "Device or resource busy"에러를 출력하며 포맷이 되지 않는 경우가 있다.


mkfs.fat: unable to open /dev/mmcblk0p1: Device or resource busy


해결법을 찾아보았다.


이 문제의 원인은 

1. 파티션 dev path 가 맞지 않거나, 

2. umount가 완전히 이루어 지지 않았거나, 

3. mbr파티션에 문제가 있어 발생한다고 한다. 


파티션에 문제가 있는 경우 fdisk를 사용하면 문제를 해결할 수 있다.


umount에 문제가 있는 경우,

umount할 때 -l 옵션이 사용되는 경우 umount 명령이 끝나도 커널 내부에서 리소스가 계속 사용될 가능성이 있다고 한다. 

# umount -l /mnt/mmc

umount2("/mnt/mmc",MNT_DETACH);


이런 경우 일정 시간 후 다시 시도하면 에러 없이 포맷이 되는 경우가 있다.

또, umount 가 되지 않을 때 "lsof" , "fuser" 명령어를 사용하여 어떤 프로세스가 mmc를 사용하고 있는지도 확인 가능하다.

* lsof에서 사용 내역이 없다고 나와도, fuser에서 나올수 있다. 

lsof, fuser 명령에서도 mmc를 사용하는 프로세스가 없는 경우에도 "Device or resource busy"에러가 발생할 경우, umount에 -lf 옵션을 두어 강제로 언마운트 후 SD 카드를 포맷하면 "Device or resource busy"에러가 나타나지 않을 확률이 높아진다.

# umount -lf /mnt/mmc

umount2("/mnt/mmc",MNT_DETACH | MNT_FORCE);


* fat32에서는 "-f","MNT_FORCE"를 지원하지 않는다. (https://man7.org/linux/man-pages/man2/umount.2.html)


이렇게 해도 "Device or resource busy"에러가 발생할 경우 mkfs.fat에 --mbr=a 옵션을 추가해서 시도해 볼 수도 있다.  하지만 이런 경우 파티션에 문제가 있을 확률이 많으므로 fdisk를 사용하여 파티션을 새로 만든 후 포맷하는 것이 좋을 것 같다.




댓글

이 블로그의 인기 게시물

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

딥러닝을 사용한 로또 번호 예측 실험

간단한 cfar 알고리즘에 대해

UWB 레이더를 사용한 호흡수 측정 원리

windows 10에서 스마트폰 미러링으로 화면 녹화