الفرق بين bin ، sbin ، usr / bin ، usr / sbin

في 30 نوفمبر 2010 ، كتب ديفيد كولير:

لقد لاحظت أنه في BUSYBOX يتم تقسيم الروابط إلى هذه الأدلة الأربعة.
هل هناك قاعدة بسيطة لتحديد الدليل الذي يجب أن تقع فيه الروابط ...
على سبيل المثال ، القتل في / bin ، و killall في / usr / bin ... لا أرى أي منطق في هذا التقسيم.

ربما تعلم أن كين طومسون ودينيس ريتشي أنشأوا Unix على PDP-7 في عام 1969. لذلك ، حوالي عام 1971 ، قاموا بالترقية إلى PDP-11 بزوج من أقراص RK05 (1,5 ميغابايت لكل منهما).

عندما نما نظام التشغيل ولم يعد مناسبًا للقرص الأول (الذي كان يوجد عليه جذر FS) ، انتقلوا الجزء إلى الثاني ، حيث توجد أدلة المنزل (لذلك ، تم استدعاء نقطة التحميل / usr - من الكلمة مستخدم). قاموا بتكرار جميع أدلة نظام التشغيل الضرورية هناك (/ bin ، / sbin ، / lib ، / tmp ...) ووضعوا الملفات على قرص جديد ، لأن المساحة القديمة نفدت. ثم حصلوا على قرص ثالث ، قاموا بتثبيته في الدليل / home ونقلوا الدلائل الرئيسية للمستخدمين هناك حتى يتمكن نظام التشغيل من شغل كل المساحة المتبقية على قرصين ، وكانت هذه ما يصل إلى ثلاثة ميغا بايت (رائع!).

بالطبع ، كان عليهم وضع قاعدة مفادها أنه "عند تشغيل نظام التشغيل ، يجب أن يكون قادرًا على تحميل قرص ثانٍ في / usr ، لذلك لا تضع برامج مثل mount على القرص الثاني في / usr وإلا ستحصل على مشكلة دجاجة وبيضة ". بكل بساطة. وكان ذلك في Unix V6 منذ 35 عامًا.

تقسيم / bin و / usr / bin (وجميع هذه الأدلة) هو إرث من تلك الأحداث ، تفاصيل تنفيذ من السبعينيات تم نسخها من قبل البيروقراطيين لعقود حتى الآن. لم يسألوا السؤال قط لماذالقد فعلوها للتو. لم يعد هذا التقسيم منطقيًا حتى قبل إنشاء Linux ، وذلك لعدة أسباب:

  1. عند التمهيد ، يتم استخدام initrd أو initramfs ، والتي تهتم بمشكلات مثل "نحتاج إلى هذا الملف قبل ذلك". وهكذا لدينا بالفعل نظام الملفات المؤقت الذي يستخدم لتحميل كل شيء آخر.
  2. لا تسمح لك المكتبات المشتركة (التي تمت إضافتها إلى Unix بواسطة الأشخاص في Berkley) بتغيير محتويات / lib و / usr / lib بشكل مستقل. يجب أن يتطابق هذان الجزءان وإلا فلن يعملوا. لم يحدث هذا في عام 1974 لأنهم حصلوا على بعض الاستقلالية في ذلك الوقت بسبب الارتباط الثابت.
  3. كسرت محركات الأقراص الثابتة الرخيصة حاجز 100 ميغا بايت تقريبًا في عام 1990 ، وفي نفس الوقت تقريبًا ، ظهر برنامج تغيير حجم القسم (صدر القسم السحري 3.0 في عام 1997).

بالطبع ، نظرًا لوجود تقسيم ، توصل بعض الأشخاص إلى قواعد تبرره. مثل ، قسم الجذر مطلوب لجميع أنواع ميزات نظام التشغيل العامة ، وتحتاج إلى وضع ملفاتك المحلية في / usr. أو أدخل / ما توزعه AT&T ، وفي / usr ما أضافه توزيعك ، IBM AIX ، أو Dec Ultrix ، أو SGI Irix ، و / usr / local يحتوي على ملفات خاصة بنظامك. ثم قرر شخص ما أن / usr / local لم يكن المكان المناسب لتثبيت برامج جديدة ، لذلك دعنا نضيف / نختار! لن أتفاجأ إذا ظهر / opt / local أيضًا ...

بالطبع ، على مدار 30 عامًا ، بسبب هذا الفصل ، ظهرت واختفت كل أنواع القواعد الخاصة بالتوزيع المثيرة للاهتمام. على سبيل المثال ، "يتم مسح / tmp عند إعادة التشغيل ، لكن / usr / tmp ليس كذلك." (وفي أوبونتو لا يوجد / usr / tmp من حيث المبدأ ، وفي Gentoo / usr / tmp هو رابط رمزي لـ / var / tmp ، والذي يخضع الآن لهذه القاعدة ، ولا يتم مسحه عند إعادة التشغيل. نعم ، هذا كان كل شيء قبل أن يحدث أيضًا أن الجذر FS للقراءة فقط ، وبعد ذلك لا تحتاج إلى كتابة أي شيء إلى / usr أيضًا ، ولكن عليك الكتابة إلى var. أساسيا لا يمكن الكتابة إلا في / etc ، والذي تمت محاولة نقله أحيانًا إلى var ...)

يسعد البيروقراطيون مثل مؤسسة لينكس (التي ابتلعت مجموعة المعايير الحرة خلال توسعها منذ سنوات) بتوثيق وتعقيد هذه القواعد دون محاولة معرفة سبب وجودها. ما لم يدركوه هو أن كين ودينيس قد نقلوا جزءًا من نظام التشغيل إلى دليلهم الرئيسي لأن قرص RK05 على PDP-11 كان صغيرًا جدًا.

أنا متأكد تمامًا من أن BUSYBOX يضع الملفات بنفس الطريقة التي تم تطويرها تاريخيًا. لا يوجد سبب حقيقي للقيام بذلك حتى الآن. أنا شخصياً أقوم بإنشاء رابط / bin و / sbin و / lib لأدلة مماثلة في / usr. بعد كل شيء ، يحاول الأشخاص الذين يعملون مع البرامج المضمنة فهم وتبسيط ...

المصدر: www.habr.com

إضافة تعليق