Compare commits
No commits in common. 'c9' and 'i9-fuzzing' have entirely different histories.
c9
...
i9-fuzzing
@ -1,9 +1,10 @@
|
|||||||
SOURCES/kernel-abi-stablelists-5.14.0-503.19.1.el9_5.tar.bz2
|
SOURCES/kernel-abi-stablelists-5.14.0-362.18.1.el9_3.tar.bz2
|
||||||
SOURCES/kernel-kabi-dw-5.14.0-503.19.1.el9_5.tar.bz2
|
SOURCES/kernel-kabi-dw-5.14.0-362.18.1.el9_3.tar.bz2
|
||||||
SOURCES/linux-5.14.0-503.19.1.el9_5.tar.xz
|
SOURCES/linux-5.14.0-362.18.1.el9_3.tar.xz
|
||||||
SOURCES/nvidiagpuoot001.x509
|
|
||||||
SOURCES/rheldup3.x509
|
SOURCES/rheldup3.x509
|
||||||
SOURCES/rhelima.x509
|
SOURCES/rhelima.x509
|
||||||
SOURCES/rhelima_centos.x509
|
SOURCES/rhelima_centos.x509
|
||||||
SOURCES/rhelimaca1.x509
|
SOURCES/rhelimaca1.x509
|
||||||
SOURCES/rhelkpatch1.x509
|
SOURCES/rhelkpatch1.x509
|
||||||
|
SOURCES/uki-sb-cert-x86_64-centos.crt
|
||||||
|
SOURCES/uki-sb-cert-x86_64-rhel.crt
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
a614816812a77eadc37c3e71e3b794d58ee62596 SOURCES/kernel-abi-stablelists-5.14.0-503.19.1.el9_5.tar.bz2
|
f823c58b7a797113dec1a2863f3efb9b13a5db01 SOURCES/kernel-abi-stablelists-5.14.0-362.18.1.el9_3.tar.bz2
|
||||||
3125e053f6237338119f6f6c32eb3144b0fcbff3 SOURCES/kernel-kabi-dw-5.14.0-503.19.1.el9_5.tar.bz2
|
b1d3fe4cf0e3d6db2cb96fc8dc3ccf21cf29b12d SOURCES/kernel-kabi-dw-5.14.0-362.18.1.el9_3.tar.bz2
|
||||||
cb25584103dd0b8aa392bac6d1dbf713dc975219 SOURCES/linux-5.14.0-503.19.1.el9_5.tar.xz
|
4c7324ab3eed522ca5d7e0fcee0bfa891ef73328 SOURCES/linux-5.14.0-362.18.1.el9_3.tar.xz
|
||||||
4fff8080e88afffc06d8ef5004db8d53bb21237f SOURCES/nvidiagpuoot001.x509
|
|
||||||
95b9b811c7b0a6c98b2eafc4e7d6d24f2cb63289 SOURCES/rheldup3.x509
|
95b9b811c7b0a6c98b2eafc4e7d6d24f2cb63289 SOURCES/rheldup3.x509
|
||||||
99e571f9de4188f3b5fdf1f84ff73f6cc4bb6a0e SOURCES/rhelima.x509
|
99e571f9de4188f3b5fdf1f84ff73f6cc4bb6a0e SOURCES/rhelima.x509
|
||||||
61d5a223ff0c79189505abae77e0087c4b2d2b47 SOURCES/rhelima_centos.x509
|
61d5a223ff0c79189505abae77e0087c4b2d2b47 SOURCES/rhelima_centos.x509
|
||||||
f882610d2554fef65703e5d3c342f005af0390ad SOURCES/rhelimaca1.x509
|
f882610d2554fef65703e5d3c342f005af0390ad SOURCES/rhelimaca1.x509
|
||||||
d90885108d225a234a5a9d054fc80893a5bd54d0 SOURCES/rhelkpatch1.x509
|
d90885108d225a234a5a9d054fc80893a5bd54d0 SOURCES/rhelkpatch1.x509
|
||||||
|
20224d67a583b98009a1c1632bb4b639b0e8be6a SOURCES/uki-sb-cert-x86_64-centos.crt
|
||||||
|
1d51d3a037ad287095b0a13c4deeb1252d8ff0cc SOURCES/uki-sb-cert-x86_64-rhel.crt
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"virt": {
|
|
||||||
"common": {
|
|
||||||
"fips-disable.addon": [
|
|
||||||
"fips=0\n"
|
|
||||||
],
|
|
||||||
"fips-enable.addon": [
|
|
||||||
"fips=1\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,151 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
#
|
|
||||||
# This script inspects a given json proving a list of addons, and
|
|
||||||
# creates an addon for each key/value pair matching the given uki, distro and
|
|
||||||
# arch provided in input.
|
|
||||||
#
|
|
||||||
# Usage: python uki_create_addons.py input_json out_dir uki distro arch
|
|
||||||
#
|
|
||||||
# This tool requires the systemd-ukify and systemd-boot packages.
|
|
||||||
#
|
|
||||||
# Addon file
|
|
||||||
#-----------
|
|
||||||
# Each addon terminates with .addon
|
|
||||||
# Each addon contains only two types of lines:
|
|
||||||
# Lines beginning with '#' are description and thus ignored
|
|
||||||
# All other lines are command line to be added.
|
|
||||||
# The name of the end resulting addon is taken from the json hierarchy.
|
|
||||||
# For example, and addon in json['virt']['rhel']['x86_64']['hello.addon'] will
|
|
||||||
# result in an UKI addon file generated in out_dir called
|
|
||||||
# hello-virt.rhel.x86_64.addon.efi
|
|
||||||
#
|
|
||||||
# The common key, present in any sub-dict in the provided json (except the leaf dict)
|
|
||||||
# is used as place for default addons when the same addon is not defined deep
|
|
||||||
# in the hierarchy. For example, if we define test.addon (text: 'test1\n') in
|
|
||||||
# json['common']['test.addon'] = ['test1\n'] and another test.addon (text: test2) in
|
|
||||||
# json['virt']['common']['test.addon'] = ['test2'], any other uki except virt
|
|
||||||
# will have a test.addon.efi with text "test1", and virt will have a
|
|
||||||
# test.addon.efi with "test2"
|
|
||||||
#
|
|
||||||
# sbat.conf
|
|
||||||
#----------
|
|
||||||
# This dict is containing the sbat string for *all* addons being created.
|
|
||||||
# This dict is optional, but when used has to be put in a sub-dict with
|
|
||||||
# { 'sbat' : { 'sbat.conf' : ['your text here'] }}
|
|
||||||
# It follows the same syntax as the addon files, meaning '#' is comment and
|
|
||||||
# the rest is taken as sbat string and feed to ukify.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import json
|
|
||||||
import collections
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
UKIFY_PATH = '/usr/lib/systemd/ukify'
|
|
||||||
|
|
||||||
def usage(err):
|
|
||||||
print(f'Usage: {os.path.basename(__file__)} input_json output_dir uki distro arch')
|
|
||||||
print(f'Error:{err}')
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
def check_clean_arguments(input_json, out_dir):
|
|
||||||
# Remove end '/'
|
|
||||||
if out_dir[-1:] == '/':
|
|
||||||
out_dir = out_dir[:-1]
|
|
||||||
if not os.path.isfile(input_json):
|
|
||||||
usage(f'input_json {input_json} is not a file, or does not exist!')
|
|
||||||
if not os.path.isdir(out_dir):
|
|
||||||
usage(f'out_dir_dir {out_dir} is not a dir, or does not exist!')
|
|
||||||
return out_dir
|
|
||||||
|
|
||||||
UKICmdlineAddon = collections.namedtuple('UKICmdlineAddon', ['name', 'cmdline'])
|
|
||||||
uki_addons_list = []
|
|
||||||
uki_addons = {}
|
|
||||||
addon_sbat_string = None
|
|
||||||
|
|
||||||
def parse_lines(lines, rstrip=True):
|
|
||||||
cmdline = ''
|
|
||||||
for l in lines:
|
|
||||||
l = l.lstrip()
|
|
||||||
if not l:
|
|
||||||
continue
|
|
||||||
if l[0] == '#':
|
|
||||||
continue
|
|
||||||
# rstrip is used only for addons cmdline, not sbat.conf, as it replaces
|
|
||||||
# return lines with spaces.
|
|
||||||
if rstrip:
|
|
||||||
l = l.rstrip() + ' '
|
|
||||||
cmdline += l
|
|
||||||
if cmdline == '':
|
|
||||||
return ''
|
|
||||||
return cmdline
|
|
||||||
|
|
||||||
def parse_all_addons(in_obj):
|
|
||||||
global addon_sbat_string
|
|
||||||
|
|
||||||
for el in in_obj.keys():
|
|
||||||
# addon found: copy it in our global dict uki_addons
|
|
||||||
if el.endswith('.addon'):
|
|
||||||
uki_addons[el] = in_obj[el]
|
|
||||||
|
|
||||||
if 'sbat' in in_obj and 'sbat.conf' in in_obj['sbat']:
|
|
||||||
# sbat.conf found: override sbat with the most specific one found
|
|
||||||
addon_sbat_string = parse_lines(in_obj['sbat']['sbat.conf'], rstrip=False)
|
|
||||||
|
|
||||||
def recursively_find_addons(in_obj, folder_list):
|
|
||||||
# end of recursion, leaf directory. Search all addons here
|
|
||||||
if len(folder_list) == 0:
|
|
||||||
parse_all_addons(in_obj)
|
|
||||||
return
|
|
||||||
|
|
||||||
# first, check for common folder
|
|
||||||
if 'common' in in_obj:
|
|
||||||
parse_all_addons(in_obj['common'])
|
|
||||||
|
|
||||||
# second, check if there is a match with the searched folder
|
|
||||||
if folder_list[0] in in_obj:
|
|
||||||
folder_next = in_obj[folder_list[0]]
|
|
||||||
folder_list = folder_list[1:]
|
|
||||||
recursively_find_addons(folder_next, folder_list)
|
|
||||||
|
|
||||||
def parse_in_json(in_json, uki_name, distro, arch):
|
|
||||||
with open(in_json, 'r') as f:
|
|
||||||
in_obj = json.load(f)
|
|
||||||
recursively_find_addons(in_obj, [uki_name, distro, arch])
|
|
||||||
|
|
||||||
for addon_name, cmdline in uki_addons.items():
|
|
||||||
addon_name = addon_name.replace(".addon","")
|
|
||||||
addon_full_name = f'{addon_name}-{uki_name}.{distro}.{arch}.addon.efi'
|
|
||||||
cmdline = parse_lines(cmdline).rstrip()
|
|
||||||
if cmdline:
|
|
||||||
uki_addons_list.append(UKICmdlineAddon(addon_full_name, cmdline))
|
|
||||||
|
|
||||||
def create_addons(out_dir):
|
|
||||||
for uki_addon in uki_addons_list:
|
|
||||||
out_path = os.path.join(out_dir, uki_addon.name)
|
|
||||||
cmd = [
|
|
||||||
f'{UKIFY_PATH}', 'build',
|
|
||||||
f'--cmdline="{uki_addon.cmdline}"',
|
|
||||||
f'--output={out_path}']
|
|
||||||
if addon_sbat_string:
|
|
||||||
cmd.append('--sbat="' + addon_sbat_string.rstrip() +'"')
|
|
||||||
|
|
||||||
subprocess.check_call(cmd, text=True)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
argc = len(sys.argv) - 1
|
|
||||||
if argc != 5:
|
|
||||||
usage('too few or too many parameters!')
|
|
||||||
|
|
||||||
input_json = sys.argv[1]
|
|
||||||
out_dir = sys.argv[2]
|
|
||||||
uki_name = sys.argv[3]
|
|
||||||
distro = sys.argv[4]
|
|
||||||
arch = sys.argv[5]
|
|
||||||
|
|
||||||
out_dir = check_clean_arguments(input_json, out_dir)
|
|
||||||
parse_in_json(input_json, uki_name, distro, arch)
|
|
||||||
create_addons(out_dir)
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue