Sistem operasi PC X86 32-bit kecil berdasarkan kernel monolitik dengan beberapa fitur seperti Unix, yang ditulis dalam subset C ++.
Harap dicatat: Meta-dokumentasi ini masih merupakan pekerjaan yang sedang berlangsung :-)
Sistem operasi desktop kecil, dengan fitur-fitur seperti Unix, yang ditulis dalam subset C ++ yang dapat dipahami untuk siswa TI tahun pertama di Hogeschool Utrecht, sehingga dapat digunakan dalam konteks pendidikan.
Jika memungkinkan, kinerja dan fitur dikorbankan untuk mengurangi kompleksitas dan meningkatkan keterbacaan. Ini akan membantu perangkat lunak lebih mudah dimengerti dalam konteks pendidikan. Namun demikian, subjek penting dari lapangan OS di Hogeschool Utrecht harus diimplementasikan.
Meskipun harus boot dengan baik pada perangkat keras nyata, Rikaios dikembangkan dengan emulator atau mesin virtual - perangkat keras yang didukung sengaja terbatas demi kesederhanaan.
Penafian wajib: OS dapat meluluhkan motherboard Anda dan memakan mouse hewan peliharaan Anda saat dijalankan pada perangkat keras nyata, tidak ada jaminan, yada yada, silakan baca penafian dalam file lisensi sebelum menjalankan ini di komputer keluarga Anda.
Lihat direktori ./aux. Jangan mengharapkan sesuatu yang mencolok - saat ini semua terminal serial!
OS dengan set fitur saat ini dikembangkan dalam periode sekitar 6 bulan dari Februari hingga Juli 2019.
Rikaios belum menjadi pengganti Linux penuh ;-)
Ada beberapa fitur yang perlu bekerja atau sedang dikerjakan (lihat juga bagian yang berkontribusi):
grep -ERn 'TODO|FIXME|XXX' src/kernel/src src/kernel/include src/user/Perhatikan bahwa tujuan Rikaios adalah untuk tetap kecil: tumpukan jaringan atau driver USB misalnya mungkin tidak akan dipertimbangkan untuk implementasi.
Anda perlu perangkat lunak ini diinstal (pada host Linux-ish) untuk membangun dan menjalankan rikaios:
Nomor versi harus baru, terutama untuk dentang, LLVM dan LLD. Dockerfile Linux Arch disediakan (terima kasih kepada @peikos) yang mencakup versi yang kompatibel dari dependensi di atas.
Anda dapat menggunakan GCC sebagai ganti dentang/llvm jika Anda menginginkannya, asalkan Anda memiliki GCC cross-toolchain untuk I686-Ef. Lihat src/kernel/Makefile untuk detail tentang cara mengganti toolchains.
| Direktori | Keterangan |
|---|---|
/src/boot | Bootloader (Bootsector dan Stage2) |
/src/boot/utils | Penginstal Bootloader |
/src/kernel | Kode kernel |
/src/kernel/include | Header kernel yang terpapar ke userland |
/src/kernel/include/os-std | Pustaka Standar OS (matematika, wadah, dll.) |
/src/user | Perangkat Lunak Userland |
/src/user/libsys | PERPUSTAKAAN SISTEM C ++ USERLAND |
/src/disk | (FAT32) FileStem tersedia untuk OS |
| Makefile | Keterangan |
/src/Makefile | Membangun segalanya, membuat disk boot dan menjalankan emulator |
/src/boot/Makefile | Membangun bootloader dan penginstal |
/src/kernel/Makefile | Membangun kernel |
/src/user/Makefile | Membangun Userland |
Setiap makefile di atas mencakup (jika tersedia) file Makefile.local di direktori yang sama. Ini memungkinkan Anda untuk mengganti nama dan jalur alat yang dapat dieksekusi, dan untuk secara opsional menambahkan target tambahan.
Jangan lupa lulus -j 4 (atau lebih tinggi) untuk meningkatkan kinerja pembangunan pada sistem multicore.
Ini membangun kernel dan bootloader dan membuat disk boot yang dijalankan dengan qema virtualizer / emulator. Koneksi serial ke OS dibuka di terminal dari mana Anda menjalankan perintah Make.
buat disk && run
Saat ini, OS Shell dan Tty Driver tidak memiliki kemampuan pengeditan garis yang canggih dan dukungan sejarah baris perintah. Untuk kenyamanan, Anda dapat membungkus QEMU dengan rlwrap untuk memanfaatkan fasilitas pengeditan garis di sisi host hal-hal (sangat disarankan):
membuat disk && rlwrap -a run
Untuk berjalan di VirtualBox, lakukan hal berikut:
vdi :Buat VDI
Kemudian:
disk.vdi sebagai disk IDESekarang Anda harus dapat memulai VM melalui VirtualBox.
Perhatikan bahwa I/O serial mungkin sulit untuk mulai bekerja. Versi OS saat ini tidak banyak berinteraksi dengan layar dan keyboard/tikus secara default.
Setelah Anda menjalankan dan menjalankan sistem, Anda akan melihat prompt di terminal serial (jika Anda telah menghubungkan monitor, layar splash mungkin muncul juga). Anda dapat berinteraksi dengan OS menggunakan terminal serial. Untuk memulai, coba perintah help .
Sejumlah program utilitas disediakan di disk. Lihat program yang diinstal dengan mengetik ls bin (dengan asumsi Anda masih berada di direktori /disk0p1 ). Semua program ELF di /disk0p1/bin dapat dieksekusi sebagai perintah tanpa mengetik jalur lengkap (menganggapnya sebagai direktori $PATH implisit). Demikian pula, setiap file ELF di direktori kerja, seperti forth.elf , dapat dijalankan hanya dengan mengetikkan nama mereka.
Untuk melihat bagaimana utilitas bekerja, atau untuk menambahkan sendiri, melihat file readme di direktori src/user dari repositori ini.
Menekan ESC pada keyboard (di jendela video, bukan terminal serial) akan memungkinkan kernel shell, utilitas debugging bawaan. Ini dapat digunakan untuk mencetak berbagai statistik dan informasi tentang proses dan memori yang sedang berjalan (lihat Perintah help saat di Kshell).
Anda dapat men -debug kernel dengan qemu atau bochs:
Lihat ./src/gdbrc untuk opsi startup (Anda dapat mengganti jalur file ini di Makefile.local ).
buat disk && buat debug
Lihat ./src/BOCHSRC untuk opsi konfigurasi (Anda dapat mengganti jalur file ini di Makefile.local ).
buat disk && buat bochs
Ld.lld: Kesalahan: Tidak dapat menemukan pustaka -llang_rt.builtins -i386
locate clang_rt.builtins )kernel/Makefile.local , dengan konten: LD_BUILTIN_DIR += /the/directory/containing/the/clang/lib Saya mengerti bahwa dokumentasi yang tersedia untuk umum saat ini terbatas, jadi jangan ragu untuk membuka masalah atau mengirimi saya email.
Harap buka masalah GitHub / GitLab sehingga kami dapat memastikan tidak ada upaya yang digandakan :-)
Suatu proses untuk ini harus diformalkan dalam beberapa minggu mendatang - ada beberapa masalah / fitur terbuka yang pasti dapat dikerjakan, dengan berbagai tingkat kesulitan / ukuran. Saya akan mendokumentasikan ini segera ™.
Proyek ini dilisensikan di bawah Lisensi Apache 2.0. Silakan lihat ./license untuk informasi lebih lanjut.
Sistem operasi ini ditulis dari awal, dengan hanya pengecualian berikut: