mount(2)

الاسم
mount - وصل نظام ملفات

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/mount.h>

int mount(const char *source, const char *target,
          const char *filesystemtype, unsigned long mountflags,
          const void *_Nullable data);

الوصف
يربط mount() نظام الملفات المحدد بواسطة source (والذي غالباً ما يكون مساراً يشير إلى جهاز، ولكن يمكن أن يكون أيضًا مساراً لدليل أو ملف، أو سلسلة نصية وهمية) بالموقع (دليل أو ملف) المحدد بواسطة المسار في target.

تُطلب الامتيازات المناسبة (في لينكس: قدرة CAP_SYS_ADMIN) لوصل أنظمة الملفات.

تُسرد القيم الخاصة بالمعامل filesystemtype التي تدعمها النواة في /proc/filesystems (على سبيل المثال، "btrfs"، و"ext4"، و"jfs"، و"xfs"، و"vfat"، و"fuse"، و"tmpfs"، و"cgroup"، و"proc"، و"mqueue"، و"nfs"، و"cifs"، و"iso9660"). قد تتوفر أنواع إضافية عند تحميل الوحدات النمطية المناسبة.

تُفسر أنظمة الملفات المختلفة المعامل data. عادةً ما يكون سلسلة من الخيارات المفصولة بفاصلة والتي يفهمها نظام الملفات هذا. انظر mount(8) للحصول على تفاصيل حول الخيارات المتاحة لكل نوع من أنواع أنظمة الملفات. يمكن تحديد هذا المعامل كـ NULL في حال عدم وجود خيارات.

يؤدي استدعاء mount() نوعاً واحداً من عدة أنواع عامة من العمليات، اعتماداً على البتات المحددة في mountflags. يُحدد اختيار العملية المراد تنفيذها من خلال اختبار البتات المضبوطة في mountflags، مع إجراء الاختبارات بالترتيب المذكور هنا:

•   إعادة وصل وصلة موجودة: يتضمن mountflags العلم MS_REMOUNT.

•   إنشاء وصلة ربط (bind mount): يتضمن mountflags العلم MS_BIND.

•   تغيير نوع الانتشار لوصلة موجودة: يتضمن mountflags أحد الأعلام MS_SHARED أو MS_PRIVATE أو MS_SLAVE أو MS_UNBINDABLE.

•   نقل وصلة موجودة إلى موقع جديد: يتضمن mountflags العلم MS_MOVE.

•   إنشاء وصلة جديدة: لا يتضمن mountflags أياً من الأعلام المذكورة أعلاه.

تُفصل كل عملية من هذه العمليات لاحقًا في هذه الصفحة. يمكن تحديد أعلام إضافية في mountflags لتعديل سلوك mount()، كما هو موضح أدناه.

  أعلام وصل إضافية
تصف القائمة أدناه الأعلام الإضافية التي يمكن تحديدها في mountflags. لاحظ أن بعض أنواع العمليات تتجاهل بعض أو كل هذه الأعلام، كما هو موضح لاحقًا في هذه الصفحة.

MS_DIRSYNC (منذ لينكس 2.5.19)
    جعل تغييرات الدليل على نظام الملفات هذا متزامنة. (يمكن الحصول على هذه الخاصية للأدلة الفردية أو الأشجار الفرعية باستخدام chattr(1).)

MS_LAZYTIME (منذ لينكس 4.0)
    تقليل التحديثات على القرص للطوابع الزمنية للآينود (atime، mtime، ctime) من خلال الاحتفاظ بهذه التغييرات في الذاكرة فقط. تُحدث الطوابع الزمنية على القرص فقط عندما:

    •   يحتاج الآينود إلى تحديث لتغيير لا علاقة له بالطوابع الزمنية للملف؛

    •   يستخدم التطبيق fsync(2)، أو syncfs(2)، أو sync(2)؛

    •   يُطرد آينود غير محذوف من الذاكرة؛ أو

    •   مرور أكثر من 24 ساعة منذ كتابة الآينود على القرص.

    يقلل خيار الوصل هذا بشكل كبير من عمليات الكتابة اللازمة لتحديث الطوابع الزمنية للآينود، خاصة mtime وatime. ومع ذلك، في حالة تعطل النظام، قد تكون حقول atime وmtime على القرص قديمة بما يصل إلى 24 ساعة.

    تشمل أمثلة أعباء العمل التي قد يكون فيها هذا الخيار ذا فائدة كبيرة عمليات الكتابة العشوائية المتكررة للملفات المحجوزة مسبقاً، بالإضافة إلى الحالات التي يُمكن فيها أيضًا تمكين خيار الوصل MS_STRICTATIME. (تتمثل ميزة الجمع بين MS_STRICTATIME وMS_LAZYTIME في أن stat(2) سيرجع atime المحدث بشكل صحيح، ولكن سيتم تفريغ تحديثات atime إلى القرص فقط في الحالات المذكورة أعلاه.)

MS_MANDLOCK
    السماح بالإغلاق الإلزامي (mandatory locking) للملفات في نظام الملفات هذا. (يجب تمكين الإغلاق الإلزامي على أساس كل ملف، كما هو موضح في fcntl(2).) منذ لينكس 4.5، يتطلب خيار الوصل هذا قدرة CAP_SYS_ADMIN ونواة مهيأة بخيار CONFIG_MANDATORY_FILE_LOCKING. أُهمل الإغلاق الإلزامي تماماً في لينكس 5.15، لذا يجب اعتبار هذا العلم مهجوراً.

MS_NOATIME
    عدم تحديث أوقات الوصول لجميع أنواع الملفات في نظام الملفات هذا.

MS_NODEV
    عدم السماح بالوصول إلى الأجهزة (الملفات الخاصة) في نظام الملفات هذا.

MS_NODIRATIME
    عدم تحديث أوقات الوصول للأدلة في نظام الملفات هذا. يوفر هذا العلم جزءاً من الوظيفة التي يوفرها MS_NOATIME؛ أي أن MS_NOATIME يتضمن MS_NODIRATIME.

MS_NOEXEC
    عدم السماح بتنفيذ البرامج من نظام الملفات هذا.

MS_NOSUID
    عدم احترام بتات set-user-ID وset-group-ID أو قدرات الملف عند تنفيذ البرامج من نظام الملفات هذا. بالإضافة إلى ذلك، تتطلب انتقالات نطاق SELinux إذن nosuid_transition، والذي يتطلب بدوره أيضًا قدرة السياسة nnp_nosuid_transition.

MS_RDONLY
    صل نظام الملفات للقراءة فقط.

MS_REC (منذ لينكس 2.4.11)
    يُستخدم بالاقتران مع MS_BIND لإنشاء وصلة ربط عودية، وبالاقتران مع أعلام نوع الانتشار لتغيير نوع الانتشار بشكل عودي لجميع الوصلات في شجرة فرعية. انظر أدناه لمزيد من التفاصيل.

MS_RELATIME (منذ لينكس 2.6.20)
    عند الوصول إلى ملف في نظام الملفات هذا، يُحدث وقت آخر وصول للملف (atime) فقط إذا كانت القيمة الحالية لـ atime أقل من أو تساوي وقت آخر تعديل للملف (mtime) أو وقت آخر تغيير للحالة (ctime). هذا الخيار مفيد لبرامج مثل mutt(1) التي تحتاج إلى معرفة متى قُرئ الملف منذ آخر تعديل له. منذ لينكس 2.6.30، تتبع النواة سلوك هذا العلم افتراضياً (ما لم يُحدد MS_NOATIME)، ويُطلب العلم MS_STRICTATIME للحصول على الدلالات التقليدية. بالإضافة إلى ذلك، منذ لينكس 2.6.30، يُحدث وقت آخر وصول للملف دائماً إذا كان عمره أكثر من يوم واحد.

MS_SILENT (منذ لينكس 2.6.17)
    كتم عرض رسائل تحذير معينة (printk()) في سجل النواة. يحل هذا العلم محل علم MS_VERBOSE القديم وذي الاسم غير الدقيق (المتوفر منذ لينكس 2.4.12)، والذي له نفس المعنى.

MS_STRICTATIME (منذ لينكس 2.6.30)
    تحديث وقت آخر وصول (atime) دائماً عند الوصول إلى الملفات في نظام الملفات هذا. (كان هذا هو السلوك المبدئي قبل لينكس 2.6.30.) يؤدي تحديد هذا العلم إلى تجاوز تأثير ضبط علمي MS_NOATIME وMS_RELATIME.

MS_SYNCHRONOUS
    جعل عمليات الكتابة في نظام الملفات هذا متزامنة (كما لو تم تحديد علم O_SYNC لـ open(2) لجميع عمليات فتح الملفات في نظام الملفات هذا).

MS_NOSYMFOLLOW (منذ لينكس 5.10)
    عدم تتبع الروابط الرمزية عند حل المسارات. لا يزال بالإمكان إنشاء روابط رمزية، ولا تزال readlink(1) وreadlink(2) وrealpath(1) وrealpath(3) تعمل جميعها بشكل صحيح.

بدءاً من لينكس 2.4 فصاعداً، يمكن ضبط بعض الأعلام المذكورة أعلاه على أساس كل وصلة، بينما ينطبق بعضها الآخر على الكتلة الفائقة (superblock) لنظام الملفات الموصول، مما يعني أن جميع وصلات نفس نظام الملفات تشترك في تلك الأعلام. (سابقاً، كانت جميع الأعلام على مستوى الكتلة الفائقة).

أعلام كل نقطة وصل هي كما يلي:

•   منذ لينكس 2.4: أعلام MS_NODEV وMS_NOEXEC وMS_NOSUID قابلة للضبط على أساس كل نقطة وصل.

•   بالإضافة إلى ذلك، منذ لينكس 2.6.16: MS_NOATIME وMS_NODIRATIME.

•   بالإضافة إلى ذلك، منذ لينكس 2.6.20: MS_RELATIME.

الأعلام التالية هي على مستوى الكتلة الفائقة: MS_DIRSYNC وMS_LAZYTIME وMS_MANDLOCK وMS_SILENT وMS_SYNCHRONOUS. تُحدد الإعدادات الأولية لهذه الأعلام عند أول وصل لنظام الملفات، وستتم مشاركتها بواسطة جميع الوصلات اللاحقة لنفس نظام الملفات. لاحقًا، يمكن تغيير إعدادات الأعلام عبر عملية إعادة وصل (انظر أدناه). ستكون هذه التغييرات مرئية عبر جميع الوصلات المرتبطة بنظام الملفات.

منذ لينكس 2.6.16، يمكن ضبط MS_RDONLY أو مسحه على أساس كل نقطة وصل وكذلك على الكتلة الفائقة لنظام الملفات الأساسي. سيكون نظام الملفات الموصول قابلاً للكتابة فقط إذا لم يتم وسم نظام الملفات ولا نقطة الوصل كـ "للقراءة فقط".

  إعادة وصل وصلة موجودة
قد يُعاد وصل وصلة موجودة من خلال تحديد MS_REMOUNT في mountflags. يتيح لك ذلك تغيير mountflags وdata لوصلة موجودة دون الحاجة إلى فصل نظام الملفات وإعادة وصله. يجب أن يكون target هو نفس القيمة المحددة في استدعاء mount() الأولي.

يُتجاهل المعاملان source وfilesystemtype.

يجب أن تتطابق المعاملات mountflags وdata مع القيم المستخدمة في استدعاء mount() الأصلي، باستثناء تلك المعاملات التي يتم تغييرها عمداً.

يمكن تغيير أعلام mountflags التالية: MS_LAZYTIME وMS_MANDLOCK وMS_NOATIME وMS_NODEV وMS_NODIRATIME وMS_NOEXEC وMS_NOSUID وMS_RELATIME وMS_RDONLY وMS_STRICTATIME (والذي يتمثل تأثيره في مسح علمي MS_NOATIME وMS_RELATIME) وMS_SYNCHRONOUS. تُتجاهل محاولات تغيير إعداد علمي MS_DIRSYNC وMS_SILENT أثناء إعادة الوصل بصمت. لاحظ أن التغييرات في أعلام الكتلة الفائقة تكون مرئية عبر جميع وصلات نظام الملفات المرتبط (لأن أعلام الكتلة الفائقة تشترك فيها جميع الوصلات).

منذ لينكس 3.17، إذا لم يتم تحديد أي من MS_NOATIME أو MS_NODIRATIME أو MS_RELATIME أو MS_STRICTATIME في mountflags، فإن عملية إعادة الوصل تحافظ على القيم الحالية لهذه الأعلام (بدلاً من العودة إلى MS_RELATIME كخيار مبدئي).

منذ لينكس 2.6.26، يمكن استخدام علم MS_REMOUNT مع MS_BIND لتعديل أعلام كل نقطة وصل فقط. هذا مفيد بشكل خاص لضبط أو مسح علم "القراءة فقط" على وصلة دون تغيير معاملات نظام الملفات الأساسي. يُتجاهل المعامل data. تُمحى أعلام كل نقطة وصل الحالية لنقطة الوصل وتُستبدل بتلك الموجودة في mountflags. وهذا يعني أنه إذا كنت ترغب في الحفاظ على أي أعلام موجودة لكل نقطة وصل، فأنت بحاجة إلى تضمينها في mountflags، جنباً إلى جنب مع أعلام كل نقطة وصل التي ترغب في ضبطها (أو مع حذف الأعلام التي ترغب في مسحها). تحديد mountflags كـ:

    MS_REMOUNT | MS_BIND | MS_RDONLY

سيجعل الوصول من خلال نقطة الوصل هذه للقراءة فقط (مع مسح جميع أعلام كل نقطة وصل الأخرى)، دون التأثير على الوصلات الأخرى لنظام الملفات هذا.

  إنشاء وصلة ربط (bind mount)
إذا تضمن mountflags العلم MS_BIND (متوفر منذ لينكس 2.4)، فسيتم تنفيذ وصلة ربط. تجعل وصلة الربط ملفاً أو شجرة أدلة فرعية مرئية عند نقطة أخرى داخل التسلسل الهرمي للدليل الواحد. قد تتجاوز وصلات الربط حدود نظام الملفات وتمتد عبر سجون chroot(2).

يُتجاهل المعاملان filesystemtype وdata.

تُتجاهل أيضًا البتات المتبقية (بخلاف MS_REC الموضح أدناه) في المعامل mountflags. (تمتلك وصلة الربط نفس خيارات الوصل مثل الوصلة الأساسية). ومع ذلك، انظر مناقشة إعادة الوصل أعلاه لمعرفة طريقة جعل وصلة ربط موجودة للقراءة فقط.

مبدئياً، عندما يتم وصل دليل برابط، يُوصل هذا الدليل فقط؛ وإذا كانت هناك أي وصلات فرعية تحت شجرة الدليل، فلا يتم وصلها برابط. إذا تم أيضًا تحديد علم MS_REC، فسيتم تنفيذ عملية وصل ربط عودية: حيث تُوصل جميع الوصلات الفرعية تحت شجرة source الفرعية (بخلاف الوصلات غير القابلة للربط) أيضًا برابط في الموقع المقابل في شجرة target الفرعية.

  تغيير نوع الانتشار لوصلة موجودة
إذا تضمن mountflags أحد الأعلام MS_SHARED أو MS_PRIVATE أو MS_SLAVE أو MS_UNBINDABLE (وكلها متوفرة منذ لينكس 2.6.15)، فسيتم تغيير نوع الانتشار لوصلة موجودة. إذا تم تحديد أكثر من واحد من هذه الأعلام، فسيحدث خطأ.

الأعلام الأخرى الوحيدة التي يمكن تحديدها أثناء تغيير نوع الانتشار هي MS_REC (الموضح أدناه) وMS_SILENT (الذي يتم تجاهله).

يُتجاهل المعاملات source وfilesystemtype وdata.

معاني أعلام نوع الانتشار هي كما يلي:

MS_SHARED
    جعل هذه الوصلة مشتركة. ستنتشر أحداث الوصل والفصل مباشرة تحت هذه الوصلة إلى الوصلات الأخرى التي هي أعضاء في مجموعة نظراء هذه الوصلة. ويعني الانتشار هنا أن نفس عملية الوصل أو الفصل ستحدث آلياً تحت جميع الوصلات الأخرى في مجموعة النظراء. وعلى العكس من ذلك، فإن أحداث الوصل والفصل التي تقع تحت وصلات النظراء ستنتشر إلى هذه الوصلة.

MS_PRIVATE
    جعل هذه الوصلة خاصة. لا تنتشر أحداث الوصل والفصل إلى هذه الوصلة أو خارجها.

MS_SLAVE
    إذا كانت هذه وصلة مشتركة وهي عضو في مجموعة نظراء تحتوي على أعضاء آخرين، فحولها إلى وصلة تابعة (slave). إذا كانت هذه وصلة مشتركة وهي عضو في مجموعة نظراء لا تحتوي على أعضاء آخرين، فحولها إلى وصلة خاصة. بخلاف ذلك، يترك نوع انتشار الوصلة دون تغيير.

    عندما تكون الوصلة تابعة، تنتشر أحداث الوصل والفصل إلى هذه الوصلة من مجموعة النظراء المشتركة (السيد) التي كانت عضواً فيها سابقاً. لا تنتشر أحداث الوصل والفصل تحت هذه الوصلة إلى أي نظير.

    يمكن أن تكون الوصلة تابعة لمجموعة نظراء أخرى بينما تشارك في نفس الوقت أحداث الوصل والفصل مع مجموعة نظراء هي عضو فيها.

MS_UNBINDABLE
    جعل هذه الوصلة غير قابلة للربط. هذا يشبه الوصلة الخاصة، وبالإضافة إلى ذلك لا يمكن وصل هذه الوصلة برابط. عندما يتم تنفيذ وصلة ربط عودية (mount() مع علمي MS_BIND وMS_REC) على شجرة أدلة فرعية، فإن أي وصلات غير قابلة للربط داخل الشجرة الفرعية تُقلم آلياً (أي لا يتم تكرارها) عند تكرار تلك الشجرة الفرعية لإنتاج الشجرة الفرعية المستهدفة.

مبدئياً، يؤثر تغيير نوع الانتشار على وصلة target فقط. إذا تم تحديد علم MS_REC أيضًا في mountflags، فسيتم أيضًا تغيير نوع الانتشار لجميع الوصلات الموجودة تحت target.

لمزيد من التفاصيل المتعلقة بأنواع انتشار الوصلات (بما في ذلك نوع الانتشار المبدئي المخصص للوصلات الجديدة)، انظر mount_namespaces(7).

  نقل الوصلة
إذا احتوى mountflags على العلم MS_MOVE (متاح منذ لينكس 2.4.18)، فسيُنقل شجر فرعي: يحدد source وصلة موجودة، ويحدد target الموقع الجديد الذي ستُنقل إليه هذه الوصلة. عملية النقل ذرية: لا يُفصل الشجر الفرعي في أي مرحلة.

تُتجاهل البتات المتبقية في معطى mountflags، وكذلك معطيي filesystemtype و data.

  إنشاء وصلة جديدة
إذا لم يُحدد أي من MS_REMOUNT أو MS_BIND أو MS_MOVE أو MS_SHARED أو MS_PRIVATE أو MS_SLAVE أو MS_UNBINDABLE في mountflags، فستؤدي mount() فعلها المبدئي: إنشاء وصلة جديدة. يحدد source مصدر الوصلة الجديدة، ويحدد target الدليل الذي ستُنشأ عنده نقطة الوصل.

يُستخدم المعطيان filesystemtype و data، ويمكن تحديد بتات إضافية في mountflags لتعديل سلوك الاستدعاء.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء
قيم الخطأ الواردة أدناه ناتجة عن أخطاء مستقلة عن نوع نظام الملفات. قد يكون لكل نوع نظام ملفات أخطاؤه الخاصة وسلوكه الخاص. انظر كود مصدر نواة لينكس للتفاصيل.

EACCES
    تعذر البحث في أحد مكونات المسار. (انظر أيضًا path_resolution(7).)

EACCES
    حوول وصل نظام ملفات للقراءة فقط دون إعطاء العلم MS_RDONLY.

    قد يكون نظام الملفات للقراءة فقط لأسباب مختلفة، منها: وجوده على قرص بصري للقراءة فقط؛ أو وجوده على جهاز مزود بمفتاح فيزيائي ضُبط ليكون الجهاز للقراءة فقط؛ أو جُمع تنفيذ نظام الملفات بدعم القراءة فقط؛ أو اكتُشفت أخطاء عند وصل نظام الملفات أول مرة، فميز بأنه للقراءة فقط ولا يمكن إعادة وصله للقراءة والكتابة (حتى تُصلح الأخطاء).

    تُعيد بعض نظم الملفات الخطأ EROFS بدلاً من ذلك عند محاولة وصل نظام ملفات للقراءة فقط.

EACCES
    يقع الجهاز الكتلي source على نظام ملفات وُصل بالخيار MS_NODEV.

EBUSY
    حوول تكديس وصلة جديدة مباشرة فوق نقطة وصل موجودة أُنشئت في فضاء أسماء الوصل هذا بنفس الـ source والـ target.

EBUSY
    تعذر إعادة وصل source للقراءة فقط، لأنه لا يزال يحتوي على ملفات مفتوحة للكتابة.

EFAULT
    أحد معطيات المؤشر يشير إلى خارج فضاء عناوين المستخدم.

EINVAL
    احتوى source على كتلة فائقة غير صالحة.

EINVAL
    حوول تنفيذ عملية إعادة وصل (MS_REMOUNT)، لكن source لم يكن موصولاً بالفعل على target.

EINVAL
    حوول تنفيذ عملية نقل (MS_MOVE)، لكن شجرة الوصل تحت source تتضمن وصلات غير قابلة للربط، و target هي وصلة من نوع الانتشار MS_SHARED.

EINVAL
    حوول تنفيذ عملية نقل (MS_MOVE)، لكن الوصلة الأب لوصلة source من نوع الانتشار MS_SHARED.

EINVAL
    حوول تنفيذ عملية نقل (MS_MOVE)، لكن source لم يكن وصلة، أو كان '/'.

EINVAL
    طُلبت عملية ربط (MS_BIND) حيث يشير source إلى رابط سحري لفضاء أسماء الوصل (أي رابط سحري /proc/pid/ns/mnt أو وصلة ربط لمثل هذا الرابط) وكان نوع انتشار الوصلة الأب لـ target هو MS_SHARED، لكن انتشار وصلة الربط المطلوبة قد يؤدي إلى اعتماد دائري يمنع تحرير فضاء أسماء الوصل للأبد.

EINVAL
    يتضمن mountflags أكثر من واحد من MS_SHARED أو MS_PRIVATE أو MS_SLAVE أو MS_UNBINDABLE.

EINVAL
    يتضمن mountflags أحد الأعلام MS_SHARED أو MS_PRIVATE أو MS_SLAVE أو MS_UNBINDABLE ويتضمن أيضًا علمًا آخر غير MS_REC أو MS_SILENT.

EINVAL
    حوول عمل وصلة ربط لوصلة غير قابلة للربط.

EINVAL
    في فضاء أسماء وصل غير مفوض (أي فضاء أسماء وصل يملكه فضاء أسماء مستخدم أنشأه مستخدم غير مفوض)، حوول تنفيذ عملية وصل ربط (MS_BIND) دون تحديد (MS_REC)، مما كان سيؤدي إلى كشف شجرة نظام الملفات تحت إحدى الوصلات الفرعية للدليل الذي يجري ربطه.

ELOOP
    وُجهت روابط كثيرة جدًا أثناء تحليل اسم المسار.

ELOOP
    حوول تنفيذ عملية نقل، وكان target من سلالة source.

EMFILE
    (في حال لم يكن الجهاز الكتلي مطلوبًا:) جدول الأجهزة الوهمية ممتلئ.

ENAMETOOLONG
    كان اسم المسار أطول من MAXPATHLEN.

ENODEV
    لم يُضبط filesystemtype في النواة.

ENOENT
    كان اسم المسار فارغاً أو احتوى على مكون غير موجود.

ENOMEM
    لم تُخصص النواة صفحة خالية لنسخ أسماء الملفات أو البيانات إليها.

ENOSPC
    سيتجاوز عدد الوصلات الحد المسموح به بعد استدعاء النظام هذا في بعض فضاءات أسماء الوصل. يُتحكم في هذا الحد عبر /proc/sys/fs/mount-max، انظر proc_sys_fs(5) لتفاصيل هذا الحد. ينطبق هذا الحد على فضاء أسماء الوصل الذي تحدث فيه عملية الوصل وعلى أي فضاءات أسماء وصل ستنتشر إليها الوصلة. انظر mount_namespaces(7) لتفاصيل فضاءات أسماء الوصل وانتشار الوصلات.

ENOTBLK
    ليس source جهازًا كتليًا (وكان الجهاز مطلوبًا).

ENOTDIR
    ليس target، أو سابقة لـ source، دليلاً.

ENXIO
    الرقم الرئيسي للجهاز الكتلي source خارج النطاق.

EPERM
    لا يملك المستدعي الصلاحيات المطلوبة.

EPERM
    حوول تعديل (MS_REMOUNT) العلم MS_RDONLY أو MS_NOSUID أو MS_NOEXEC، أو أحد أعلام "atime" مثل (MS_NOATIME، MS_NODIRATIME، MS_RELATIME) لوصلة موجودة، لكن الوصلة مقفلة؛ انظر mount_namespaces(7).

EROFS
    حوول وصل نظام ملفات للقراءة فقط دون إعطاء العلم MS_RDONLY. انظر EACCES أعلاه.

المعايير
لينكس.

التاريخ
أُضيفت تعريفات MS_DIRSYNC و MS_MOVE و MS_PRIVATE و MS_REC و MS_RELATIME و MS_SHARED و MS_SLAVE و MS_STRICTATIME و MS_UNBINDABLE إلى ترويسات glibc في glibc 2.12.

منذ لينكس 2.4، يمكن وصل نظام ملفات واحد في عدة نقاط وصل، ويمكن تكديس عدة وصلات على نفس نقطة الوصل.

قد يحتوي معطى mountflags على الرقم السحري 0xC0ED (MS_MGC_VAL) في أعلى 16 بت. (تشغل جميع الأعلام الأخرى التي نوقشت في الوصف الـ 16 بت الأدنى من mountflags). كان تحديد MS_MGC_VAL مطلوبًا قبل لينكس 2.4، ولكنه لم يعد مطلوبًا منذ لينكس 2.4 ويُتجاهل إذا حُدد.

أعيدت تسمية العلم MS_SYNC الأصلي إلى MS_SYNCHRONOUS في 1.1.69 عندما أُضيف علم MS_SYNC مختلف إلى <mman.h>.

قبل لينكس 2.4، كانت أي محاولة لتنفيذ برنامج set-user-ID أو set-group-ID على نظام ملفات موصول بـ MS_NOSUID تفشل بالخطأ EPERM. منذ لينكس 2.4، تُتجاهل بتات set-user-ID و set-group-ID بصمت في هذه الحالة.

ملاحظات

  فضاءات أسماء الوصل
بدءًا من لينكس 2.4.19، يوفر لينكس فضاءات أسماء الوصل. فضاء أسماء الوصل هو مجموعة وصلات نظام الملفات المرئية للعملية. يمكن مشاركة فضاءات أسماء الوصل (وهذا هو المعتاد) بين عدة عمليات، والتغييرات التي تطرأ على فضاء الأسماء (أي عمليات الوصل والفصل) من قبل عملية واحدة تكون مرئية لجميع العمليات الأخرى التي تشترك في نفس فضاء الأسماء. (يمكن اعتبار وضع لينكس ما قبل 2.4.19 على أنه فضاء أسماء واحد تشترك فيه كل عملية في النظام).

تشترك العملية الابنة التي أنشأتها fork(2) في فضاء أسماء الوصل الخاص بأبيها؛ ويُحافظ على فضاء أسماء الوصل عبر execve(2).

يمكن للعملية الحصول على فضاء أسماء وصل خاص إذا: أُنشئت باستخدام العلم CLONE_NEWNS الخاص بـ clone(2)، وفي هذه الحالة يُهيأ فضاء أسمائها الجديد ليكون نسخة من فضاء أسماء العملية التي استدعت clone(2)؛ أو إذا استدعت unshare(2) مع العلم CLONE_NEWNS، مما يؤدي إلى حصول فضاء أسماء وصل المستدعي على نسخة خاصة من فضاء الأسماء الذي كان يشاركه سابقًا مع عمليات أخرى، بحيث تكون عمليات الوصل والفصل المستقبلية التي يقوم بها المستدعي غير مرئية للعمليات الأخرى (باستثناء العمليات الابنة التي ينشئها المستدعي لاحقًا) والعكس صحيح.

لمزيد من التفاصيل حول فضاءات أسماء الوصل، انظر mount_namespaces(7).

  علاقة الأبوة بين الوصلات
لكل وصلة وصلة أب. تحدد علاقة الأبوة الشاملة لجميع الوصلات هرمية الدليل الواحدة التي تراها العمليات داخل فضاء أسماء الوصل.

يُحدد أب الوصلة الجديدة عند إنشاء الوصلة. في الحالة العادية، يكون أب الوصلة الجديدة هو وصلة نظام الملفات الذي يحتوي على الدليل أو الملف الذي أُلحقت به الوصلة الجديدة. في حالة تكديس وصلة جديدة فوق وصلة موجودة، يكون أب الوصلة الجديدة هو الوصلة السابقة التي كانت مكدسة في ذلك الموقع.

يمكن اكتشاف علاقة الأبوة بين الوصلات عبر ملف /proc/pid/mountinfo (انظر أدناه).

  /proc/pid/mounts و /proc/pid/mountinfo
يعرض ملف /proc/pid/mounts الخاص بلينكس قائمة الوصلات في فضاء أسماء وصل العملية ذات المعرف المحدد. يعرض ملف /proc/pid/mountinfo معلومات أكثر عن الوصلات، بما في ذلك نوع الانتشار ومعلومات معرف الوصلة التي تتيح اكتشاف علاقة الأبوة بين الوصلات. انظر proc(5) و mount_namespaces(7) لتفاصيل هذا الملف.

انظر أيضًا
mountpoint(1)، chroot(2)، FS_IOC_SETFLAGS(2const)، mount_setattr(2)، pivot_root(2)، umount(2)، mount_namespaces(7)، path_resolution(7)، findmnt(8)، lsblk(8)، mount(8)، umount(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.