ความแตกต่างระหว่าง mount และ mount -o loop คืออะไร


28

ฉันมี ISO ubuntu.isoไฟล์ที่ชื่อว่า

ที่ฉันสามารถทำได้ด้วยคำสั่ง:mount mount ubuntu.iso /mntหลังจากติดตั้งมันฉันสามารถดูได้จาก outout ของคำสั่ง:df -h/dev/loop0 825M 825M 0 100% /mnt

อย่างไรก็ตามถ้าฉันรันคำสั่งmount -o loop ubuntu.iso /mntฉันจะได้ผลลัพธ์เดียวกัน

ที่ผมรู้ว่าอุปกรณ์ห่วงช่วยให้เราสามารถเยี่ยมชมไฟล์ ISO -o loopเป็นอุปกรณ์ผมคิดว่านี่คือเหตุผลที่เราเพิ่มตัวเลือก แต่ผมสามารถเยี่ยมชมไฟล์ ISO mount ubuntu.iso /mntของฉันแม้ว่าฉันเท่านั้นที่ดำเนินการ

ดังนั้นผมจึงไม่สามารถเห็นความแตกต่างระหว่างและmountmount -o loop


สิ่งที่สำคัญคือบางครั้งการเมานต์ไม่สามารถตั้งค่าอุปกรณ์ลูปแบ็คด้วยการแก้ไขที่เหมาะสมตัวอย่างเช่น: mount ubuntu.iso /mntมันไม่ได้ติดตั้งอุปกรณ์ลูปแบ็คแบบอ่านอย่างเดียวและmount /image.squashfs /mntไม่ได้ติดตั้งอุปกรณ์ลูปแบ็คDIO( losetup --direct-io=on)
ไม่รู้หนังสือ

คำตอบ:


46

ทั้งสองเวอร์ชันใช้อุปกรณ์ลูปและสร้างผลลัพธ์เดียวกัน เวอร์ชั่นสั้นอาศัย“ ความฉลาด” ที่เพิ่มเข้ามาmountในปีที่ผ่านมา mount -o loopบอกmountให้ใช้อุปกรณ์วนรอบอย่างชัดเจน มันปล่อยให้อุปกรณ์วนรอบตัวเองขึ้นไปmountซึ่งจะมองหาอุปกรณ์ที่มีอยู่ตั้งค่ามันและใช้มัน (คุณสามารถระบุอุปกรณ์ด้วยเช่น mount -o loop=/dev/loop1กัน)

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

ส่วนอุปกรณ์ห่วงของmountหน้าคนมีรายละเอียดเพิ่มเติม


1
ไม่ใช่ * ที่ * นานมาแล้วไม่มีตัวเลือก "-o loop" ใน mount อย่างใดอย่างหนึ่งและคุณจะต้องสร้างอุปกรณ์ loop ด้วยตนเองด้วยคำสั่ง losetup
Edeldil

@Edheldil ที่ขึ้นอยู่กับความคิดของคุณ“ นานมาแล้ว” ;-) util-linux2.11 รองรับmount -o loopในปี 2544 และฉันคิดว่า 2.10 ก็มีเหมือนกันอย่างน้อยหนึ่งปีก่อนหน้านี้
Stephen Kitt

ใช่ แต่เคยใช้การแจกแจงแบบเสถียรในปี 2001 ใช้ util-linux 2.11 แล้วใช่ไหม
rackandboneman

2
@rackandboneman ฉันไปขุดอีกเล็กน้อยและปรากฎว่ามีการ-o loopเพิ่มการสนับสนุนบางครั้งระหว่างutil-linux2.4 และ 2.5j Debian 1.1 เป็นรุ่นหลังและวางจำหน่ายในเดือนมิถุนายน 1996 ดังนั้นตัวเลือกนี้มีให้ในการแจกแจงมานานกว่ายี่สิบปี
Stephen Kitt

ข้อดีของความฉลาดนี้: หาก / เมื่อคุณสมบัติ "direct file mount" ของนักพัฒนา XFS (โดยไม่จำเป็นต้องใช้อุปกรณ์ลูป) ถึงเคอร์เนลmountจะสามารถสลับไปใช้กลไกนั้นได้อย่างโปร่งใส(อย่างน้อย 15 นาทีแรกจนกระทั่งมัน กลับกลายเป็นว่ามันเป็นเปลือกหอยของใครบางคนและทุกคนต้องกลับไปที่อุปกรณ์ลูป)mount -o loopซึ่งแตกต่างจากที่ยังคงขอกลไกเก่า (ปัจจุบัน) อย่างชัดเจน
grawity

9

loopอุปกรณ์ควบคุมหลักกับlosteupคำสั่ง ดังนั้นlosetup -aจะให้ภาพรวมเกี่ยวกับอุปกรณ์ลูปที่ใช้และไฟล์ที่แนบมา mountคำสั่งสามารถติดอุปกรณ์ป้องกันเท่านั้น อุปกรณ์วนรอบสามารถสร้างอุปกรณ์บล็อกเสมือนจากไฟล์ (อุปกรณ์ตัวอักษร)

ในความเป็นจริงมีความแตกต่างอย่างมากระหว่างคำสั่งเหล่านั้นเพราะในระบบ Linux รุ่นเก่าmountไม่สามารถจดจำไฟล์ว่าเป็นอุปกรณ์ที่ถูกต้องที่จะเมานต์ แต่ในช่วงเวลาที่คำสั่ง mount เสร็จสมบูรณ์ด้วยคุณสมบัติมากมายจึงสามารถตัดสินใจเองได้ ลองเรียกคำสั่ง losetup แล้วเมานต์ผลลัพธ์ แต่ถ้าคุณมีดิสก์อิมเมจทั้งหมดไม่ใช่ฟอร์แมท iso แต่เช่นด้วย MBR ที่จุดเริ่มต้นคำสั่ง mount ไม่สามารถจดจำได้และคุณจะต้องค้นหาพาร์ติชั่นที่ใช้งานได้ (เช่นด้วยparted disk_image.raw unit B printคำสั่ง) yoursef และติดกับตัวเลือกแบบเต็ม เช่น :

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

ในไวยากรณ์นี้อุปกรณ์ลูปไม่ได้ถูกระบุและจะถือว่าระบบเลือกฟรีครั้งแรก ( /dev/loop0และ/dev/loop1อื่น ๆ ) ในบรรดาคุณสมบัติใหม่อื่น ๆ ของคำสั่ง mount คือคุณไม่จำเป็นต้องระบุประเภทระบบไฟล์ของอุปกรณ์บล็อกที่เมาท์ (ในกรณีของคุณ-t iso9660) ถ้าติดตั้งการสนับสนุนระบบไฟล์


7

มีความแตกต่างระหว่างไม่เป็นและmount ubuntu.iso /mntmount -o loop ubuntu.iso /mnt

ครั้งแรกที่มีการจัดการอย่างโปร่งใสราวกับว่าคุณได้ใช้ที่สอง

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