Un sistema operativo Hobby para ayudarme a aprender sobre las cosas del núcleo, para eventualmente ingresar al desarrollo del núcleo de Linux. Actualmente es compatible con:
Mi objetivo es hacer que el código sea legible y bien organizado. Un blog sigue el desarrollo de este proyecto, aquí https://jmnl.xyz/, y el wiki proporciona más información sobre el proyecto y sus partes internas.
Instale los siguientes paquetes:
xorriso para Debian/Ubuntu; libisoburn en Archlinuxgrubmtoolsimagemagickqemu (recomendado)bochs (opcional)clang +, por ejemplo, base-devel en Archlinux (opcional)Correr
make toolchain
Para construir el compilador transversal necesario para compilar los copos de nieve. Este comando descargará y ejecutará scripts de compilación para gcc y binutils de los servidores GNU FTP, e instalará el compilador cruzado en toolchain/compiler .
En lugar de construir su propia cadena de herramientas, puede compilar copias de nieve con clang de su sistema: simplemente desenchufado el siguiente grupo de líneas en el Makefile principal:
# CC=clang
# LD=ld
# AR=ar
# AS=as
# CFLAGS+=-target i386-pc-none-eabi -m32
# CFLAGS+=-mno-mmx -mno-sse -mno-sse2 Si su distribución le proporciona un compilador cruzado, es posible que desee ahorrar tiempo y usarlo. Para hacerlo, debe editar las siguientes variables en el Makefile principal principal para que coincidan con los ejecutables de su compilador cruzado:
AR=$(HOST)-ar
AS=$(HOST)-as
LD=$(HOST)-ld
CC=$(HOST)-gcc --sysroot=$(SYSROOT) -isystem=/$(INCLUDEDIR)
Puede editar HOST , o codificar los nombres de ejecutables directamente.
Corre tampoco
make qemu # or
make bochs
Para probar los copos de nieve en una VM. Vea el ciclo de edición/depuración para obtener más opciones sobre cómo compilar y ejecutar Snowflakeos.
Es posible probar este proyecto en hardware real. Puede copiar SnowflakeOS.iso a una unidad USB usando dd , como lo haría al hacer un USB en vivo de otro sistema operativo, y arrancárselo directamente.
Tenga en cuenta que esto rara vez se prueba, quién sabe lo que hará :) Me encantaría saberlo si intenta esto, en qué hardware, etc.
¡Las contribuciones son bienvenidas, en cualquier forma! Consulte CONTRIBUTING.md y el wiki de este proyecto para su orientación.