1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 05:09:24 +00:00

init-install: Use GPT table with GRUB 2

Changed partition type from 'msdos' to 'gpt'.
Added special partition for grub stage2 bootloader.

NOTE: This is done only for GRUB 2 as legacy GRUB is
rarely used and doesn't support GPT partitions.

(From OE-Core rev: 9544ac920d65edb7ddb267482c84d6fc1b464912)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ed Bartosh
2015-06-11 19:01:35 +03:00
committed by Richard Purdie
parent 78bacee0ac
commit 04bff65585
@@ -106,10 +106,21 @@ fi
disk_size=$(parted /dev/${device} unit mb print | grep Disk | cut -d" " -f 3 | sed -e "s/MB//")
swap_size=$((disk_size*swap_ratio/100))
rootfs_size=$((disk_size-boot_size-swap_size))
grub_version=$(grub-install -v|sed 's/.* \([0-9]\).*/\1/')
rootfs_start=$((boot_size))
if [ $grub_version -eq 0 ] ; then
bios_boot_size=0
else
# For GRUB 2 we need separate parition to store stage2 grub image
# 2Mb value is chosen to align partition for best performance.
bios_boot_size=2
fi
swap_size=$((disk_size*swap_ratio/100))
rootfs_size=$((disk_size-bios_boot_size-boot_size-swap_size))
boot_start=$((bios_boot_size))
rootfs_start=$((bios_boot_size+boot_size))
rootfs_end=$((rootfs_start+rootfs_size))
swap_start=$((rootfs_end))
@@ -122,11 +133,21 @@ if [ ! "${device#mmcblk}" = "${device}" ]; then
part_prefix="p"
rootwait="rootwait"
fi
bootfs=/dev/${device}${part_prefix}1
rootfs=/dev/${device}${part_prefix}2
swap=/dev/${device}${part_prefix}3
if [ $grub_version -eq 0 ] ; then
bios_boot=''
bootfs=/dev/${device}${part_prefix}1
rootfs=/dev/${device}${part_prefix}2
swap=/dev/${device}${part_prefix}3
else
bios_boot=/dev/${device}${part_prefix}1
bootfs=/dev/${device}${part_prefix}2
rootfs=/dev/${device}${part_prefix}3
swap=/dev/${device}${part_prefix}4
fi
echo "*****************"
[ $grub_version -ne 0 ] && echo "BIOS boot partition size: $bios_boot_size MB ($bios_boot)"
echo "Boot partition size: $boot_size MB ($bootfs)"
echo "Rootfs partition size: $rootfs_size MB ($rootfs)"
echo "Swap partition size: $swap_size MB ($swap)"
@@ -135,10 +156,18 @@ echo "Deleting partition table on /dev/${device} ..."
dd if=/dev/zero of=/dev/${device} bs=512 count=2
echo "Creating new partition table on /dev/${device} ..."
parted /dev/${device} mklabel msdos
echo "Creating boot partition on $bootfs"
parted /dev/${device} mkpart primary 0% $boot_size
if [ $grub_version -eq 0 ] ; then
parted /dev/${device} mktable msdos
echo "Creating boot partition on $bootfs"
parted /dev/${device} mkpart primary 0% $boot_size
else
parted /dev/${device} mktable gpt
echo "Creating BIOS boot partition on $bios_boot"
parted /dev/${device} mkpart primary 0% $bios_boot_size
parted /dev/${device} set 1 bios_grub on
echo "Creating boot partition on $bootfs"
parted /dev/${device} mkpart primary $boot_start $boot_size
fi
echo "Creating rootfs partition on $rootfs"
parted /dev/${device} mkpart primary $rootfs_start $rootfs_end
@@ -186,7 +215,7 @@ if [ -f /etc/grub.d/00_header ] ; then
mkdir -p $(dirname $GRUBCFG)
cat >$GRUBCFG <<_EOF
menuentry "Linux" {
set root=(hd0,1)
set root=(hd0,2)
linux /vmlinuz root=$rootfs $rootwait rw $5 $3 $4 quiet
}
_EOF
@@ -195,8 +224,7 @@ fi
grub-install /dev/${device}
echo "(hd0) /dev/${device}" > /boot/grub/device.map
# If grub.cfg doesn't exist, assume GRUB 0.97 and create a menu.lst
if [ ! -f /boot/grub/grub.cfg ] ; then
if [ $grub_version -eq 0 ] ; then
echo "Preparing custom grub menu..."
echo "default 0" > /boot/grub/menu.lst
echo "timeout 30" >> /boot/grub/menu.lst