Minio adalah kernel sistem operasi miniatur untuk pelajar pengembangan sistem operasi yang dapat berjalan pada CPU arsitektur X86 32-bit. Minios berfokus pada pembelajaran dan meneliti konsep -konsep inti dan prinsip -prinsip dasar dalam pengembangan sistem operasi, dan mengimplementasikan berbagai subsistem atau modul dasar dalam sistem operasi berdasarkan perangkat keras umum.
Kernel sistem operasi populer seperti Linux dan Freebsd bagus, tetapi mereka tidak cocok untuk pemula dalam pengembangan kernel. Di satu sisi, kernel sistem operasi ini telah dikembangkan selama bertahun -tahun dan telah mengumpulkan sejumlah besar kode (versi awal Linux Kernel v2.6.12 yang dirilis pada tahun 2005 sudah memiliki sekitar 4 juta baris kode). Di sisi lain, karena kebutuhan aplikasi di lingkungan produksi, kode kernel ini berisi sejumlah besar detail yang tidak terkait dengan prinsip -prinsip dasar sistem operasi, yang sulit bagi pemula untuk memahami poin -poin utama. Oleh karena itu, dimulai dengan kernel sistem operasi sederhana dengan sejumlah kecil kode, menggunakan waktu singkat untuk membiasakan diri dengan dan menguasai konsep -konsep inti dan prinsip -prinsip dasar dari bidang pengembangan kernel sistem operasi, menguasai pengetahuan dasar ini ke tingkat tertentu, dan kemudian mengabdikan diri Anda untuk pengembangan kernel praktis seperti Linux, adalah strategi yang relatif realistis dan layak untuk pemula. Bahkan jika Anda tidak berencana untuk terlibat dalam pengembangan kernel, mempelajari beberapa pengetahuan dasar tentang sistem operasi melalui kernel yang mudah dimulai akan membantu Anda menulis aplikasi yang lebih kuat dan melakukan.
Minio terutama dikembangkan berdasarkan bahasa C dan bahasa perakitan x86, dan alat pengembangan yang digunakan meliputi:
Di antara mereka, binutil adalah satu set alat untuk mengoperasikan file biner, termasuk alat untuk membuat pustaka statis, alat untuk strip untuk menghapus tabel simbol dari file biner untuk mengurangi ukuran file, dll.
Minio saat ini dimulai dari floppy disk, dan proses startup adalah:
Karena Minio adalah kernel sistem operasi untuk pelajar, saat ini terutama berjalan di mesin virtual, dengan mesin virtual opsional termasuk Bochs dan QEMU.
Jalankan Minio di Bochs
sudo apt-get install bochs di bawah sistem ubuntu untuk menginstalnya. Anda dapat mengunduh kode sumber Bochs terlebih dahulu dan kemudian mengkompilasi dan menginstalnya. Anda dapat memilih versi bochs yang diinginkan saat menginstal melalui kode sumber.tar zxvf misc/80m.img.tar.gz . , dan mendekompres gambar hard disk dari paket kompresi gambar hard disk.bochs di direktori saat ini untuk memulai mesin virtual Bochs. Bochs pertama -tama akan membaca informasi konfigurasi dari file Bochsrc, dan kemudian konfirmasi informasi prompt run yang diberikan oleh Bochs untuk memungkinkan mini yang dijalankan di Bochs.Jalankan mini di qemu
sudo apt-get install qemu-system-x86 di bawah sistem ubuntu untuk instalasi, atau Anda dapat mengunduh kode sumber QEMU untuk kompilasi dan instalasi.tar zxvf misc/80m.img.tar.gz . , dan mendekompres gambar hard disk dari paket kompresi gambar hard disk../launch-qemu.sh di direktori saat ini untuk memulai mesin virtual QEMU, dan kemudian minio akan mulai berjalan langsung di QEMU. Mesin virtual QEMU tidak menggunakan file konfigurasi seperti Bochsrc. Informasi konfigurasi ditentukan melalui opsi baris perintah. Luncurkan skrip-qemu.sh berisi opsi konfigurasi yang saat ini digunakan. Minio dapat didebug di tingkat perakitan dengan menggunakan fungsi debugging yang termasuk dalam bochs atau qemu, tetapi metode debugging ini tidak terlalu nyaman untuk digunakan karena program perakitan panjang dan sulit dibaca. Untungnya, baik Bochs dan Qemu memiliki dukungan GDB bawaan. Dengan menggabungkan dengan fungsi debugging jarak jauh yang disediakan oleh GDB, minio dapat didebug pada kode sumber C.
Mini Debugging dengan Bochs+GDB
./launch-bochs-gdb.sh di direktori sumber minio. Skrip shell yang berjalan akan menjalankan GDB di jendela terminal baru dan memuat versi debug biner kernel.target remote :2345 di antarmuka perintah GDB untuk membuat koneksi dengan bochs.Debugging Minio dengan QEMU+GDB
./launch-bochs-gdb.sh di direktori sumber minio. Skrip shell yang berjalan akan menjalankan GDB di jendela terminal baru dan memuat versi debug biner kernel.target remote :1234 di antarmuka perintah GDB untuk membuat koneksi dengan QEMU. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean