Gắn kết phân vùng HFS + trên Arch Linux


22

Tôi đang gặp một số vấn đề với việc gắn phân vùng hfs + trên Arch Linux.

Khi tôi chạy, sudo mount -t hfsplus /dev/sda2 /mnt/mactôi gặp lỗi này:

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.

Chạy dmesg | tailcho:

[ 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

Có cách nào để gắn kết phân vùng này?

CHỈNH SỬA :

Sử dụng sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/macđược loại bỏ hfsplus: invalid secondary volume headertrongdmesg | tail

Câu trả lời:


36

Có khả năng âm lượng HFS không được lắp vì phân vùng HFS được bọc trong ổ CoreStorage (mặc định kể từ OS X 10.10). Bạn có thể xác minh nếu đây là trường hợp với đầu ra của fdisk -l: đầu ra fdisk

HFS + sử dụng hai tiêu đề âm lượng, một 1024 vào thiết bị và 1024 phụ từ cuối thiết bị . Theo thông số kỹ thuật, khi gắn phân vùng, tiêu đề phụ dự kiến ​​sẽ chính xác là 1024 byte từ đầu phân vùng, nhưng với CoreStorage bao bọc khối lượng HFS không còn là trường hợp nữa nên nó sẽ hủy bỏ. Bạn có thể chuyển qua -o sizelimit=Nđể mountchỉ định thủ công kích thước âm lượng HFS và sửa lỗi này, nhưng làm thế nào để có được giá trị ma thuật cho N?

Các testdisktiện ích có thể quét các phân vùng, gián tiếp tại nơi phân vùng HFS thực sự kết thúc. Hãy cảnh giác - chọn các tùy chọn sai trong testdisk có thể làm hỏng bảng phân vùng của bạn!

  1. Khởi chạy TestDisk với testdisk /dev/sdX, và sau đó OKchọn ổ đĩa
  2. Chọn Intelcho MBR hoặc EFI GPTcho các ổ đĩa được định dạng GPT
  3. Nhấn Analysevà sau đóQuick Search
  4. Sau một lát, nó sẽ in ra các phân vùng được tìm thấy: kết quả kiểm tra

    Phân vùng được chỉ ra trông cực kỳ gần (nhưng nhỏ hơn một chút) so với kích thước phân vùng thực của 623463232 ngành được báo cáo fdisk -ltrước đó.

    Vì đầu ra TestDisk sử dụng các cung, nên chúng ta cần nhân nó với kích thước cung logic của ổ đĩa (thường là 512 hoặc 4096 byte) để có được kích thước âm lượng HFS tính bằng byte. Đó là giá trị Nchúng tôi sẽ sử dụng -o sizelimit=Nkhi gắn âm lượng HFS.

    Nếu bạn không biết kích thước khu vực logic của ổ đĩa của mình, hãy kiểm tra đầu ra của số thứ nhất thứ hai được báo cáo fdisk -ltrên dòng hiển thị bên dưới:tìm kích thước khu vực logic của đĩa của bạn

  5. Nhấn qnhiều lần để thoát khỏi chương trình

  6. Gắn đĩa: mount /dev/sdXn -t hfsplus -o ro,sizelimit=N

3
Từ người dùng edmonde : Công thức này rất hiệu quả đối với tôi, nhưng tôi đã phải điều chỉnh nó bằng cách sử dụng kích thước khu vực logic (số đầu tiên trong hai số, trong trường hợp 512 so với 4096) so với kích thước khu vực vật lý để tính tổng kích thước khối. Tôi không chắc tại sao nhưng nó hoạt động rất tốt.
fixer1234

Điều này đã khắc phục vấn đề của tôi. Các tài nguyên khác được đề xuất sử dụng một offsettham số, không hoạt động khi kết hợp với tham số này, nhưng chỉ sử dụng sizelimitđược đặt thành số byte (byte * sector) hoạt động như một bùa mê, ngay cả đối với các phân vùng không phải CoreStorage
cdeszaq

Điều này không làm việc cho tôi. Tôi nhận được mount failed: Unknown error -1và không có gì trong dmesg. hfspluschắc chắn được tải.
Dan

+1 được cố định bằng cách sử dụng kích thước khu vực logic
Jake

1
Giải pháp này đã hoạt động tốt đối với tôi cho đến khi một bản cập nhật trên OSX đã ngừng hoạt động này. Bất cứ ai khác có vấn đề này? Có lời khuyên nào không?
Vik

2

Một lựa chọn khác là loại bỏ CoreStorage nếu máy OS X có sẵn cho bạn. Điều này cũng sẽ thoát khỏi việc giải mã nếu bạn đang sử dụng nó và bạn sẽ phải đợi cho đến khi giải mã xong (cắm vào nguồn và khởi động vào OS X, thậm chí phục hồi).

Bạn sẽ cần phải khởi động vào một đĩa không phải là ổ đĩa, tốt nhất là phục hồi internet (nếu có, lệnh tùy chọn-r khi khởi động lại). Mở terminal và thực hiện:

diskutil cs list

Đầu ra sẽ hiển thị khối lượng CoreStorage của bạn và tất cả, một trong số đó là trạng thái Hoàn nguyên của nó. Nếu nó chỉ ra Có thì bạn sẽ có phong độ tốt để tiếp tục. Tiếp theo bạn sẽ chạy:

diskutil cs revert /dev/ diskXsY

(Trong đó X là số đĩa và Y là số phân vùng).

Bạn có thể kiểm tra trạng thái của nó sau đó bằng cùng một lệnh "danh sách đĩa cs". Nếu nó không được mã hóa, nó sẽ quay trở lại bố cục phân vùng GPT tiêu chuẩn và bạn có thể thử gắn lại nó trong Arch. Nó vẫn nên được ghi nhật ký sẽ giữ nó ở chế độ chỉ đọc, nếu bạn muốn chuyển đổi rằng bạn có thể làm như vậy trong Disk Utility.

Nếu nó được mã hóa, quá trình sẽ mất một chút thời gian nhưng "danh sách đĩa cs" sẽ cho bạn thấy tiến trình dưới dạng phần trăm.

Bản thân tôi không gặp vấn đề gì khi tự lắp ổ đĩa và phân vùng HFS + không phải CoreStorage trên Arch. Cuối cùng tôi đã di chuyển dữ liệu, phân vùng lại thành ext4 và di chuyển dữ liệu trở lại chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.