grub.rs 881 B

123456789101112131415161718192021222324252627282930
  1. use crate::verify::{print_elf_info, 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, "GRUB 2.06");
  25. assert_eq!(cmdline, "some commandline arguments");
  26. Ok(())
  27. }