잘못된 인수로 mmcblk0p1을 마운트하지 못했습니다.


9

sd 카드에서 Linux를 실행하고 sd 카드를 마운트하려고하면 문제가 없습니다. 그러나 플래시 메모리에서 Linux를 실행하면 SD 카드를 마운트 할 수 없습니다.

# mount /dev/mmcblk0p1 /mnt/ 
mount: mounting /dev/mmcblk0p1 on /mnt/ failed: Invalid argument

이 오류의 기본 원인은 무엇입니까?

추가 정보

root@Xilinx-ZC702-14_7:/# mount -t /dev/mmcblk0p1 /mnt
mount: can't find /mnt in /etc/fstab 

root@Xilinx-ZC702-14_7:/var/volatile/log# ls
wtmp

root@Xilinx-ZC702-14_7:/var/volatile/log# dmesg
dmesg: klogctl: Function not implemented

1
항목이 사용되지 -t ...않도록 전체 명령 ( )을 시도하십시오 fstab.
Hauke ​​Laging

1
유용한 것이 /var/log/messages있습니까? 어때요 dmesg | tail?
Flup

@Flup 위의 질문을 업데이트했습니다
gpuguy

4
mount -t /dev/mmcblk0p1 /mnt완전한 명령이 아닙니다. filesytem 유형을 알고 있으면 -t 인수 뒤에 지정 mount -t vfat /dev/mmcblk0p1 /mnt하거나 (예 :) -t를 완전히 생략해야합니다.
James Hebden

위에서 볼 수 있듯이 생략이 작동하지 않았습니다
gpuguy

답변:


10

마찬가지로 금발 미녀 댓글을 달았 , mount -t파일 시스템 유형이 후 올 것으로 예상 -t, 그래서 그것은 작동하지 않습니다. 그렇지 않으면 파일 시스템 유형을 지정 해야하는 것처럼 들립니다. 파일 시스템 유형을 모르는 경우이 답변 에서 찾을 수있는 방법 목록 있습니다. 은 IF file명령을 사용할 수 있습니다, 이것은 아마도 가장 좋은 방법입니다. 루트로서 당신은 할 것입니다 :

file -s /dev/mmcblk0p1

파일 시스템 유형이에 나열되어 /proc/filesystems있지 않으면 드라이버가 커널로 컴파일되지 않으므로 외부 모듈로 사용 가능해야합니다. 올바른 유형이되면 다음을 시도해보십시오.

mount -t correct_type /dev/mmcblk0p1 /mnt

마지막으로 /mnt디렉토리가 존재 하는지 확인하십시오 ! 로 작성하지 않으면 mkdir /mnt.


마운트에는 sudo가 필요합니까?
Ferroao

@Ferroao, 예 마운트에는 루트 권한이 필요합니다.
Graeme

수정 해야하는 경우 해당 SD에 파일을 작성하고 sudo가 필요합니까?
Ferroao

@Ferroao는 마운트하려는 파일 시스템에 따라 다릅니다. 각 파일 / 디렉토리의 Linux 파일 시스템 권한 / 소유자 / 그룹에 대해 누가 읽고 쓸 수 있는지 결정하십시오.
Graeme

3

기본 이유 : (업데이트 됨)

1) 플래시로 부팅 할 때 시스템이 (적절하게?) 초기화되지 않거나 SD를 인식하지 못합니다. /dev/mmcblk0플래시로 부팅 한 후 장치 가 있습니까? 무엇합니까 fdisk -l /dev/mmcblk0말은?

2) / dev / mmcblk0p1에 파일 시스템이 없으므로 파일 시스템을 먼저 만들어야합니다 ( mkfs ...). 확인file -s /dev/mmcblk0p1

3) / dev / mmcblk0p1의 파일 시스템이 손상되었습니다. 파일 시스템을 확인 / 수리 fsck /dev/mmcblk0p1하거나 시도 하거나 새로 작성해야합니다.

4) 커널 (플래시에서 부팅 할 때)에 필요한 파일 시스템 드라이버가 없으면 해당 파일 시스템 유형이 목록에 있는지 확인 cat /proc/filesystems하고 확인 ls "/lib/modules/$(uname -r)/kernel/fs/"하십시오. 일반적으로 이전 커널은 ext4를 지원하지 않지만 OS에는 이미 ext4 파일 시스템을 만드는 도구가있을 수 있습니다.

5) 하드웨어 결함-SD 카드, 컨트롤러, 배선 일 수 있습니다 ...하지만 SD 카드로 부팅 할 때 작동하면 대부분 그렇지 않습니다.


나열된 파일 시스템 /proc/filesystems은 커널로 컴파일 된 파일 시스템 일뿐입니다. 예를 들어, my /proc/filesystems는 포함하지 않지만 시스템은 모듈로 제공되므로 vfat여전히 마운트 할 수 있습니다 vfat.
Graeme

OP는 유형을 지정해야 할 수도 있지만 좋아 보입니다. 을 util-linux통해 파일 시스템을 식별하는 시도를 장착 blkid한 후 시도의 모든 /etc/filesystems또는 /proc/filesystem. 나는 이것이 busybox마운트 라고 생각 하기 때문에 아마도 덜 할 것입니다. 전문가 용 플래시 파일 시스템이 없을 것입니다.
Graeme

2

먼저 커널에서 지원되는 파일 시스템을 확인하십시오.

[kevin@hexcore ~]
$ cat /proc/filesystems 
....
    ext3
    ext2
    ext4
....

Linux를 실행하는 것과 동일한 SD 카드를 마운트하려고한다고 가정합니다. 그렇다면 필자는 리눅스에서 기본 파일 시스템을 지원한다고 가정합니다. SD 카드 드라이버를로드했는지 확인하려면

$ sudo modprobe sdhci
$ dmesg | tail -n 10
sdhci: Secure Digital Host Controller Interface driver

이제 파티션에 대한 읽기 액세스를 시도하십시오.

$ sudo dd if=/dev/mmcblk of=/dev/null bs=4k count=0  # note: count = 0

또는

$ sudo fdisk -l /dev/mmcblk

fdisk 파티션 유형도 알려줍니다.

이를 통해 SD 카드 드라이버가 블록 장치에 액세스 할 수 있습니다. 이제 parted파일 시스템을 인쇄하기 위해 실행할 수 있습니다.

$ sudo parted /dev/mmcblk
(parted) p
Number  Start   End     Size    Type     File system     Flags
 1      1049kB  8000MB  7999MB  primary  linux-swap(v1)
 2      8000MB  500GB   492GB   primary  ext4

FS를 알고 있으면 다음과 같이 마운트하십시오.

$ sudo mount -t <FS> /dev/mmcblkpX </target/dir>

확실합니까? parted는 내가 기억할 수있는 한 서명을 분석 할 수 있습니다. fdisk는 단지 파티션 유형을 덤프합니다.
Kevin

좋아, parted파일 시스템 유형을 결정하려고합니다. 댓글이 삭제되었습니다.
Graeme

-1

마운트하려는 파티션 유형이 지원되지 않을 때 발생하는 오류라는 것을 기억합니다.


파티션 유형이 무엇인지 알고 있다면, 적절한 fsck 기능이 / sbin에 있고 해당 모듈이 커널 (/ proc / modules)에
있는지 확인하십시오.

나는 파티션 유형을 모른다. 파티션 유형을 찾기위한 명령이 있습니까? 그러나 / proc / modules는 비어 있습니다
gpuguy

루트가 있다면 훨씬 쉬울 것입니다.하지만 내가 생각하는 것처럼 Android 에서이 작업을 수행하는 경우을 찾고 blkid있으며 그렇지 않은 경우보다 일반적인 Linux 환경 lsblk이 바람직합니다.
mikeserv

내일 lsblk를 확인하지만 왜 / proc / modules가 비어 있습니까?
gpuguy

프롬프트에서 5 글자를 입력하지 않고 하루 종일 어떻게 알 수 있습니까?
mikeserv

-1

파티션 크기로 인해 (parted 명령)을 사용해야 할 수도 있습니다.

# /sbin/parted /dev/mmcblk0p1
(parted) mklabel gpt
this disk will be lost. Do you want to continue?
Yes/No? yes
....
(parted) quit

파티션이 올바르게 생성되었는지 확인하려면 /sbin/parted /dev/mmcblk0p1 print”

그런 다음 생성 된 파티션을 포맷해야합니다

/sbin/mkfs -t correct_type /dev/mmcblk0p1

2
사용 parted에서 /dev/mmcblk0p1이미 분할 된 장치의 파티션의 파티션 테이블을 생성한다. 또한이 지침을 따르면 장치의 모든 데이터지워집니다 .
Graeme
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.