#2548 Issue closed
: GPT table creation does not recover old disk and partition GUIDs¶
Labels: won't fix / can't fix / obsolete
, minor bug
DEvil0000 opened issue at 2020-12-21 18:29:¶
- ReaR version ("/usr/sbin/rear -V"): 2.6
- OS version ("cat /etc/os-release" or "lsb_release -a" or "cat /etc/rear/os.conf"): ubuntu 20.04
- Firmware (BIOS or UEFI or Open Firmware) and bootloader (GRUB or ELILO or Petitboot): uefi/grub
- Partition table type on system: gpt
- Description of the issue (ideally so that others can reproduce
it):
After a recover a new UEFI boot entry gets created for the recovered efi since the GPT partition GUID changed.
Of course this is more a minor issue only affecting people making use of multiple boot options tried to boot in order.
This however has two side effects:- it changes the boot order putting the recovered efi partition as first
- it fills the boot records list with another entry keeping the old one (getting messy and maybe running out of entries over time)
- Workaround/solution:
There are at least two possible workarounds/fixes possible for this:- one can cleanup the old efi boot entries and set the boot order again (manually or with e.g. evibootmgr)
- one can replace the GUID (e.g. using gdisk or sgdisk) and use the old efi boot entry
The complete fix for rear would be also writing GPT GUIDs to the layout file and then setting them e.g. with sgdisk.
gdha commented at 2021-01-08 11:05:¶
@DEvil0000 No interest in writing a PR for your proposal?
gdha commented at 2021-01-12 16:46:¶
@DEvil0000 PR has been merged, if you could recheck if all goes well?
DEvil0000 commented at 2021-01-13 11:27:¶
The vfat ID now gets set for the UEFI partition but the GPT partition GUID (not type id) is still newly generated and was not addressed by #2546
gdha commented at 2021-01-22 16:47:¶
@DEvil0000 Sorry for the delay in answer - please show us what is really missing here - it seems we misunderstood
DEvil0000 commented at 2021-01-22 17:26:¶
A efi boot entry contains disk
, partition
and efi payload path
.
There may also be a filesystem ID/UUID but thats not what this ticket is
about.
Example UEFI boot entries (might use less details or different ids and
methods - UEFI records are quite a beast):
Boot0019* Ubuntu 1 HD(1,800,32000,a44dc908-e0d1-4df5-903f-a8db5f6f66b3)File(\EFI\ubuntu\grubx64.efi)
Boot001A* Ubuntu 2 HD(4,df6609e,2fbe1,773a0059-be41-4828-944a-32217f941c95)File(\EFI\ubuntu\grubx64.efi)
The disk
may be referenced by its bios id (a integer based on boot
order bios settings normally) or by a disk UUID. See wiki (Partition
table header, offset
0x38) for GPT but I
think msdos has the same thing at the same offset in this case.
When using a msdos partition
table the partitions are numberd from 1-4
or such. For an UEFI boot (payload) record you reference the partition
id then.
When using GPT partition tables the partitions have a UUID for the
partition type and a UUID for the actual partition. See wiki (Partition
entries, offset
0x10). This
Unique partition GUID
must get recovered so existing old UEFI boot
entries still match otherwise the system BIOS/Firmware will create a new
entry or you would need to create one manually.
So when using a GPT partition table and UEFI you should definitely save
the GPT UUIDs (disk and partition) and also insert those when creating
the partition on recover. This way you restore the system "as it was".
Then you will not face any issues with UEFI and existing boot entries.
Edit:
My proposal is to also store those GPT UUIDs in the layout file and
write them correctly to GPT when created.
There is also a GPT partition name which you might need to recover -
don't remember if that was recovered.
BTW I am using USB method if that makes a difference.
gdha commented at 2021-01-25 14:07:¶
@DEvil0000 Not all system are equal it seems - my UEFI knowledge became a bit rusty...
root@velo:~# efibootmgr
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0004,0003,0000,0001
Boot0000* UEFI Micron 2200S NVMe 512GB 194624E8DCEE 1
Boot0001* Linux Firmware Updater
Boot0003* UEFI Micron 2200S NVMe 512GB 194624E8DCEE 1 2
Boot0004* ubuntu
root@velo:~# parted /dev/nvme0n1 print
Model: Micron 2200S NVMe 512GB (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 819MB 818MB fat32 EFI system partition boot, esp
2 819MB 6188MB 5369MB fat32 Basic data partition msftres
3 6188MB 512GB 506GB ext4
Not sure where to start? @gozora Do you have some more insights on these matters?
gozora commented at 2021-01-26 07:31:¶
Let us not forget that there are also users that are migrating to
different HW. For this group of people recreating all the UEFI boot
configuration entries make little sense.
I think that current minimalist approach, that adds just entry for newly
restored system, is good because it is simple. If one is concerned about
mess in boot entries, he can easily clean it up (using efibootmgr
).
Of course if anybody is willing to cover this complex topic with a pull request, I have no objections.
Hope it helps.
V.
[Export of Github issue for rear/rear.]