Nick Rirush
6 years ago
3 changed files with 36 additions and 4 deletions
@ -1,18 +1,48 @@ |
|||||
#![no_std] |
#![no_std] |
||||
#![no_main] |
#![no_main] |
||||
|
#![feature(alloc)] |
||||
|
|
||||
extern crate uefi; |
extern crate uefi; |
||||
extern crate uefi_alloc; |
extern crate uefi_alloc; |
||||
extern crate uefi_services; |
|
||||
extern crate uefi_exts; |
extern crate uefi_exts; |
||||
extern crate uefi_logger; |
extern crate uefi_logger; |
||||
|
extern crate uefi_services; |
||||
|
#[macro_use] |
||||
|
extern crate log; |
||||
|
extern crate alloc; |
||||
|
|
||||
use uefi::prelude::*; |
use uefi::prelude::*; |
||||
|
use uefi::proto::media::file::{FileAttribute, FileMode}; |
||||
|
use uefi::proto::media::fs::SimpleFileSystem; |
||||
|
use uefi_exts::BootServicesExt; |
||||
|
|
||||
#[no_mangle] |
#[no_mangle] |
||||
pub extern "win64" fn uefi_start(image: uefi::Handle, table: SystemTable<Boot>) -> Status { |
pub extern "win64" fn uefi_start(_image: uefi::Handle, table: SystemTable<Boot>) -> Status { |
||||
uefi_services::init(&table).expect_success("Unable to initialize utilities"); |
uefi_services::init(&table).expect_success("Failed to initialize utilities"); |
||||
table.stdout().reset(false).expect_success("Failed to reset stdout"); |
table |
||||
|
.stdout() |
||||
|
.reset(false) |
||||
|
.expect_success("Failed to reset stdout"); |
||||
|
|
||||
|
let fs = table |
||||
|
.boot_services() |
||||
|
.find_protocol::<SimpleFileSystem>() |
||||
|
.expect("Failed to resolve filesystem") |
||||
|
.get(); |
||||
|
unsafe { |
||||
|
let mut file = (*fs).open_volume().expect("Failed to open root").unwrap(); |
||||
|
let mut file = file |
||||
|
.open( |
||||
|
"\\EFI\\coonboot.efi", |
||||
|
FileMode::READ, |
||||
|
FileAttribute::empty(), |
||||
|
) |
||||
|
.unwrap() |
||||
|
.unwrap(); |
||||
|
let mut buf: [u8; 3] = [0, 0, 0]; |
||||
|
file.read(&mut buf).unwrap().unwrap(); |
||||
|
info!("First three bytes of coonboot.efi: {:?}", buf); |
||||
|
} |
||||
|
|
||||
Status::SUCCESS |
Status::SUCCESS |
||||
} |
} |
||||
|
Loading…
Reference in new issue