Belajar pengembangan sistem operasi menggunakan kernel Linux dan Raspberry Pi
Repositori ini berisi panduan langkah demi langkah yang mengajarkan cara membuat kernel sistem operasi (OS) sederhana dari awal. Saya menyebutnya OS Raspberry Pi OS atau hanya RPi OS. Kode sumber RPi OS sebagian besar didasarkan pada kernel Linux, tetapi OS tersebut memiliki fungsionalitas yang sangat terbatas dan hanya mendukung Raspberry PI 3.
Setiap pelajaran dirancang sedemikian rupa sehingga pertama-tama menjelaskan bagaimana beberapa fitur kernel diimplementasikan di OS RPi, dan kemudian mencoba mendemonstrasikan cara kerja fungsi yang sama di kernel Linux. Setiap pelajaran memiliki folder terkait di direktori src, yang berisi cuplikan kode sumber OS pada saat pelajaran baru saja selesai. Hal ini memungkinkan pengenalan konsep baru dengan baik dan membantu pembaca mengikuti evolusi OS RPi. Memahami panduan ini tidak memerlukan keahlian pengembangan OS khusus.
Untuk informasi lebih lanjut tentang tujuan dan sejarah proyek, silakan baca Pendahuluan. Proyek ini masih dalam pengembangan aktif, jika Anda bersedia berpartisipasi - silakan baca panduan Kontribusi.
Daftar isi
- Perkenalan
- Panduan kontribusi
- Prasyarat
- Pelajaran 1: Inisialisasi Kernel
- 1.1 Memperkenalkan RPi OS, atau bare metal "Halo, dunia!"
- Linux
- 1.2 Struktur proyek
- 1.3 Sistem pembangunan kernel
- 1.4 Urutan permulaan
- 1.5 Latihan
- Pelajaran 2: Inisialisasi prosesor
- 2.1 OS RPi
- 2.2Linux
- 2.3 Latihan
- Pelajaran 3: Penanganan interupsi
- 3.1 OS RPi
- Linux
- 3.2 Penanganan pengecualian tingkat rendah
- 3.3 Pengendali interupsi
- 3.4 Pengatur Waktu
- 3.5 Latihan
- Pelajaran 4: Penjadwal proses
- 4.1 OS RPi
- Linux
- 4.2 Struktur dasar penjadwal
- 4.3 Membagi tugas
- 4.4 Penjadwal
- 4.5 Latihan
- Pelajaran 5: Proses pengguna dan panggilan sistem
- 5.1 OS RPi
- 5.2Linux
- 5.3 Latihan
- Pelajaran 6: Manajemen memori virtual
- 6.1 OS RPi
- 6.2 Linux (Sedang berlangsung)
- 6.3 Latihan
- Pelajaran 7: Sinyal dan interupsi menunggu (Harus diselesaikan)
- Pelajaran 8: Sistem file (Yang harus diselesaikan)
- Pelajaran 9: File yang dapat dieksekusi (ELF) (Harus diselesaikan)
- Pelajaran 10: Pengemudi (Harus diselesaikan)
- Pelajaran 11: Jaringan (Harus Diselesaikan)