Moxnox 1.0 – bu Windows NT dizaynini ilhomlantirgan, lekin POSIX muvofiqligini ham saqlab qolgan, btrfs fayl tizimida ishlaydigan hobby operatsion tizimdir. Uning eng ajralib turuvchi xususiyati – self‑hosting qobiliyati, ya'ni tizimni o‘zi ustida qurish mumkinligi.
Kontekst va yaratilish sabablari
Moxnox loyihasi 2023‑yilda GitHubda e'lon qilingan. Dasturchi NT‑ga xos syscall modelini tanlab, shu bilan birga Unix‑like muhitga mos GNU bazasini ham qo‘shgan. Bu yondashuv, asosan, ikki dunyo – Windows va Linux – orasidagi bo‘shliqni to‘ldirish, hamda yangi operatsion tizimni o‘rganish uchun ochiq platforma yaratish maqsadida amalga oshirilgan.
Texnik arxitektura
Moxnox 1.0 130 000 dan ortiq C++ kod satridan iborat bo‘lib, amd64 va aarch64 arxitekturalarini qo‘llab‑quvvatlaydi. Tizim btrfs fayl tizimini asosiy saqlash qatlam sifatida ishlatadi, bu esa snapshot, subvolume va copy‑on‑write kabi zamonaviy imkoniyatlarni avtomatik tarzda beradi.
qemu-system-x86_64 -M q35 -enable-kvm -cpu host -m 1024 \
-smp cores=4,threads=1 \
-kernel moxnox-kernel-amd64-1.0.efi \
-append "root=/dev/sda" \
-device ich9-ahci,id=ahci -drive id=disk,file=moxnox-amd64-1.0.img,if=none \
-device ide-hd,drive=disk,bus=ahci.0 \
-nic user,model=virtio-net-pci \
-device qemu-xhci \
-device usb-kbd,id=kbd \
-device usb-tablet,id=tablet \
-serial stdio
- Syscall modeli: Windows NT‑ga o‘xshash, lekin POSIX standartlariga ham mos keladigan interfeyslar.
- GNU bazasi: coreutils, bash, curl kabi asboblar to‘liq integratsiyalashgan.
- Kompilyatsiya: CMake + Ninja, C++ modul tizimi orqali tezkor qurilish.
- CPU optimizatsiyasi: x86‑64‑v3 (2015‑yildan keyingi protsessorlar) uchun AVX512 qo‘llab‑quvvatlanadi; aarch64 uchun LSE atomiklari (ARMv8.1) talab qilinadi.
Qurilish va test jarayoni
Moxnoxni quruq muhitda sinash uchun QEMU tavsiya etiladi. AMD64 uchun quyidagi buyruq namunasi ishlatiladi:
qemu-system-aarch64 -M virt -cpu cortex-a76 -m 1024 \
-smp cores=4,threads=1 \
-kernel moxnox-kernel-aarch64-1.0.efi \
-append "root=/dev/sda" \
-device ich9-ahci,id=ahci -drive id=disk,file=moxnox-aarch64-1.0.img,if=none \
-device ide-hd,drive=disk,bus=ahci.0 \
-nic user,model=virtio-net-pci \
-drive if=pflash,unit=0,file=/usr/share/qemu/edk2-aarch64-code.fd,readonly=on \
-device qemu-xhci \
-device usb-kbd,id=kbd \
-device usb-tablet,id=tablet \
-serial stdio
qemu-system-x86_64 -M q35 -enable-kvm -cpu host -m 1024 \
-smp cores=4,threads=1 \
-kernel moxnox-kernel-amd64-1.0.efi \
-append "root=/dev/sda" \
-device ich9-ahci,id=ahci -drive id=disk,file=moxnox-amd64-1.0.img,if=none \
-device ide-hd,drive=disk,bus=ahci.0 \
-nic user,model=virtio-net-pci \
-device qemu-xhci \
-device usb-kbd,id=kbd \
-device usb-tablet,id=tablet \
-serial stdio
Aarch64 uchun esa qemu-system-aarch64 bilan virt mashinasi, Cortex‑A76 CPU va UEFI kodini yuklash tavsiya etiladi. Qurilish jarayonida Docker konteynerlari maharmstone/moxnox-ci-amd64 yoki maharmstone/moxnox-ci-aarch64 orqali kross‑kompilyatorlar avtomatik o‘rnatiladi.
# mkfs.btrfs /dev/nvme0n1p99
# mkdir /mnt/moxnox
# mount /dev/nvme0n1p99 /mnt/moxnox
# cd /mnt/moxnox
# wget https://github.com/maharmstone/moxnox/releases/download/v1.0/moxnox-amd64-1.0.tar.gz
# tar -xvzf moxnox-amd64-1.0.tar.gz
# rm moxnox-amd64-1.0.tar.gz
# cd
# umount /mnt/moxnox
Self‑hosting imkoniyati
Moxnoxning eng qiziqarli jihati – tizimni o‘zida qurish. Buning uchun avval btrfs‑progsning so‘nggi versiyasi o‘rnatilishi, 32 GB hajmli bo‘lim yaratilib, mkfs.btrfs orqali formatlanishi kerak. Keyin wget bilan tarball yuklab, arxivni ochib, ninja orqali qurish amalga oshiriladi. Qurilish jarayonida gcc, llvm va rust kabi katta kompilyatorlar standartda kiritilmagan, chunki ular xotira va vaqt talabini oshiradi.
# mount /boot/efi
# cd /boot/efi
# wget https://github.com/maharmstone/moxnox/releases/download/v1.0/moxnox-kernel-amd64-1.0.efi
Qurilma qo‘llab‑quvvatlashi
Moxnox quyidagi qurilma turlarini tan oladi:
# efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Moxnox" -l '\moxnox-kernel-amd64-1.0.efi' -u 'root=/dev/nvme0n1p99'
- Blok qurilmalar: NVMe, SATA, SDHCI, virtio‑block, USB mass storage.
- Tarmoq kartalari: virtio‑net, RTL8168, RTL8125.
- Kirish qurilmalari: USB HID, PS/2 klaviatura, PS/2 sichqoncha, virtio‑input.
- Grafik: virtio‑gpu, GOP framebuffer, VBE, VGA matn konsoli.
- Serial portlar: virtio‑console, x86 serial, PL011 ARM.
- USB: XHCI.
ARM platformasida faqat ACPI qo‘llab‑quvvatlanadi, Device Tree emas; shuning uchun Raspberry Pi 5 kabi LSE atomiklarini qo‘llab‑quvvatlaydigan qurilmalar uchun maxsus UEFI (rpi5‑uefi) kerak bo‘ladi.
$ git clone https://github.com/maharmstone/moxnox
$ cd moxnox
Cheklovlar va ochiq savollar
Moxnox hali battle‑hardened btrfs drayveriga ega emas, shuning uchun faqat test maqsadida, muhim maʼlumotlarni o‘zgartirmaslik tavsiya etiladi. Shuningdek, rust‑ asosidagi dasturlar (hexyl, ripgrep) standart qurilishda kiritilmagan, ularni alohida modul sifatida qo‘shish zarur. Xotira talabi ham sezilarli – self‑hosting uchun kamida 8 GB RAM tavsiya qilinadi.
$ git submodule update --init --depth 1 ports/acpica/repo ports/freetype/repo ports/gnu-efi/repo ports/harfbuzz/repo ports/libpng/repo ports/mingw-w64/repo ports/zlib/repo ports/musl/repo ports/tre/repo
Bozor va jamiyatga ta'siri
Moxnox hobby‑dasturchilar, operatsion tizim arxitekturasi o‘rganuvchilari va btrfs ixlosmandlari uchun qiziqarli eksperiment platformasidir. U Windows‑ga o‘xshash syscall modelini ochiq kodli muhitda sinab ko‘rish imkonini beradi, shu bilan birga POSIX muhitiga moslashgan GNU asboblari bilan birga ishlashni ta’minlaydi. Kelajakda loyiha yanada barqaror btrfs drayveri, kengaytirilgan paket menejeri va ko‘proq apparat platformalarini qo‘llab‑quvvatlash orqali akademik hamjamiyatda keng tarqalishi kutilmoqda.
Xulosa
Moxnox 1.0 – NT‑ga o‘xshash syscall, btrfs asosidagi fayl tizimi, va self‑hosting imkoniyatini birlashtirgan noyob hobby OS. Uning kod bazasi, qurilish jarayoni va apparat qo‘llab‑quvvatlashi texnik jihatdan chuqur tahlilga loyiq bo‘lib, operatsion tizim dizayni va fayl tizimi integratsiyasini o‘rganish uchun ajoyib manba hisoblanadi. Hozirgi bosqichda eksperimental darajada bo‘lsa-da, loyiha kelajakda yanada barqaror va kengaytirilgan versiyalarini yaratish yo‘lida muhim qadam bo‘lishi mumkin.
Asl manba: github.com