
Emacs NetBSD-ის microVM-ში: smolBSD მილიწამებში ირთვება
დეველოპერის ბლოგზე, ფსევდონიმით „The Emacs Cat“, გამოქვეყნდა ჩანაწერი იმის შესახებ, თუ როგორ გაუშვა ავტორმა Emacs NetBSD-ის microVM-ში. მიკრო-ვირტუალური მანქანა smolBSD-ის SMOLerfile-ით ააგო, ბირთვი კი ძველ ლეპტოპზე 26 მილიწამში ირთვება.
დეველოპერი, რომელიც ბლოგს ფსევდონიმით „The Emacs Cat“ აწარმოებს, აღწერს, როგორ გაუშვა Emacs NetBSD-ის microVM-ში. ამისთვის მან გამოიყენა 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-ის კონფიგურაციის ფაილი, რომელიც Dockerfile-ის ნაცნობ ბრძანებებს იყენებს (FROM, RUN, CMD), სრულ სპეციფიკაციას კი არ მოიცავს. ავტორის Dockerfile.devsh იწყება base, etc, comp ნაკრებით: ესაა ბირთვული სისტემა, /etc-ის კონფიგურაციის ჩონჩხი და კომპილატორის ხელსაწყოები ჰედერებით, ლინკერითა და make-ით.
დამატებით მითითებულია სერვისის სახელი devsh, პაკეტები pkgin, curl, rsync და sqlite3, PTY-კონსოლი და დისკის 2 გბ-იანი იმიჯი, რომელიც ბოლოს მინიმუმამდე იჭრება და დამატებით 512 MB-ს ინახავს.
Emacs microVM-ის შიგნით
მოთხოვნები მცირე იყო: ინტერაქტიული shell (NetBSD-ში ნაგულისხმევია ksh), კომპილატორის ხელსაწყოები (gcc, make, ld) და, რა თქმა უნდა, Emacs. NetBSD-ს წინასწარ დაყენებული აქვს vi (და არა vim) 1.81.6-2013-11-20nb4 ვერსიით; ავტორმა Emacs pkgin-ით დააყენა (emacs-nox11) და ნაგულისხმევი bsdmake-ის ნაცვლად GNU make (gmake) აირჩია.
მინიმალურ ~/.emacs ფაილში ჩართულია სვეტის ნომრები, ფრჩხილების წყვილის ჩვენება და C ენისთვის stroustrup სტილი; /etc/shrc-ში ჩაწერილი ბრძანება set -o emacs კი shell-ს Emacs-ის კლავიშებს აძლევს.
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 მანქანის გარეშე ავტორს სრულფასოვანი დეველოპმენტის გარემო ხელთ აქვს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.