@@ -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,11 @@ 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 (
992+ os .path .join (self .shim_target_efi_path , os .path .basename (self .shim )),
993+ self .shim ,
994+ )
995+ assert os .path .getsize (self .shim ) > 0
987996
988997 if self .unattended_file .endswith (".preseed" ):
989998 self .preseed_initrd ()
@@ -1063,6 +1072,7 @@ def setup_url(self):
10631072
10641073 kernel_basename = os .path .basename (self .kernel )
10651074 initrd_basename = os .path .basename (self .initrd )
1075+ shim_basename = os .path .basename (self .shim )
10661076 sha1sum_kernel_cmd = "sha1sum %s" % kernel_basename
10671077 sha1sum_kernel_output = process .run (
10681078 sha1sum_kernel_cmd , ignore_status = True , verbose = DEBUG
@@ -1081,12 +1091,24 @@ def setup_url(self):
10811091 except IndexError :
10821092 sha1sum_initrd = ""
10831093
1094+ sha1sum_shim_cmd = "sha1sum %s" % shim_basename
1095+ sha1sum_shim_output = process .run (
1096+ sha1sum_shim_cmd , ignore_status = True , verbose = DEBUG
1097+ ).stdout_text
1098+ try :
1099+ sha1sum_shim = sha1sum_shim_output .split ()[0 ]
1100+ except IndexError :
1101+ sha1sum_shim = ""
1102+
10841103 url_kernel = os .path .join (
10851104 self .url , self .boot_path , os .path .basename (self .kernel )
10861105 )
10871106 url_initrd = os .path .join (
10881107 self .url , self .boot_path , os .path .basename (self .initrd )
10891108 )
1109+ url_shim = os .path .join (
1110+ self .url , self .shim_target_efi_path , os .path .basename (self .shim )
1111+ )
10901112
10911113 if not sha1sum_kernel == self .params .get ("sha1sum_vmlinuz" , None ):
10921114 if os .path .isfile (self .kernel ):
@@ -1106,6 +1128,15 @@ def setup_url(self):
11061128 os .path .join (self .image_path , os .path .basename (self .initrd )),
11071129 )
11081130
1131+ if not sha1sum_shim == self .params .get ("sha1sum_shim" , None ):
1132+ if os .path .isfile (self .shim ):
1133+ os .remove (self .shim )
1134+ LOG .info ("Downloading %s -> %s" , url_shim , self .image_path )
1135+ download .get_file (
1136+ url_shim ,
1137+ os .path .join (self .image_path , os .path .basename (self .shim )),
1138+ )
1139+
11091140 if "repo=cdrom" in self .kernel_params :
11101141 # Red Hat
11111142 self .kernel_params = re .sub (
@@ -1154,6 +1185,13 @@ def setup_nfs(self):
11541185 self .image_path ,
11551186 )
11561187 process .run (initrd_fetch_cmd , verbose = DEBUG )
1188+ shim_fetch_cmd = "cp %s/%s/%s %s" % (
1189+ self .nfs_mount ,
1190+ self .shim_target_efi_path ,
1191+ os .path .basename (self .shim ),
1192+ self .image_path ,
1193+ )
1194+ process .run (shim_fetch_cmd , verbose = DEBUG )
11571195 finally :
11581196 utils_disk .cleanup (self .nfs_mount )
11591197
0 commit comments