aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-12-24 16:36:40 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-12-24 16:36:40 +0100
commitfc3afc743fe1c77c7bb8963c396ca3abf6669f2b (patch)
treedace615d88ebb10a266c0f8cf3d10bdb9627ca75 /src/main.rs
parent61359a6bd7a5f1214084614b1fb8f9fa21b23b38 (diff)
don't overwrite partition table with bootloader config
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index c55c426..2b3981d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -147,14 +147,16 @@ fn write_mbr(file: &mut File) -> anyhow::Result<()> {
let mut cmdline_buf = Vec::new();
cmdline_file.read_to_end(&mut cmdline_buf)?;
- let kernel_offset = buf
+ let kernel_offset: u32 = buf
.windows(kernel_buf.len())
.position(|window| window == kernel_buf)
- .expect("can't find kernel (/vmlinuz) on boot partition");
- let cmdline_offset = buf
+ .expect("can't find kernel (/vmlinuz) on boot partition")
+ .try_into()?;
+ let cmdline_offset: u32 = buf
.windows(cmdline_buf.len())
.position(|window| window == cmdline_buf)
- .expect("can't find cmdline (/cmdline.txt) on boot partition");
+ .expect("can't find cmdline (/cmdline.txt) on boot partition")
+ .try_into()?;
let kernel_lba = kernel_offset + 2048;
let cmdline_lba = cmdline_offset + 2048;
@@ -162,6 +164,7 @@ fn write_mbr(file: &mut File) -> anyhow::Result<()> {
let mut bootloader_params = Vec::new();
bootloader_params.extend_from_slice(&kernel_lba.to_le_bytes());
bootloader_params.extend_from_slice(&cmdline_lba.to_le_bytes());
+ eprintln!("{}", bootloader_params.len());
let mut bootloader_file = File::open("boot.bin")?;
let mut bootloader_buf = Vec::new();