diff options
Diffstat (limited to 'target/linux/x86/base-files/lib/upgrade')
-rw-r--r-- | target/linux/x86/base-files/lib/upgrade/platform.sh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh index 3b6c25877f..8be96dfcd4 100644 --- a/target/linux/x86/base-files/lib/upgrade/platform.sh +++ b/target/linux/x86/base-files/lib/upgrade/platform.sh @@ -1,3 +1,5 @@ +RAMFS_COPY_BIN='grub-bios-setup' + platform_check_image() { local diskdev partdev diff [ "$#" -gt 1 ] && return 1 @@ -44,6 +46,26 @@ platform_copy_config() { fi } +platform_do_bootloader_upgrade() { + local bootpart + local diskdev="$1" + + if export_partdevice bootpart 1; then + mkdir -p /tmp/boot + mount -o rw,noatime "/dev/$bootpart" /tmp/boot + echo "(hd0) /dev/$diskdev" > /tmp/device.map + + echo "Upgrading bootloader on /dev/$diskdev..." + grub-bios-setup \ + -m "/tmp/device.map" \ + -d "/tmp/boot/boot/grub" \ + -r "hd0,msdos1" \ + "/dev/$diskdev" + + umount /tmp/boot + fi +} + platform_do_upgrade() { local diskdev partdev diff @@ -92,4 +114,6 @@ platform_do_upgrade() { #copy partition uuid echo "Writing new UUID to /dev/$diskdev..." get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync + + platform_do_bootloader_upgrade "$diskdev" } |