السلام عليكم ورحمة الله وبركاته
أستعمل ملفات iso بكثرة، ودائماً اعمل mount لها للوصول الى محتوياتها، بالضبط نفس طريقة برامج الـ Virtual Drive … ولكن قبل فترة واجهتني مشكلة وهي إني حاولت عمل mount لملف iso آخر غير الملفات التي قمت بعمل mount لها سابقاً وإذا تظهر لي هذه المشكلة:
mount: could not find any free loop device
بعدها عملت التالي:
ls -d /dev/loop*
وكان الناتج هو:
/dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
/dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7
يعني لدي 8 (ثمانية) من الـ loop devices فقط … وبما إني مستعملهم كلهم !!! فلم يعد هناك مكان لعمل mount لملف الـ iso الجديد !!!
ما هو العمل؟ أو الحل؟
الجواب: نقوم بإضافة loop devices جديدة وانتهى الموضوع …
تحذير: الحل هذا أنا عملته على توزيعة أوبنتو 8.04 فأرجوا ان تتأكد من توزيعتك قبل التطبيق !!!
أول حاجة لنقوم بإنشاء هذه الأجهزة (loop) من خلال الـ for loop التالي:
for i in $(seq 0 255); do
mknod -m0660 /dev/loop$i b 7 $i
chown root.disk /dev/loop$i
done
أو حمل السكربت من هنا —> أضغط
هذا سيقوم بعمل 256 جهاز loop لك وبالتالي لن تعاني من نقصان الـ loop devices بعد اليوم … للتأكد من وجودهم:
ls -d /dev/loop*
سترى الآن عدد كبير جداً منهم (256) واحد … طبعاً ربما يسأل سائل لماذا هم فقط 8 أو المسموح هو فقط 8؟
الجواب هو بإنه النواة هي التي قامت بتحديد ذلك، ولهذا عليك زيادتها … في بعض التوزيعات لن تستطيع زيادتها بالطريقة التي ذكرتها بالأعلى، ولهذا عليك زيادتها من خلال التالي:
/etc/modprobe.conf
وضع الخيار:
options loop max_loop=64
بعدها قم بحذف الموديول الخاص بـ loop وإعادته مرة أخرى من خلال الأمر:
rmmod loop && modprobe loop
أو قم بعمل إعادة تشغيل للنظام وسيعمل الأمر تلقائي. أذا أردت إضافته في توزيعة أوبنتو، فإنك تستطيع ذلك من خلال الملف:
vim /etc/modprobe.d/options
ملاحظة مهمة جداً: هذه الطريقة لن تضبط إذا كانت لديك ملفات iso موجودة mounted . عليك إخراجها ومن ثم التطبيق.
والآن أعمل mount لملفات الـ iso التي لديك براحتك ولن يقول لك احد ما عندي جهاز فارغ لحضرتك ::18
mount -o loop file.iso /mount-point/
ودمتم …