lanzatool: implement relative esp paths
This commit is contained in:
parent
dcca50d14f
commit
a65998945d
|
@ -16,11 +16,12 @@ pub fn assemble(
|
||||||
// objcopy copies files into the PE binary. That's why we have to write the contents
|
// objcopy copies files into the PE binary. That's why we have to write the contents
|
||||||
// of some bootspec properties to disk
|
// of some bootspec properties to disk
|
||||||
let kernel_cmdline_file = Path::new("/tmp/kernel_cmdline");
|
let kernel_cmdline_file = Path::new("/tmp/kernel_cmdline");
|
||||||
fs::write(kernel_cmdline_file, kernel_cmdline.join(" "))?;
|
|
||||||
let kernel_path_file = Path::new("/tmp/kernel_path");
|
let kernel_path_file = Path::new("/tmp/kernel_path");
|
||||||
fs::write(kernel_path_file, path_to_string(kernel_path))?;
|
|
||||||
let initrd_path_file = Path::new("/tmp/initrd_path");
|
let initrd_path_file = Path::new("/tmp/initrd_path");
|
||||||
fs::write(initrd_path_file, path_to_string(initrd_path))?;
|
|
||||||
|
fs::write(kernel_cmdline_file, kernel_cmdline.join(" "))?;
|
||||||
|
fs::write(kernel_path_file, efi_relative_path_string(kernel_path))?;
|
||||||
|
fs::write(initrd_path_file, efi_relative_path_string(initrd_path))?;
|
||||||
|
|
||||||
let pe_binary = fs::read(lanzaboote_bin)?;
|
let pe_binary = fs::read(lanzaboote_bin)?;
|
||||||
let pe = goblin::pe::PE::parse(&pe_binary)?;
|
let pe = goblin::pe::PE::parse(&pe_binary)?;
|
||||||
|
@ -77,6 +78,19 @@ pub fn assemble(
|
||||||
Ok(lanzaboote_image)
|
Ok(lanzaboote_image)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn efi_relative_path_string(path: &Path) -> String {
|
||||||
|
let relative_path = path
|
||||||
|
.strip_prefix("esp")
|
||||||
|
.expect("Failed to make path relative to esp")
|
||||||
|
.to_owned();
|
||||||
|
let relative_path_string = relative_path
|
||||||
|
.into_os_string()
|
||||||
|
.into_string()
|
||||||
|
.expect("Failed to convert path '{}' to a relative string path")
|
||||||
|
.replace("/", "\\");
|
||||||
|
format!("\\{}", &relative_path_string)
|
||||||
|
}
|
||||||
|
|
||||||
// All Linux file paths should be convertable to strings
|
// All Linux file paths should be convertable to strings
|
||||||
fn path_to_string(path: &Path) -> String {
|
fn path_to_string(path: &Path) -> String {
|
||||||
path.to_owned()
|
path.to_owned()
|
||||||
|
|
Loading…
Reference in New Issue