Arch Linux에서 HFS + 파티션 마운트


19

Arch Linux에서 hfs + 파티션을 마운트하는 데 문제가 있습니다.

실행할 sudo mount -t hfsplus /dev/sda2 /mnt/mac때이 오류가 발생합니다.

mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or helper program, or other error

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

러닝 dmesg | tail은 다음을 제공합니다.

[ 6645.183965] cfg80211: Calling CRDA to update world regulatory domain
[ 6648.331525] cfg80211: Calling CRDA to update world regulatory domain
[ 6651.479107] cfg80211: Calling CRDA to update world regulatory domain
[ 6654.626663] cfg80211: Calling CRDA to update world regulatory domain
[ 6657.774207] cfg80211: Calling CRDA to update world regulatory domain
[ 6660.889864] cfg80211: Calling CRDA to update world regulatory domain
[ 6664.007521] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
[ 6857.870580] perf interrupt took too long (2503 > 2495), lowering kernel.perf_event_max_sample_rate to 50100
[11199.621246] hfsplus: invalid secondary volume header
[11199.621251] hfsplus: unable to find HFS+ superblock

이 파티션을 마운트하는 방법이 있습니까?

편집 :

사용 sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/mac못된 hfsplus: invalid secondary volume header에서dmesg | tail

답변:


34

HFS 파티션이 CoreStorage 볼륨 (OS X 10.10 이후 기본값)으로 래핑되어 있기 때문에 HFS 볼륨이 마운트되지 않았을 가능성이 있습니다. 다음과 같은 경우에 해당되는지 확인할 수 있습니다 fdisk -l. fdisk 출력

HFS +는 두 개의 볼륨 헤더를 사용합니다 (하나는 장치에 1024, 장치는 1024) . 사양에 따라 파티션을 마운트 할 때 보조 헤더는 파티션 끝에서 정확히 1024 바이트가되어야하지만 CoreStorage를 사용하면 더 이상 사실이 아닌 HFS 볼륨을 래핑하여 중단됩니다. 당신은 통과 할 수 -o sizelimit=N하기 위해 mount수동으로 HFS 볼륨 크기를 지정하고이 문제를 해결하는 것이 아니라 어떻게 하나의 마법 값을 얻을 않는다 N?

testdisk유틸리티는 파티션을 검색하여 HFS 파티션이 실제로 끝나는 위치를 암시합니다. 주의하십시오-testdisk에서 잘못된 옵션을 선택하면 파티션 테이블이 손상 될 수 있습니다!

  1. 로 TestDisk를 testdisk /dev/sdX시작한 다음 OK드라이브를 선택하십시오.
  2. IntelMBR 또는 EFI GPTGPT 포맷 드라이브를 위해 선택
  3. 를 누른 Analyse다음Quick Search
  4. 잠시 후 발견 된 파티션을 인쇄해야합니다. testdisk 결과

    표시된 파티션은 fdisk -l이전에 보고 된 623463232 섹터의 실제 파티션 크기보다 끔찍하게 보이지만 약간 작습니다 .

    TestDisk 출력은 섹터를 사용하므로 HFS 볼륨 크기를 바이트 단위로 가져 오려면 드라이브의 논리 섹터 크기 (일반적으로 512 또는 4096 바이트)를 곱해야합니다. 이것이 HFS 볼륨을 마운트 할 때 N사용할 값입니다 -o sizelimit=N.

    드라이브의 논리 섹터 크기를 모르는 경우 아래 표시된 행에서 보고 한 번째 첫 번째 숫자 의 출력을 확인하십시오 fdisk -l.디스크의 논리 섹터 크기 찾기

  5. q프로그램을 종료하려면 여러 번 누르 십시오

  6. 디스크를 마운트하십시오 : mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

3
사용자 에드몬드에서 :이 레시피는 나에게 효과적 이었지만 총 볼륨 크기를 계산하기 위해 물리 섹터 크기와 반대로 논리 섹터 크기 (제 경우 512 대 4096의 두 숫자 중 첫 번째 숫자)를 사용하여 조정해야했습니다. 왜 그런지 잘 모르겠지만 훌륭하게 작동했습니다.
fixer1234

이것은 내 문제를 해결했습니다. 기타 리소스는 사용 제안 offset이 결합하지만, 사용하는 경우 작동하지 않았다 매개 변수 sizelimit 바이트 (바이트 * 섹터)의 수를 설정해도 비 CoreStorage 파티션에 대해, 마치 마법처럼 일
cdeszaq

이것은 나를 위해 작동하지 않습니다. 나는 mount failed: Unknown error -1아무것도 얻지 못했다 dmesg. hfsplus확실히로드됩니다.
Dan

논리 섹터 크기를 사용하여 +1 고정
Jake

이 솔루션은 OSX에서 업데이트가 완료된 후에야 작동이 중단되었습니다. 다른 사람 이이 문제가 있었습니까? 어떤 충고?
Vik

2

다른 옵션은 OS X 시스템을 사용할 수있는 경우 CoreStorage를 제거하는 것입니다. 암호 해독을 사용하는 경우 암호 해독도 제거되며 암호 해독이 완료 될 때까지 기다려야합니다 (전원에 연결하고 OS X로 부팅, 심지어 복구).

인터넷 복구 (사용 가능한 경우 재부팅시 command-option-r)를 염두에 두지 않는 디스크로 부팅해야합니다. 터미널을 열고 다음을 수행하십시오.

diskutil cs list

출력에 CoreStorage 볼륨이 표시되고 그 중 하나가 Revertible 상태입니다. 예라고 표시되면 계속 진행할 수 있습니다. 다음으로 실행합니다 :

diskutil cs revert /dev/ diskXsY

여기서 X는 디스크 번호이고 Y는 파티션 번호입니다.

나중에 동일한 "diskutil cs list"명령으로 상태를 확인할 수 있습니다. 암호화되지 않은 경우 이미 표준 GPT 파티션 레이아웃으로 돌아 가야하며 Arch에서 다시 마운트 할 수 있습니다. 디스크 유틸리티에서 그렇게 할 수 있도록 전환하려면 읽기 전용으로 유지되는 저널링 된 상태 여야합니다.

암호화 된 경우 프로세스는 시간이 걸리지 만 "diskutil cs list"는 진행률을 백분율로 표시합니다.

비 CoreStorage HFS + 드라이브 및 파티션을 Arch에 마운트하는 데 아무런 문제가 없었습니다. 결국 데이터를 ext4로 다시 분할하고 데이터를 다시 이동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.