File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -98,9 +98,9 @@ fn create_fat_filesystem(
9898
9999 // retrieve size of `.efi` file and round it up
100100 let efi_size = fs:: metadata ( & bootloader_efi_file) . unwrap ( ) . len ( ) ;
101- // size of a megabyte
102- // round it to next megabyte
103- let efi_size_rounded = ( ( efi_size - 1 ) / MB + 1 ) * MB ;
101+ let kernel_size = fs :: metadata ( & kernel_binary )
102+ . context ( "failed to read metadata of kernel binary" ) ?
103+ . len ( ) ;
104104
105105 // create new filesystem image file at the given path and set its length
106106 let fat_file = fs:: OpenOptions :: new ( )
@@ -110,7 +110,9 @@ fn create_fat_filesystem(
110110 . truncate ( true )
111111 . open ( & out_fat_path)
112112 . unwrap ( ) ;
113- fat_file. set_len ( efi_size_rounded) . unwrap ( ) ;
113+ let fat_size = efi_size + kernel_size;
114+ let fat_size_padded_and_rounded = ( ( fat_size + 1024 * 64 - 1 ) / MB + 1 ) * MB ;
115+ fat_file. set_len ( fat_size_padded_and_rounded) . unwrap ( ) ;
114116
115117 // create new FAT file system and open it
116118 let label = {
@@ -146,7 +148,8 @@ fn create_fat_filesystem(
146148 // copy kernel to FAT filesystem
147149 let mut kernel_file = root_dir. create_file ( "kernel-x86_64" ) ?;
148150 kernel_file. truncate ( ) ?;
149- io:: copy ( & mut fs:: File :: open ( & kernel_binary) ?, & mut kernel_file) ?;
151+ io:: copy ( & mut fs:: File :: open ( & kernel_binary) ?, & mut kernel_file)
152+ . context ( "failed to copy kernel to UEFI FAT filesystem" ) ?;
150153
151154 Ok ( ( ) )
152155}
You can’t perform that action at this time.
0 commit comments