Minios는 32 비트 X86 아키텍처 CPU에서 실행할 수있는 운영 체제 개발 학습자를위한 소형 운영 체제 커널입니다. Minios는 운영 체제 개발의 핵심 개념과 기본 원칙을 배우고 연구하는 데 중점을두고 일반 하드웨어를 기반으로 운영 체제의 다양한 기본 서브 시스템 또는 모듈을 구현합니다.
Linux 및 FreeBSD와 같은 인기있는 운영 체제 커널은 양호하지만 커널 개발 초보자에게는 적합하지 않습니다. 한편으로,이 운영 체제 커널은 수년 동안 개발되어 왔으며 엄청난 양의 코드를 축적했습니다 (2005 년에 출시 된 Linux 커널 v2.6.12의 초기 버전에는 이미 약 4 백만 줄의 코드가 있습니다). 반면, 생산 환경에서의 응용 프로그램의 요구로 인해이 커널 코드에는 운영 체제의 기본 원칙과 관련이없는 많은 세부 사항이 포함되어있어 초보자가 핵심 포인트를 파악하기가 어렵습니다. 따라서 소량의 코드를 갖춘 간단한 운영 체제 커널로 시작하여 짧은 시간을 사용하여 운영 체제 커널 개발 필드의 핵심 개념과 기본 원칙을 익히고 특정 수준으로 이러한 기본 지식을 마스터 한 다음 Linux와 같은 실제 커널의 개발에 헌신하는 것은 상대적으로 현실적이고 실행 가능한 전략에 소비합니다. 커널 개발에 참여하지 않더라도 시작하기 쉬운 커널을 통해 운영 체제에 대한 기본 지식을 배우면보다 강력하고 수행하는 응용 프로그램을 작성하는 데 도움이됩니다.
Minios는 주로 C 언어 및 X86 어셈블리 언어를 기반으로 개발되며 사용 된 개발 도구에는 다음이 포함됩니다.
그 중 Binutils는 정적 라이브러리 생성 도구, 파일 크기를 줄이기 위해 이진 파일에서 기호 테이블을 제거하기위한 스트립을위한 도구를 포함하여 이진 파일을 작동하기위한 일련의 도구입니다.
Minios는 현재 Floppy 디스크에서 시작되었으며 시작 프로세스는 다음과 같습니다.
Minios는 학습자를위한 운영 체제 커널이므로 현재 Bochs 및 QEMU를 포함한 옵션 가상 머신을 갖춘 가상 머신에서 주로 실행 중입니다.
Bochs에서 미니오를 실행하십시오
sudo apt-get install bochs 직접 실행하여 설치할 수 있습니다. Bochs의 소스 코드를 먼저 다운로드 한 다음 컴파일하여 설치할 수 있습니다. 소스 코드를 통해 설치할 때 원하는 버전의 Bochs를 선택할 수 있습니다.tar zxvf misc/80m.img.tar.gz . 하드 디스크 이미지 압축 패키지에서 하드 디스크 이미지를 압축 해제하십시오.bochs 명령을 실행하여 Bochs Virtual Machine을 시작하십시오. Bochs는 먼저 Bochsrc 파일에서 구성 정보를 읽은 다음 Bochs가 제공 한 실행 프롬프트 정보를 Bochs에서 실행할 수 있도록합니다.QEMU에서 미니오를 실행하십시오
sudo apt-get install qemu-system-x86 다운로드 할 수 있습니다.tar zxvf misc/80m.img.tar.gz . 하드 디스크 이미지 압축 패키지에서 하드 디스크 이미지를 압축 해제하십시오../launch-qemu.sh 명령을 실행하여 QEMU 가상 머신을 시작한 다음 Minios가 QEMU에서 직접 실행되기 시작합니다. QEMU 가상 머신은 Bochsrc와 같은 구성 파일을 사용하지 않습니다. 구성 정보는 명령 줄 옵션을 통해 지정됩니다. 스크립트 런치 -qemu.sh에는 현재 사용되는 구성 옵션이 포함되어 있습니다. Bochs 또는 QEMU에 포함 된 디버깅 함수를 사용하여 미니 오스를 디버깅 할 수 있지만,이 디버깅 방법은 어셈블리 프로그램이 길고 읽기가 어렵 기 때문에 사용하기 편리하지 않습니다. 다행히 Bochs와 QEMU는 GDB 지원이 내장되어 있습니다. GDB가 제공하는 원격 디버깅 기능과 결합하여 C 소스 코드에서 Minios를 디버깅 할 수 있습니다.
Bochs+GDB로 미니 디버깅
./launch-bochs-gdb.sh 실행하십시오. 실행중인 쉘 스크립트는 새로운 터미널 창에서 GDB를 실행하고 커널 바이너리의 디버그 버전을로드합니다.target remote :2345 실행하여 Bochs와의 연결을 설정하십시오.QEMU+GDB로 미니 디버깅
./launch-bochs-gdb.sh 실행하십시오. 실행중인 쉘 스크립트는 새로운 터미널 창에서 GDB를 실행하고 커널 바이너리의 디버그 버전을로드합니다.target remote :1234 실행하여 QEMU와 연결을 설정하십시오. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean