
Eksokernel modern
Bahkan sebelum berbicara tentang sistem build yang ditulis dengan tangan, saya perlu menyebutkan Esque.toml. Ini adalah file konfigurasi dengan sejumlah besar opsi yang tersedia untuk kustomisasi. Mengatur ini membutuhkan banyak waktu, itulah sebabnya sekarang menjadi standar untuk membangun OS esque.
cargorustcddmtools (mcopy, mmd, ...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py adalah utilitas yang terinspirasi oleh x.py Rustc. Anda dapat mengonfigurasi kernel menggunakan file Esque.toml yang dapat ditemukan di Sysroot dari direktori ini. File ini menawarkan banyak opsi, lihat sebelum membangun.
Anda dapat membangun proyek hanya menggunakan
./y.py build
Sistem ini sangat dapat dikonfigurasi. Cukup ketik
./y.py --help
untuk melihat semua opsi.
Pertama, Anda harus memasukkan Esque.toml dan mengubah enable-kvm menjadi false.
Membangun di jendela tidak disarankan. Saya adalah pengguna Linux lama dan seluruh proses pembangunan dirancang untuk saya, namun, membangun menggunakan winy.ps1 adalah mungkin, namun tidak dioptimalkan.
Di Windows, hanya perintah y.py tertentu yang dapat dieksekusi dengan cara yang sama seperti di Linux (contoh: ./y.py build menjalankan dd untuk membuat file IMG). Oleh karena itu, Anda disajikan dengan dua opsi
Ini mungkin pilihan yang lebih disukai untuk beberapa orang. Dalam skenario ini, Anda menjalankan semua perintah kecuali untuk ./y.py run menggunakan WSL.
Ini membutuhkan semua dependensi yang tercantum di atas di bagian Dependencies (On Linux)
winy.ps1 adalah skrip PowerShell yang memutuskan apa yang harus dijalankan secara asli dan apa yang tidak. Penggunaan sama dengan ./y.py Eg ./winy run menjalankan kernel dan ./winy build membangun beberapa bagian kernel menggunakan WSL dan yang lainnya secara asli.
Perhatian Ini mengharuskan Anda untuk memiliki ExecutionPolicy Anda untuk memotong. Anda dapat mengubah ini sementara dengan membuka Host Perintah dengan hak istimewa dan mengetik administrator
Set-ExecutionPolicy Bypass Ini membutuhkan semua dependensi yang tercantum di atas kecuali untuk kargo dan rustc di WSL. Ini membutuhkan kargo, rustc, dan biner tar di jendela. Ketergantungan tersebut dapat dengan mudah dipasang menggunakan Rustup Binary rustup.rs
Jalankan perintah berikut di WSL (Asumsi Ubuntu):
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap tomlSistem operasi harus hampir bebas ketergantungan. Sayangnya, sistem ini tergantung pada total 2 peti:
bitflags
spin
Lebih dari 10+ dependensi kami sendiri dipertahankan dalam crates/ subdirektori. Ketergantungan ini termasuk loader tar dan banyak lagi.
std::sync::{Mutex,...} . Ini adalah peti yang sangat membantu yang digunakan di hampir semua proyek OSDEV utama. Peti ini mungkin dijatuhkan di masa depan. Meskipun mungkin menghasilkan biner yang lebih besar, katakanlah, C, masih menghasilkan yang kecil setelah ditelanjangi. Kernel saat ini hanya ~ 300k dalam ukuran, yang dapat diterima oleh saya. Bootloader sekitar 270K besar, karena ketergantungan 'UEFI' yang sangat besar.
Esque adalah kernel yang berupaya menyatukan aspek-aspek Linux dan Windows, sementara menjadi sistem seperti exokernel. Eksokernel adalah kernel yang hanya menyediakan hal -hal dasar dan hal -hal tambahan (seperti tumpukan jaringan) dimuat melalui modul.
Karena ketersediaan perangkat lunak yang sangat besar di Linux, Esque bertujuan untuk agak kompatibel dengannya. Ini mencapai kompatibilitas sistem file karena penggunaan fake-root . Ada dua besar. Akar yang sebenarnya dan akar palsu . Contoh jalur palsu adalah /home/user/ atau /bin/* . Jalur root nyata dimulai dengan skema perangkat: jalur . Contoh: initramfs:/myfile , C:/Binaries/* , B:/BOOT/EFI/BOOTX64.EFI , C:/Users/User/ atau proc:/CpuInfo .
Syscall Linux terletak di lokasi sebenarnya (0, 1, 2, 3, 4 ...) sementara esque syscall terletak di (sys_num + 0x1000)
Ya - dan tidak. Di Esque, ada tiga 'ruang' virtual yang berbeda untuk aplikasi. Hanya dua dari mereka yang nyata. Ada
Saya mengerti bahwa tidak banyak yang mau menggunakan waktu mereka dengan kernel seperti ini. Saya masih akan dengan senang hati menyambut kontribusi apa pun, tidak peduli seberapa besar atau kecil. Harap baca file kontribusi dan lihat file di direktori dokumentasi
Dalam initramfs, sampai sekarang, tidak ada direktori yang didukung. Anda dapat membuat initramf baru hanya dengan memasukkan file ke initramfs/ subdirektori. Kemudian, menggunakan ./y.py initramfs initramfs yang sudah jadi akan ditemukan di build/initramfs.tar . Bootloader mengharapkan file ini ditemukan di partisi root.
Semua file yang diakhiri dengan .system kemudian akan dimuat oleh initramfs. Diharapkan bahwa salah satu file .system tersebut memuat sistem file.
Meskipun benar bahwa sistem operasi tanpa kode yang tidak aman tidak mungkin, saya mencoba membatasi di sini. Kapan saja,
./y.py count-unsafe
dapat dipanggil yang akan menampilkan informasi tentang ketidakseimbangan kode. Pada saat penulisan, output berikut diproduksi:
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc Crate