kpatch: change core module path again

On RHEL I'm seeing issues with putting the core module in the "extra"
path.  On the next depmod run, it gets added to modules.dep, and on a
subsequent kpatch install I see the following errors:

    /usr/lib/dracut/modules.d/50drm/module-setup.sh: line 26: /lib/modules/3.10.0-123.4.4.el7.x86_64//weak-updates/kpatch/kpatch.ko: No such file or directory
    /usr/lib/dracut/modules.d/90kernel-modules/module-setup.sh: line 14: /lib/modules/3.10.0-123.4.4.el7.x86_64//weak-updates/kpatch/kpatch.ko: No such file or directory
    modinfo: ERROR: Module /lib/modules/3.10.0-123.4.4.el7.x86_64/weak-updates/kpatch/kpatch.ko not found.

Until the core module gets merged into Linux, I think we can put it in
/usr/lib/kpatch, which is also where the patch modules are going to be
delivered in the RHEL RPM.

Making sure the other options still work with the kpatch utility for
now, so as to keep backwards compatibility between a newer kpatch
utility and older core modules.  We can break this compatibility for
kpatch 0.2.0.
This commit is contained in:
Josh Poimboeuf 2014-07-28 16:05:31 -05:00
parent 7db96adb9c
commit ec77b26c76
5 changed files with 18 additions and 8 deletions

View File

@ -7,7 +7,7 @@ PREFIX ?= /usr/local
LIBDIR ?= lib
BINDIR = $(DESTDIR)$(PREFIX)/bin
SBINDIR = $(DESTDIR)$(PREFIX)/sbin
MODULESDIR = $(DESTDIR)$(PREFIX)/$(LIBDIR)/modules
MODULESDIR = $(DESTDIR)$(PREFIX)/$(LIBDIR)/kpatch
LIBEXECDIR = $(DESTDIR)$(PREFIX)/libexec/kpatch
DATADIR = $(DESTDIR)$(PREFIX)/share/kpatch
MANDIR = $(DESTDIR)$(PREFIX)/share/man/man1

View File

@ -1,6 +1,6 @@
Name: kpatch
Summary: Dynamic kernel patching
Version: 0.1.7
Version: 0.1.9
License: GPLv2
Group: System Environment/Kernel
URL: http://github.com/dynup/kpatch
@ -85,7 +85,7 @@ rm -rf %{buildroot}
%files %{KVER}
%defattr(-,root,root,-)
%{_usr}/lib/modules/%{KVER}/extra/%{name}/*
%{_usr}/lib/kpatch/%{KVER}
%files build
%defattr(-,root,root,-)
@ -95,6 +95,10 @@ rm -rf %{buildroot}
%{_mandir}/man1/kpatch-build.1*
%changelog
* Mon Jul 28 2014 Josh Poimboeuf <jpoimboe@redhat.com> - 0.1.9-1
- moved core module to /usr/lib/kpatch
- rebased to current version
* Mon Jul 07 2014 Udo Seidel <udoseidel@gmx.de> - 0.1.7-1
- rebased to current version

View File

@ -26,7 +26,7 @@ install() {
inst /usr/bin/dirname
# install core module
inst_any -d /usr/lib/modules/$kernel/extra/kpatch/kpatch.ko /usr/local/lib/modules/$kernel/extra/kpatch/kpatch.ko /usr/lib/modules/$kernel/extra/kpatch/kpatch.ko
inst_any -d /usr/lib/modules/$kernel/extra/kpatch/kpatch.ko /usr/local/lib/modules/$kernel/extra/kpatch/kpatch.ko /usr/lib/modules/$kernel/extra/kpatch/kpatch.ko /usr/lib/kpatch/$kernel/kpatch.ko /usr/local/lib/kpatch/$kernel/kpatch.ko
# install patch modules
if [[ -e /var/lib/kpatch/$kernel ]]; then

View File

@ -4,14 +4,14 @@ all: clean
$(MAKE) -C core
install:
$(INSTALL) -d $(MODULESDIR)/$(shell uname -r)/extra/kpatch
$(INSTALL) -m 644 core/kpatch.ko $(MODULESDIR)/$(shell uname -r)/extra/kpatch
$(INSTALL) -m 644 core/Module.symvers $(MODULESDIR)/$(shell uname -r)/extra/kpatch
$(INSTALL) -d $(MODULESDIR)/$(shell uname -r)
$(INSTALL) -m 644 core/kpatch.ko $(MODULESDIR)/$(shell uname -r)
$(INSTALL) -m 644 core/Module.symvers $(MODULESDIR)/$(shell uname -r)
$(INSTALL) -d $(DATADIR)/patch
$(INSTALL) -m 644 patch/* $(DATADIR)/patch
uninstall:
$(RM) -R $(MODULESDIR)/*/extra/kpatch
$(RM) -R $(MODULESDIR)
$(RM) -R $(DATADIR)
clean:

View File

@ -82,6 +82,12 @@ find_core_module() {
COREMOD="$SCRIPTDIR"/../kmod/core/kpatch.ko
[[ -f "$COREMOD" ]] && return
COREMOD="/usr/local/lib/kpatch/$(uname -r)/kpatch.ko"
[[ -f "$COREMOD" ]] && return
COREMOD="/usr/lib/kpatch/$(uname -r)/kpatch.ko"
[[ -f "$COREMOD" ]] && return
COREMOD="/usr/local/lib/modules/$(uname -r)/extra/kpatch/kpatch.ko"
[[ -f "$COREMOD" ]] && return