العودة
تشغيل Emacs داخل microVM من NetBSD بمساعدة smolBSD
SiTech AI Team3 წთ. საკითხავი

تشغيل Emacs داخل microVM من NetBSD بمساعدة smolBSD

نشر مطوّر يكتب مدونة باسم The Emacs Cat تجربته في تشغيل Emacs داخل آلة افتراضية صغيرة من NetBSD بُنيت بأداة smolBSD: نواة النظام تُقلع خلال 26 ميلي ثانية، والجهاز الافتراضي يستهلك نحو 180 ميغابايت من ذاكرة المضيف.

نشر مطوّر يكتب مدونة باسم The Emacs Cat تجربته في تشغيل Emacs داخل آلة افتراضية صغيرة (microVM) من NetBSD بُنيت بأداة smolBSD، وهي آلة BSD UNIX مصغّرة تُقلع وتُشغّل خدمة خلال بضعة أجزاء من الألف من الثانية. كانت نقطة البداية مهمة هندسية عادية: التحقق من أن مكتبة شبكات كتبها بلغة C وسلسلة أدوات المترجم كاملة تُبنى على NetBSD بالطريقة نفسها التي تعمل بها على Ubuntu وmacOS.

لماذا NetBSD

NetBSD نظام شبيه بـ Unix ومفتوح المصدر معروف بقابلية النقل. يعمل على خوادم ومحطات عمل حديثة بمعماريتي x86-64 وaarch64، وعلى أنظمة مدمجة وأجهزة محمولة، وعلى أجهزة قديمة مثل VAX وm68k، وحتى على بعض أجهزة الألعاب. لذلك يحمل شعاره القديم عبارة «Of course it runs NetBSD». ويشير الكاتب إلى أنه في جوهره نظام 4.3BSD القديم والجيد، وهو ما يضفي لمسة من الحنين. ولأنه لا يملك جهاز NetBSD مخصصاً في مركز البيانات المنزلي، فقد اختار آلة افتراضية.

SMOLerfile بأسلوب Dockerfile

يُعرَّف الـ microVM عبر ملف SMOLerfile، وهو ملف إعدادات smolBSD لخدمة NetBSD مصغّرة. يستخدم أوامر Dockerfile المألوفة مثل FROM وRUN وCMD، لكنه لا يطبّق المواصفة الكاملة. يبدأ ملف Dockerfile.devsh لدى الكاتب من مجموعة base,etc,comp: نظام النواة، وهيكل الإعدادات، وسلسلة أدوات المترجم مع ملفات الترويسة والمكتبات الساكنة والرابط وأداة make.

وتحدد وسوم إضافية اسم الخدمة devsh، وحزم pkgin وcurl وrsync وsqlite3، وطرفية PTY، وصورة قرص بحجم 2 غيغابايت تُقلَّص لاحقاً إلى الحد الأدنى مضافاً إليه 512 ميغابايت.

Emacs داخل النظام الضيف

كانت المتطلبات قليلة: صدفة تفاعلية (ksh هي الافتراضية في NetBSD)، وسلسلة أدوات المترجم مع gcc وmake وld، وبالطبع Emacs. يأتي NetBSD مع vi وليس vim بإصدار 1.81.6-2013-11-20nb4، لكن الكاتب أراد Emacs، فثبّته عبر pkgin باسم emacs-nox11 وأضاف GNU make (gmake) بدلاً من bsdmake الافتراضي.

ملف ~/.emacs مصغّر يفعّل أرقام الأعمدة وإبراز الأقواس وإزاحة من 4 فراغات بنمط stroustrup للغة C. وهناك تفصيل واحد: يستخدم QEMU المفتاح Ctrl-A كمفتاح هروب خاص به، لذا لا يصل Ctrl-A إلى النظام الضيف؛ الضغط مرتين ينجح، لكن الكاتب أعاد ربط beginning-of-line بالمفتاح M-a.

26 ميلي ثانية و180 ميغابايت

يشغّل الصورةَ سكربت صغير: يأخذ startnb.sh ملف الإعدادات المُنشأ أثناء البناء (-f)، وطرفية PTY (-P)، ويتيح إيقاف الآلة من ksh (-n 2)، ويربط مجلداً من المضيف بمسار /mnt لدى الضيف (-w)، ليبقى الكود المصدري على المضيف.

على حاسوب محمول قديم من طراز Dell Latitude 7400 تُقلع نواة NetBSD خلال 26 ميلي ثانية، وتستهلك الآلة الافتراضية كاملةً في البداية 180 ميغابايت من ذاكرة المضيف.

إقلاع الـ microVM من NetBSD في الطرفية

يشرح الكاتب في التدوينة المسار كاملاً: من تثبيت smolBSD وكتابة ملف SMOLerfile الذي يثبّت Emacs إلى بناء الصورة وتشغيلها بالسكربت. وهكذا تصبح لديه بيئة تطوير كاملة لـ NetBSD تُقلع خلال أجزاء من الألف من الثانية دون جهاز فيزيائي منفصل.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.