Gentoo Linux maintains its own kernel builder and initramfs generation utility called "genkernel".
It looks like some attempt was made to make 10_linux compatible with initiramfs images created by genkernel. However, this support is currently broken. There are two problems. Firstly, genkernel initramfs images are named like so: initramfs-genkernel-$ARCH-$version 10_linux currently looks for this: initramfs-genkernel-$version The simplest solution here would be to use a wildcard beteen genkernel and $version. Secondly, genkernel looks for the "real_root" kernel command line option to determine the root filesystem. This is a holdover from the days when we used true initrd images and we needed to use root=/dev/ram0. I have attached a rough patch that resolves these issues. I would appreciate any feedback you can give me. My goal is to move this upstream so that I will not have to rebase it in the future.
=== modified file 'util/grub.d/10_linux.in'
--- util/grub.d/10_linux.in 2012-03-10 14:21:25 +0000
+++ util/grub.d/10_linux.in 2012-04-07 21:24:06 +0000
@@ -135,7 +135,7 @@
message="$(gettext_printf "Loading Linux %s ..." ${version})"
sed "s/^/$submenu_indentation/" << EOF
echo '$message'
- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+ linux ${rel_dirname}/${basename} ${rootcmd}=${linux_root_device_thisversion} ro ${args}
EOF
if test -n "${initrd}" ; then
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
@@ -181,19 +181,31 @@
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+ rootcmd=root
initrd=
+ pushd "${dirname}" > /dev/null
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
- "initrd-${alt_version}" "initramfs-${alt_version}.img" \
- "initramfs-genkernel-${version}" \
- "initramfs-genkernel-${alt_version}"; do
- if test -e "${dirname}/${i}" ; then
+ "initrd-${alt_version}" "initramfs-${alt_version}.img"; do
+ if test -e "${i}" ; then
initrd="$i"
break
fi
done
+ if [ "x$initrd" = x ]; then
+ for i in "initramfs-genkernel"*"-${version}" \
+ "initramfs-genkernel"*"-${alt_version}"; do
+ if test -e "${i}"; then
+ initrd="$i"
+ rootcmd=real_root
+ break
+ fi
+ done
+ fi
+ popd > /dev/null
+
config=
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
if test -e "${i}" ; then
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
