Minios é um kernel do sistema operacional em miniatura para alunos de desenvolvimento de sistemas operacionais que podem ser executados em uma CPU de arquitetura X86 de 32 bits. Minios se concentra no aprendizado e na pesquisa dos conceitos principais e princípios básicos no desenvolvimento do sistema operacional e implementa vários subsistemas ou módulos básicos no sistema operacional baseado em hardware geral.
Os kernels do sistema operacional popular, como Linux e FreeBSD, são bons, mas não são adequados para iniciantes no desenvolvimento do kernel. Por um lado, esses kernels do sistema operacional se desenvolveram há muitos anos e acumularam uma enorme quantidade de código (a versão inicial do Linux Kernel v2.6.12 lançada em 2005 já tinha cerca de 4 milhões de linhas de código). Por outro lado, devido às necessidades das aplicações em ambientes de produção, esses códigos de kernel contêm um grande número de detalhes que não estão relacionados aos princípios básicos do sistema operacional, o que é difícil para iniciantes compreender os pontos -chave. Portanto, começando com um kernel simples do sistema operacional com uma pequena quantidade de código, usando um curto período de tempo para se familiarizar e dominar os conceitos principais e os princípios básicos do campo de desenvolvimento do kernel do sistema operacional, dominar esses conhecimentos básicos para um determinado nível e depois se dedicar ao desenvolvimento de kernels práticos, como Linux, é uma estratégia relativamente realista e feita para o kernel. Mesmo se você não planeja se envolver no desenvolvimento do kernel, aprender algum conhecimento básico sobre o sistema operacional por meio de um kernel fácil de iniciar ajudará você a escrever aplicativos mais robustos e executados.
Minios é desenvolvido principalmente com base na linguagem C e na linguagem de montagem x86, e as ferramentas de desenvolvimento usadas incluem:
Entre eles, o Binutils está um conjunto de ferramentas para operar arquivos binários, incluindo ferramentas para criar bibliotecas estáticas, ferramentas para tiras para remover tabelas de símbolos de arquivos binários para reduzir o tamanho do arquivo, etc.
Atualmente, o Minios é iniciado no disquete, e o processo de inicialização é:
Como o Minios é um kernel do sistema operacional para os alunos, ele está atualmente em execução principalmente em máquinas virtuais, com máquinas virtuais opcionais, incluindo Bochs e Qemu.
Execute minios em bochs
sudo apt-get install bochs no sistema Ubuntu para instalá-lo. Você pode baixar o código -fonte do Bochs primeiro e depois compilá -lo e instalá -lo. Você pode selecionar a versão desejada do Bochs ao instalar através do código -fonte.tar zxvf misc/80m.img.tar.gz . e descomprimir a imagem do disco rígido do pacote de compactação da imagem do disco rígido.bochs no diretório atual para iniciar a máquina virtual do Bochs. O Bochs primeiro lerá as informações de configuração do arquivo bochsrc e depois confirmará as informações de prompt de execução fornecidas pelo Bochs para permitir que o Minios seja executado no Bochs.Execute minios em Qemu
sudo apt-get install qemu-system-x86 no sistema Ubuntu para instalação, ou pode baixar o código-fonte do QEMU para compilação e instalação.tar zxvf misc/80m.img.tar.gz . e descomprimir a imagem do disco rígido do pacote de compactação da imagem do disco rígido../launch-qemu.sh no diretório atual para iniciar a máquina virtual qemu e, em seguida, o Minios começará a ser executado diretamente no Qemu. A máquina virtual qemu não usa um arquivo de configuração como o Bochsrc. As informações de configuração são especificadas através das opções da linha de comando. O script de lançamento qemu.sh contém as opções de configuração atualmente usadas. Os Minios podem ser depurados no nível da assembléia usando a função de depuração incluída no Bochs ou no Qemu, mas esse método de depuração não é muito conveniente de usar, porque o programa de montagem é demorado e difícil de ler. Felizmente, Bochs e Qemu têm suporte de GDB integrado. Ao combinar com a função de depuração remota fornecida pelo GDB, o Minios pode ser depurado no código -fonte C.
Debugando Minios com Bochs+GDB
./launch-bochs-gdb.sh no diretório de origem Minios. O script do shell em execução executará o GDB em uma nova janela do terminal e carregará a versão de depuração do binário do kernel.target remote :2345 na interface de comando do GDB para estabelecer uma conexão com o Bochs.Depuração Minios com Qemu+GDB
./launch-bochs-gdb.sh no diretório de origem Minios. O script do shell em execução executará o GDB em uma nova janela do terminal e carregará a versão de depuração do binário do kernel.target remote :1234 Na interface de comando do GDB para estabelecer uma conexão com qemu. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean