
smolBSD ilə NetBSD mikroVM-də Emacs işlətmək
The Emacs Cat təxəllüsü ilə yazan developer C şəbəkə kitabxanasını NetBSD-də yoxlamaq üçün smolBSD ilə kiçik mikroVM qurdu: nüvə 26 ms-də yüklənir, bütün virtual maşın isə təxminən 180 MB yaddaş tutur.
The Emacs Cat təxəllüsü ilə bloq yazan developer, Emacs-in smolBSD ilə qurulmuş NetBSD mikroVM-də işlədilməsini təsvir edib. smolBSD xidməti bir neçə millisaniyəyə işə salan minimal BSD UNIX virtual maşınıdır. Başlanğıc nöqtəsi adi bir mühəndislik işi idi: C şəbəkə kitabxanasının NetBSD-də də Ubuntu və macOS-dakı kimi qurulduğuna əmin olmaq istəyirdi.
Niyə NetBSD
NetBSD daşınma qabiliyyəti ilə tanınan açıq kodlu Unix bənzəri sistemdir: müasir x86-64 və aarch64 serverlərdən quraşdırılmış sistemlərə, VAX, m68k kimi köhnə maşınlara qədər işləyir. Uzun illərdir işlənən şüarı da buna görə belədir: «Of course it runs NetBSD». Müəllif qeyd edir ki, bu, mahiyyət etibarilə köhnə, yaxşı 4.3BSD-dir. Evində ayrı NetBSD maşını olmadığı üçün virtual maşını seçib.
Dockerfile üslubunda SMOLerfile
mikroVM obrazını SMOLerfile müəyyənləşdirir: bu, smolBSD-nin minimal NetBSD xidmətini təsvir edən konfiqurasiya faylıdır. O, FROM, RUN və CMD kimi tanış Dockerfile əmrlərindən istifadə edir, lakin spesifikasiyanın tamamını tətbiq etmir. Müəllifin Dockerfile.devsh faylı base,etc,comp dəsti ilə başlayır: nüvə sistem, /etc konfiqurasiya skeleti və başlıq faylları, kitabxanalar, linker və make olan kompilyator alətləri.
Etiketlər devsh xidmət adını, pkgin, curl, rsync və sqlite3 paketlərini, PTY konsolunu və minimum üstəgəl 512 MB-a kəsilən 2 GB-lıq disk obrazını təyin edir.
Qonaq sistemin içində Emacs
Tələblər qısa idi: interaktiv shell (NetBSD-də standart ksh-dir), gcc, make və ld olan kompilyator alətləri və əlbəttə ki, Emacs. NetBSD vim deyil, vi versiyası 1.81.6-2013-11-20nb4 ilə gəlir; müəllif Emacs-i pkgin ilə emacs-nox11 kimi quraşdırdı və standart bsdmake əvəzinə GNU make (gmake) əlavə etdi.
Kiçik ~/.emacs faylı sütun nömrələrini, mötərizə cütlüyünün göstərilməsini və C üçün stroustrup üslubu ilə 4 boşluqlu abzası açır. Bir detal: QEMU Ctrl-A-nı öz escape düyməsi kimi istifadə etdiyi üçün Ctrl-A qonaq sistemə çatmır; iki dəfə basmaq işləyir, lakin müəllif beginning-of-line funksiyasını M-a düyməsinə keçirdi.
26 millisaniyə və 180 MB
Obrazı kiçik bir skript işə salır: startnb.sh qurulma zamanı yaranan konfiqurasiyanı (-f), PTY konsolunu (-P) götürür, maşını ksh-dən söndürməyə imkan verir (-n 2) və hostdakı qovluğu qonağın /mnt yoluna bağlayır (-w).
Köhnə Dell Latitude 7400 noutbukda NetBSD nüvəsi 26 ms-də yüklənir, bütün virtual maşın isə başlanğıcda 180 MB host yaddaşı tutur.
Yazıda bütün yol təsvir olunur: smolBSD-nin quraşdırılmasından obrazın qurulub skriptlə işə salınmasına qədər; beləliklə, ayrı fiziki maşın olmadan millisaniyələr içində açılan tam NetBSD inkişaf mühiti əldə olunur.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.