Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ The CBL-Mariner SPEC files originated from a variety of sources with varying lic

| Origin | License | SPECS |
|-----------|-----------------------------------|------------|
| Fedora | [Fedora MIT License Declaration](https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#License_of_Fedora_SPEC_Files) | attr <br> autoconf213 <br> brotli <br> calamares <br> catch <br> cpprest <br> cryptsetup <br> dnf <br> ebtables <br> extra-cmake-modules <br> gnu-efi <br> hardening-check <br> ipmitool <br> kde-settings <br> kf5 <br> kf5-kconfig <br> kf5-kcoreaddons <br> kf5-ki18n <br> kf5-kwidgetsaddons <br> kpmcore-3.3.0 <br> libatasmart <br> libburn <br> libcgroup <br> libcomps <br> libdnf <br> libisoburn <br> libisofs <br> libpwquality <br> mokutil <br> mozjs60 <br> open-vm-tools <br> openssl <br> p11-kit <br> qt5-qtbase <br> qt5-qtdeclarative <br> qt5-qtsvg <br> qt5-qttools <br> qt5-rpm-macros <br> websocketpp <br> yaml-cpp <br> |
| Fedora | [Fedora MIT License Declaration](https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#License_of_Fedora_SPEC_Files) | attr <br> autoconf213 <br> brotli <br> calamares <br> catch <br> cpprest <br> cryptsetup <br> dnf <br> ebtables <br> extra-cmake-modules <br> gnu-efi <br> hardening-check <br> ipmitool <br> kde-settings <br> kexec-tools <br> kf5 <br> kf5-kconfig <br> kf5-kcoreaddons <br> kf5-ki18n <br> kf5-kwidgetsaddons <br> kpmcore-3.3.0 <br> libatasmart <br> libburn <br> libcgroup <br> libcomps <br> libdnf <br> libisoburn <br> libisofs <br> libpwquality <br> mokutil <br> mozjs60 <br> open-vm-tools <br> openssl <br> p11-kit <br> qt5-qtbase <br> qt5-qtdeclarative <br> qt5-qtsvg <br> qt5-qttools <br> qt5-rpm-macros <br> squashfs-tools <br> websocketpp <br> yaml-cpp <br> |
| Microsoft | [Microsoft MIT License](/LICENSES-AND-NOTICES/LICENSE.md) | azure-iot-sdk-c <br> azure-iotedge <br> cloud-hypervisor <br> dtc <br> freefont <br> go-md2man <br> GSL <br> libiothsm-std <br> libuv <br> mariner-release <br> mariner-repos <br> mariner-rpm-macros <br> pcre2 <br> perl-Test-Warnings <br> shim-unsigned-x64 <br> swupdate <br> vala <br> zstd |
| Photon | [Photon License](LICENSE-PHOTON.md) and [Photon Notice](NOTICE.APACHE2). <br> Also see [LICENSE-EXCEPTIONS.PHOTON](LICENSE-EXCEPTIONS.PHOTON). | acl <br> alsa-lib <br> alsa-utils <br> ansible <br> ant <br> ant-contrib <br> apparmor <br> apr <br> apr-util <br> asciidoc <br> atftp <br> audit <br> autoconf <br> autoconf-archive <br> autofs <br> autogen <br> automake <br> babel <br> bash <br> bc <br> bcc <br> bind <br> binutils <br> bison <br> blktrace <br> boost <br> bridge-utils <br> btrfs-progs <br> bubblewrap <br> build-essential <br> bzip2 <br> bzr <br> c-ares <br> ca-certificates <br> cairo <br> cdrkit <br> check <br> chkconfig <br> chrpath <br> cifs-utils <br> clang <br> cloud-init <br> cloud-utils-growpart <br> cmake <br> cni <br> core-packages <br> coreutils <br> cpio <br> cppunit <br> cracklib <br> crash <br> crash-gcore-command <br> createrepo_c <br> cri-tools <br> cronie <br> ctags <br> curl <br> cyrus-sasl <br> cython <br> dbus <br> dbus-glib <br> dejagnu <br> device-mapper-multipath <br> dhcp <br> dialog <br> diffutils <br> dkms <br> dmidecode <br> dnsmasq <br> docbook-dtd-xml <br> docbook-style-xsl <br> dosfstools <br> dotnet-runtime-3.1 <br> dotnet-sdk-3.1 <br> dracut <br> dstat <br> e2fsprogs <br> ed <br> efibootmgr <br> efivar <br> elfutils <br> erlang <br> etcd <br> ethtool <br> expat <br> expect <br> fcgi <br> file <br> filesystem <br> findutils <br> finger <br> flex <br> fontconfig <br> fping <br> freetype <br> fuse <br> gawk <br> gc <br> gcc <br> gdb <br> gdbm <br> gettext <br> git <br> glib <br> glib-networking <br> glibc <br> glibmm24 <br> gmp <br> gnome-common <br> gnupg2 <br> gnuplot <br> gnutls <br> gobject-introspection <br> golang <br> golang <br> gperf <br> gperftools <br> gpgme <br> gptfdisk <br> grep <br> groff <br> grub2 <br> gtest <br> gtk-doc <br> guile <br> gzip <br> haproxy <br> harfbuzz <br> haveged <br> hdparm <br> http-parser <br> httpd <br> i2c-tools <br> iana-etc <br> icu <br> initramfs <br> initscripts <br> inotify-tools <br> intltool <br> iotop <br> iperf3 <br> ipmitool <br> iproute <br> ipset <br> iptables <br> iputils <br> ipvsadm <br> ipxe <br> irqbalance <br> itstool <br> jansson <br> jna <br> jq <br> json-c <br> json-glib <br> kbd <br> keepalived <br> kernel <br> kernel-headers <br> kernel-hyperv <br> kexec-tools <br> keyutils <br> kmod <br> krb5 <br> kubernetes <br> lapack <br> less <br> libaio <br> libarchive <br> libassuan <br> libatomic_ops <br> libcap <br> libcap-ng <br> libconfig <br> libdb <br> libdnet <br> libedit <br> libestr <br> libev <br> libevent <br> libfastjson <br> libffi <br> libgcrypt <br> libgpg-error <br> libgssglue <br> libgsystem <br> libgudev <br> libjpeg-turbo <br> libksba <br> libmbim <br> libmnl <br> libmodulemd <br> libmpc <br> libmspack <br> libndp <br> libnetfilter_conntrack <br> libnetfilter_cthelper <br> libnetfilter_cttimeout <br> libnetfilter_queue <br> libnfnetlink <br> libnftnl <br> libnl3 <br> libnsl2 <br> libpcap <br> libpipeline <br> libpng <br> libpsl <br> libqmi <br> librelp <br> librepo <br> librsync <br> libseccomp <br> libselinux <br> libsepol <br> libserf <br> libsigc++20 <br> libsolv <br> libsoup <br> libssh2 <br> libtalloc <br> libtar <br> libtasn1 <br> libtiff <br> libtirpc <br> libtool <br> libunistring <br> libunwind <br> libusb <br> libvirt <br> libwebp <br> libxml2 <br> libxslt <br> libyaml <br> linux-firmware <br> lldb <br> lldpad <br> llvm <br> lm-sensors <br> lmdb <br> log4cpp <br> logrotate <br> lshw <br> lsof <br> lsscsi <br> ltrace <br> lttng-tools <br> lttng-ust <br> lua <br> lvm2 <br> lz4 <br> lzo <br> m2crypto <br> m4 <br> make <br> man-db <br> man-pages <br> mariadb <br> maven <br> mc <br> mercurial <br> meson <br> mlocate <br> ModemManager <br> mpfr <br> msr-tools <br> mysql <br> nano <br> nasm <br> ncurses <br> ndctl <br> net-snmp <br> net-tools <br> nettle <br> newt <br> nfs-utils <br> nghttp2 <br> nginx <br> ninja-build <br> nodejs <br> nodejs <br> npth <br> nspr <br> nss <br> nss-altfiles <br> ntp <br> numactl <br> numpy <br> nvme-cli <br> oniguruma <br> openipmi <br> openjdk8 <br> openjdk8 <br> openldap <br> openscap <br> openssh <br> openvswitch <br> ostree <br> pam <br> pango <br> parted <br> patch <br> pciutils <br> pcre <br> perl <br> perl-Canary-Stability <br> perl-CGI <br> perl-common-sense <br> perl-Crypt-SSLeay <br> perl-DBD-SQLite <br> perl-DBI <br> perl-DBIx-Simple <br> perl-Exporter-Tiny <br> perl-File-HomeDir <br> perl-File-Which <br> perl-IO-Socket-SSL <br> perl-JSON-Any <br> perl-JSON-XS <br> perl-libintl-perl <br> perl-List-MoreUtils <br> perl-Module-Build <br> perl-Module-Install <br> perl-Module-ScanDeps <br> perl-Net-SSLeay <br> perl-NetAddr-IP <br> perl-Object-Accessor <br> perl-Path-Class <br> perl-Try-Tiny <br> perl-Types-Serialiser <br> perl-WWW-Curl <br> perl-XML-Parser <br> perl-YAML <br> perl-YAML-Tiny <br> pgbouncer <br> pinentry <br> pixman <br> pkg-config <br> polkit <br> popt <br> postgresql <br> powershell <br> procps-ng <br> protobuf <br> protobuf-c <br> psmisc <br> pth <br> pyasn1-modules <br> pygobject3 <br> pyOpenSSL <br> PyPAM <br> pyparsing <br> pytest <br> python-appdirs <br> python-asn1crypto <br> python-atomicwrites <br> python-attrs <br> python-backports-ssl_match_hostname <br> python-bcrypt <br> python-boto3 <br> python-botocore <br> python-certifi <br> python-cffi <br> python-chardet <br> python-configobj <br> python-constantly <br> python-coverage <br> python-cryptography <br> python-daemon <br> python-dateutil <br> python-defusedxml <br> python-distro <br> python-docopt <br> python-docutils <br> python-ecdsa <br> python-enum34 <br> python-futures <br> python-gevent <br> python-greenlet <br> python-hyperlink <br> python-hypothesis <br> python-idna <br> python-imagesize <br> python-incremental <br> python-iniparse <br> python-ipaddr <br> python-ipaddress <br> python-jinja2 <br> python-jmespath <br> python-jsonpatch <br> python-jsonpointer <br> python-jsonschema <br> python-lockfile <br> python-lxml <br> python-m2r <br> python-mako <br> python-markupsafe <br> python-mistune <br> python-msgpack <br> python-netaddr <br> python-netifaces <br> python-ntplib <br> python-oauthlib <br> python-packaging <br> python-pam <br> python-pbr <br> python-pip <br> python-ply <br> python-prettytable <br> python-psutil <br> python-psycopg2 <br> python-py <br> python-pyasn1 <br> python-pycodestyle <br> python-pycparser <br> python-pycurl <br> python-Pygments <br> python-PyNaCl <br> python-pyvmomi <br> python-requests <br> python-setuptools <br> python-setuptools_scm <br> python-simplejson <br> python-six <br> python-snowballstemmer <br> python-sphinx <br> python-sphinx-theme-alabaster <br> python-sqlalchemy <br> python-Twisted <br> python-typing <br> python-urllib3 <br> python-vcversioner <br> python-virtualenv <br> python-wcwidth <br> python-webob <br> python-websocket-client <br> python-werkzeug <br> python-zope-interface <br> python2 <br> python3 <br> pytz <br> PyYAML <br> readline <br> redis <br> rng-tools <br> rpcbind <br> rpcsvc-proto <br> rpm <br> rpm-ostree <br> rrdtool <br> rsync <br> rsyslog <br> ruby <br> rubygem-bundler <br> runc <br> rust <br> scons <br> sed <br> sg3_utils <br> shadow-utils <br> slang <br> snappy <br> socat <br> sqlite <br> sshpass <br> strace <br> strongswan <br> subversion <br> sudo <br> swig <br> syslinux <br> sysstat <br> systemd <br> systemd <br> systemtap <br> tar <br> tboot <br> tcl <br> tcpdump <br> tcp_wrappers <br> tcsh <br> tdnf <br> texinfo <br> tmux <br> tpm2-abrmd <br> tpm2-tools <br> tpm2-tss <br> traceroute <br> tree <br> trousers <br> tzdata <br> unbound <br> unixODBC <br> unzip <br> usbutils <br> userspace-rcu <br> utf8proc <br> util-linux <br> valgrind <br> vim <br> vsftpd <br> WALinuxAgent <br> wget <br> which <br> wpa_supplicant <br> xerces-c <br> xfsprogs <br> xinetd <br> xmlsec1 <br> xmlto <br> xz <br> zchunk <br> zeromq <br> zip <br> zlib <br> zsh <br> |




13 changes: 9 additions & 4 deletions SPECS/kernel-hyperv/config
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,10 @@ CONFIG_HZ_100=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
# CONFIG_KEXEC is not set
CONFIG_KEXEC=y
CONFIG_KEXEC_FILE=y
CONFIG_ARCH_HAS_KEXEC_PURGATORY=y
# CONFIG_KEXEC_SIG is not set
CONFIG_CRASH_DUMP=y
CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
Expand Down Expand Up @@ -591,6 +594,8 @@ CONFIG_HAVE_KVM=y
#
# General architecture-dependent options
#
CONFIG_CRASH_CORE=y
CONFIG_KEXEC_CORE=y
CONFIG_HOTPLUG_SMT=y
CONFIG_OPROFILE=m
CONFIG_OPROFILE_EVENT_MULTIPLEX=y
Expand Down Expand Up @@ -3566,7 +3571,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
CONFIG_PROC_SYSCTL=y
Expand Down Expand Up @@ -3937,8 +3942,8 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA1_SSSE3 is not set
# CONFIG_CRYPTO_SHA256_SSSE3 is not set
# CONFIG_CRYPTO_SHA512_SSSE3 is not set
CONFIG_CRYPTO_LIB_SHA256=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_LIB_SHA256=y
Comment thread
MateuszMalisz marked this conversation as resolved.
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
# CONFIG_CRYPTO_SHA3 is not set
# CONFIG_CRYPTO_SM3 is not set
Expand Down
2 changes: 1 addition & 1 deletion SPECS/kernel-hyperv/kernel-hyperv.signatures.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"Signatures": {
"config": "567d5225a65b710d6190d92441e9042c29f045a8aa47b7c3338a1a919030457c",
"config": "b6b92676da3878a143eff28c60afd63b4fd1abf719a620048a07aea4e699b0f7",
"linux-msft-5.4.42.tar.gz": "5067bd1b4f8a5dafc0438686f9d55fadae1a1d14a266311f6821bfa9e33781f8"
}
}
6 changes: 4 additions & 2 deletions SPECS/kernel-hyperv/kernel-hyperv.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Summary: Linux Kernel optimized for Hyper-V
Name: kernel-hyperv
Version: 5.4.42
Release: 5%{?dist}
Release: 6%{?dist}
License: GPLv2
URL: https://github.com/microsoft/WSL2-Linux-Kernel
Group: System Environment/Kernel
Expand Down Expand Up @@ -137,7 +137,7 @@ ln -s vmlinux-%{uname_r} %{buildroot}/usr/lib/debug/lib/modules/%{uname_r}/vmlin

cat > %{buildroot}/boot/linux-%{uname_r}.cfg << "EOF"
# GRUB Environment Block
mariner_cmdline=init=/lib/systemd/systemd ro loglevel=3 quiet no-vmw-sta
mariner_cmdline=init=/lib/systemd/systemd ro loglevel=3 quiet no-vmw-sta crashkernel=128M
mariner_linux=vmlinuz-%{uname_r}
mariner_initrd=initrd.img-%{uname_r}
EOF
Expand Down Expand Up @@ -248,6 +248,8 @@ ln -sf linux-%{uname_r}.cfg /boot/mariner.cfg
%{_libdir}/perf/include/bpf/*

%changelog
* Fri Aug 07 2020 Mateusz Malisz <mamalisz@microsoft.com> 5.4.42-6
- Add crashkernel=128M to kernel cmdline
* Tue Aug 04 2020 Pawel Winogrodzki <pawelwi@microsoft.com> 5.4.42-5
- Updating "KBUILD_BUILD_VERSION" and "KBUILD_BUILD_HOST" with correct
distribution name.
Expand Down
5 changes: 3 additions & 2 deletions SPECS/kernel/config
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,7 @@ CONFIG_VHOST=m
#
CONFIG_CRASH_CORE=y
CONFIG_KEXEC_CORE=y
CONFIG_KEXEC_FILE=y
CONFIG_HOTPLUG_SMT=y
CONFIG_OPROFILE=m
CONFIG_OPROFILE_EVENT_MULTIPLEX=y
Expand Down Expand Up @@ -5797,7 +5798,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
CONFIG_PROC_SYSCTL=y
Expand Down Expand Up @@ -6179,7 +6180,7 @@ CONFIG_CRYPTO_SHA1=y
# CONFIG_CRYPTO_SHA256_SSSE3 is not set
# CONFIG_CRYPTO_SHA512_SSSE3 is not set
CONFIG_CRYPTO_LIB_SHA256=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA256=y
Comment thread
MateuszMalisz marked this conversation as resolved.
CONFIG_CRYPTO_SHA512=y
# CONFIG_CRYPTO_SHA3 is not set
# CONFIG_CRYPTO_SM3 is not set
Expand Down
4 changes: 2 additions & 2 deletions SPECS/kernel/kernel.signatures.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"Signatures": {
"config": "3a63dfebe79b5e3adee4fef50b5e15b0a5bd6417fc4a62def8d73883cc52f03d",
"config": "a567dbf795e9046a43cdf6b2195fd88da79dc788777cda31974ffba0254eff0a",
"config_aarch64": "cdd7dda76915a09c17ac8e811f6c81655f89cbdf9b9c6f9cf3e2f7a8638618bc",
"linux-msft-5.4.42.tar.gz": "5067bd1b4f8a5dafc0438686f9d55fadae1a1d14a266311f6821bfa9e33781f8"
}
}
}
7 changes: 5 additions & 2 deletions SPECS/kernel/kernel.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Summary: Linux Kernel
Name: kernel
Version: 5.4.42
Release: 8%{?dist}
Release: 9%{?dist}
License: GPLv2
URL: https://github.com/microsoft/WSL2-Linux-Kernel
Group: System Environment/Kernel
Expand Down Expand Up @@ -171,7 +171,7 @@ ln -s vmlinux-%{uname_r} %{buildroot}/usr/lib/debug/lib/modules/%{uname_r}/vmlin

cat > %{buildroot}/boot/linux-%{uname_r}.cfg << "EOF"
# GRUB Environment Block
mariner_cmdline=init=/lib/systemd/systemd ro loglevel=3 quiet no-vmw-sta
mariner_cmdline=init=/lib/systemd/systemd ro loglevel=3 quiet no-vmw-sta crashkernel=128M
mariner_linux=vmlinuz-%{uname_r}
mariner_initrd=initrd.img-%{uname_r}
EOF
Expand Down Expand Up @@ -311,6 +311,9 @@ ln -sf linux-%{uname_r}.cfg /boot/mariner.cfg
%{_libdir}/perf/include/bpf/*

%changelog
* Fri Aug 07 2020 Mateusz Malisz <mamalisz@microsoft.com> 5.4.42-9
- Add crashkernel=128M to the kernel cmdline
- Update config to support kexec and kexec_file_load
* Tue Aug 04 2020 Pawel Winogrodzki <pawelwi@microsoft.com> 5.4.42-8
- Updating "KBUILD_BUILD_VERSION" and "KBUILD_BUILD_HOST" with correct
distribution name.
Expand Down
16 changes: 16 additions & 0 deletions SPECS/kexec-tools/98-kexec.rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
SUBSYSTEM=="cpu", ACTION=="add", GOTO="kdump_reload"
SUBSYSTEM=="cpu", ACTION=="remove", GOTO="kdump_reload"
SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload"
SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload"

GOTO="kdump_reload_end"

LABEL="kdump_reload"

# If kdump is not loaded, calling kdump-udev-throttle will end up
# doing nothing, but systemd-run will always generate extra logs for
# each call, so trigger the kdump-udev-throttler only if kdump
# service is active to avoid unnecessary logs
RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"

LABEL="kdump_reload_end"
65 changes: 65 additions & 0 deletions SPECS/kexec-tools/dracut-early-kdump-module-setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/bin/bash

. /etc/sysconfig/kdump
. /lib/kdump/kdump-lib.sh

KDUMP_KERNEL=""
KDUMP_INITRD=""

check() {
if [ ! -f /etc/sysconfig/kdump ] || [ ! -f /lib/kdump/kdump-lib.sh ]\
|| [ -n "${IN_KDUMP}" ]
then
return 1
fi
return 255
}

depends() {
echo "base shutdown"
return 0
}

prepare_kernel_initrd() {
KDUMP_BOOTDIR=$(check_boot_dir "${KDUMP_BOOTDIR}")
if [ -z "$KDUMP_KERNELVER" ]; then
kdump_kver=`uname -r`
if [ "$kernel" != "$kdump_kver" ]; then
dwarn "Using current kernel version '$kdump_kver' for early kdump," \
"but the initramfs is generated for kernel version '$kernel'"
fi
else
kdump_kver=$KDUMP_KERNELVER
fi
KDUMP_KERNEL="${KDUMP_BOOTDIR}/${KDUMP_IMG}-${kdump_kver}${KDUMP_IMG_EXT}"
KDUMP_INITRD="${KDUMP_BOOTDIR}/initramfs-${kdump_kver}kdump.img"
}

install() {
prepare_kernel_initrd
if [ ! -f "$KDUMP_KERNEL" ]; then
derror "Could not find required kernel for earlykdump," \
"earlykdump will not work!"
return 1
fi
if [ ! -f "$KDUMP_INITRD" ]; then
derror "Could not find required kdump initramfs for earlykdump," \
"please ensure kdump initramfs is generated first," \
"earlykdump will not work!"
return 1
fi

inst_multiple tail find cut dirname hexdump
inst_simple "/etc/sysconfig/kdump"
inst_binary "/usr/sbin/kexec"
inst_binary "/usr/bin/gawk" "/usr/bin/awk"
inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh"
inst_hook cmdline 00 "$moddir/early-kdump.sh"
inst_binary "$KDUMP_KERNEL"
inst_binary "$KDUMP_INITRD"

ln_r "$KDUMP_KERNEL" "${KDUMP_BOOTDIR}/${KDUMP_IMG}-earlykdump${KDUMP_IMG_EXT}"
ln_r "$KDUMP_INITRD" "${KDUMP_BOOTDIR}/initramfs-earlykdump.img"

chmod -x "${initdir}/$KDUMP_KERNEL"
}
75 changes: 75 additions & 0 deletions SPECS/kexec-tools/dracut-early-kdump.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#! /bin/sh

KEXEC=/sbin/kexec
standard_kexec_args="-p"

EARLY_KDUMP_INITRD=""
EARLY_KDUMP_KERNEL=""
EARLY_KDUMP_CMDLINE=""
EARLY_KDUMP_KERNELVER=""
EARLY_KEXEC_ARGS=""

. /etc/sysconfig/kdump
. /lib/dracut-lib.sh
. /lib/kdump-lib.sh

prepare_parameters()
{
EARLY_KDUMP_CMDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}")
KDUMP_BOOTDIR=$(check_boot_dir "${KDUMP_BOOTDIR}")

EARLY_KDUMP_KERNEL="${KDUMP_BOOTDIR}/${KDUMP_IMG}-earlykdump${KDUMP_IMG_EXT}"
EARLY_KDUMP_INITRD="${KDUMP_BOOTDIR}/initramfs-earlykdump.img"
}

early_kdump_load()
{
check_kdump_feasibility
if [ $? -ne 0 ]; then
return 1
fi

if is_fadump_capable; then
echo "WARNING: early kdump doesn't support fadump."
return 1
fi

check_current_kdump_status
if [ $? == 0 ]; then
return 1
fi

prepare_parameters

EARLY_KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")

if is_secure_boot_enforced; then
echo "Secure Boot is enabled. Using kexec file based syscall."
EARLY_KEXEC_ARGS="$EARLY_KEXEC_ARGS -s"
fi

$KEXEC ${EARLY_KEXEC_ARGS} $standard_kexec_args \
--command-line="$EARLY_KDUMP_CMDLINE" \
--initrd=$EARLY_KDUMP_INITRD $EARLY_KDUMP_KERNEL
if [ $? == 0 ]; then
echo "kexec: loaded early-kdump kernel"
return 0
else
echo "kexec: failed to load early-kdump kernel"
return 1
fi
}

set_early_kdump()
{
if getargbool 0 rd.earlykdump; then
echo "early-kdump is enabled."
early_kdump_load
else
echo "early-kdump is disabled."
fi

return 0
}

set_early_kdump
30 changes: 30 additions & 0 deletions SPECS/kexec-tools/dracut-kdump-capture.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.

[Unit]
Description=Kdump Vmcore Save Service
After=initrd.target initrd-parse-etc.service sysroot.mount
After=dracut-initqueue.service dracut-pre-mount.service dracut-mount.service dracut-pre-pivot.service
Before=initrd-cleanup.service
ConditionPathExists=/etc/initrd-release
OnFailure=emergency.target
OnFailureJobMode=isolate

[Service]
Environment=DRACUT_SYSTEMD=1
Environment=NEWROOT=/sysroot
Type=oneshot
ExecStart=/bin/kdump.sh
StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
KillMode=process
RemainAfterExit=yes

# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
# terminates cleanly.
KillSignal=SIGHUP
Loading