Cargo-image
An alternative to bootimage using cargo-sysroot.
The advantage of cargo-sysroot is that it's composable, eg other tools will work with it,
even if they don't know about it, because it sets up cargo so that the
normal commands like cargo build will work.
Like bootimage, this tool will combine your kernel with the
x86_64 bootloader crate, so you can, well, boot it.
Usage
In your project directory, simply run cargo image.
The output image will be located at target/{your-triple}/debug/{your-binary-name}.bin. Your binary name will usually be the name of your project.
Details
The bootloader sysroot crates are compiled using cargo sysroot,
and cargo sysroot will be called before building your kernel, to ensure everything is up to date.
Prerequisite
- A nightly compiler.
- A
.cargo/configsetup to build your target. cargo-sysrootv0.6.0 or later.bootloaderv0.8.0 or later. Older versions are untested and probably won't work.- The
llvm-tools-previewcomponent via rustup.
Limitations
- No attempt is made to follow the
.cargo/configsearch path, eg this tool will not look in the parent directory likecargowould.
FAQ
- Q: What about
bootimage? - A: 🤷. It didn't work for my needs, so I wrote my own.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.