Plan 9 à Rouille
R9 est une réimplémentation du noyau plan9 dans Rust. Il est non seulement inspiré du code source original de Plan 9, mais également dérivé à bien des égards.
Nous utilisons cargo
et le modèle xtask
pour construire le noyau.
Pour construire r9 pour x86_64, nous supposons que vous avez cloné le référentiel git dans un endroit pratique. Ensuite, accédez simplement au répertoire de niveau supérieur et cargo xtask build --arch x86-64
.
Pour construire pour aarch64, exécutez cargo xtask build --arch aarch64
(actuellement, seul Raspberry Pi 3 est pris en charge).
Il existe d'autres sous-commandes xtask
utiles ; exécutez cargo xtask help
pour voir ce qui est disponible.
À l'heure actuelle, r9 n'est pas auto-hébergé.
cargo xtask dist
, dont dépend cargo xtask qemu
, nécessite llvm-objcopy
. Cela devrait vivre dans le chemin de la chaîne d’outils Rust. Vous pouvez installer en exécutant :
rustup component add llvm-tools
Si vous recevez des messages No such file or directory (os error 2)
, installez llvm
séparément de la chaîne d'outils rust et définissez :
OBJCOPY=$(which llvm-objcopy) cargo xtask qemukvm
Si No such file or directory (os error 2)
persiste, vérifiez que qemu
ou qemu-kvm
est installé et que le binaire qemu-system-x86_64
se trouve dans votre chemin (ou qemu-system-aarch64
dans le cas d'aarch64).
R9 peut être exécuté en utilisant qemu pour les différentes architectures prises en charge :
Cambre | Plate-forme | Ligne de commande |
---|---|---|
aarch64 | raspi3b | cargo xtask qemu --arch aarch64 --verbose |
aarch64 | raspi4b | cargo xtask qemu --arch aarch64 --config raspi4b --verbose |
x86-64 | q35 | cargo xtask qemu --arch x86-64 --verbose |
x86-64 (avec kvm) | q35 | cargo xtask qemu --arch x86-64 --kvm --verbose |
risque | virt | cargo xtask qemu --arch riscv64 --verbose |
R9 a été exécuté plus ou moins sur le matériel suivant :
En supposant que vous puissiez configurer un serveur TFTP (bonne chance, c'est incroyablement compliqué, mais pour ce que ça vaut, dnsmasq peut fonctionner de temps en temps), et en supposant l'emplacement de votre répertoire netboot, vous pouvez créer et copier le binaire en utilisant la commande suivante :
cargo xtask dist --arch aarch64 --verbose && cp target/aarch64-unknown-none-elf/debug/aarch64-qemu.gz ../netboot/kernel8.img
Cela copie un binaire compressé, qui devrait être beaucoup plus rapide à copier sur le réseau.
Le firmware Raspberry Pi charge config.txt
avant le noyau. Ici, nous pouvons définir quel UART utiliser, entre autres. Le contenu suivant sera configuré pour utiliser le miniuart :
enable_uart=1
core_freq_min=500