Aunque P1C0 comenzó como un patio de recreo e herramienta de investigación para M1 Macs, actualmente se dirige hacia un kernel simple y tal vez complete un sistema operativo en el futuro dirigido al 2021 MacBook Pro 14 ".
El sistema operativo está escrito principalmente en óxido, con algunos bits de ensamblaje aquí y allá para interactuar con el hardware. Por el momento, tiene soporte para el enhebrado básico en EL1 y algunos controladores para interactuar con el hardware (como un controlador HID para el teclado a través del protocolo de transporte SPI).
Obtenga las fuentes de GitHub con:
git clone https://github.com/javier-varez/p1c0Suponiendo que tenga la carga instalada en su sistema, necesitará un par más de dependencias para construir y probar el proyecto:
# Install cargo-binutils, used to generate a binary/Mach-o file out of the compiled ELF.
cargo install cargo-binutils
# Assuming you are building this in Ubuntu-20.04. Otherwise check your package manager
# On an m1 mac with macOS p1c0 will just use the built-in clang version
sudo apt update
sudo apt install -y gcc-aarch64-linux-gnuPara ejecutar el simulador, necesitará una versión de QEMU con soporte para Apple M1 Pro. Puede encontrar esta versión aquí y el último lanzamiento aquí.
INSTALL_DIR= ${YOUR_DESIRED_INSTALL_PATH}
OS= $( uname | tr ' [:upper:] ' ' [:lower:] ' )
ARCH= $( uname -m )
curl -OL https://github.com/Javier-varez/qemu-apple-m1/releases/download/Apple_M1_Pro_0.1.3/0.1.3_M1_Pro_ ${OS} _ ${ARCH} .zip
unzip -d ${INSTALL_DIR} /qemu-apple-m1 0.1.3_M1_Pro_ ${OS} _ ${ARCH} .zip
# And finally make it available in your path. You can add this to your .bashrc or .bash_profile
export PATH= ${INSTALL_DIR} /qemu-apple-m1/bin: $PATHcargo rrcargo br Esto creará un archivo .macho en fw/p1c0.macho . Para instalar este objeto en su computadora, puede seguir las instrucciones aquí.
$ cargo tSiéntase libre de contribuir a este proyecto y problemas abiertos. Las contribuciones apreciadas incluyen, pero no se limitan a:
Con respecto a las contribuciones del código, asegúrese de formatear todo el código con rust-fmt .
Parte de este código se basa en la fantástica investigación realizada por Marcan y las buenas personas detrás del proyecto Asahi Linux.
Además, algún código temprano (como el archivo Excepciones.rs) se basó en el tutorial Rust-Raspberrypi-Os de la organización Embedida de Rust.