diff --git a/target/linux/x86/64/base-files/lib/upgrade/keep.d/grub b/target/linux/x86/64/base-files/lib/upgrade/keep.d/grub new file mode 100644 index 0000000000..316b93c0f4 --- /dev/null +++ b/target/linux/x86/64/base-files/lib/upgrade/keep.d/grub @@ -0,0 +1,2 @@ +/boot/grub/grub.ext.cfg +/boot/grub/grubenv \ No newline at end of file diff --git a/target/linux/x86/64/base-files/usr/sbin/update-grub b/target/linux/x86/64/base-files/usr/sbin/update-grub new file mode 100755 index 0000000000..ff783bf4ff --- /dev/null +++ b/target/linux/x86/64/base-files/usr/sbin/update-grub @@ -0,0 +1,20 @@ +#!/bin/sh + +GRUB_CFG=/boot/grub/grub.ext.cfg + +merge_cfg() { + local cfgfile + echo "# Merged /etc/grub.cfg.d/*.cfg" + echo "# WARNING: Do not edit this file by tools other than update-grub!!!" + ls /etc/grub.cfg.d/*.cfg | while read; do + cfgfile="$REPLY" + echo "# $cfgfile" + cat "$cfgfile" + echo + done +} + +exec 512>/var/lock/update-grub.lock +flock 512 || exit 1 + +merge_cfg >$GRUB_CFG