HN Diumumkan: Sistem operasi mirip Unix Banan-OS yang ditulis dari nol
(github.com/Bananymous)banan-os
Proyek ini adalah sistem operasi hobi yang ditulis dalam C++ dan mendukung arsitektur x86_64 serta i686. Proyek ini memberikan pengalaman belajar yang unik dibandingkan produk lain atau proyek open source yang sudah ada.
Fitur
-
Umum
- Ruang pengguna Ring3
- SMP (multiproses)
- Linear framebuffer (VESA dan GOP)
- Stack jaringan
- Pemuatan executable ELF
- Interpreter AML (parsial)
- Lingkungan grafis dasar
- Emulator terminal
- Bilah status
- Peluncur program
- Beberapa aplikasi yang berguna
- Dynamic linking ELF
- Memori copy-on-write
- Pemetaan file
- Pemetaan anonim
-
Driver
- Disk NVMe
- Disk ATA (IDE, SATA)
- NIC E1000 dan E1000E
- NIC RTL8111/8168/8211/8411
- Keyboard PS2 (semua set scancode)
- Mouse PS2
- USB
- Keyboard
- Mouse
- Penyimpanan massal
- Hub
- Perangkat virtio (jaringan, penyimpanan)
-
Jaringan
- ARP
- ICMP
- IPv4
- UDP
- TCP (parsial dan memiliki bug)
- Unix domain socket
- SSL
-
Sistem file
- Sistem file virtual
- Ext2
- FAT12/16/32
- Dev
- Ram
- Proc
- Sys
- 9P
-
Dukungan bootloader
- GRUB
- Bootloader BIOS kustom
- Bootloader UEFI kustom
Struktur kode
Setiap komponen utama dan pustaka memiliki subdirektori sendiri. Setiap direktori memiliki direktori include yang berisi semua file header untuk komponen tersebut. Semua header disertakan menggunakan path absolut.
Build
Paket yang dibutuhkan
-
apt (diuji pada Ubuntu 22.04)
build-essential,git,ninja-build,texinfo,bison,flex,libgmp-dev,libmpfr-dev,libmpc-dev,parted,qemu-system-x86,cpu-checker
-
pacman
base-devel,git,wget,cmake,ninja,parted,qemu-system-x86
Kompilasi
-
Untuk membangun toolchain untuk sistem operasi ini, Anda dapat menjalankan perintah berikut. Langkah ini hanya perlu dilakukan satu kali, dan mungkin memerlukan waktu lama.
./bos toolchain
-
Untuk membangun sistem operasinya sendiri, Anda dapat menjalankan salah satu perintah berikut. Hak akses root diperlukan untuk membuat/memodifikasi image disk.
./bos qemu./bos qemu-nographic./bos qemu-debug./bos bochs
-
Anda juga dapat membangun kernel atau image disk tanpa menjalankannya.
./bos kernel./bos image
-
Untuk build bagi arsitektur lain, atur variabel lingkungan
BANAN_ARCH=_arch_(mis.BANAN_ARCH=i686). -
Untuk mengganti bootloader, atur variabel lingkungan
BANAN_BOOTLOADER. Nilai yang didukung adalahBANAN(bootloader kustom) danGRUB. -
Untuk menjalankan dengan UEFI, atur variabel lingkungan
BANAN_UEFI_BOOT=1. Selain itu,OVMF_PATHharus diarahkan ke OVMF yang benar (default/usr/share/ovmf/x64/OVMF.fd). -
Jika image disk rusak atau Anda ingin membuat yang baru, Anda dapat menghapus
_build/banan-os.img_secara manual atau menjalankan perintah berikut../bos image-full
-
Script shell completion untuk zsh juga dibuat. Anda dapat menyalin file
_script/shell-completion/zsh/_bos_ke/usr/share/zsh/site-functions/atau menambahkan_script/shell-completion/zsh_kefpathdi.zshrc.
Kontribusi
-
Upstream dihosting di server pribadi, sehingga menggabungkan kontribusi tidak sesederhana di GitHub. Jika Anda mengirim PR di GitHub, diff dapat diunduh dan diterapkan secara manual. Jika diinginkan, akun di server git pribadi juga dapat disediakan. Dalam hal ini, silakan hubungi melalui email atau Discord.
-
Karena ini terutama untuk pengalaman belajar, sebelum menambahkan fitur baru, harap hubungi terlebih dahulu melalui email, Discord, issue, dan sebagainya. Jika Anda mengirim PR tanpa bertanya lebih dulu untuk pekerjaan yang sebenarnya sudah direncanakan, kemungkinan besar PR tersebut akan ditutup. Perbaikan bug selalu diterima.
-
Pesan commit harus diformat sebagai berikut.
- Baris pertama harus berformat " Subject: Description ", dengan Subject menunjukkan area yang terdampak (Kernel, Shell, BuildSystem, dll.), dan Description berupa penjelasan singkat tentang perubahan. Baris pertama harus ditulis dalam 72 karakter atau kurang.
- Isi pesan harus menjelaskan perubahan dan alasan perubahan tersebut secara rinci.
-
Semua commit harus lolos dari hook pre-commit yang didefinisikan di
.pre-commit-config.yaml. Untuk petunjuk menyiapkan pre-commit, silakan lihat pre-commit.com.
1 komentar
Komentar Hacker News
cat doom1.wadPlatanOSsebagai nama alternatif untuk fork