Um kernel multithread construído no modo protegido para a arquitetura x86
O kernel foi desenvolvido usando o compilador cruzado GCC personalizado da fonte
Scorpion tem quase todos os componentes fundamentais abrangidos em um kernel monolítico completo
Scorpion é um kernel monolítico usado para demonstrar como o kernel se comporta e pode ser construído desde o início
A referência constante e extensa usada durante o desenvolvimento de Scorpion é: https://wiki.osdev.org/main_page
A seguir, alguns dos atributos de Scorpion:
0x80 para o processo espacial do usuário e comunicação do kernelTodos os atributos do kernel não podem ser capturados aqui e podem continuar melhorando com o tempo, mas os acima permanecerão como propriedades centrais.
Existem alguns pré -requisitos para construir e testar o escorpião
Antes de construir o kernel e o carregador de inicialização, precisamos preparar o ambiente construindo o compilador cruzado. Um compilador cruzado é necessário porque seu host pode ter uma arquitetura diferente do alvo em que estamos executando o kernel.
Instale dependências de compiladores cruzados com os seguintes comandos:
sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev
Faça o download do código -fonte do BIN UTILS e GCC no diretório $HOME/src usando os seguintes links:
Extraia ambos os downloads no diretório $HOME/src
Agora vamos converter a fonte em arquivos de objeto do compilador para o nosso alvo
Primeiro, alguns vars enviados precisam ser configurados para permitir a instalação de binários compilados no local certo
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
Execute o seguinte comando para construir binutils. Não se esqueça de substituir o XYZ por sua própria versão.
cd $HOME/src
mkdir build-binutils
cd build-binutils
../binutils-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
make
make install
Execute o seguinte comando para construir o GCC. Não se esqueça de substituir o XYZ por sua própria versão.
cd $HOME/src
# The $PREFIX/bin dir _must_ be in the PATH. We did that above.
which -- $TARGET-as || echo $TARGET-as is not in the PATH
mkdir build-gcc
cd build-gcc
../gcc-x.y.z/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
make all-gcc
make all-target-libgcc
make install-gcc
make install-target-libgcc
Depois que todas as etapas acima forem concluídas, vá em frente e teste se o seu compilador cruzado for construído e instalado com sucesso ou não com o seguinte comando:
$HOME/opt/cross/bin/$TARGET-gcc --version
Agora que nosso compilador cruzado está pronto, estamos prontos para construir o Scorpion com o carregador de inicialização. Execute o seguinte na raiz da estrutura do projeto
./build.sh
Se a construção for bem -sucedida, 3 binários devem ser gerados no diretório bin na raiz do projeto
boot.binkernel.binscorpion.bin É hora de executar o SCorpion OS usando os binários gerados por saída na seção anterior. Execute o seguinte comando no terminal para simular Scorpion com Qemu
qemu-system-i386 -hda ./bin/scorpion.bin
Alternativamente

Um prompt de shell deve ser ativado com a versão de escorpião no canto superior esquerdo. Agora você pode começar a digitar no shell. Um programa de amostra chamado blank.elf
Carregue o programa na memória, executando o seguinte no prompt de comando de Scorpion
> blank.elf
O programa também pode ser carregado com argumentos que podem ser tratados pelo processo do usuário que se seguiu da seguinte forma:
> blank.elf 55 21 tree
Uma saída como essa deve ser gerada, dependendo se o programa é carregado com ou sem argumentos:
