Sự khác biệt giữa vòng lặp gắn kết và gắn kết -o là gì


28

Tôi có một tập tin iso có tên ubuntu.iso.

Tôi có thể mountnó với lệnh : mount ubuntu.iso /mnt. Sau khi gắn nó, tôi có thể thấy nó từ ngoài lệnh df -h: /dev/loop0 825M 825M 0 100% /mnt.

Tuy nhiên, nếu tôi thực thi lệnh mount -o loop ubuntu.iso /mnt, tôi sẽ nhận được kết quả tương tự.

Như tôi biết, thiết bị lặp cho phép chúng tôi truy cập tệp iso dưới dạng thiết bị, tôi nghĩ đây là lý do tại sao chúng tôi thêm tùy chọn -o loop. Nhưng tôi có thể truy cập tệp iso của mình ngay cả khi tôi chỉ thực hiện mount ubuntu.iso /mnt.

Vì vậy, tôi không thể thấy sự khác biệt giữa mountmount -o loop.


Ngoài ra, một điều quan trọng là đôi khi gắn kết không thể thiết lập thiết bị loopback với các đường dẫn thích hợp Ví dụ: mount ubuntu.iso /mntnó không thiết lập thiết bị loopback chỉ đọc và mount /image.squashfs /mntnó không thiết lập thiết bị loopback DIO( losetup --direct-io=on).
không biết chữ

Câu trả lời:


46

Cả hai phiên bản đều sử dụng các thiết bị lặp và tạo ra cùng một kết quả; phiên bản ngắn dựa trên sự thông minh của cải thiện, được thêm vào mounttrong những năm gần đây. mount -o loopnói mountrõ ràng để sử dụng một thiết bị vòng lặp; nó tự rời khỏi thiết bị vòng lặp mount, nó sẽ tìm kiếm một thiết bị có sẵn, thiết lập và sử dụng nó. (Bạn có thể chỉ định thiết bị quá với vd mount -o loop=/dev/loop1 .)

Điều thông minh là, khi được cung cấp tệp để gắn kết, mountsẽ tự động sử dụng thiết bị lặp để gắn kết khi cần thiết - nghĩa là hệ thống tệp không được chỉ định hoặc libblkidxác định rằng hệ thống tệp chỉ được hỗ trợ trên các thiết bị khối (và do đó thiết bị lặp là cần thiết để dịch tập tin thành một thiết bị khối).

Phần thiết bị vòng lặp của mounttrang man có nhiều chi tiết hơn.


1
Không phải * mà * từ lâu đã không có tùy chọn "-o loop" trong mount và bạn sẽ phải tự tạo thiết bị lặp bằng lệnh losetup.
Edainedil

@Edainedil điều đó phụ thuộc vào quan niệm của bạn về cách đây rất lâu trước đây ;-). util-linux2.11 được hỗ trợ mount -o loopvào năm 2001 và tôi nghĩ 2.10 cũng đã có nó, ít nhất là một năm trước đó.
Stephen Kitt

Vâng, nhưng các bản phân phối ổn định thường được sử dụng trong năm 2001 đã sử dụng linux -11 2.11 chưa?
rackandboneman

2
@rackandboneman Tôi đã đi đào thêm một chút, và hóa ra hỗ trợ cho -o loopđã được thêm vào khoảng giữa util-linux2,4 và 2,5j; Debian 1.1 đã có phiên bản thứ hai và được phát hành vào tháng 6 năm 1996. Vì vậy, tùy chọn này đã có sẵn trong các bản phân phối trong hơn hai mươi năm.
Stephen Kitt

Một lợi thế cho sự thông minh này: nếu / khi tính năng "gắn tệp trực tiếp" mới của nhà phát triển XFS (không cần thiết bị lặp) đến hạt nhân, mountsẽ có thể chuyển sang cơ chế đó một cách trong suốt (Ít nhất là trong 15 phút đầu tiên cho đến khi Hóa ra nó đã phá vỡ shellscript của ai đó và mọi người phải quay lại các thiết bị lặp) , không giống như mount -o loopvẫn rõ ràng yêu cầu cơ chế cũ (hiện tại).
grawity

9

Thiết loopbị này chủ yếu được điều khiển bằng losteuplệnh. Vì vậy, losetup -acung cấp cho bạn tổng quan về các thiết bị vòng lặp được sử dụng và các tệp đính kèm. Các mountlệnh có thể gắn kết các thiết bị khối duy nhất . Thiết bị lặp có thể tạo thiết bị khối ảo từ một tệp (thiết bị ký tự).

Trong thực tế, có một sự khác biệt lớn giữa các lệnh đó bởi vì trên các hệ thống Linux cũ hơn, mountkhông thể nhận ra tệp là thiết bị chính xác được gắn, nhưng trong thời gian lệnh mount được hoàn thành với nhiều tính năng, do đó giờ đây nó có thể tự quyết định cố gắng gọi lệnh losetup và gắn kết quả. Nhưng nếu bạn có một hình ảnh toàn bộ đĩa không phải là định dạng iso mà là với MBR lúc đầu, lệnh mount không thể nhận ra nó và bạn phải tìm phân vùng có thể sử dụng (ví dụ với parted disk_image.raw unit B printlệnh) yoursef và hơn là gắn nó với tùy chọn gắn kết đầy đủ như :

mount disk_image.raw /mntpoint/ -o loop,offset=${OFFSET_of_PARTITION}

Trong cú pháp này, thiết bị lặp không được chỉ định và giả sử hệ thống chọn miễn phí đầu tiên ( /dev/loop0, /dev/loop1v.v.) Trong số các tính năng mới khác của lệnh mount là bạn không cần chỉ định loại hệ thống tệp của thiết bị khối được gắn (trong trường hợp của bạn -t iso9660) nếu hỗ trợ hệ thống tập tin đã được cài đặt.


7

Không có sự khác biệt giữa mount ubuntu.iso /mntmount -o loop ubuntu.iso /mnt.

Đầu tiên được xử lý trong suốt như thể bạn đã sử dụng thứ hai.

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.