Duckos
OS hobi seperti Unix dengan manajer jendela grafis dan aplikasi untuk X86 PC, dengan port AARCH64 yang sedang berlangsung.

Demo | Fitur | Aplikasi | Ports | Cara membangun
Ditahan
Pengembangan Duckos saat ini ditahan. Jangan ragu untuk membayar dan mengacaukannya!
Coba Duckos
Virtualisasi secara lokal
Rilis terbaru dapat diunduh dari halaman rilis. Atau, gambar disk dari bebek terbaru dapat diunduh dari artefak alur kerja Duckos GitHub. Ini kemudian dapat divirtualisasi atau ditiru menggunakan QEMU atau perangkat lunak pilihan Anda.
Meniru di browser
Atau, berkat proyek V86 dengan Copy, Anda dapat mencoba versi DuckOS di browser Anda. Ini jauh lebih lambat menjalankannya secara lokal, dan tidak memiliki salinan perangkat lunak porting seperti Doom . Anda dapat mencobanya di sini!
Fitur
- Manajer Window / Kompositor ditambah toolkit UI berbasis tampilan yang dapat ditampilkan untuk membuat aplikasi
- TCP TCP/UDP Dasar atas Tumpukan Jaringan IP dengan Soket UNIX dan driver E1000 Ethernet
- Dukungan suara untuk kartu suara AC97
- Banyak pelabuhan program seperti Doom, Utilities seperti GCC, dan Perpustakaan seperti SDL
- Menghubungkan dan memuat binari dinamis
- Kemampuan debugging on-board seperti ptrace dan profiler pengambilan sampel
- Perpustakaan Rendering Perangkat Lunak 3D
- Berjalan pada beberapa perangkat keras nyata
- Port wip aarch64 yang boot melewati tahap 1 pada raspberry pi 3b :)
Rencana masa depan
- Selesaikan port Aarch64
- Mengubah sistem IPC kernel menjadi lebih efisien
- Rendering font yang lebih baik (font vektor, ukuran berbeda, dll.)
- tuan rumah diri sendiri
- Lebih stabilitas dan kecepatan
- Implementasi cache sistem file yang lebih baik yang dapat membebaskan memori saat dibutuhkan dan menyiram secara berkala menulis
- Tes Unit Kernel & Pengguna Lebih Banyak
- Dokumentasi kernel, perpustakaan, dan aplikasi yang lebih baik
- Beberapa alat debugging kernel & userspace jadi saya tidak perlu menghabiskan berjam-jam setinggi lutut di debugger qemu setiap kali segfault terjadi karena bug sederhana yang bisa dihindari dengan beberapa kopi tambahan di sistem saya
- Dukungan multiprosesor (multicore)
- Transisi Perlahan Berbagai Modul dari Kernel ke Userspace (A LA Microkernel)
- Tambahkan karat ke dalam campuran (?)
Layanan
Kode untuk ini dapat ditemukan dalam layanan.
- Init (/bin/init): Sistem Init untuk Duckos.
- Pond (/Bin/Pond): Manajer Window/Kompositor untuk Duckos.
- Quack (/bin/quack): Server suara untuk bebek.
- Klien DHCP (/bin/DHCPClient): Klien DHCP untuk menetapkan alamat IP.
Aplikasi
Kode untuk ini dapat ditemukan dalam program/aplikasi.
- Kalkulator (/apps/calculator.app): Kalkulator dasar.
- Terminal (/Apps/terminal.app): Aplikasi Terminal Berbasis Libui.
- Monitor Sistem (/apps/monitor.app): Monitor sistem dasar yang menunjukkan pemanfaatan memori dan CPU.
- 4 berturut-turut (/apps/4inarow.app): game dasar empat-dalam-row. Mainkan dengan dua pemain atau melawan komputer.
- Sandbar (/bin/sandbar): "Taskbar" dasar yang menampilkan deretan tombol di bagian bawah layar untuk meluncurkan aplikasi.
- File (/apps/files.app): Aplikasi Explorer File Rudimentary.
- Penampil (Apps/Viewer.app): Penampil media dasar yang dapat melihat gambar dan memutar file suara
- Demo LIB3D (Apps/3Demo.app): Demo untuk Perpustakaan Lib3D. Menampilkan kubus secara default; dapat digunakan untuk melihat file OBJ.
- Editor (/Apps/Editor.app): Aplikasi dasar untuk mengedit file teks.
- Tentang (/apps/about.app): Menampilkan beberapa informasi sistem.
- Ducksweeper (/apps/ducksweeper.app): permainan penghindaran bebek berbasis grid;)
Program CLI
Kode untuk ini dapat ditemukan di Program/Coreutils. Bersama para tersangka yang biasa, Duckos memiliki:
- DSH (/bin/DSH): Shell dasar dengan dukungan untuk perpipaan, pengalihan, dan penarikan perintah.
- Buka (/bin/terbuka): Utilitas untuk membuka file dan aplikasi dari baris perintah menggunakan program yang sesuai.
- Mainkan (/bin/play): Memutar file audio.
- Tanggal (/bin/tanggal): Menunjukkan tanggal dan waktu.
- Profil (/bin/profil): Profil aplikasi yang berjalan dan mengeluarkan file kompatibel Flamegraph/SpeedScope.
- Anda dapat menjalankan
scripts/debugd.py pada host (dengan speedscope diinstal) dan meneruskan parameter -r ke profil untuk mengirim output langsung ke host melalui jaringan dan membukanya di speedscope.
Program yang mengambil argumen akan memberi Anda penggunaan yang benar saat Anda menjalankannya tanpa argumen.
Perpustakaan
- LIBC: Perpustakaan C Standar.
- LIBM: Bagian matematika dari Perpustakaan C Standar.
- LIBPOND: Perpustakaan yang digunakan untuk berinteraksi dengan Pond Window Manager / kompositor.
- Libgraphics: Perpustakaan yang menyediakan beberapa utilitas untuk bekerja dengan grafik seperti pemuatan format gambar.
- Libui: Kerangka kerja UI untuk aplikasi.
- LIBTUI: Kerangka kerja untuk aplikasi terminal.
- Libterm: Kerangka kerja untuk menangani terminal.
- Libduck: Perpustakaan yang berisi kelas dan utilitas yang umum digunakan, seperti argumen dan penguraian file konfigurasi.
- Perpustakaan: Perpustakaan IPC yang tidak berbeda dengan D-Bus, yang menyediakan kerangka kerja untuk panggilan fungsi jarak jauh dan lewat data.
- Libapp: Perpustakaan yang menyediakan metode untuk mengambil informasi tentang aplikasi yang diinstal dan menjalankan.
- LIBSYS: Memberikan abstraksi C ++ tingkat yang lebih tinggi untuk mengambil informasi sistem, yaitu dari PROCFS.
- LIBSOUND: Menyediakan kerangka kerja untuk aplikasi audio dan berinteraksi dengan server suara, dukun.
- LIB3D: Menyediakan fungsionalitas rendering 3D perangkat lunak dasar.
- Libmatrix: Menyediakan Utilitas Matematika Matriks.
- LIBEXEC: Memberikan dukungan ELF.
- Libdebug: Menyediakan fungsionalitas debugging.
Ports
Port dapat diinstal dengan menjalankan ports.sh yang disediakan dengan port yang diinginkan sebagai argumen. Ketergantungan yang diperlukan juga akan dibangun dan dipasang.
Beberapa port yang lebih menarik adalah:
- MALAPETAKA
- Anda harus memberikan wadfile Doom Anda sendiri dan meletakkannya di direktori /apps/doom.app/. (Lihat instruksi build untuk detail lebih lanjut.)
- binutils
- GCC
- sdl2
- Juga, sdl2_gfx, sdl2_image, dan sdl2_ttf
Membangun / berlari
- Lihat instruksi.md untuk instruksi.
Berkontribusi
- Lihat Kontribusi.MD untuk informasi tentang cara berkontribusi pada bebek.
Kredit
- Cermin LiBalloc 1.1 Blanham untuk implementasi alokasi heap kernel (itu domain terbuka, jadi jika Anda ingin menggunakannya, saya sangat merekomendasikannya)
- Serenityos untuk banyak inspirasi
- Gohufont untuk font (dilisensikan di bawah wtfpl)
Lisensi