ostree/gnomeos/yocto/15_ostree

74 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
set -e
. /usr/lib/grub/grub-mkconfig_lib
CLASS="--class gnu-linux --class gnu --class os"
if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|| ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|| uses_abstraction "${GRUB_DEVICE}" lvm; then
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
else
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi
ostree_linux_entry ()
{
os="$1"
version="$2"
args="$3"
printf "menuentry '${os}; Linux ${version}' ${CLASS} {\n"
cat << EOF
insmod gzio
EOF
cat <<EOF
echo '"Loading ${os} ${version}"'
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ostree=current ${args}
EOF
if test -n "${initrd}" ; then
message="$(gettext_printf "Loading initial ramdisk ...")"
cat << EOF
echo '$message'
initrd ${rel_dirname}/${initrd}
EOF
fi
cat << EOF
}
EOF
}
machine=$(uname -m)
kernels=$(echo /boot/vmlinuz-*.${machine})
while [ "x${kernels}" != x ]; do
linux=`version_find_latest $kernels` >&2
basename=`basename $linux`
dirname=`dirname $linux`
rel_dirname=`make_system_path_relative_to_its_root $dirname`
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
for i in "initrd.img-${version}" "initrd-${version}.img" \
"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="$i"
break
fi
done
ostree_linux_entry "GNOMEOS 3.4" "${version}" \
"${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_LINUX_DEFAULT}"
kernels=`echo $kernels | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
done