X86 아키텍처를위한 보호 모드로 내장 된 다중 스레드 커널
커널은 Source의 맞춤형 GCC 크로스 컴파일러를 사용하여 개발되었습니다.
Scorpion에는 거의 모든 기본 구성 요소가 있습니다.
전갈
전갈 개발 중에 사용되는 지속적이고 광범위한 참조는 다음과 같습니다. https://wiki.osdev.org/main_page
다음은 전갈의 속성 중 일부입니다.
0x80 인터럽트하십시오커널의 모든 속성은 여기서 캡처되지 않을 수 있으며 시간이 지남에 따라 계속 개선 될 수 있지만 위의 속성은 핵심 속성으로 유지됩니다.
전갈을 구축하고 테스트 할 수있는 전제 조건이 있습니다
커널과 부트 로더를 구축하기 전에 크로스 컴파일러를 구축하여 환경을 준비해야합니다. 호스트가 커널을 켜는 대상과 다른 아키텍처를 가질 수 있으므로 크로스 컴파일러가 필요합니다.
다음 명령으로 크로스 컴파일러 종속성을 설치하십시오.
sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libisl-dev
Bin Utils 및 GCC의 소스 코드를 다음 링크를 사용하여 $HOME/src 디렉토리로 다운로드하십시오.
$HOME/src 디렉토리에서 두 다운로드를 추출하십시오
이제 소스를 대상의 컴파일러 개체 파일로 변환하겠습니다.
먼저 일부 Env Vars는 올바른 위치에 컴파일 된 바이너리를 설치할 수 있도록 설정해야합니다.
export PREFIX="$HOME/opt/cross"
export TARGET=i686-elf
export PATH="$PREFIX/bin:$PATH"
이후 명령을 실행하여 binutils를 구축하십시오. XYZ를 자신의 버전으로 바꾸는 것을 잊지 마십시오.
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
GCC를 빌드하려면 다음 명령을 실행하십시오. XYZ를 자신의 버전으로 바꾸는 것을 잊지 마십시오.
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
위의 모든 단계가 완료되면 크로스 컴파일러가 성공적으로 빌드 및 설치되어 있는지 여부를 테스트하십시오.
$HOME/opt/cross/bin/$TARGET-gcc --version
크로스 컴파일러가 준비되었으므로 부트 로더로 전갈을 만들 준비가되었습니다. 프로젝트 구조의 루트에서 다음을 실행하십시오.
./build.sh
빌드가 성공하면 프로젝트의 루트에있는 bin 디렉토리에서 3 개의 바이너리를 생성해야합니다.
boot.binkernel.binscorpion.bin 이전 섹션에서 출력 생성 바이너리를 사용하여 전갈 OS를 실행할 시간입니다. 터미널에서 다음 명령을 실행하여 전갈을 QEMU로 시뮬레이션하십시오.
qemu-system-i386 -hda ./bin/scorpion.bin
또는 BIOS 메뉴에서 부팅 가능한 장치가 올바르게 설정된 경우 실제 시스템에서 테스트하는 경우 다음 쉘까지 기계가 다음 쉘까지 부팅됩니다.

왼쪽 상단의 전갈 버전으로 쉘 프롬프트를 활성화해야합니다. 이제 쉘에서 입력을 시작할 수 있습니다. blank.elf 라는 샘플 프로그램이 전갈 하드 드라이브에 생성 및로드되어 액세스 할 수 있습니다.
전갈 명령 프롬프트에서 다음을 실행하여 프로그램을 메모리에로드하십시오.
> blank.elf
이 프로그램에는 다음과 같이 다음과 같이 다음과 같이 처리 할 수있는 인수가 장전 될 수 있습니다.
> blank.elf 55 21 tree
이와 같은 출력은 프로그램에 인수가 있거나 없는지 여부에 따라 생성되어야합니다.
