From 511a6157e204c36c307e9dbe96922362ec1aa3ef Mon Sep 17 00:00:00 2001 From: Cherniaev Andrei Date: Wed, 13 Nov 2024 00:53:59 +0900 Subject: [PATCH] boot/grub2/readme.txt: don't specify /dev/loop0 losetup -f returns the next free loop device, which may not be /dev/loop0. If you blindly follow the readmy you may end up destroying an existing device. Make it more robust with a variable to store the loop device. Signed-off-by: Cherniaev Andrei [Arnout: keep the actual losetup atomic] Signed-off-by: Arnout Vandecappelle (cherry picked from commit 7dd56b6cd928ee36c96a697075e3fa47b0c52d5e) Signed-off-by: Peter Korsgaard --- boot/grub2/readme.txt | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/boot/grub2/readme.txt b/boot/grub2/readme.txt index 5d59fb4e22..90866e83a9 100644 --- a/boot/grub2/readme.txt +++ b/boot/grub2/readme.txt @@ -10,20 +10,20 @@ Notes on using Grub2 for BIOS-based platforms is enough free space *before* the first partition to store Grub2. Leaving 1 MB of free space is safe. 3. Setup loop device and loop partitions - sudo losetup -f disk.img - sudo partx -a /dev/loop0 + loop_dev=$(sudo losetup -f disk.img) + sudo partx -a "$loop_dev" 4. Prepare the root partition - sudo mkfs.ext3 -L root /dev/loop0p1 - sudo mount /dev/loop0p1 /mnt + sudo mkfs.ext3 -L root "${loop_dev}p1" + sudo mount "${loop_dev}p1" /mnt sudo tar -C /mnt -xf output/images/rootfs.tar sudo umount /mnt 5. Install Grub2 sudo ./output/host/sbin/grub-bios-setup \ -b ./output/host/lib/grub/i386-pc/boot.img \ - -c ./output/images/grub.img -d . /dev/loop0 + -c ./output/images/grub.img -d . "$loop_dev" 6. Cleanup loop device - sudo partx -d /dev/loop0 - sudo losetup -d /dev/loop0 + sudo partx -d "$loop_dev" + sudo losetup -d "$loop_dev" 7. Your disk.img is ready! Using genimage @@ -65,22 +65,22 @@ Notes on using Grub2 for x86/x86_64 EFI-based platforms - Create a second partition, type 8300, for the root filesystem. 3. Setup loop device and loop partitions - sudo losetup -f disk.img - sudo partx -a /dev/loop0 + loop_dev=$(sudo losetup -f disk.img) + sudo partx -a "$loop_dev" 4. Prepare the boot partition - sudo mkfs.vfat -n boot /dev/loop0p1 - sudo mount /dev/loop0p1 /mnt + sudo mkfs.vfat -n boot "${loop_dev}p1" + sudo mount "${loop_dev}p1" /mnt sudo cp -a output/images/efi-part/* /mnt/ sudo cp output/images/bzImage /mnt/ sudo umount /mnt 5. Prepare the root partition - sudo mkfs.ext3 -L root /dev/loop0p2 - sudo mount /dev/loop0p2 /mnt + sudo mkfs.ext3 -L root "${loop_dev}p2" + sudo mount "${loop_dev}p2" /mnt sudo tar -C /mnt -xf output/images/rootfs.tar sudo umount /mnt 6 Cleanup loop device - sudo partx -d /dev/loop0 - sudo losetup -d /dev/loop0 + sudo partx -d "$loop_dev" + sudo losetup -d "$loop_dev" 7. Your disk.img is ready! To test your i386/x86-64 EFI image in Qemu