File tree 1 file changed +8
-5
lines changed
1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -98,9 +98,9 @@ fn create_fat_filesystem(
98
98
99
99
// retrieve size of `.efi` file and round it up
100
100
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 ( ) ;
104
104
105
105
// create new filesystem image file at the given path and set its length
106
106
let fat_file = fs:: OpenOptions :: new ( )
@@ -110,7 +110,9 @@ fn create_fat_filesystem(
110
110
. truncate ( true )
111
111
. open ( & out_fat_path)
112
112
. 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 ( ) ;
114
116
115
117
// create new FAT file system and open it
116
118
let label = {
@@ -146,7 +148,8 @@ fn create_fat_filesystem(
146
148
// copy kernel to FAT filesystem
147
149
let mut kernel_file = root_dir. create_file ( "kernel-x86_64" ) ?;
148
150
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" ) ?;
150
153
151
154
Ok ( ( ) )
152
155
}
You can’t perform that action at this time.
0 commit comments