Bien que P1C0 ait commencé comme un terrain de jeu et un outil de recherche pour M1 Mac, il se dirige actuellement vers un simple noyau et peut-être le système d'exploitation complet dans le futur ciblant le MacBook Pro 14 "2021.
Le système d'exploitation est principalement écrit en rouille, avec quelques bits d'assemblage ici et là pour interagir avec le matériel. À l'heure actuelle, il prend en charge le filetage de base dans EL1 et certains pilotes pour interagir avec le matériel (comme un pilote HID pour le clavier via le protocole de transport SPI).
Obtenez les sources de GitHub avec:
git clone https://github.com/javier-varez/p1c0En supposant que vous ayez des cargaisons installées dans votre système, vous aurez besoin de quelques dépendances supplémentaires pour construire et tester le projet:
# 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-gnuAfin d'exécuter le simulateur, vous aurez besoin d'une version de Qemu avec la prise en charge de l'Apple M1 Pro. Vous pouvez trouver cette version ici et la dernière version ici.
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 Cela créera un fichier .macho dans fw/p1c0.macho . Pour installer cet objet dans votre ordinateur, vous pouvez suivre les instructions ici.
$ cargo tN'hésitez pas à contribuer à ce projet et aux problèmes ouverts. Les contributions appréciées comprennent, sans s'y limiter:
En ce qui concerne les contributions du code, assurez-vous de formater tout le code avec rust-fmt .
Une partie de ce code est basée sur les recherches fantastiques effectuées par Marcan et les bonnes personnes derrière le projet Asahi Linux.
En outre, un code précoce (comme le fichier Excepte.RS) était basé sur le tutorial Rust-Rasmberrypi-Os de l'organisation en bouchette.