Proyek pemrograman baru: Bunnix
Latar belakang proyek
- Belakangan ini, untuk sejenak menjauh dari "pekerjaan sungguhan", saya memulai proyek pemrograman baru yang berisiko rendah dan murni untuk bersenang-senang.
- Sejak 21 April, saya memutuskan untuk melihat sejauh mana saya bisa membuat sistem operasi mirip Unix untuk target x86_64 dalam waktu sekitar satu bulan.
- Hasilnya adalah sebuah sistem operasi bernama Bunnix.
- Total ada 27 hari yang saya investasikan untuk proyek ini.
Demo Bunnix
Komponen Bunnix
- Kernel Bunnix terutama ditulis dengan Hare, dengan beberapa komponen C (
lwext4, libvterm) disertakan.
- Driver yang didukung:
- PCI (legacy)
- perangkat blok AHCI
- tabel partisi GPT dan MBR
- keyboard PS/2
- port serial platform
- jam CMOS
- framebuffer (diatur oleh bootloader)
- sistem berkas ext4 dan memfs
- Fitur kernel yang didukung:
- sistem berkas virtual
- berbagai perangkat /dev
- emulator terminal dan dukungan termios
- sekitar 40 system call (misalnya
clock_gettime, poll, openat, fork, exec, dll.)
- Bunnix adalah sistem pengguna tunggal, dan saat ini tidak menegakkan mode berkas Unix maupun kepemilikan.
Bootloader
- Menyertakan dua bootloader:
- Boot legacy: ditulis dengan Hare.
- Boot EFI: ditulis dengan C.
- Memuat kernel sebagai file ELF, dan juga memuat initramfs bila diperlukan.
Perangkat lunak ruang pengguna
- Sebagian besar terdiri dari perangkat lunak pihak ketiga:
- Colossal Cave Adventure (advent)
- dash (/bin/sh)
- Doom
- gzip
- less (pager)
- lok (/bin/awk)
- lolcat
- mandoc (halaman man)
- sbase (core utils)
- tcc (kompiler C)
- Vim 5.7
- libc diturunkan dari musl libc dan dimodifikasi sesuai kebutuhan Bunnix.
Proses pengembangan Bunnix
- Proses pengembangan didokumentasikan di Mastodon.
- Sebagian kode Bunnix diambil dari proyek sebelumnya, Helios.
- Dukungan ext4 dan integrasi terminal virtual adalah bagian yang paling sulit.
- Implementasi scheduler dan penanganan sinyal juga menantang.
- Porting perangkat lunak pihak ketiga relatif mudah berkat basis musl libc.
Hal yang dipelajari
- Saya belajar banyak tentang sistem berkas.
- Pendekatan terhadap driver menjadi lebih sederhana.
- Saya jadi memahami kompleksitas penanganan sinyal.
- Saya memastikan bahwa allocator bitmap efektif dalam manajemen memori.
- Saya menyadari bahwa kernel monolitik jauh lebih mudah diimplementasikan daripada mikrokernel.
Rencana ke depan
- Bunnix adalah proyek untuk waktu senggang, dan saat ini saya tidak berencana menginvestasikan waktu lagi untuknya.
- Ke depannya saya akan kembali ke proyek Helios dan menerapkan banyak pelajaran yang didapat.
- Prioritas peningkatan Bunnix:
- cache sistem berkas
- perbaikan bug ext4
- procfs dan top
- file
mmap
- lebih banyak sinyal (misalnya
SIGSEGV)
- dukungan multi-pengguna
- perangkat blok NVMe
- perangkat blok IDE
- dukungan ATAPI dan ISO 9660
- dukungan Intel HD Audio
- stack jaringan
- toolchain Hare di sistem dasar
- self-hosting
Opini GN⁺
- Nilai Bunnix: Bunnix adalah contoh yang bagus dari kernel hacking menggunakan bahasa Hare, dan bisa menarik bagi pengembang yang ingin mempelajari bahasa serta teknologi baru.
- Perancangan sistem berkas: Perancangan sistem berkas adalah bagian penting dalam pengembangan sistem operasi, dan Bunnix bisa menjadi sarana untuk mempelajari banyak hal.
- Monolitik vs mikrokernel: Ini adalah contoh yang baik untuk membandingkan kelebihan dan kekurangan kernel monolitik dan mikrokernel, serta memberi pemahaman yang lebih mendalam tentang perancangan sistem operasi.
- Partisipasi komunitas: Bunnix adalah proyek open source, dan berpotensi berkembang lebih jauh melalui partisipasi serta kontribusi komunitas.
- Peningkatan di masa depan: Rencana peningkatan Bunnix ke depan memberi peluang belajar yang baik bagi orang-orang yang tertarik pada pengembangan sistem operasi.
1 komentar
Komentar Hacker News
Ringkasan kumpulan komentar Hacker News
This is really cool. Reminds me of the original Unix was invented in a couple weeks while Ritchie's family went on vacation to CA to visit his in-laws.
I also finally learned how signals work from top to bottom, and boy is it ugly. I’ve always felt that this was one of the weakest points in the design of Unix and this project did nothing to disabuse me of that notion.
Impressive, super cool, and inspiring!
Example of “creating something impressive in X days” requires a lot of experience and talent that is built over years.
It was really cool watching the ~daily updates on this on Mastodon - seeing how someone so skilled gradually pieces together a complex piece of software.
From "Linux System Call Table – Chromiumos"
Code is here: Git Repository
Hare looks like an interesting language. Though this limitation will limit its adoption in this multicore age I think:
Very cool. Most of these Unix clones are usually written in C. This one is written in a new programming language.
Quite cool, by making use of Hare instead.
Waiting for an OS that treats GPU(s) as a first class citizen ...