diff --git a/src/lib.rs b/src/lib.rs index e293a37aad..29e8ad608d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -348,7 +348,7 @@ pub fn with_redoxfs(disk: D, password_opt: Option<&[u8]>, callback: F) res } -pub fn fetch_bootloaders>(cookbook: Option) -> Result<(Vec, Vec)> { +pub fn fetch_bootloaders>(cookbook: Option, live: bool) -> Result<(Vec, Vec)> { //TODO: make it safe to run this concurrently let bootloader_dir = "/tmp/redox_installer_bootloader"; if Path::new(bootloader_dir).exists() { @@ -361,8 +361,17 @@ pub fn fetch_bootloaders>(cookbook: Option) -> Result<(Vec, bootloader_config.packages.insert("bootloader".to_string(), PackageConfig::default()); install_packages(&bootloader_config, bootloader_dir, cookbook.as_ref()); - let bios_path = Path::new(bootloader_dir).join("boot/bootloader.bios"); - let efi_path = Path::new(bootloader_dir).join("boot/bootloader.efi"); + let boot_dir = Path::new(bootloader_dir).join("boot"); + let bios_path = boot_dir.join(if live { + "bootloader-live.bios" + } else { + "bootloader.bios" + }); + let efi_path = boot_dir.join(if live { + "bootloader-live.efi" + } else { + "bootloader.efi" + }); Ok(( if bios_path.exists() { fs::read(bios_path)? @@ -526,7 +535,7 @@ pub fn install(config: Config, output: P, cookbook: Option) if output.as_ref().is_dir() { install_dir(config, output, cookbook) } else { - let (bootloader_bios, bootloader_efi) = fetch_bootloaders(cookbook.as_ref())?; + let (bootloader_bios, bootloader_efi) = fetch_bootloaders(cookbook.as_ref(), false)?; with_whole_disk(output, &bootloader_bios, &bootloader_efi, None, move |mount_path| { install_dir(config, mount_path, cookbook)