LOSETUP(8) إدارة النظام LOSETUP(8)

الاسم

losetup - إعداد والتحكم في أجهزة الحلقة

موجز

إعداد جهاز حلقة:

losetup [خيارات] -f|جهاز_حلقة ملف

الحصول على المعلومات:

losetup [-l] [-a|جهاز_حلقة]

losetup -j ملف [-o إزاحة]

إعادة معايرة حجم جهاز حلقة:

losetup -c loopdev

فصل أجهزة الحلقة:

losetup -d loopdev ...

losetup -D

منع أجهزة الحلقة من أن تُدرج في القائمة:

losetup --remove جهاز_حلقة ...

الوصف

يُستخدم losetup لربط أجهزة الحلقة بملفات عادية أو أجهزة كتلية، ولفصل أجهزة الحلقة، وللاستعلام عن حالة جهاز الحلقة. إذا أُعطي المعامل loopdev فقط، تُعرض حالة جهاز الحلقة المقابل. وإذا لم يُعطَ أي خيار، تُعرض جميع أجهزة الحلقة.

لاحظ أن تنسيق المخرج القديم (أي losetup -a) ذو السلاسل النصية المفصولة بفاصلة مهجور لصالح تنسيق المخرج --list.

من الممكن إنشاء عدة أجهزة حلقة مستقلة لنفس ملف النسخ الاحتياطي. هذا الإعداد قد يكون خطيراً، ويمكن أن يسبب فقداناً للبيانات وفساداً وتجاوزاً للكتابة. استخدم --nooverlap مع --find أثناء الإعداد لتجنب هذه المشكلة.

إعداد جهاز الحلقة ليس عملية ذرية عند استخدامه مع --find، ولا يحمي losetup هذه العملية بأي قفل. عدد المحاولات مقيد داخلياً بحد أقصى 16. يُوصى باستخدام flock(1) مثلاً لتجنب التصادم في حالات الاستخدام المتوازي بكثافة.

الخيارات

يمكن أن يتبع معاملات الحجم (حجم) والإزاحة (إزاحة) لواحق مضاعفة KiB (=1024)، و MiB (=1024*1024)، وهكذا لـ GiB و TiB و PiB و EiB و ZiB و YiB (اللاحقة "iB" اختيارية، مثلاً "K" لها نفس معنى "KiB") أو اللواحق KB (=1000)، و MB (=1000*1000)، وهكذا لـ GB و TB و PB و EB و ZB و YB.

-a، --all

تُعرض حالة جميع أجهزة الحلقة. لاحظ أنه لا يمكن للمستخدمين غير الجذر (non-root) الوصول إلى جميع المعلومات. انظر أيضاً --list. تنسيق المخرج القديم (كما يُطبع دون --list) مهجور.

-d، --detach loopdev...

فصل الملف أو الجهاز المرتبط بجهاز (أجهزة) الحلقة المحددة. لاحظ أنه منذ الإصدار v3.7 من نواة لينكس تُستخدم تقنية "تدمير الجهاز الكسول". عملية الفصل لم تعد تُرجع خطأ EBUSY إذا كان الجهاز مستخدماً بنشاط من قبل النظام، ولكن تُوضع عليه علامة التصفية الآلية ويُدمر لاحقاً. وحتى لو لم يكن الجهاز مستخدماً، يمكن تدمير جهاز الحلقة لاحقاً. إذا كنت بحاجة إلى انتظار الإزالة الكاملة لجهاز الحلقة، استدعِ udevadm settle بعد losetup.

-D، --detach-all

تُفصل جميع أجهزة الحلقة المرتبطة.

-f، --find [ملف]

يُبحث عن أول جهاز حلقة غير مستخدم. إذا وُجد معامل ملف، يُستخدم الجهاز الذي عُثر عليه كجهاز حلقة. بخلاف ذلك، يُطبع اسمه فقط.

--show

يُعرض اسم جهاز الحلقة المعين إذا وُجد الخيار -f ومعامل ملف.

-L، --nooverlap

التحقق من وجود تعارضات بين أجهزة الحلقة لتجنب الموقف الذي يتم فيه مشاركة ملف النسخ الاحتياطي نفسه بين أكثر من جهاز حلقة. إذا كان الملف مستخدماً بالفعل بواسطة جهاز آخر، فأعد استخدام الجهاز بدلاً من إنشاء جهاز جديد. هذا الخيار منطقي فقط مع --find.

-j، --associated ملف [-o إزاحة]

تُعرض حالة جميع أجهزة الحلقة المرتبطة بالملف (ملف) المعطى.

-o، --offset الإزاحة

تُحرك بداية البيانات بمقدار إزاحة بايت داخل الملف أو الجهاز المحدد. يمكن أن يتبع إزاحة لواحق مضاعفة؛ انظر أعلاه.

--loop-ref سلسلة_محارف

اضبط سلسلة المرجع. المبدئي المتوافق مع الإصدارات السابقة هو استخدام اسم ملف النسخ الاحتياطي كمرجع في ioctl لإعداد الحلقة (المعروف باسم lo_file_name). يتجاوز هذا الخيار هذا السلوك المبدئي ويضبط المرجع على الـ سلسلة. يمكن استخدام المرجع بواسطة udevd في /dev/loop/by-ref. لا تستخدم نواة لينكس المرجع على الإطلاق، ولكن يمكن استخدامه بواسطة بعض الأدوات القديمة التي لا تستطيع قراءة ملف النسخ الاحتياطي من sysfs. المرجع قابل للقراءة فقط للمستخدم الجذر (انظر --output +REF) وهو محدود بـ 64 بايت.

--sizelimit حجم

تُضبط نهاية البيانات بما لا يتجاوز حجم بايت بعد بداية البيانات. يمكن أن يتبع حجم لواحق مضاعفة؛ انظر أعلاه.

-b، --sector-size حجم

ضبط حجم القطاع المنطقي لجهاز الحلقة بالبايت (منذ لينكس 4.14). يمكن استخدام الخيار عند إنشاء جهاز حلقة جديد وكذلك كأمر مستقل لتعديل حجم قطاع جهاز حلقة موجود بالفعل.

-c، --set-capacity loopdev

يُجبر برنامج تشغيل الحلقة على إعادة قراءة حجم الملف المرتبط بجهاز الحلقة المحدد.

-P، --partscan

إجبار النواة على مسح جدول الأقسام على جهاز حلقة تم إنشاؤه حديثاً. لاحظ أن تحليل جدول الأقسام يعتمد على أحجام القطاعات. الحجم المبدئي للقطاع هو 512 بايت، وإلا فستحتاج إلى استخدام الخيار --sector-size جنباً إلى جنب مع --partscan.

-r، --read-only

يُعد جهاز حلقة للقراءة فقط.

--direct-io[=on|off]

تمكين أو تعطيل الإدخال/الإخراج المباشر لملف النسخ الاحتياطي. المبدئي هو off. سيؤدي تحديد --direct-io أو --direct-io=on إلى تمكينه. ولكن، يمكن توفير --direct-io=off لإيقاف تشغيله صراحةً.

-l، --list

إذا حُدد جهاز حلقة أو الخيار -a، فستُطبع الأعمدة المبدئية إما لجهاز الحلقة المحدد أو لجميع أجهزة الحلقة؛ المبدئي هو طباعة معلومات حول جميع الأجهزة. انظر أيضاً --output، و --noheadings، و --raw، و --json.

-O، --output عمود[,‎عمود]...

تحديد الأعمدة التي ستُطبع لمخرجات --list. استخدم --help للحصول على قائمة بجميع الأعمدة المتاحة.

--output-all

أخرج كافة الأعمدة المتاحة.

-n، --noheadings

عدم طباعة العناوين لتنسيق مخرجات --list.

--raw

يُستخدم تنسيق المخرج الخام لـ --list.

-J، --json

يُستخدم تنسيق JSON لمخرج --list.

--remove جهاز_حلقة...

أزل جهاز (أو أجهزة) الحلقة المحددة. يجب أن يكون جهاز الحلقة غير مستخدم (غير مرتبط بأي ملف نسخ احتياطي). يزيل هذا الخيار عقدة الجهاز من النظام. في معظم الحالات، يكون --detach كافياً للاستخدام العادي. انظر قسم دورة حياة جهاز الحلقة أدناه.

-h، --help

اعرض نص المساعدة ثم اخرج.

-V، --version

اعرض الإصدار واخرج.

دورة حياة جهاز الحلقة

تمر أجهزة الحلقة بعدة حالات خلال دورة حياتها:

إنشاء

عندما يربط losetup جهاز حلقة بملف نسخ احتياطي، فإنه ينشئ عقدة الجهاز آلياً (مثلاً، /dev/loop0) إذا لم تكن موجودة بالفعل. يحدث هذا عند الطلب عند استخدام خيارات مثل -f أو تحديد جهاز حلقة صراحةً. وُشئ الجهاز باستخدام ioctl المسمى LOOP_CTL_ADD.

فصل

يفصل الخيار -d (--detach) ملف النسخ الاحتياطي عن جهاز الحلقة باستخدام ioctl المسمى LOOP_CLR_FD. بعد الفصل، تبقى عقدة جهاز الحلقة في /dev ويمكن إعادة استخدامها لملف نسخ احتياطي آخر. استخدم lsblk -a لرؤية جميع عقد أجهزة الحلقة، بما في ذلك غير المستخدمة.

إزالة

يزيل الخيار --remove عقدة جهاز الحلقة تماماً من النظام باستخدام ioctl المسمى LOOP_CTL_REMOVE. يجب فصل الجهاز أولاً (ألا يكون مرتبطاً بأي ملف نسخ احتياطي). بعد الإزالة، تختفي عقدة الجهاز من /dev.

التعمية

لم يعد Cryptoloop متاحاً لصالح dm-crypt. لمزيد من التفاصيل انظر cryptsetup(8).

حالة الخروج

يُرجع losetup القيمة 0 عند النجاح، وقيمة غير صفرية عند الفشل. عندما يعرض losetup حالة جهاز حلقة، فإنه يُرجع 1 إذا كان الجهاز غير مضبوط، و2 إذا حدث خطأ منع من تحديد حالة الجهاز.

ملاحظات

منذ الإصدار 2.37 يستخدم losetup تقنية LOOP_CONFIGURE ioctl لإعداد جهاز حلقة جديد بواسطة نداء ioctl واحد. تستخدم الإصدارات القديمة LOOP_SET_FD و LOOP_SET_STATUS64 ioctls للقيام بنفس الشيء.

البيئة

LOOPDEV_DEBUG=all

يفعّل مخرجات التنقيح.

LIBSMARTCOLS_DEBUG=all

يُفعّل مخرجات تصحيح أخطاء libsmartcols.

LIBSMARTCOLS_DEBUG_PADDING=on

يستخدم محارف حشو مرئية.

الملفات

/dev/loop[0..N]

أجهزة كتلية حلقية

/dev/loop-control

جهاز التحكم بالحلقة

مثال

يمكن استخدام الأوامر التالية كمثال على استخدام جهاز الحلقة.

# dd if=/dev/zero of=~/file.img bs=1024k count=10
# losetup --find --show ~/file.img
/dev/loop0
# mkfs -t ext2 /dev/loop0
# mount /dev/loop0 /mnt
...
# umount /dev/loop0
# losetup --detach /dev/loop0

المؤلفين

Karel Zak <kzak@redhat.com>، بناءً على الإصدارة الأصلية من Theodore Ts’o <tytso@athena.mit.edu>.

التبليغ عن الأخطاء

لتقارير العِلل، استخدم مُتتبع المشكلات https://github.com/util-linux/util-linux/issues.

التوفر

الأمر losetup جزء من حزمة util-linux التي يمكن تنزيلها من أرشيف نواة لينكس https://www.kernel.org/pub/linux/utils/util-linux/.

2026-05-18 util-linux 2.42.1