[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: