Несмотря на то, что P1C0 начинался как игровая площадка и инструмент для исследований для Mac MCS, в настоящее время он направляется к простому ядру и, возможно, завершению ОС в будущем, нацеленном на MacBook Pro 14 »2021 года.
ОС в основном написана в ржавчине, с некоторыми кусочками сборки здесь и там, чтобы взаимодействовать с оборудованием. На данный момент он поддерживает базовые резьбы в EL1 и некоторые драйверы для взаимодействия с аппаратным обеспечением (например, драйвер HID для клавиатуры через протокол транспорта SPI).
Получите источники от GitHub с:
git clone https://github.com/javier-varez/p1c0Предполагая, что в вашей системе установлен груз, вам понадобится еще пара зависимостей для создания и тестирования проекта:
# 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-gnuЧтобы запустить симулятор, вам понадобится версия QEMU с поддержкой Apple M1 Pro. Вы можете найти эту версию здесь, и последний выпуск здесь.
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 Это создаст файл .macho в fw/p1c0.macho . Чтобы установить этот объект в свой компьютер, вы можете следовать инструкциям здесь.
$ cargo tНе стесняйтесь вносить свой вклад в этот проект и открыть проблемы. Признанные взносы включают, но не ограничиваются:
Что касается кодовых вкладов, обязательно форматируйте весь код с помощью rust-fmt .
Некоторые из этого кода основаны на фантастических исследованиях, проведенных Марканом и хорошими людьми, стоящими за проектом Asahi Linux.
Кроме того, какой-то ранний код (например, файл exceptions.rs) был основан на Rust-Raspberryperpi-Os-Tutorial из организации, встроенной в ржавчин.