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 Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel