تبسيط إنشاء Linux من المصدر باستخدام موقع UmVirt LFS Packages

ربما كان العديد من مستخدمي جنو / لينكس ، في ضوء المبادرات الحكومية الأخيرة لإنشاء الإنترنت "السيادي" ، في حيرة لهدف أن تكون في مأمن من عدم توفر مستودعات توزيعات جنو / لينكس الشعبية.

شخص يقوم بتنزيل مستودعات CentOS و Ubuntu ومستودعات دبيان ، يقوم شخص ما بتوزيع توزيعاته استنادًا إلى التوزيعات الحالية ، وبدأ شخص ما مسلحًا بالكتب LFS (Linux From Scratch) و BLFS (ما وراء Linux From Scratch) بالفعل في تجميع توزيعاتهما من المصدر منذ إنه يعتقد أنه في ظروف هجمات القراصنة "السيادية" على الإنترنت ، تفشي الفيروسات ، ستحدث تسربات البيانات بالتأكيد ، وستصبح الثنائيات ببساطة قديمة بعد مرور بعض الوقت.

في الآونة الأخيرة ، أصبح من المفيد تجميع جهاز افتراضي بالكامل من المصدر بناءً على التعليمات الواردة في كتاب Linux From Scratch Systemd Edition v.8.3. أسارع إلى مشاركة النتائج معك.

عملية بناء لينكس


يمكن تقسيم عملية بناء Linux من المصدر إلى ثلاث مراحل:

  1. بناءً على نظام التشغيل الحالي ، تم تصميم بيئة بناء LFS.
  2. إنشاء بيئة الإنشاء صورة الجهاز الظاهري LFS.
  3. يقوم الجهاز الظاهري بتثبيت حزم إضافية من كتاب BLFS غير الموجود في كتاب LFS.

ملفات نصية ثابتة


عند العمل مع بيئة الإنشاء ، من المريح استخدام الحافظة و SSH: نسخ الأوامر من الكتاب ولصقها في وحدة تحكم بيئة البناء.

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

من المعروف أنه يمكن إدخال الأوامر ليس فقط من لوحة المفاتيح ولكن أيضًا من الدفق القياسي (STDIN). يمكن لمصدر الدفق القياسي استخدام المنفذ التسلسلي وكذلك نتيجة البرنامج النصي ما يسمى الإخراج القياسي (STDOUT).

يعرف الكثير من الأشخاص أن الأمر wget يمكنه إخراج محتويات الملف الذي تم تنزيله إلى الإخراج القياسي (STDOUT):

wget http://example.com -O - 

إذا تم إرسال إخراج الأمر wget إلى المترجم الفوري ، فيمكن تنفيذ التعليمات البرمجية التعسفية. سيتم تنفيذ الشفرة كما لو كانت مكتوبة على لوحة المفاتيح أو تم نسخها من الحافظة:

 wget http://umvirt.com/linux/helloworld.sh -O - | bash 

وبالتالي ، يمكنك وضع الملفات بالأوامر على بعض خادم الويب وإرسال محتوياتها إلى المترجم الفوري.

ملفات البرامج النصية الديناميكية


تعد الملفات الثابتة شيئًا جيدًا بالطبع إذا كنت تعرف بالضبط ما يجب القيام به ، وإذا تم تثبيت الحزمة ، وإذا لم يتم تثبيت التبعيات بوضوح أم لا ، فماذا؟

يأتي موقع ديناميكي يستند إلى خادم LAMP Web (Linux-Apache-MySQL-PHP) إلى مرحلة الإنقاذ. إذا كان بإمكان موقع ما إنشاء صفحات (ملفات HTML) وصور بشكل ديناميكي ، فيجب أن يكون قادرًا على التعامل مع الملفات النصية العادية.

وهذا ما حدث. كتب موقع UmVirt LFS Packages الذي يقوم بإنشاء برامج نصية لمترجم Bash. تحتوي قاعدة بيانات الموقع على معلومات حول الحزم والتبعيات والتصحيحات والإضافات وأوامر البناء.

الآن ، لتثبيت حزمة mc (قائد منتصف الليل) ، يمكنك كتابة الأمر:

 wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash 

سيتلقى النص البرمجي للموقع نفسه البيانات من قاعدة البيانات ويقوم بإنشاء رمز للتحقق من التبعيات ورمز البرنامج النصي لتثبيت الحزمة. سيقوم المترجم بمعالجة التعليمات من البرنامج النصي.

لجعل هذا ممكنًا ، يتم تخزين المعلومات حول الحزم المثبتة في قاعدة البيانات على قرص الجهاز الظاهري.

توجد قاعدة بيانات الحزم المثبتة في الدليل / var / cache / ulfs-package وهي قائمة بالملفات الفارغة بأسماء تتوافق مع اسم الحزم.

إذا لم يتم العثور على الحزمة في قاعدة البيانات ، يتم تثبيت التبعية بشكل متكرر.

وسائل الراحة


لجعل تثبيت الحزم أكثر ملاءمة ، كتبت البرنامج النصي chimp النصي موقع ويب UmVirt LFS Assistant آخر يستخدم قاعدة بيانات UmVirt LFS Packages . المهمة الرئيسية لـ UmVirt LFS Assistant هي تنفيذ الأوامر الأخرى.

باستخدام الشمبانزي ، تثبيت الحزم أسهل:

 chimp install mc 

مظاهرة


للتعرف على عمل الخدمات UmVirt LFS Packages و UmVirt LFS Assistant ، يمكنك تنزيل الصورة الأساسية. تحديث الإصدار الأولي . قم بتثبيت Xorg عن طريق تشغيل أمر واحد:

 chimp install X 

في عملية تثبيت البرنامج النصي سيتم تثبيت 141 حزمة في الوضع التلقائي. لتوفير وقت الترجمة ، يمكنك استبدال القيمة في ملف / etc / profile مع متغير MAKEFLAGS من "-j1" (دفق واحد) ، على سبيل المثال ، إلى "-j6" (ستة مؤشرات ترابط).

اللامركزية والتخصيص


لأغراض ضمان الأمن والاستقلال والتخصيص ، تم نشر الكود المصدري لخدمات UmVirt LFS Packages و UmVirt LFS Assistant في المجال العام. يمكن لأي شخص تنزيله ونشره وتعديل الخدمات داخل بنيته الأساسية.

Source: https://habr.com/ru/post/ar445178/


All Articles