diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-12-24 16:36:40 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-12-24 16:36:40 +0100 |
commit | fc3afc743fe1c77c7bb8963c396ca3abf6669f2b (patch) | |
tree | dace615d88ebb10a266c0f8cf3d10bdb9627ca75 /src/main.rs | |
parent | 61359a6bd7a5f1214084614b1fb8f9fa21b23b38 (diff) |
don't overwrite partition table with bootloader config
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 11 |
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(); |