Browse Source

fake:


			
			
				rocklinux
			
			
		
fake 18 years ago
parent
commit
f7bb025544
2 changed files with 27 additions and 17 deletions
  1. +1
    -1
      package/base/rockinitrd/initrd_essential.txt
  2. +26
    -16
      package/base/rockinitrd/mkinitrd.sh

+ 1
- 1
package/base/rockinitrd/initrd_essential.txt

@ -4,7 +4,7 @@
/bin/ls /bin/ls
/sbin/pivot_root /sbin/pivot_root
/sbin/insmod /sbin/insmod
/sbin/insmod.old /sbin/insmod.old
/sbin/modprobe /sbin/modprobe
/bin/mount /bin/mount
/bin/umount /bin/umount
/usr/bin/chroot /usr/bin/chroot

+ 26
- 16
package/base/rockinitrd/mkinitrd.sh

@ -69,20 +69,38 @@ case ${initrdfs} in
;;
esac
get_module_dependencies() {
module="${1}"
deps=`/sbin/modinfo -F depends ${module} 2>/dev/null | tr ',' ' '`
if [ -n "${deps}" ] ; then
for dep in ${deps} ; do
echo "`get_module_dependencies ${dep}`"
done
fi
echo "${module}";
}
add_module_to_initrd() {
module="${1}"
# adds a module and all it's dependencies to the initrd
module_name="${1}"
parameter="${2}"
module=${module/.ko/} # just in case, shouldn't be
module="`find ${rootdir}/lib/modules/${kernel} -name "${module}.o" -o -name "${module}.ko"`"
[ -f "${targetdir}/${module}" ] && return # skip dupes
echo "Adding ${module}."
mkdir -p ${targetdir}/${module%/*}
cp ${module} ${targetdir}/${module}
echo "/sbin/insmod ${module} ${parameter}" >> ${targetdir}/etc/conf/kernel
module_name=${module_name/.ko/} # just in case, shouldn't be
for dependant_module in `get_module_dependencies ${module_name} | sort | uniq` ; do
module="`find ${rootdir}/lib/modules/${kernel} -name "${dependant_module}.o" -o -name "${dependant_module}.ko"`"
[ -f "${targetdir}/${module}" ] && return # skip dupes
echo "Adding ${module}."
mkdir -p ${targetdir}/${module%/*}
cp ${module} ${targetdir}/${module}
done
echo "/sbin/modprobe ${module_name} ${parameter}" >> ${targetdir}/etc/conf/kernel
}
echo "Creating ${initrd_img} ..."
mkdir -p ${targetdir}/etc/conf
mkdir -p ${targetdir}/lib/modules/${kernel}
cp ${rootdir}/lib/modules/${kernel}/modules.dep ${targetdir}/lib/modules/${kernel}
if [ "${empty}" = 0 ] ; then
grep '^modprobe ' ${rootdir}/etc/conf/kernel | grep -v 'no-initrd' | \
sed 's,[ ]#.*,,' | \
@ -93,14 +111,6 @@ if [ "${empty}" = 0 ] ; then
echo "$0: Please either adjust /etc/conf/kernel or the configuration for the kernel V${kernel}" >&2
continue
fi
modinfo ${module} 2> /dev/null | grep ^depends: | \
while read a b; do
[ -z "${b}" ] && continue
b="${b//,/ }"
for module in ${b} ; do
add_module_to_initrd "${module}"
done
done
add_module_to_initrd "${b}" "${c}"
done
fi

Loading…
Cancel
Save