Automated Photon OS Livepatching
Collection of scripts that can be used to automatically generate livepatches for Photon OS.
Must be run inside of a shell, i.e with bash.

****** auto_livepatch.sh ******
auto_livepatch runs gen_livepatch inside a docker container, which makes it easier to control the build environment, and can build livepatches for any Photon OS version/flavor.

auto_livepatch.sh [options] -p [list of patch files]

Options:

-k: Specifies the kernel version. If not set, uses uname -r
-p: Patch file list. Need at least one patch file listed here
-n: Output file name. Will be default if not specified.
-o: Output directory. Will be default if not specified.
-R: Disable replace flag (replace flag is on by default)
-d: Use file contents as description field for livepatch module.
-s: Specify the path to a local source rpm
-v: Specify the path to a local debuginfo rpm
--export-debuginfo: Saves debug files after module is built.
--rpm: Package the module inside of an rpm.
--rpm-version: Set the version number for the rpm.
--rpm-release: Set the release number for the rpm.
--rpm-desc: Set a separate description for the rpm. Input is a file.
-h/--help: Prints help message and exits

** Examples **

Simplest Usage - Build livepatch for current kernel

    auto_livepatch.sh -p example.patch


Set non-replace flag and save debug information

    auto_livepatch.sh -p example.patch -R --exportdebuginfo


Multiple patches

    auto_livepatch.sh -p example1.patch example2.patch ... exampleN.patch


Build module for Photon 3.0 aws flavor, with a set name and a set output directory

    auto_livepatch.sh -k 4.19.245-5.ph3-aws -p example.patch -n klp_module.ko -o livepatch_dir


Build module with description field

    auto_livepatch.sh -p example_patch -d description.txt

Package module as RPM

    auto_livepatch.sh -p example_patch -d description.txt -k 5.10.118-3.ph3 --rpm --rpm-version 2 --rpm-release 3 --rpm-desc rpm_description.txt

Photon 4.0 rt flavor - All options set

    auto_livepatch.sh -p example_patches/example.patch -k 5.10.118-rt67-3.ph4-rt -o test_dir -n test -d description.txt -R --export-debuginfo

****** gen_livepatch.sh ******

gen_livepatch builds a livepatch on your machine. This will work for building different flavors of the same Photon OS version (3.0 and above) as your machine, but there will likely be issues with cross compiling between different versions of Photon, as the core toolchain packages differ.

gen_livepatch [options] -p [list of patch files]

Options:

-k: Specifies the kernel version. If not set, uses uname -r
-p: Patch file list. Need at least one patch file listed here
-n: Output file name. Will be default if not specified.
-o: Output directory. Will be default if not specified.
-R: Disable replace flag (replace flag is on by default)
-d: Use file contents as description field for livepatch module.
-s: Specify the path to a local source rpm
-v: Specify the path to a local debuginfo rpm
--export-debuginfo: Saves debug files after module is built.
--rpm: Package the module inside of an rpm.
--rpm-version: Set the version number for the rpm.
--rpm-release: Set the release number for the rpm.
--rpm-desc: Set a separate description for the rpm. Input is a file.
-h/--help: Prints help message and exits

**Examples **

Simplest Usage - Build livepatch for current kernel.

    gen_livepatch.sh -p example.patch


Set non-replace flag and save debug information.

    gen_livepatch.sh -p example.patch -R --exportdebuginfo


Multiple patches.

    gen_livepatch.sh -p example1.patch example2.patch ... exampleN.patch


Build module with description field

    gen_livepatch.sh -p example_patch -d description.txt

Package module as RPM

    gen_livepatch.sh -p example_patch -d description.txt -k 5.10.118-3.ph3 --rpm --rpm-version 2 --rpm-release 3 --rpm-desc rpm_description.txt

Native module - All options set.

    gen_livepatch.sh -p example_patches/example.patch -o test_dir -n test -d description.txt -R --export-debuginfo

Specify kernel version (will fail if Photon versions don't match)

    gen_livepatch.sh -k 4.19.245-5.ph3-aws -p example.patch