Bug#337607: Boot scripts tries to use evms_activate, which isn't inside initrd.img
Here is a patch that does three things:
Copy files instead of symlinking so it is possible to add symlinks
into cpio image, and remove --deref from cpio args.
Add lib64 -> lib symlink if our environment also contains such
symlink. (This closes #337176.)
Don't try to execute evms_activate if it doesn't exist.
(This closes #337607.)
=== modified file 'hook-functions'
--- hook-functions
+++ hook-functions
@@ -14,6 +14,11 @@
{
manual_add_modules ${@}
echo "${@}" >>"${DESTDIR}/conf/modules"
+}
+
+add_file()
+{
+ cp -a ${1} ${2}
}
# Takes a file containing a list of modules to be added as an
@@ -47,14 +52,14 @@
fi
mkdir -p "${DESTDIR}/$(dirname "${mam_x}")"
- ln -s "${mam_x}" "${DESTDIR}/$(dirname "${mam_x}")"
+ add_file "${mam_x}" "${DESTDIR}/$(dirname "${mam_x}")"
done
}
# $1 is source
# $2 is relative destination
copy_exec() {
- ln -s ${1} ${DESTDIR}/${2}
+ add_file ${1} ${DESTDIR}/${2}
# Copy the dependant libraries
for x in $(ldd ${1} 2>/dev/null | sed -e '
@@ -76,7 +81,7 @@
mkdir -p ${DESTDIR}/${dirname}
if [ ! -e ${DESTDIR}/${dirname}/${libname} ]; then
- ln -s ${x} ${DESTDIR}/${dirname}
+ add_file ${x} ${DESTDIR}/${dirname}
fi
done
}
=== modified file 'mkinitramfs'
--- mkinitramfs
+++ mkinitramfs
@@ -140,6 +140,11 @@
mkdir -p "${DESTDIR}/${d}"
done
+# We might need lib64 -> lib symlink in root for linker.
+if [ -e /lib64 ]; then
+ ln -s lib "${DESTDIR}/lib64"
+fi
+
# MODULES=list case. Always honour.
for x in "${CONFDIR}/modules" /usr/share/initramfs-tools/modules.d/*; do
if [ -f "${x}" ]; then
@@ -155,18 +160,15 @@
auto_add_modules
fi
-# Have to do each file, because cpio --dereference doesn't recurse down
-# symlinks.
-
-ln -s /usr/lib/klibc/bin/* ${DESTDIR}/bin
-ln -s /usr/lib/klibc/lib/klibc-*.so ${DESTDIR}/lib
+cp -a /usr/lib/klibc/bin/* ${DESTDIR}/bin
+cp -a /usr/lib/klibc/lib/klibc-*.so ${DESTDIR}/lib
copy_exec /usr/share/initramfs-tools/init /init
cp -a /usr/share/initramfs-tools/scripts/* "${DESTDIR}/scripts"
for f in $(cd /etc/mkinitramfs/scripts && \
find . \( -name '*.dpkg*' -prune -o -name '*~' -prune \) \
-o -type f -print); do
mkdir --parents "${DESTDIR}/scripts/$(dirname "${f}")"
-cp -p "/etc/mkinitramfs/scripts/${f}" "${DESTDIR}/scripts/$(dirname "${f}")"
+ cp -p "/etc/mkinitramfs/scripts/${f}" "${DESTDIR}/scripts/$(dirname "${f}")"
done
copy_exec "${CONFDIR}/initramfs.conf" /conf
cp -a /etc/udev "${DESTDIR}/etc"
@@ -195,7 +197,7 @@
copy_exec "${CONFDIR}/DSDT.aml" /
fi
-(cd "${DESTDIR}" && find . | cpio --quiet --dereference -o -H newc | gzip -9 >"${outfile}")
+(cd "${DESTDIR}" && find . | cpio --quiet -o -H newc | gzip -9 >"${outfile}")
if [ -s "${__TMPCPIOGZ}" ]; then
cat "${__TMPCPIOGZ}" >>"${outfile}"
=== modified file 'scripts/local-top/evms'
--- scripts/local-top/evms
+++ scripts/local-top/evms
@@ -15,6 +15,10 @@
;;
esac
+if [ ! -x /sbin/evms_activate ]; then
+ exit 0
+fi
+
evms=${ROOT#/dev/evms/}
case ${evms} in
--
Tommi Vainikainen
Reply to: