LANOS - Esclareça a série de pontos de conhecimento de Linux0.12
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Tutorial em vídeo de Bilibili
Recursos de referência
- "Análise de código fonte do Linux" versão eletrônica mais recente
- Linux 0,1x Código -fonte
- Site oficial do OldLlinux
- Orange's: Implementação de um sistema operacional
Obrigado, Dr. Zhao Jiong, professor Yuan, Sr. Hideshi Kawahiro e o maior respeito!
Recursos deste tutorial
- Muitas referências às idéias de design do Linux0.12 para criar demos, o que ajudará você a ler o código -fonte do Linux mais tarde
- Reimplementar o máximo possível o código implementado no Linux com C para melhorar a legibilidade e reduzir os custos de aprendizagem
- Use Docker para compilar, facilitando a construção do ambiente de compilação
Método de compilação ultra-rápida (confiando no Docker & Networking)
Execute o seguinte comando para puxar o código e compilar (será mais lento executar make_os.sh pela primeira vez porque você deseja puxar a imagem compilada do Docker)
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
Efeito de execução
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.
Catálogo de pontos de conhecimento
- Como compilar e executar demonstração
- Esclareça a série Linux 0.12 Knowledge Point para fazer a montagem para C não está mais longe
- Esclareça a linha de endereço A20 da série Linux0.12 Ponto de conhecimento
- Esclareça a inicialização e a interrupção do relógio de 8259a na série Linux0.12 do Conhecimento Point
- 8259a Princípio Descrição detalhada
- Classificação de informações relacionadas online
Sangue e lágrimas
- Salte para o modo de usuário
- Fork de depuração preliminar
- Fork+Copy on Write
- Sobre variáveis globais
Outras instruções
- Como compilar um arquivo binário personalizado
Pendência
Print_str implementação Feito 20200224 Print_num implementação Feito 20200224 implementação LAN_FS Feito 20200224 implementação executiva Feito 20200224 Implementação de saída Feito 20200304
Exibição de efeito final
Existem conchas simples e sistemas de arquivos que podem executar programas LS
Suportar chamadas do sistema EXEC, pode executar aplicativos
Durante a execução de um programa executável, execute outro programa, indicando que a multitarefa é suportada
Implementação do programa Loop
Veja aqui para obter detalhes
Link de demonstração final
Veja aqui para obter detalhes
Ordem de demonstração histórica
- 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 Documento do site
- 01 metas e preparativos
- 02 Comparação de duas direções
- 03 Arquivos binários de controle
- 04 Modo de proteção rápido
- 05 linha de endereço A20
- 06 8259a
- 07 mm