gắn phân vùng lát freebsd trong linux


7

Tôi có dưới linux:

       Device   Boot      Start         End      Blocks   Id  System
/filename.img      *         63     1007999      503968+  a5  FreeBsd

Trong phân vùng trên tôi có hai lát: ufs filesystem và exchange. Tôi không biết, làm thế nào tôi có thể xác định mount offset để gắn phân vùng ufs.

mount -r -t ufs -o loop,offset=32256,ufstype=ufs2 filename.img /test/

đầu ra dmesg

ufs_read_super: bad magic number

Nó không hoạt động.


Các fdiskbạn dán không hiển thị bố trí phân vùng bạn mô tả. Hãy thử sử dụng partedhoặc partxđể hiển thị bố cục và nếu thất bại, hãy thử testdisktrên tệp, vì bảng phân vùng có thể bị hỏng.
rozcietrzewiacz

@rozcietrzewiacz Nếu bạn cho rằng, hai lát cắt đó là một lỗi đối với hai phân vùng BSD, thì văn bản phù hợp với đầu ra.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Trên thực tế, tôi đã hơi thiếu chính xác - Tôi có nghĩa là fdiskđầu ra được cung cấp không hiển thị các phân vùng đĩa BSD. Bây giờ tôi cũng thấy rằng đề cập sau này của tôi về bảng phân vùng đã gây hiểu nhầm, vì ở đây cũng có nhãn đĩa phải được xác minh.
rozcietrzewiacz

@rozcietrzewiacz Đầu fdiskra rõ ràng là fdisk của Linux, cho thấy những gì trong thuật ngữ PC / Linux là một phân vùng và trong thuật ngữ BSD là một lát. Bên trong phân vùng PC hay còn gọi là BSD lát, có thể có hai phân vùng BSD, root và hoán đổi.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Đó chính xác là vấn đề mà tôi đã cố gắng chỉ ra - rằng linux fdisksẽ không thấy các phân vùng BSD (đĩa dán nhãn), vì vậy nên sử dụng một công cụ khác.
rozcietrzewiacz

Câu trả lời:


2

Tôi nghi ngờ đó là

mount -r -o loop,offset=32768,ufstype=ufs2 filename.img /test/

Nếu tôi nhớ chính xác, phân vùng BSD đầu tiên bắt đầu trên ranh giới 32kB so với toàn bộ đĩa. Đó là 64 lĩnh vực của 512B. Liên quan đến phân vùng PC, phần bù của phân vùng BSD là 63 cung, vì phân vùng PC bắt đầu ở độ lệch 1 cung so với toàn bộ đĩa: cung thứ nhất của đĩa chứa bảng phân vùng.

Theo đề xuất của rozcietrzewiacz, bạn có thể xác nhận phần bù của phân vùng BSD bằng

partx -l filename.img

Có một bản vá cho nhân Linux để hỗ trợ truy cập tự động vào các phân vùng của các thiết bị lặp. Debian áp dụng nó trong hạt nhân của họ. Nếu bạn có bản vá này, thì hãy chắc chắn rằng looptrình điều khiển có một max_parttham số đủ lớn (bạn có thể cần phải làm rmmod loop; modprobe max_part=63). Sau đó, các phân vùng BSD sẽ xuất hiện dưới dạng một cái gì đó như /dev/loop0p5/dev/loop0p6.


2

Cảm ơn bạn cho tất cả các gợi ý.

# partx -l filename.iso
HDIO_GETGEO: Inappropriate ioctl for device

Tôi đã thêm ánh xạ tên tệp tạo ánh xạ logic trong thư mục / dev / mapper

# kpartx -a filename.iso

# ls -l /dev/mapper/
control  loop0p1

kiểm tra cuối cùng

# partx -l /dev/mapper/loop0p1 
1:         0-       -1 (        0 sectors,      0 MB)
2:         0-       -1 (        0 sectors,      0 MB)
3:         0-       -1 (        0 sectors,      0 MB)
4:         0-    49999 (    50000 sectors,     25 MB)
1:   8388671-142078859 (133690189 sectors,  68449 MB)
2:        63-  8388670 (  8388608 sectors,   4294 MB)

và người cuối cùng thành công

mount -r -t ufs -o loop,offset=$((8388671*512)),ufstype=ufs2 filename.iso /test/

Trân trọ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.