การเมาท์พาร์ติชัน HFS + บน Arch Linux


22

ฉันมีปัญหากับการติดตั้งพาร์ติชัน hfs + บน Arch Linux

เมื่อฉันเรียกใช้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

คำตอบ:


36

อาจเป็นไปได้ว่าปริมาณ HFS ไม่ได้ถูกเมานต์เนื่องจากพาร์ติชัน HFS ถูกห่อในโวลุ่ม CoreStorage (ค่าเริ่มต้นตั้งแต่ OS X 10.10) คุณสามารถตรวจสอบว่าเป็นกรณีนี้ด้วยผลลัพธ์ของ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. เลือกIntelสำหรับ MBR หรือEFI GPTสำหรับไดรฟ์ที่ฟอร์แมต GPT
  3. กดปุ่มAnalyseแล้วQuick Search
  4. หลังจากนั้นซักครู่ควรพิมพ์พาร์ติชั่นที่พบ: ผลลัพธ์ testdisk

    พาร์ติชันที่ระบุมีลักษณะใกล้เคียงกับ (แต่เล็กกว่าเล็กน้อย) กว่าขนาดพาร์ติชันจริงของภาค 623463232 ที่รายงานfdisk -lก่อนหน้านี้

    เนื่องจากเอาต์พุต TestDisk ใช้เซ็กเตอร์เราจะต้องคูณมันด้วยขนาดเซกเตอร์ตรรกะของไดรฟ์ (โดยทั่วไปคือ 512 หรือ 4096 ไบต์) เพื่อให้ได้ขนาดวอลุ่ม HFS เป็นไบต์ นั่นคือค่าที่Nเราจะใช้-o sizelimit=Nเมื่อทำการติดตั้งไดรฟ์ข้อมูล HFS

    หากคุณไม่ทราบขนาดเซกเตอร์ตรรกะของไดรฟ์ให้ตรวจสอบผลลัพธ์ของหมายเลขแรกที่สองที่ รายงานโดยบนบรรทัดที่แสดงด้านล่าง:fdisk -lค้นหาขนาดเซกเตอร์ตรรกะของดิสก์ของคุณ

  5. กดqหลาย ๆ ครั้งเพื่อออกจากโปรแกรม

  6. เมานต์ดิสก์: mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

3
จากผู้ใช้edmonde : สูตรนี้ใช้งานได้ดีสำหรับฉัน แต่ฉันต้องปรับแต่งโดยใช้ขนาดเซกเตอร์ตรรกะ (ตัวเลขสองตัวแรกในกรณีของฉัน 512 กับ 4096) เมื่อเทียบกับขนาดเซกเตอร์กายภาพเพื่อคำนวณขนาดปริมาตรทั้งหมด ฉันไม่แน่ใจว่าทำไม แต่มันใช้งานได้ดี
fixer1234

นี่เป็นการแก้ไขปัญหาของฉัน แหล่งข้อมูลอื่น ๆ ที่แนะนำโดยใช้offsetพารามิเตอร์ซึ่งไม่ได้ทำงานเมื่อรวมกับเรื่องนี้ แต่ใช้เพียง sizelimitการตั้งค่าเป็นจำนวนไบต์ (ไบต์ภาค *) ทำงานเช่นเสน่ห์แม้สำหรับพาร์ทิชันที่ไม่ใช่ CoreStorage
cdeszaq

มันไม่ได้ผลสำหรับฉัน ฉันได้รับmount failed: Unknown error -1และไม่มีอะไรdmesgมา hfsplusถูกโหลดอย่างแน่นอน
Dan

+1 แก้ไขโดยใช้ขนาดเซกเตอร์ตรรกะ
Jake

1
วิธีแก้ปัญหานี้ใช้ได้ดีสำหรับฉันจนกระทั่งหลังจากอัปเดตบน OSX ซึ่งหยุดการทำงานนี้ ใครมีปัญหานี้ คำแนะนำใด ๆ?
Vik

2

อีกทางเลือกหนึ่งคือการกำจัด CoreStorage หากมีเครื่อง OS X สำหรับคุณ นี่จะเป็นการกำจัดการถอดรหัสถ้าคุณใช้มันและคุณจะต้องรอจนกว่าการถอดรหัสจะเสร็จสิ้น (เสียบปลั๊กไฟแล้วบูตเข้าสู่ OS X หรือแม้แต่การกู้คืน)

คุณจะต้องบูตดิสก์ที่ไม่ได้อยู่ในใจโดยเฉพาะอย่างยิ่งการกู้คืนอินเทอร์เน็ต (ถ้ามีให้ใช้ command-option-r เมื่อรีบูตเครื่อง) เปิดเทอร์มินัลแล้วทำสิ่งต่อไปนี้

diskutil cs list

ผลลัพธ์ควรแสดงปริมาณ CoreStorage ของคุณและทั้งหมดหนึ่งในนั้นคือสถานะกลับคืนได้ ถ้ามันแสดงว่าใช่แล้วคุณจะมีรูปร่างที่ดีเพื่อดำเนินการต่อ ถัดไปคุณจะเรียกใช้:

diskutil cs revert /dev/ diskXsY

(โดยที่ X คือหมายเลขดิสก์และ Y คือหมายเลขพาร์ติชัน)

คุณสามารถตรวจสอบสถานะได้ในภายหลังด้วยคำสั่ง "diskutil cs list" เดียวกัน ถ้ามันไม่ได้เข้ารหัสมันควรจะกลับไปที่เลย์เอาต์ GPT พาร์ติชั่นมาตรฐานแล้วและคุณสามารถลองอีกครั้งใน Arch มันควรจะยังคงถูกเจอร์นัลซึ่งจะทำให้อ่านได้อย่างเดียวถ้าคุณต้องการสลับที่คุณสามารถทำได้ใน Disk Utility

หากถูกเข้ารหัสกระบวนการจะใช้เวลาสักครู่ แต่ "รายชื่อ diskutil cs" จะแสดงความคืบหน้าเป็นเปอร์เซ็นต์

ฉันไม่มีปัญหาในการติดตั้งไดรฟ์ที่ไม่ใช่ CoreStorage HFS + และพาร์ติชันบน Arch ด้วยตนเอง ในที่สุดฉันก็ย้ายข้อมูลแบ่งส่วนเป็น ext4 และย้ายข้อมูลกลับไปยังพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.