Sự cố khi gắn ổ đĩa HFS +


12

Tôi có một vấn đề gắn một số ổ hfsplus. Tôi chỉ cần họ gắn kết chỉ đọc. (vô hiệu hóa tạp chí không phải là một lựa chọn) Tôi đã thực hiện rất nhiều nghiên cứu và phát hiện ra rằng do những thay đổi từ phiên bản kernel 2.6.37 đến 2.6,38, vấn đề bắt đầu.

Hãy xem liên kết này tại bug.launchpad.net .

Vì vậy, tôi đã thử nghiệm nó với Linux kernel phiên bản 2.6.37 trở xuống và nó hoạt động tốt như bình thường.

Các phiên bản ở trên bao gồm cả phiên bản 3.2.0-54 của tôi (ubfox 12.04) không hoạt động tốt với việc gắn hình ảnh và đĩa hfsplus. Vì vậy, tôi cần mô-đun hfsplus từ một phiên bản hoạt động như 2.6.31-14-generic từ ubfox 9.

Tôi sử dụng các lệnh này trong trường hợp này với hình ảnh HFS + DD. Nhưng tôi đã làm điều này với các ổ đĩa vật lý hfsplus khác và các hình ảnh khác. Tất cả đều hoạt động với kernel 2.6.37 trở xuống nhưng không phải với các phiên bản mới hơn:

sudo losetup -d /dev/loop0
sudo losetup /dev/loop0 -o $((512*409640)) /folder/iMac_21.dd

sudo mount -t hfsplus /dev/loop0 /mnt/hfs
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

dmesg | tail
[84980.380254] hfs: invalid secondary volume header

Tôi phải thêm thông tin này vào "bằng chứng" rằng vấn đề nằm sau kernel 2.6,38. Có một cái nhìn tại đây. Đó là trình điều khiển NTFS und HFS + từ Paragon.

"What's new in Paragon NTFS & HFS+ for Linux 8.5:
Support for modern Linux Kernels (up to 2.6.38);"
paragon-software.com/home/ntfs-linux-per/features.html

Để khắc phục sự cố, tôi chỉ sao chép /lib/modules/2.6.27/kernel/fs/hfsplus.kovào kernel chung 3.2.0-54 hiện tại của mình. Nhưng điều đó đã không làm việc. Làm cách nào để tôi có được phần hfsplus đang hoạt động trong kernel 3.2.0-54 hiện tại của tôi ubfox 12.04 linux? Hoặc làm thế nào để sửa kernel của tôi hoạt động giống như trong 2.6.37?

Gợi ý tốt nhất tôi đã thấy là cái này .

Câu trả lời:


18

Câu hỏi này hơi cũ nhưng tôi đã gặp nó trong khi cố gắng gắn kết phân vùng HFS + trong cùng hoàn cảnh và tìm thấy giải pháp. Tôi không chắc nó liên quan đến phiên bản kernel như thế nào, của tôi là 3.13 (3.13.7-1 x86_64, Debian).

Câu trả lời ngắn

Cung cấp kích thước của phân vùng cũng như phần bù của nó.

Câu trả lời dài

Trước tiên hãy lấy thông tin của phân vùng từ Parted, tính bằng byte; bạn cần số Bắt đầu và số Kích thước. Dưới đây là một ví dụ về phiên Parted (như bạn có thể đoán, hình ảnh ổ cứng của tôi là /mnt/macbook.dd):

$ /sbin/parted /mnt/macbook.dd
WARNING: You are not superuser.  Watch out for permissions.
GNU Parted 2.3
Using /mnt/macbook.dd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit
Unit?  [compact]? b
(parted) p
Model:  (file)
Disk /mnt/macbook.dd: 160041885696B
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start       End            Size           File system  Name                  Flags
 1      20480B      209735679B     209715200B     fat32        EFI system partition  boot
 2      209735680B  159907647487B  159697911808B  hfs+         Customer

Nếu tôi cố gắn kết phân vùng bằng cách chỉ cung cấp phần bù (bắt đầu), tôi sẽ gặp lỗi tương tự như bạn:

# mount -v -t hfsplus -o ro,loop,offset=209735680 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
# dmesg | tail -n2
[117791.463123] hfsplus: invalid secondary volume header
[117791.463132] hfsplus: unable to find HFS+ superblock

Nhân tiện, bạn không cần sử dụng losetup, mount sẽ tự động làm điều đó cho bạn. Bây giờ nếu tôi thêm kích thước của phân vùng (siz006it), nó hoạt động hoàn hảo:

# mount -v -t hfsplus -o ro,loop,offset=209735680,sizelimit=159697911808 /mnt/macbook.dd /media/mac
mount: enabling autoclear loopdev flag
mount: going to use the loop device /dev/loop0
/mnt/macbook.dd on /media/mac type hfsplus (ro,offset=209735680,sizelimit=159697911808)

4
giải pháp của bạn xử lý thông báo "tiêu đề âm lượng thứ cấp không hợp lệ" cho tôi, nhưng lỗi "không thể tìm thấy siêu khối HFS +" vẫn tồn tại :(
krumpelstiltskin

1
Vẫn nhận được cả hai lỗi trong dmesg mặc dù tôi đã chỉ định cả offset và siz006it
wkarl

không rõ mức bù là bao nhiêu - đối với tôi, Numberthiết bị của tôi là 1 offset=1offset=0cả hai đều thất bại
MichaelChirico

16

Đối với bất kỳ ai khác vấp phải câu hỏi này trong khi tìm kiếm cùng một thông báo lỗi, lưu ý rằng có một nguyên nhân có thể khác cho lỗi này.

Mặc dù câu trả lời được cung cấp bởi mcy sẽ hoạt động nếu phân vùng thực sự là phân vùng HFS +, bắt đầu với OSX Yosemite, loại phân vùng mặc định cho máy Mac là "Bộ lưu trữ lõi", được sử dụng để xử lý các khối hợp lý. Điều này có nghĩa là những gì bạn thực sự muốn gắn kết là một khối hợp lý (sử dụng tệp HFS +) trong phân vùng "Lưu trữ lõi".

Để xem phân vùng của bạn có thuộc loại "Apple Core Storage" hay không, bạn có thể sử dụng gdisk: AF05là mã cho "Apple Core Storage", trong khi đó af00là mã cho "Apple HFS / HFS +".

Nếu đĩa của bạn sử dụng "Apple Core Storage", bạn có thể sử dụng hướng dẫn được cung cấp trong câu trả lời này để gắn kết.


1
Cảm ơn bạn! Đây chính xác là vấn đề tôi đang phải đối mặt. Giải pháp liên kết hoạt động tốt.
Michael Ambrose
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.