Project Description
Rust language is on the way to enter linux kernel, use this hackweek to explore and learn what this could bring us (or not).
Goal for this Hackweek
No fixed goals, learn as much as possible, but some topics for inspiration:
- set up compilation and testing environment
- try to understand some aspects of the implementation
- locking primitives
- unsafe memory operations
- passing C <-> rust data structures
- higher level aspects
- limitations of current implementation, eg. can other subsystems be adapted for rust
- differences when designing interconnected data structures C vs rust
- example drivers and code
- analyze existing example driver
- try to write own
- analyze generated assembly object code
Resources
- https://doc.rust-lang.org/book/ rust language documentation
- v7 https://lore.kernel.org/lkml/20220523020209.11810-1-ojeda@kernel.org/
- https://github.com/Rust-for-Linux/linux.git -- linux sources with rust patches
- rust kernel API https://rust-for-linux.github.io/docs/kernel/
- TBD slack/IRC channel for discussions
- TBD lwn.net articles about the progress
Skill level:
- rust coding - beginner to expert
- rust enthusiasm - skeptic to fanatic
- linux kernel - intermediate to expert
Howtos
Rust
You can use rustup
tool to install the versions manually (package available in openSUSE), we require 1.61
, this is also available in openSUSE.
# rustup toolchain install 1.61
# rustup default 1.61
# rustup toolchain list
stable-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu
1.61-x86_64-unknown-linux-gnu (default)
The linux+rust support
- must read -- https://github.com/Rust-for-Linux/linux/blob/rust/Documentation/rust/quick-start.rst
- use this -- development repository (https://github.com/Rust-for-Linux/linux.git)
- do not use -- linux-next (https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git) -- rust patchset is there but compilation does not work with 1.60,
Linux
Checkout the Rust-for-Linux git tree, all make
commands need to be run as make LLVM=1
so the llvm support is detected even for configuration phase
make LLVM=1 defconfig
scripts/enable CONFIG_RUST
andmake LLVM=1 oldconfig
make LLVM=1 menuconfig
, navigate to General to enable rust and to Kernel hacking to enable all examplesmake LLVM=1 -j 16
to start build
Drivers, config options:
- ANDROIDBINDERIPC_RUST
- GPIOPL061RUST
- SAMPLES_RUST -- check all
- RUST_* namespace, various safety and debugging options
This project is part of:
Hack Week 21
Activity
Comments
Be the first to comment!
Similar Projects
Waysettings by dspinella
[comment]: # (Please use the project descriptio...
(Rust) Manage systems in NetBox using NetBox-Sync by chock
[comment]: # (Please use the project descriptio...
A set of utilities to produce a "from scratch" OCI/Docker container using Opensuse/SLE rpms by ldragon
[comment]: # (Please use the project descriptio...
Kanidm - Account Policy by firstyear
Project Description
Kanidm is a identity ...
A Flight Dynamics Library written in Rust with an Entity Component System architecture by vcuadradojuan
[comment]: # (Please use the project descriptio...
Generic text file preprocessor using custom syntax for define include ifdef by mdati
Project Description
Scope of this project...
Authenticated hashes for BTRFS by dsterba
Project Description
Implement a checksum ...
Linux incarnation of the Party Parrot by rsimai
Project Description
Lesser on the coding s...
Avahi Integration and Network Connection by vojha
Avahi Integration and Network Connection
...
Extract generic testing framework from Linux Test Project code base by acervesato
Project Description
The Linux Test Projec...
early stage kdump support by mbrugger
[comment]: # (Please use the project descriptio...
Model checking the BPF verifier by shunghsiyu
Project Description
BPF verifier plays a ...
Authenticated hashes for BTRFS by dsterba
Project Description
Implement a checksum ...