(Format:UTF-8)
The operating system written in Rust
Methylenix is an OS made up of Rust.
All are written in Rust, except for areas that are only used in assembly, such as startup initialization and I/O instructions.
The origin of this program was when I participated as a student in the National Security Camp 2017 Intensive Course "X: Create Your Own Languages and OS."
For information on security camps, please see Security Camp: Information Technology Promotion Agency, IPA Independent Administrative Agency. We even implemented interrupts at the security camp. (Reference: Security Camp 2017 Participation Notes | PG_MANA's Miscellaneous Notes)
The name Methylenix is taken from the methylene group. We wanted to combine modules to create an application, just like organic compounds, by combining various parts, and we added "nix" to the group to create a methylene group that seems to be a good mnemonic.
Copyright 2018 PG_MANA
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Software required
git clone https://github.com/PG-MANA/Methylenix.git
cd Methylenix
make iso
# created bin/img/boot.isoThe pre-built image can be found at https://repo.taprix.org/pg_mana/methylenix/images/x86_64.
git clone https://github.com/PG-MANA/Methylenix.git
cd Methylenix
make TARGET_ARCH=aarch64
# created bin/EFI/BOOT/The pre-built image can be found at https://repo.taprix.org/pg_mana/methylenix/images/aarch64/.
qemu-system-x86_64 is required.
qemu-system-x86_64 -cpu qemu64,+fsgsbase --cdrom bin/img/boot.iso
# or (OVMF)
qemu-system-x86_64 --cdrom bin/img/boot.iso -cpu qemu64,+fsgsbase -smp 2 -m 512M -bios /usr/bin/OVMF/OVMF.fd
# or (to emulate host cpu)
qemu-system-x86_64 --cdrom bin/img/boot.iso -cpu host -smp 2 -m 512M -bios /usr/bin/OVMF/OVMF.fd --enable-kvm
# NIC and NVMe Emulation
qemu-system-x86_64 -drive if=pflash,format=raw,readonly=on,file=/path/to/OVMF_CODE.fd -drive if=pflash,format=raw,file=/path/to/QEMU_VARS.fd -m 1G -cdrom bin/img/boot.iso -smp 4 --enable-kvm -cpu host -netdev user,id=net0,hostfwd=tcp::7777-:8080 -device e1000e,netdev=net0,mac=52:54:00:12:34:56 -drive file=/path/to/img.qcow2,if=none,id=nvm -device nvme,serial=12345678,drive=nvm --boot order=dYou will need OVMF for qemu-system-aarch64 and AArch64.
# Modify "/usr/bin/OVMF/OVMF_AARCH64.fd" to your suitable path
qemu-system-aarch64 -m 1G -cpu a64fx -machine virt,gic-version=3 -smp 2 -nographic -bios /usr/bin/OVMF/OVMF_AARCH64.fd -drive file=fat:rw:bin/,format=raw,media=diskcargo doc --open For basics, follow https://doc.rust-lang.org/1.1.0/style/style/naming/README.html. Code shaping uses rustfmt.
(Maybe he himself is not protecting)
https://twitter.com/PG_MANA_
https://pg-mana.net
https://methylenix.org (Currently, I just redirect to GitHub. When can I do it?)