LANOS - Klarifikasi seri poin pengetahuan Linux0.12
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Tutorial Video Bilibili
Sumber daya referensi
- Versi elektronik "Kode Sumber Linux"
- Kode Sumber Linux 0.1x
- Situs web resmi Oldlinux
- Orange: Implementasi sistem operasi
Terima kasih Dr. Zhao Jiong, guru Yu Yuan, Tn. Hideshi Kawahiro, dan rasa hormat tertinggi!
Fitur tutorial ini
- Banyak referensi tentang ide desain Linux0.12 untuk membuat demo, yang akan membantu Anda membaca kode sumber Linux nanti
- Mengimplementasikan kembali sebanyak mungkin kode yang diimplementasikan di Linux dengan C untuk meningkatkan keterbacaan dan mengurangi biaya pembelajaran
- Gunakan Docker untuk dikompilasi, membuat lingkungan kompilasi sangat mudah dibangun
Metode kompilasi ultra-cepat (mengandalkan Docker & Networking)
Jalankan perintah berikut untuk menarik kode dan mengkompilasi (akan lebih lambat untuk mengeksekusi make_os.sh untuk pertama kalinya karena Anda ingin menarik gambar yang dikompilasi Docker)
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
Efek eksekusi
dantadeMacBook-Pro:yard danta$ git clone https://github.com/freelw/LanOS.git
Cloning into 'LanOS'...
remote: Enumerating objects: 517, done.
remote: Counting objects: 100% (517/517), done.
remote: Compressing objects: 100% (322/322), done.
remote: Total 1316 (delta 304), reused 379 (delta 181), pack-reused 799
Receiving objects: 100% (1316/1316), 2.78 MiB | 42.00 KiB/s, done.
Resolving deltas: 100% (788/788), done.
dantadeMacBook-Pro:yard danta$ cd LanOS
dantadeMacBook-Pro:LanOS danta$ ./make_os.sh
builing lan os...
cleaning temp files...
file [a.vfd] is our os image with a simple ramdisk filesystem.
Katalog Poin Pengetahuan
- Cara mengkompilasi dan menjalankan demo
- Klarifikasi Seri Titik Pengetahuan Linux 0.12 untuk membuat perakitan ke C tidak lagi jauh
- Klarifikasi Baris Alamat A20 Seri Linux0.12 Poin Pengetahuan
- Klarifikasi Inisialisasi dan Interupsi Jam 8259A di Linux0.12 Seri Titik Pengetahuan
- Prinsip 8259A Deskripsi terperinci
- Penyortiran Informasi Terkait Online
Darah dan air mata
- Lompat ke Mode Pengguna
- Garpu debugging pendahuluan
- Garpu+Salin di Write
- Tentang variabel global
Instruksi lainnya
- Cara mengkompilasi file biner khusus
Todo
Implementasi print_str selesai 20200224 Implementasi print_num selesai 20200224 Implementasi LAN_FS selesai 20200224 Implementasi EXEC selesai 20200224 Implementasi Keluar selesai 20200304
Tampilan Efek Akhir
Ada shell sederhana dan sistem file yang dapat menjalankan program LS
Mendukung panggilan sistem eksekutif, dapat menjalankan aplikasi
Selama menjalankan satu program yang dapat dieksekusi, jalankan program lain, menunjukkan bahwa multitasking didukung
Implementasi Program Loop
Lihat di sini untuk detailnya
Tautan demo terakhir
Lihat di sini untuk detailnya
Tatanan demo historis
- ASM_INT_80
- ASM_CALL_C
- LDS_TEST
- protect_mode_demo
- protect_mode_cpp_demo
- a20_not_open
- a20_open
- mm
- user_mode_demo
- fork_demo
- cp_on_write
- print_str_demo
- fs_demo
- exec_demo
- shell_demo
- ls_demo
- EXIT_DEMO
- common_header_demo
B Dokumen Situs Web
- 01 Tujuan & Persiapan
- 02 Perbandingan Dua Arah
- 03 Kontrol File Biner
- 04 Mode Lindungi Cepat
- 05 Baris Alamat A20
- 06 8259a
- 07 mm