Toaruos adalah sistem operasi "lengkap" untuk X86-64 PC dan dukungan eksperimental untuk ARMV8.
Sementara banyak OS yang independen, hobi, dan penelitian bertujuan untuk bereksperimen dengan desain baru, Toaruos dimaksudkan sebagai sumber daya pendidikan, menyediakan mikrokosmos fungsionalitas yang representatif yang ditemukan dalam sistem operasi desktop utama.
OS termasuk kernel, bootloader, tautan objek bersama dinamis, perpustakaan standar C, sistem windowing yang dikomposisi sendiri, bahasa pemrograman yang dikompilasi bytecode dinamis, editor kode canggih, dan lusinan utilitas lainnya dan contoh aplikasi.
Tidak ada dependensi runtime eksternal dan semua kode sumber yang diperlukan, dengan total sekitar 100 ribu garis (terutama) C, termasuk dalam repositori ini, Simpan untuk Kuroko, yang hidup secara terpisah.
Demonstrasi UI Toaruos dan beberapa aplikasi.
Saya telah mengerjakan Toaruos selama lebih dari satu dekade sekarang, dan tujuan saya telah berubah selama bertahun -tahun.
Ketika saya pertama kali memulai proyek pada bulan Desember 2010, tujuan saya adalah untuk "belajar dengan melakukan" - mempelajari sistem seperti unix dengan membuatnya dari awal. Saya telah menjadi kontributor untuk Compiz, salah satu manajer jendela komposit pertama yang banyak digunakan untuk X11, beberapa tahun sebelumnya, dan secara alami Toaruos memperoleh GUI yang dibangun di atas konsep yang sama sejak awal.
Untuk rilis 1.0 aslinya pada tahun 2015, Toaruos bukan OS "sepenuhnya dari awal" yang telah terjadi sejak itu. Newlib menyediakan LIBC, dan GUI dibangun di atas Kairo, Libpng, dan Freetype. Pada pertengahan 2018, saya memulai proyek baru untuk menggantikan komponen pihak ketiga ini, yang akhirnya selesai dan digabungkan menjadi Toaruos 1.6.
Di luar proyek, Toaruos juga menarik beberapa pengembang OS pemula yang telah mencoba menggunakannya sebagai referensi. Kernel Toaruos, bagaimanapun, adalah sumber rasa malu pribadi bagi saya, dan pada bulan April 2021, setelah absen, saya mulai mengerjakan yang baru. Hasilnya adalah Misaka: Kernel 64-bit baru, yang mendukung SMP. Misaka bergabung pada bulan Mei dan memulai 1,99 rangkaian rilis beta yang mengarah ke Toaruos 2.0.
dlopen .Proyek -proyek berikut sedang berlangsung:
Pengguna umum yang berharap untuk membangun Toaruos dari sumber disarankan untuk membayar repositori di GitHub dan memanfaatkan pipa GitHub CI.
Bagi mereka yang ingin membangun secara lokal di host Linux yang dikonfigurasi dengan tepat dengan Docker, tersedia wadah build. Repositori Toaruos harus digunakan sebagai bind mount AT /root/misaka dan util/build-in-docker.sh dapat dijalankan dalam wadah ini untuk menyelesaikan proses kompilasi:
git clone https://github.com/klange/toaruos
cd toaruos
git submodule update --init kuroko
docker pull toaruos/build-tools:1.99.x
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
Setelah membangun seperti ini, Anda dapat menjalankan berbagai target utilitas ( make run , dll.). Coba make shell untuk menjalankan shell Toaruos menggunakan port serial dengan qemu.
Makefile menggunakan alat Kuroko, auto-dep.krk , untuk menghasilkan makefile tambahan untuk aplikasi dan perpustakaan Userspace, secara otomatis menyelesaikan dependensi berdasarkan arahan #include .
Dalam urutan yang tidak ditentukan, perpustakaan C, kernel, librar dan aplikasi Userspace dibangun, digabungkan menjadi arsip terkompresi untuk digunakan sebagai ramdisk, dan kemudian dikemas ke dalam gambar sistem file ISO9660.
base/usr/include , serta sumber daya grafis untuk kompositor dan dekorator jendela.Sistem file root diatur sebagai berikut:
bin : Aplikasi Pihak Pertama.cdrom : Titik gunung untuk CD, jika tersedia.dev : Direktori Perangkat Virtual, yang dihasilkan oleh kernel.net : Perangkat antarmuka jaringan.pex : Paket Exchange Hub, daftar layanan IPC yang dapat diakses.pts : Pty Secondaries, titik akhir untuk TTYS.etc : File konfigurasi, skrip startup.home : Direktori Pengguna.lib : Perpustakaan Pihak Pertamakuroko : Modul Kuroko.mod : Modul kernel yang dapat dimuat.proc : File virtual yang menyajikan keadaan kernel.1 , dll.: File virtual dengan informasi status untuk proses individual.src : File sumber, lihat bagian "Tata Letak Proyek" di atas.tmp : Dipasang sebagai TMPF baca/tulis secara normal.usr : Sumber Daya Ruang Penggunabin : Aplikasi pihak ketiga, biasanya kosong sampai paket diinstal.include : file header, termasuk yang berpotensi dari paket pihak ketiga.lib : Perpustakaan pihak ketiga. Harus memiliki libgcc_s.so secara default.share : berbagai sumber daya.bim : Sintaksis sintaksis dan tema untuk editor teks.cursor : sprite kursor tikus.fonts : File font Truetype. Kapal CD Langsung dengan Deja Vu Sans.games : Dumping Ground untuk file sumber daya terkait game, seperti Doom Wads.help : File dokumentasi untuk aplikasi browser Bantuan.icons : Ikon PNG, dibagi menjadi direktori lebih lanjut berdasarkan ukuran.ttk : Sumber daya spritesheet untuk dekorator jendela dan perpustakaan widget.wallpapers : Wallpaper JPEG.var : File runtime, termasuk cache manifes manager paket, file PID, beberapa file kunci, dll. Pengalaman pengguna akhir terbaik dengan Toaruos akan dimiliki di salah satu mesin virtual ini, karena Toaruos memiliki dukungan untuk ukuran tampilan otomatis dan posisi mouse absolut.
Siapkan VM baru untuk tamu 64-bit "lain", masukkan dengan setidaknya 1Gib RAM, pasang gambar CD, hapus atau abaikan hard disk, dan pilih Intel Gigabit NIC. Dua atau lebih CPU juga disarankan.
Toaruos berjalan di VirtualBox.
Toaruos berjalan di VMware Workstation Player.
Secara default, bootloader akan meneruskan bendera ke driver perangkat VirtualBox untuk menonaktifkan dukungan "mulus" karena implementasi memiliki overhead kinerja. Untuk mengaktifkan mode mulus, gunakan menu bootloader untuk memeriksa opsi "VirtualBox Mfulless" sebelum booting. Menu ini juga memiliki opsi untuk menonaktifkan ukuran tampilan tamu otomatis jika Anda mengalami masalah dengan fitur ini.
Sebagian besar pengembangan Toaruos terjadi di QEMU, karena memberikan fleksibilitas paling banyak dalam perangkat keras dan pengalaman debugging terbaik. Baris perintah QEMU yang direkomendasikan di host Ubuntu 20.04 adalah:
qemu-system-x86_64 -enable-kvm -m 1G -device AC97 -cdrom image.iso -smp 2
Ganti -enable-kvm dengan -accel hvm atau -accel haxm yang sesuai pada platform host tanpa KVM, atau menghapusnya untuk mencoba di bawah emulasi perangkat lunak TCG QEMU.
Perhatikan bahwa opsi baris perintah QEMU tidak stabil dan bendera ini dapat menghasilkan peringatan dalam versi yang lebih baru.
Opsi -M q35 akan menggantikan emulasi chipset PIIX dengan yang lebih baru, yang memiliki efek samping dari pengalihan pengontrol IDE untuk yang SATA. Ini dapat menghasilkan waktu boot yang lebih cepat dengan mengorbankan Toaruos yang tidak dapat membaca CD sendiri saat runtime sampai saya berkeliling untuk menyelesaikan driver AHCI saya.
Toaruos telah berhasil diuji pada perangkat keras nyata. Jika BIOS asli atau loader EFI gagal berfungsi, coba boot dengan grub. Toaruos mematuhi spesifikasi "multiboot" dan "multiboot 2" sehingga dapat dimuat dengan perintah multiboot atau multiboot2 sebagai berikut:
multiboot2 /path/to/misaka-kernel root=/dev/ram0 migrate vid=auto start=live-session
module2 /path/to/ramdisk.igz
set gfxpayload=keep
Toaruos berjalan secara asli dari tongkat USB di Thinkpad T410.
Semua bagian pihak pertama dari Toaruos tersedia di bawah ketentuan lisensi University of Illinois / NCSA, yang merupakan lisensi permisif bergaya BSD. Kecuali ditentukan lain, ini adalah lisensi asli dan satu -satunya untuk semua file di repositori ini - hanya karena file tidak memiliki header hak cipta tidak berarti tidak di bawah lisensi ini. Toaruos dimaksudkan sebagai referensi pendidikan, dan saya mendorong penggunaan kode saya, tetapi pastikan Anda mengikuti persyaratan lisensi. Anda dapat mendistribusikan kembali kode di bawah lisensi NCSA, serta membuat modifikasi pada kode dan mensublisensikannya dengan syarat lain (seperti GPL, atau lisensi kepemilikan), tetapi Anda harus selalu memasukkan pemberitahuan hak cipta yang ditentukan dalam lisensi serta membuat teks lengkap lisensi (hanya beberapa paragraf) yang tersedia untuk pengguna akhir.
Sementara sebagian besar Toaruos ditulis sepenuhnya oleh saya sendiri, pastikan untuk memasukkan penulis lain yang relevan, seperti dengan subsistem audio Mike atau fungsi string Dale.
Beberapa komponen Toaruos, seperti Kuroko atau BIM memiliki istilah yang berbeda tetapi kompatibel.
Toaruos secara teratur dicerminkan ke beberapa situs hosting git.
#toaruos on libera ( irc.libera.chat )
Aplikasi dan perpustakaan individual dapat dibangun dengan memasang metapackage build-essential dari repositori, yang akan menarik gcc dan binutils . Sumber tersedia di direktori /src pada CD live dalam tata letak yang sama dengan repositori ini, dan skrip utilitas auto-dep.krk juga tersedia.
Untuk membangun batu, kernel yang difinalisasi, atau gambar CD, beberapa komponen saat ini tidak tersedia. Secara khusus, skrip build untuk ramdisks masih ditulis dalam python dan tergantung pada modul tarfile dan dukungan zlib . Sebelumnya, dengan toolchain kompiler yang mampu, Toaruos 1.x dapat membangun kernelnya sendiri, ruang pengguna, perpustakaan, dan bootloader, dan mengubahnya menjadi gambar CD ISO yang berfungsi melalui skrip Python yang melakukan fungsi yang sama dengan Makefile.
Toaruos saat ini tidak mampu membangun sebagian besar pelabuhannya, karena kurangnya cangkang POSIX yang tepat dan membuat implementasi. Ini adalah tujuan akhirnya dari proyek ini.
Tidak, tidak sama sekali. Tidak ada kode dari Linux di mana pun di Toaruos, juga sumber Linux tidak digunakan sebagai bahan referensi.
Toaruos adalah proyek yang sepenuhnya independen, dan semua kode dalam repositori ini - yang merupakan seluruh basis kode dari sistem operasi, termasuk kernel, bootloader, perpustakaan, dan aplikasi - asli, ditulis oleh saya dan beberapa kontributor selama sepuluh tahun. Sejarah sumber lengkap, kembali ke ketika Toaruos tidak lebih dari "Hello World" baremetal dapat dilacak melalui repositori git ini.
Toaruos lengkap dalam arti bahwa itu mencakup seluruh jajaran fungsionalitas untuk OS: itu bukan "hanya kernel" atau "hanya ruang pengguna".
Toaruos tidak lengkap dalam arti "selesai".
Sementara saya bertujuan untuk mendukung antarmuka POSIX dengan cukup baik agar perangkat lunak porting, implementasi standar yang ketat bukanlah tujuan utama dari OS, dan kepatuhan penuh bahkan mungkin tidak diinginkan.
Toaruos adalah proyek pribadi, bukan proyek komunitas. Kontribusi dalam bentuk kode harus dibahas sebelumnya. Port dan pekerjaan lain di luar repo, bagaimanapun, adalah cara yang bagus untuk membantu.
Anda juga dapat membantu dengan berkontribusi pada Kuroko - yang merupakan bagian dari mengapa itu disimpan sebagai repositori terpisah.