Tiny OS es un sistema operativo que se ejecuta en la arquitectura x86_64 .
Este proyecto se desarrolla en el sistema linux . En los sistemas windows , puede ejecutar linux instalando WSL .
Si está usando WSL :
windows ; Se recomienda instalar xming o vcxsvr.-ac , o verificar disable access control a través de la GUI.WSL :WSL (versión 1): export DISPLAY=:0WSL2 (versión 2): export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc o ~/.profile .Could not initialize SDL (No available video device) ... o algún error sobre GTK, verifique si su servidor X se inicia y si la DISPLAY de la variable de entorno se establece correctamente. Rust es un lenguaje de programación moderno a nivel de sistema, y este proyecto se desarrolla principalmente utilizando Rust . Descargue e instálelo a través del sitio web oficial de Rust. Nota: Este proyecto requiere la instalación de nightly de la cadena de herramientas.
Después de completar la instalación, instale llvm-tools a través de rustup :
rustup component add llvm-tools-preview Instale algunas herramientas útiles a través de cargo para el desarrollo:
cargo install cargo-binutilsbochs Simulación a través del simulador bochs . Enlace de descarga del código fuente: Forja de origen - Emulador de PC BOCHS X86. Después de descargar, compilar e instalar.
El comando es el siguiente:
cargo run --release La ruta de imagen del núcleo compilada es target/os.img .
Cree un archivo os.img en el directorio ./bochs a través de bximage :
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q Engrave ./target/os.img Into ./bochs/os.img a través de la herramienta dd :
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs bochs/conf tiene los siguientes archivos de configuración en el directorio:
bochsdbg-gdb.bxrc : puede depurar de forma remota a través de gdb y unir localhost:1234 (necesita habilitar --enable-gdb-stub al compilar bochs )bochsdbg-win : Abra debugger bochs con interfaz gráfica en la plataforma windowbochsrc.bxrc : el archivo de configuración bochs más básico, sin función debug Ejecute bochs para habilitar la simulación:
bochs -q -f bochs/conf/bochsrc.bxrcqemu A diferencia de bochs , qemu puede cargar directamente el target/os.img :
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
Hay un archivo Makefile en el directorio raíz del proyecto, que define algunos comandos de ejecución y depuración:
clean : se usa para limpiar los archivos generadosbuild-release : se usa para compilar imágenes de la versión de versión releasebuild-debug : se usa para compilar imágenes de kernel de versiones debug (no completadas)run-bochs : se usa para compilar imágenes del núcleo y comenzar la simulación bochsrun-qemu : se usa para compilar imágenes del núcleo e iniciar la simulación qemudebug-bochs : se usa para compilar imágenes del núcleo, iniciar bochs y debug remota a través de rust-gdbdebug-qemu : se usa para compilar imágenes del núcleo, iniciar qemu y debug remota a través de rust-gdb Este proyecto se divide principalmente en 4 partes:
builder : ubicado en el directorio src , se utiliza principalmente para compilar y construir imágenes de núcleoboot : ubicado en el directorio boot , es bootloader para tiny OSboot_info : ubicado en el directorio boot_info , proporciona BootInfokernel : ubicado en el directorio kernel , es el código del núcleo de tiny OS long mode BootInfo para pasar la información desde bootloader al kernel elf de kernel logger (utilizado para implementar tiny os y depurar durante el desarrollo del núcleo) Page Fault de procesamiento preliminar GP Fault Double Fault linked_list_allocator buddy system spawn disponible a nivel mundial FAT32 shellBuilder más flexible (puede optar por compilar debug y release de imágenes) bochs se puedan cargar directamente, en lugar de grabarla en bochs/os.img a través de la herramienta dd