Tiny OS 는 x86_64 아키텍처에서 실행되는 운영 체제입니다.
이 프로젝트는 linux 시스템에서 개발되었습니다. windows Systems에서는 WSL 설치하여 linux 서브 시스템을 실행할 수 있습니다.
WSL 사용하는 경우 :
windows 에 X 서버를 설치합니다. Xming 또는 VCXSVR을 설치하는 것이 좋습니다.-ac 통해 X 서버를 시작하거나 GUI를 통해 disable access control 확인해야합니다.WSL 에서 :WSL 사용하는 경우 (버전 1) : export DISPLAY=:0WSL2 (버전 2)를 사용하는 경우 : export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc 또는 ~/.profile 파일의 끝에 추가하십시오.Could not initialize SDL (No available video device) ... GTK에 대한 오류를 초기화 할 수없는 경우 X 서버가 시작되었는지 확인하고 환경 변수 DISPLAY 올바르게 설정되어 있는지 확인하십시오. Rust 는 최신 시스템 수준 프로그래밍 언어 이며이 프로젝트는 주로 Rust Language를 사용하여 개발됩니다. Rust 공식 웹 사이트를 통해 다운로드하여 설치하십시오. 참고 :이 프로젝트에는 nightly 버전의 도구 체인을 설치해야합니다.
설치가 완료되면 rustup 통해 llvm-tools 설치하십시오.
rustup component add llvm-tools-preview 개발을 위해 cargo 통해 유용한 도구를 설치하십시오.
cargo install cargo-binutilsbochs 에뮬레이터를 설치하십시오 bochs 시뮬레이터를 통한 시뮬레이션. 소스 코드 다운로드 링크 : 소스 포지 -Bochs x86 PC 에뮬레이터. 다운로드, 컴파일 및 설치 후
명령은 다음과 같습니다.
cargo run --release 컴파일 된 커널 이미지 경로는 target/os.img 입니다.
bximage 통해 ./bochs 디렉토리에서 os.img 파일을 만듭니다.
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q dd 도구를 통해 ./bochs/os.img 로 ./target/os.img :
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs 실행하십시오 bochs/conf 에는 디렉토리에 다음 구성 파일이 있습니다.
bochsdbg-gdb.bxrc : gdb 통해 원격으로 디버그하고 localhost:1234 ( bochs 컴파일 할 때 --enable-gdb-stub 활성화해야합니다)bochsdbg-win : window 플랫폼에서 그래픽 인터페이스가있는 Open bochs debuggerbochsrc.bxrc : debug 기능없이 가장 기본적인 bochs 구성 파일 시뮬레이션을 활성화하기 위해 bochs 실행하십시오.
bochs -q -f bochs/conf/bochsrc.bxrcqemu 실행하십시오 bochs 와 달리 qemu 생성 된 target/os.img 직접로드 할 수 있습니다.
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
프로젝트의 루트 디렉토리에는 Makefile 파일이 있으며, 이는 일부 실행 및 디버깅 명령을 정의합니다.
clean : 생성 된 파일을 청소하는 데 사용됩니다build-release : release 버전 커널 이미지를 컴파일하는 데 사용됩니다build-debug : debug 버전 커널 이미지를 컴파일하는 데 사용됩니다 (완료되지 않음)run-bochs : 커널 이미지를 컴파일하고 bochs 시뮬레이션을 시작하는 데 사용됩니다.run-qemu : 커널 이미지를 컴파일하고 qemu 시뮬레이션을 시작하는 데 사용됩니다.debug-bochs : 커널 이미지를 컴파일하는 데 사용, rust-gdb 통해 bochs 및 원격 debug 시작합니다.debug-qemu : 커널 이미지를 컴파일하는 데 사용, rust-gdb 를 통해 qemu 및 원격 debug 시작하십시오. 이 프로젝트는 주로 4 부분으로 나뉩니다.
builder : src 디렉토리에 위치한이 제품은 주로 커널 이미지를 컴파일하고 빌드하는 데 사용됩니다.boot : boot 디렉토리에 위치한 tiny OS 용 bootloader 입니다.boot_info : boot_info 디렉토리에 위치하여 BootInfo 구조를 제공합니다.kernel : kernel 디렉토리에 위치한 것은 tiny OS 의 커널 코드입니다. long mode 입력하십시오 bootloader 단계에서 kernel 로 정보를 전달할 수 있도록 BootInfo 구조 준비 elf 파일로드 logger 준비 (커널 개발 중에 tiny os 인쇄 기능을 구현하고 디버그하는 데 사용됨) Page Fault GP Fault 의 예비 처리 Double Fault 처리하십시오 linked_list_allocator 를 통해 예비 메모리 할당을 구현하십시오 buddy system 메모리 할당기를 구현하십시오 spawn 구현하십시오 FAT32 파일 시스템 구현 shell 구현하십시오Builder 구현 ( debug 및 release 이미지를 컴파일하도록 선택할 수 있음). dd 도구를 통해 bochs/os.img 에 새겨진 대신 bochs 직접로드 할 수있는 커널 이미지를 생성하십시오.