extract_kernel/
extract-kernel.rs1use std::{
4 fs::File,
5 io::{self, BufWriter, Read, Seek, SeekFrom},
6};
7
8use abootimg_oxide::{binrw::io::BufReader, Header};
9
10fn main() {
11 let mut r = BufReader::new(File::open("boot_a.img").unwrap());
12 let hdr = Header::parse(&mut r).unwrap();
13 println!("{hdr:#?}");
14
15 println!("kernel position: {}", hdr.kernel_position());
16 let mut w = BufWriter::new(File::create("boot_a_kernel").unwrap());
17 let r = r.get_mut();
18 r.seek(SeekFrom::Start(hdr.kernel_position() as u64))
19 .unwrap();
20 io::copy(&mut r.take(hdr.kernel_size().into()), w.get_mut()).unwrap();
21}