chainloader.rs 881 B

12345678910111213141516171819202122232425262728293031
  1. use crate::verify::{print_memory_map, print_module_info};
  2. use multiboot2::BootInformation;
  3. pub fn run(mbi: &BootInformation) -> anyhow::Result<()> {
  4. basic_sanity_checks(mbi)?;
  5. print_memory_map(mbi)?;
  6. print_module_info(mbi)?;
  7. // print_elf_info(mbi)?;
  8. Ok(())
  9. }
  10. fn basic_sanity_checks(mbi: &BootInformation) -> anyhow::Result<()> {
  11. // Some basic sanity checks
  12. let bootloader_name = mbi
  13. .boot_loader_name_tag()
  14. .ok_or("No bootloader tag")
  15. .map_err(anyhow::Error::msg)?
  16. .name()
  17. .map_err(anyhow::Error::msg)?;
  18. let cmdline = mbi
  19. .command_line_tag()
  20. .ok_or("No cmdline tag")
  21. .map_err(anyhow::Error::msg)?
  22. .cmdline()
  23. .map_err(anyhow::Error::msg)?;
  24. assert_eq!(bootloader_name, "mb2_integrationtest_chainloader");
  25. assert_eq!(cmdline, "chainloaded YEAH");
  26. Ok(())
  27. }