23 个版本
0.11.2 | 2023 年 5 月 9 日 |
---|---|
0.11.1 | 2022 年 9 月 22 日 |
0.11.0 | 2022 年 8 月 27 日 |
0.10.2 | 2022 年 6 月 6 日 |
#418 在 配置
26KB
411 行
libsdbootconf
systemd-boot 配置和引导条目配置解析库。
用法
use libsdbootconf::{config::ConfigBuilder, entry::EntryBuilder, SystemdBootConfBuilder};
let systemd_boot_conf = SystemdBootConfBuilder::new("/efi/loader")
.config(ConfigBuilder::new()
.default("5.12.0-aosc-main")
.timeout(5u32)
.build())
.entry(EntryBuilder::new("5.12.0-aosc-main")
.title("AOSC OS x86_64 (5.12.0-aosc-main)")
.version("5.12.0-aosc-main")
.build())
.build();
systemd_boot_conf.write_all().unwrap();
lib.rs
:
该库为 systemd-boot 提供一个配置接口。它解析 systemd-boot 加载器配置和 systemd-boot 引导条目配置。
注意:并非所有在 https://www.freedesktop.org/software/systemd/man/systemd-boot.html 中的字段都已实现,该库目前仅提供在 https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/ 上列出的字段的接口。
创建并写入新的 systemd-boot 配置
您可以使用 SystemdBootConfig
结构体来创建新的 systemd-boot 配置,或者使用 SystemdBootConfigBuilder
从头开始构建 SystemdBootConfig
。
use libsdbootconf::{ConfigBuilder, EntryBuilder, SystemdBootConfBuilder};
let systemd_boot_conf = SystemdBootConfBuilder::new("/efi/loader")
.config(ConfigBuilder::new()
.default("5.12.0-aosc-main")
.timeout(5u32)
.build())
.entry(EntryBuilder::new("5.12.0-aosc-main")
.title("AOSC OS x86_64 (5.12.0-aosc-main)")
.version("5.12.0-aosc-main")
.build())
.build();
// Or
use libsdbootconf::{Config, Entry, SystemdBootConf, Token};
let systemd_boot_conf = SystemdBootConf::new(
"/efi/loader",
Config::new(Some("5.12.0-aosc-main"), Some(5u32)),
vec![Entry::new(
"5.12.0-aosc-main",
vec![
Token::Title("AOSC OS x86_64 (5.12.0-aosc-main)".to_owned()),
Token::Version("5.12.0-aosc-main".to_owned()),
],
)]
);
systemd_boot_conf.write_all().unwrap();
创建新的 systemd-boot 菜单条目
use libsdbootconf::entry::{Entry, EntryBuilder, Token};
use std::path::PathBuf;
let entry = EntryBuilder::new("5.12.0-aosc-main")
.title("AOSC OS x86_64 (5.12.0-aosc-main)")
.linux("/EFI/linux/vmlinux-5.12.0-aosc-main")
.initrd("/EFI/linux/initramfs-5.12.0-aosc-main.img")
.options("root=/dev/sda1 rw")
.build();
// Or
let entry = Entry::new(
"5.12.0-aosc-main",
vec![
Token::Title("AOSC OS x86_64 (5.12.0-aosc-main)".to_owned()),
Token::Linux(PathBuf::from("/EFI/linux/vmlinux-5.12.0-aosc-main")),
Token::Initrd(PathBuf::from("/EFI/linux/initramfs-5.12.0-aosc-main.img")),
Token::Options("root=/dev/sda1 rw".to_owned()),
],
);
entry.write("/efi/loader/entries/5.12.0-aosc-main.conf").unwrap();
依赖项
~0.3–0.8MB
~19K SLoC