HN’de tanıtıldı: Sıfırdan yazılmış Unix benzeri işletim sistemi Banan-OS
(github.com/Bananymous)banan-os
Bu proje C++ ile yazılmış bir hobi işletim sistemidir ve x86_64 ile i686 mimarilerini destekler. Başka ürünler veya mevcut açık kaynak projelerle kıyaslandığında benzersiz bir öğrenme deneyimi sunar.
Özellikler
-
Genel
- Ring3 kullanıcı alanı
- SMP (çoklu işlem)
- Doğrusal framebuffer (VESA ve GOP)
- Ağ yığını
- ELF çalıştırılabilir dosya yükleme
- AML yorumlayıcısı (kısmi)
- Temel grafik ortamı
- Terminal emülatörü
- Durum çubuğu
- Program başlatıcı
- Birkaç kullanışlı uygulama
- ELF dinamik bağlama
- copy-on-write bellek
- Dosya eşleme
- Anonim eşleme
-
Sürücüler
- NVMe diskler
- ATA (IDE, SATA) diskler
- E1000 ve E1000E NIC
- RTL8111/8168/8211/8411 NIC
- PS2 klavye (tüm scancode setleri)
- PS2 fare
- USB
- Klavye
- Fare
- Yığın depolama
- Hub
- virtio aygıtları (ağ, depolama)
-
Ağ
- ARP
- ICMP
- IPv4
- UDP
- TCP (kısmi ve hatalı)
- Unix domain socket
- SSL
-
Dosya sistemleri
- Sanal dosya sistemi
- Ext2
- FAT12/16/32
- Dev
- Ram
- Proc
- Sys
- 9P
-
Bootloader desteği
- GRUB
- Özel BIOS bootloader
- Özel UEFI bootloader
Kod yapısı
Her ana bileşen ve kütüphane kendi alt dizinine sahiptir. Her dizinde, ilgili bileşenin tüm başlık dosyalarını içeren bir include dizini bulunur. Tüm başlıklar mutlak yollarla dahil edilir.
Derleme
Gerekli paketler
-
apt (Ubuntu 22.04 üzerinde test edildi)
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
Derleme
-
Bu işletim sistemi için toolchain oluşturmak üzere aşağıdaki komutu çalıştırabilirsiniz. Bu adım yalnızca bir kez gereklidir ve uzun sürebilir.
./bos toolchain
-
İşletim sisteminin kendisini derlemek için aşağıdaki komutlardan birini çalıştırabilirsiniz. Disk imajı oluşturma/değiştirme için root yetkileri gerekir.
./bos qemu./bos qemu-nographic./bos qemu-debug./bos bochs
-
Çekirdeği veya disk imajını çalıştırmadan da derleme yapabilirsiniz.
./bos kernel./bos image
-
Başka bir mimari için derlemek üzere
BANAN_ARCH=_arch_ortam değişkenini ayarlayın (ör.BANAN_ARCH=i686). -
Bootloader değiştirmek için
BANAN_BOOTLOADERortam değişkenini ayarlayın. Desteklenen değerlerBANAN(özel bootloader) veGRUB'dur. -
UEFI ile çalıştırmak için
BANAN_UEFI_BOOT=1ortam değişkenini ayarlayın. AyrıcaOVMF_PATHdeğişkeni doğru OVMF yoluna ayarlanmalıdır (varsayılan/usr/share/ovmf/x64/OVMF.fd). -
Disk imajı bozulduysa veya yeniden oluşturmak istiyorsanız,
_build/banan-os.img_dosyasını elle silebilir ya da aşağıdaki komutu çalıştırabilirsiniz../bos image-full
-
zsh için shell completion betiği de üretilir.
_script/shell-completion/zsh/_bos_dosyasını/usr/share/zsh/site-functions/konumuna kopyalayabilir veya.zshrciçindekifpathdeğişkenine_script/shell-completion/zsh_ekleyebilirsiniz.
Katkı
-
Upstream kişisel bir sunucuda barındırıldığı için katkıları birleştirmek GitHub’daki kadar kolay değildir. GitHub’da PR gönderirseniz diff indirilebilir ve elle uygulanabilir. İsterseniz kişisel git sunucusunda size bir hesap verilebilir. Bu durumda e-posta veya Discord üzerinden iletişime geçin.
-
Bu proje öncelikle bir öğrenme deneyimi olduğundan, yeni özellikler eklemeden önce e-posta, Discord, issue vb. üzerinden önce iletişime geçmeniz istenir. Eğer planlanmış bir çalışma hakkında önceden sormadan PR gönderirseniz, PR’ın kapatılma ihtimali yüksektir. Hata düzeltmeleri ise her zaman memnuniyetle karşılanır.
-
Commit mesajları aşağıdaki şekilde biçimlendirilmelidir.
- İlk satır
Subject: Descriptionbiçiminde olmalıdır; burada Subject etkilenen alanı (Kernel, Shell, BuildSystem vb.), Description ise değişikliğin kısa açıklamasını belirtir. İlk satır 72 karakteri geçmemelidir. - Mesaj gövdesi, neyin değiştirildiğini ve neden değiştirildiğini ayrıntılı olarak açıklamalıdır.
- İlk satır
-
Tüm commit’ler
.pre-commit-config.yamliçinde tanımlanan pre-commit hook’larından geçmelidir. pre-commit kurulumu için yönergeler pre-commit.com adresinde bulunabilir.
1 yorum
Hacker News yorumları
cat doom1.wadyazarak sistemi bozduğunu belirtiyorPlatanOSöneriyor