@@ -183,6 +183,8 @@ def __init__(self, test, params, vm):
183183 "driver_in_floppy" ,
184184 "vga" ,
185185 "unattended_file_kernel_param_name" ,
186+ "shim_target_efi_path" ,
187+ "shim" ,
186188 ]
187189
188190 for a in self .attributes :
@@ -266,6 +268,8 @@ def get_unattended_file(backend):
266268 self .kernel = os .path .join (root_dir , self .kernel )
267269 if getattr (self , "initrd" ):
268270 self .initrd = os .path .join (root_dir , self .initrd )
271+ if getattr (self , "shim" ):
272+ self .shim = os .path .join (root_dir , self .shim )
269273
270274 if self .medium == "nfs" :
271275 self .nfs_mount = tempfile .mkdtemp (prefix = "nfs_" , dir = self .tmpdir )
@@ -984,6 +988,8 @@ def setup_cdrom(self):
984988 assert os .path .getsize (self .kernel ) > 0
985989 i .copy (os .path .join (self .boot_path , os .path .basename (self .initrd )), self .initrd )
986990 assert os .path .getsize (self .initrd ) > 0
991+ i .copy (os .path .join (self .shim_target_efi_path , os .path .basename (self .shim )), self .shim )
992+ assert os .path .getsize (self .shim ) > 0
987993
988994 if self .unattended_file .endswith (".preseed" ):
989995 self .preseed_initrd ()
@@ -1063,6 +1069,7 @@ def setup_url(self):
10631069
10641070 kernel_basename = os .path .basename (self .kernel )
10651071 initrd_basename = os .path .basename (self .initrd )
1072+ shim_basename = os .path .basename (self .shim )
10661073 sha1sum_kernel_cmd = "sha1sum %s" % kernel_basename
10671074 sha1sum_kernel_output = process .run (
10681075 sha1sum_kernel_cmd , ignore_status = True , verbose = DEBUG
@@ -1081,12 +1088,24 @@ def setup_url(self):
10811088 except IndexError :
10821089 sha1sum_initrd = ""
10831090
1091+ sha1sum_shim_cmd = "sha1sum %s" % shim_basename
1092+ sha1sum_shim_output = process .run (
1093+ sha1sum_shim_cmd , ignore_status = True , verbose = DEBUG
1094+ ).stdout_text
1095+ try :
1096+ sha1sum_shim = sha1sum_shim_output .split ()[0 ]
1097+ except IndexError :
1098+ sha1sum_shim = ""
1099+
10841100 url_kernel = os .path .join (
10851101 self .url , self .boot_path , os .path .basename (self .kernel )
10861102 )
10871103 url_initrd = os .path .join (
10881104 self .url , self .boot_path , os .path .basename (self .initrd )
10891105 )
1106+ url_shim = os .path .join (
1107+ self .url , self .shim_target_efi_path , os .path .basename (self .shim )
1108+ )
10901109
10911110 if not sha1sum_kernel == self .params .get ("sha1sum_vmlinuz" , None ):
10921111 if os .path .isfile (self .kernel ):
@@ -1106,6 +1125,15 @@ def setup_url(self):
11061125 os .path .join (self .image_path , os .path .basename (self .initrd )),
11071126 )
11081127
1128+ if not sha1sum_shim == self .params .get ("sha1sum_shim" , None ):
1129+ if os .path .isfile (self .shim ):
1130+ os .remove (self .shim )
1131+ LOG .info ("Downloading %s -> %s" , url_shim , self .image_path )
1132+ download .get_file (
1133+ url_shim ,
1134+ os .path .join (self .image_path , os .path .basename (self .shim )),
1135+ )
1136+
11091137 if "repo=cdrom" in self .kernel_params :
11101138 # Red Hat
11111139 self .kernel_params = re .sub (
@@ -1154,6 +1182,13 @@ def setup_nfs(self):
11541182 self .image_path ,
11551183 )
11561184 process .run (initrd_fetch_cmd , verbose = DEBUG )
1185+ shim_fetch_cmd = "cp %s/%s/%s %s" % (
1186+ self .nfs_mount ,
1187+ self .shim_target_efi_path ,
1188+ os .path .basename (self .shim ),
1189+ self .image_path ,
1190+ )
1191+ process .run (shim_fetch_cmd , verbose = DEBUG )
11571192 finally :
11581193 utils_disk .cleanup (self .nfs_mount )
11591194
0 commit comments