Commit b0756b5a authored by Helge Deller's avatar Helge Deller

parisc: make "make install" not depend on vmlinux

Install targets (install, zinstall, uinstall) on parisc have a
dependency to vmlinux. This may cause parts of the kernel to be rebuilt
during installation. We must avoid this since this may run as root.
Install targets "ABSOLUTELY MUST NOT MODIFY THE SOURCE TREE." as Linus
emphasized this in:

http://lkml.org/lkml/2013/7/10/600

So on parisc and maybe other archs we need the same as for x86:

1648e4f8 x86, kbuild: make "make install" not depend on vmlinux

This parisc patch was inspired by:

19514fc6 arm, kbuild: make "make install" not depend on vmlinux
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 527973c8
...@@ -94,7 +94,7 @@ PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \ ...@@ -94,7 +94,7 @@ PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \
else echo $(obj)/palo.conf; \ else echo $(obj)/palo.conf; \
fi) fi)
palo: vmlinuz palo lifimage: vmlinuz
@if test ! -x "$(PALO)"; then \ @if test ! -x "$(PALO)"; then \
echo 'ERROR: Please install palo first (apt-get install palo)';\ echo 'ERROR: Please install palo first (apt-get install palo)';\
echo 'or build it from source and install it somewhere in your $$PATH';\ echo 'or build it from source and install it somewhere in your $$PATH';\
...@@ -109,16 +109,23 @@ palo: vmlinuz ...@@ -109,16 +109,23 @@ palo: vmlinuz
fi fi
$(PALO) -f $(PALOCONF) $(PALO) -f $(PALOCONF)
# Shorthands for known targets not supported by parisc, use vmlinux/vmlinuz as default BOOT_TARGETS = zImage Image palo lifimage
INSTALL_TARGETS = zinstall install
PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
bzImage zImage: vmlinuz
Image: vmlinux Image: vmlinux
zImage bzImage: vmlinuz
vmlinuz: vmlinux vmlinuz: vmlinux
@gzip -cf -9 $< > $@ @gzip -cf -9 $< > $@
install: vmlinuz install:
sh $(src)/arch/parisc/install.sh \ $(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
$(KERNELRELEASE) $< System.map "$(INSTALL_PATH)" $(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
zinstall:
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
$(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
CLEAN_FILES += lifimage CLEAN_FILES += lifimage
MRPROPER_FILES += palo.conf MRPROPER_FILES += palo.conf
...@@ -127,10 +134,11 @@ define archhelp ...@@ -127,10 +134,11 @@ define archhelp
@echo '* vmlinux - Uncompressed kernel image (./vmlinux)' @echo '* vmlinux - Uncompressed kernel image (./vmlinux)'
@echo ' vmlinuz - Compressed kernel image (./vmlinuz)' @echo ' vmlinuz - Compressed kernel image (./vmlinuz)'
@echo ' palo - Bootable image (./lifimage)' @echo ' palo - Bootable image (./lifimage)'
@echo ' install - Install kernel using' @echo ' install - Install uncompressed vmlinux kernel using'
@echo ' (your) ~/bin/$(INSTALLKERNEL) or' @echo ' (your) ~/bin/$(INSTALLKERNEL) or'
@echo ' (distribution) /sbin/$(INSTALLKERNEL) or' @echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
@echo ' copy to $$(INSTALL_PATH)' @echo ' copy to $$(INSTALL_PATH)'
@echo ' zinstall - Install compressed vmlinuz kernel'
endef endef
# we require gcc 3.3 or above to compile the kernel # we require gcc 3.3 or above to compile the kernel
......
...@@ -19,20 +19,48 @@ ...@@ -19,20 +19,48 @@
# $4 - default install path (blank if root directory) # $4 - default install path (blank if root directory)
# #
verify () {
if [ ! -f "$1" ]; then
echo "" 1>&2
echo " *** Missing file: $1" 1>&2
echo ' *** You need to run "make" before "make install".' 1>&2
echo "" 1>&2
exit 1
fi
}
# Make sure the files actually exist
verify "$2"
verify "$3"
# User may have a custom install script # User may have a custom install script
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi if [ -n "${INSTALLKERNEL}" ]; then
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
fi
# Default install # Default install
if [ -f $4/vmlinuz ]; then if [ "$(basename $2)" = "zImage" ]; then
mv $4/vmlinuz $4/vmlinuz.old # Compressed install
echo "Installing compressed kernel"
base=vmlinuz
else
# Normal install
echo "Installing normal kernel"
base=vmlinux
fi
if [ -f $4/$base-$1 ]; then
mv $4/$base-$1 $4/$base-$1.old
fi fi
cat $2 > $4/$base-$1
if [ -f $4/System.map ]; then # Install system map file
mv $4/System.map $4/System.old if [ -f $4/System.map-$1 ]; then
mv $4/System.map-$1 $4/System.map-$1.old
fi fi
cp $3 $4/System.map-$1
cat $2 > $4/vmlinuz
cp $3 $4/System.map
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment