Hi,
Lucap wrote:
> < MBR partition : 1 0x00 0xee 1 5508391
> < MBR partition : 2 0x80 0x00 0 1
> ---
> > MBR partition : 1 0x00 0xee 1 15649199
So gnome disks expanded the range of the protective MBR partition to
nearly 8 GB, which i assume is the size of the USB stick.
I do not believe that this change is significant.
It also removed the data in the dummy partition 2 which carries the
bootable flag to please some old HP machines with old BIOS.
This removal of could be a significant change.
> < GPT lba range : 64 5508328 5508391
> ---
> > GPT lba range : 64 15649136 15649199
Accordingly the range of the GPT now offers space for new partitions.
> < GPT partition flags: 1 0x1000000000000001
> ---
> > GPT partition flags: 1 0x0000000000000005
Original flags mean: bit60=read-only, bit0=System partition.
gnome disks flags mean: bit2=Legacy BIOS bootable, bit0=System partition.
Having set bit2 could be a significant change.
-------------------------------------------------------------------------
Let's try to find out which of the two suspects does the trick:
The flag field of partition 1 in ubuntu-21.04-desktop-amd64.iso is at
byte address 1024+48 = 1072 and 8 bytes long.
Please verify that xorriso says about your original ISO
GPT entry array : 2 248 separated
where the value 2 tells the start block of the partition slot array
meaning byte offset 2 * 512 = 1024.
(The meaning of the reported lines is roughly explained by
xorriso -report_system_area help
)
Assuming that you see the expected value 2, you can begin byte surgery:
Make a copy of your original ISO:
ORIG=ubuntu-21.04-desktop-amd64.iso
NEW=ubuntu-21.04-test.iso
cp "$ORIG" "$NEW"
Extract the flag bytes from the working USB stick:
STICK=/dev/sdc
FLAGSFILE=gnome_disk_flags.img
dd if="$STICK" bs=1 skip=1072 count=8 of="$FLAGSFILE"
This should yield a "$FLAGSFILE" with 8 bytes.
Implant these 8 bytes into the "$NEW" copy of the original ISO:
dd if="$FLAGSFILE" conv=notrunc bs=1 seek=1072 count=8 of="$NEW"
Verify by xorriso -report_system_area of "$NEW" that the flags of
partition 1 are now like in "$STICK":
xorriso -indev stdio:"$NEW" -report_system_area plain | \
grep 'GPT partition flags: 1'
should say:
GPT partition flags: 1 0x0000000000000005
Copy "$NEW" onto the stick and check whether it boots in reasonable
time.
------------------------------------------------------------------------
If it works nicely despite the fact that "$NEW" has MBR partition 2 with
MBR boot flag, then it might be possible to fix this issue by a change in
xorriso (namely setting the GPT partition flags to a different value).
For that we would need to verify that the read-only flag does not hamper
success.
Copy byte 1072+7 = 1079 from "$ORIG" to byte 7 of "$FLAGSFILE":
dd if="$ORIG" bs=1 skip=1079 count=1 of="$FLAGSFILE" conv=notrunc
seek=7
Implant into "$NEW":
dd if="$FLAGSFILE" conv=notrunc bs=1 seek=1072 count=8 of="$NEW"
Verify correctness by:
xorriso -indev stdio:"$NEW" -report_system_area plain | \
grep 'GPT partition flags: 1'
which should now say:
GPT partition flags: 1 0x1000000000000005
Copy "$NEW" onto "$STICK" and try booting.
(Alternatively you may implant and check directly on "$STICK" instead of
file "$NEW". This would save you the time to copy the whole image to
"$STICK". But being superuser with dd is always a risk.)
------------------------------------------------------------------------
If the transplated flags field does not fix the problem, then it must be
about the MBR partition 2 with its boot flag.
In this case it would not be possible to create an ISO that pleases all.
So if "$NEW" does not boot swiftly after the first transplantation, try
whether it helps to overwrite MBR partition slot 2 by zeros:
dd if=/dev/zero bs=1 count=16 of="$NEW" conv=notrunc seek=462
This should change in xorriso -report_system_area the "$ORIG" lines:
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x00 0xee 1 5505347
MBR partition : 2 0x80 0x00 0 1
GPT : N Info
to "$NEW" lines:
MBR partition table: N Status Type Start Blocks
MBR partition : 1 0x00 0xee 1 5505347
GPT : N Info
("Blocks" value of partition 1 depends on the size of "$ORIG".)
Try whether "$NEW" now boots swiftly.
(If it does not, i'd be quite puzzled.)
Have a nice day :)
Thomas
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1922342
Title:
HIrsute live session takes ages to boot on BIOS systems
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/casper/+bug/1922342/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs