Geri Dön
smolBSD ile NetBSD mikroVM içinde Emacs çalıştırmak
SiTech AI Team2 წთ. საკითხავი

smolBSD ile NetBSD mikroVM içinde Emacs çalıştırmak

The Emacs Cat takma adıyla yazan bir geliştirici, C ağ kütüphanesini NetBSD üzerinde doğrulamak için smolBSD ile küçük bir mikroVM kurdu: çekirdek 26 ms'de açılıyor ve sanal makine yaklaşık 180 MB ana makine belleği kullanıyor.

The Emacs Cat takma adıyla blog yazan bir geliştirici, Emacs'i smolBSD ile oluşturulmuş bir NetBSD microVM içinde çalıştırma sürecini anlattı. smolBSD, bir hizmeti birkaç milisaniyede başlatan minimal bir BSD UNIX sanal makinesi. Çıkış noktası sıradan bir mühendislik işiydi: C ağ kütüphanesinin NetBSD üzerinde de Ubuntu ve macOS'taki gibi derlendiğini doğrulamak istiyordu.

Neden NetBSD

NetBSD, taşınabilirliğiyle tanınan açık kaynaklı bir Unix benzeri sistem: x86-64 ve aarch64 sunucularda, gömülü sistemlerde, VAX ve m68k gibi eski makinelerde, hatta bazı oyun konsollarında çalışıyor. Uzun süredir kullanılan sloganı bu yüzden «Of course it runs NetBSD». Yazar, sistemin özünde eski dost 4.3BSD olduğunu belirtiyor. Evinde ayrı bir NetBSD makinesi olmadığı için sanal makineyi seçti.

Dockerfile tarzında bir SMOLerfile

microVM imajını SMOLerfile tanımlıyor: smolBSD'nin minimal bir NetBSD hizmetini tarif eden yapılandırma dosyası. FROM, RUN ve CMD gibi tanıdık Dockerfile komutlarını kullanıyor, ancak şartnamenin tamamını uygulamıyor. Yazarın Dockerfile.devsh dosyası base,etc,comp kümesiyle başlıyor: çekirdek sistem, /etc yapılandırma iskeleti ve başlık dosyaları, kütüphaneler, bağlayıcı ve make içeren derleyici araç zinciri.

Etiketler devsh hizmet adını, pkgin, curl, rsync ve sqlite3 paketlerini, PTY konsolunu ve minimum artı 512 MB'a kırpılan 2 GB'lık disk imajını belirliyor.

Konuk sistem içinde Emacs

Gereksinimler kısaydı: etkileşimli bir kabuk (NetBSD'de varsayılan ksh), gcc, make ve ld içeren araç zinciri ve elbette Emacs. NetBSD, vim değil vi sürümü 1.81.6-2013-11-20nb4 ile geliyor; yazar Emacs'i pkgin ile emacs-nox11 olarak kurdu ve varsayılan bsdmake yerine GNU make (gmake) ekledi.

Küçük bir ~/.emacs dosyası sütun numaralarını, parantez eşleştirmeyi ve C için stroustrup stilini açıyor. Bir ayrıntı: QEMU, Ctrl-A'yı kendi kaçış tuşu olarak kullandığı için Ctrl-A konuk sisteme ulaşmıyor; iki kez basmak işe yarıyor, ama yazar beginning-of-line işlevini M-a tuşuna taşıdı.

26 milisaniye ve 180 MB

İmajı küçük bir betik başlatıyor: startnb.sh derleme sırasında oluşturulan yapılandırmayı (-f), PTY konsolunu (-P) alıyor, makineyi ksh'den kapatmaya izin veriyor (-n 2) ve ana makinedeki bir dizini konuğun /mnt yoluna bağlıyor (-w).

Eski bir Dell Latitude 7400 dizüstünde NetBSD çekirdeği 26 ms'de açılıyor ve sanal makinenin tamamı başlangıçta 180 MB ana makine belleği kullanıyor.

NetBSD microVM terminalde açılırken

Yazıda yazar tüm süreci anlatıyor: smolBSD kurulumundan imajın derlenip betikle çalıştırılmasına kadar; böylece ayrı bir fiziksel makine olmadan milisaniyeler içinde açılan tam bir NetBSD geliştirme ortamına sahip oluyor.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.