חזרה
הרצת Emacs במיקרו-VM של NetBSD עם smolBSD
SiTech AI Team2 წთ. საკითხავი

הרצת Emacs במיקרו-VM של NetBSD עם smolBSD

מפתח שמפרסם בלוג תחת הכינוי The Emacs Cat תיאר כיצד להריץ את Emacs בתוך מכונה וירטואלית זעירה של NetBSD שנבנתה עם smolBSD, ובה הקרנל עולה בתוך 26 אלפיות שנייה והאורח תופס כ-180 MB מזיכרון המארח.

מפתח שמפרסם בלוג תחת הכינוי The Emacs Cat תיאר כיצד להריץ את Emacs בתוך מכונה וירטואלית זעירה של 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

את דימוי המיקרו-VM מגדיר SMOLerfile — קובץ התצורה של smolBSD לשירות מינימלי מבוסס NetBSD. הוא משתמש בפקודות המוכרות של Dockerfile כמו FROM, RUN ו-CMD, אך אינו מממש את כל המפרט. ה-Dockerfile.devsh של המחבר מתחיל בקבוצה base,etc,comp: מערכת הליבה, שלד התצורה וכלי הקומפילציה עם קבצי כותרת, ספריות סטטיות, מקשר ו-make.

תוויות נוספות קובעות את שם השירות devsh, חבילות כמו pkgin, curl, rsync ו-sqlite3, מסוף PTY ודימוי דיסק של 2 GB שנחתך בהמשך למינימום ועוד 512 MB.

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 כמקש ה-escape שלו, ולכן Ctrl-A אינו מגיע לאורח; לחיצה כפולה עובדת, אבל המחבר העדיף למפות מחדש את beginning-of-line ל-M-a.

26 אלפיות שנייה ו-180 MB

סקריפט קטן מריץ את הדימוי: startnb.sh מקבל את קובץ התצורה שנוצר בזמן הבנייה (-f), מסוף PTY (-P), מאפשר לכבות את המכונה מ-ksh (-n 2) ומעביר תיקייה מהמארח אל /mnt של האורח (-w), כך שקוד המקור נשאר במארח.

על מחשב נייד ישן מדגם Dell Latitude 7400 הגרעין של NetBSD עולה בתוך 26 אלפיות שנייה, והמכונה הווירטואלית כולה תופסת בתחילה 180 MB מזיכרון המארח.

מכונת ה-NetBSD עולה במסוף

בפוסט מתאר המחבר את כל הדרך: מהתקנת smolBSD וכתיבת SMOLerfile שמתקין את Emacs ועד בניית הדימוי והרצתו בסקריפט. כך יש לו סביבת פיתוח מלאה של NetBSD שעולה בתוך אלפיות שנייה, בלי מכונה פיזית נפרדת.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.