secure-boot/create_img.sh: moved from FAT12 to MBR and FAT32 partition

BAD_INFLUE is now created ad FAT32 partition on MBR disk image
offset-based loop device mount is performed to avoid MBR destruction
by mkfs.

Signed-off-by: Mateusz Maciejewski <mateusz.maciejewski@3mdeb.com>
This commit is contained in:
Mateusz Maciejewski
2025-03-27 11:28:59 +01:00
committed by Michał Żygowski
parent c1a2834deb
commit 3bb3e592ae
2 changed files with 33 additions and 15 deletions
+32 -14
View File
@@ -10,41 +10,59 @@ error_check() {
IMAGELABEL="BAD_INFLUE"
FILES_DIR="../hello-dasharo/dist"
IMAGE_FILE="sb_test_BAD_INFLUE.img"
IMAGE_FILE="sb_test_data.img"
# 34 megabytes is minimal image size to avoid mkfs.fat complaints on FAT32 creation
IMAGE_SIZE_MEGABYTES=34
SECTOR_SIZE_BYTES=512
PARTTION_OFFSET_SECTORS=2048
# do the math
IMAGE_SIZE_SECTORS=$((($IMAGE_SIZE_MEGABYTES*1024*1024)/$SECTOR_SIZE_BYTES))
OFFSET_BYTES=$(($PARTTION_OFFSET_SECTORS * $SECTOR_SIZE_BYTES))
echo Partition offset bytes: $OFFSET_BYTES
# Step 1: Create blank image
echo "Creating blank image..."
dd if=/dev/zero of=$IMAGE_FILE bs=1M count=4 > /dev/null 2>&1
rm -f $IMAGE_FILE
dd if=/dev/zero of=$IMAGE_FILE bs=$SECTOR_SIZE_BYTES count=$IMAGE_SIZE_SECTORS > /dev/null 2>&1
error_check "Cannot create empty image file to store created certs and EFI files"
mkfs.fat -F 12 $IMAGE_FILE -n $IMAGELABEL > /dev/null 2>&1
error_check "Cannot assign label: $IMAGELABEL"
# Step2: Create partition table and partition entry
parted -s $IMAGE_FILE mklabel msdos mkpart primary fat32 $((PARTTION_OFFSET_SECTORS))s $(($IMAGE_SIZE_SECTORS-1))s
# Step 2: Mount it in tmp dir via losetup
echo "Setting up loop device and mounting..."
LOOPDEV=$(sudo losetup --find --show $IMAGE_FILE)
error_check "Cannot set up loop device"
# Step 3: Attach loop device to created partition
LOOPDEV=$(sudo losetup --offset $OFFSET_BYTES --show --find $IMAGE_FILE)
echo $LOOPDEV
MOUNTDIR=$(mktemp -d)
# Step 4: Create FAT32 and name it
sudo mkfs.fat -F 32 -n $IMAGELABEL $LOOPDEV
error_check "Cannot create FAT32 labeled: $IMAGELABEL"
# Step 5: Mount it in tmp dir
MOUNTDIR=$(mktemp -d)
error_check "Cannot create temporary mount directory"
sudo mount $LOOPDEV $MOUNTDIR
error_check "Cannot mount image file"
error_check "Cannot mount FAT32 partition"
# Step 3: Copy all files under files/ directory
# Step 6: Copy all files under FILES_DIR directory
echo "Copying files to image..."
if [ -d "$FILES_DIR" ]; then
sudo cp -r $FILES_DIR/* $MOUNTDIR
sudo cp -v -r $FILES_DIR/* $MOUNTDIR
error_check "Cannot copy files to image"
sudo sync
else
echo "Warning: $FILES_DIR does not exist or is not a directory"
fi
# Step 4: Unmount
echo
echo $MOUNTDIR contains:
ls -l $MOUNTDIR
# Step 7: Unmount
echo "Unmounting and cleaning up..."
sudo umount $MOUNTDIR
error_check "Cannot unmount image"
error_check "Cannot unmount partition"
sudo losetup -d $LOOPDEV
error_check "Cannot detach loop device"
+1 -1
View File
@@ -1 +1 @@
../.git/annex/objects/F2/7G/SHA256E-s4194304--d5772027e0fef0101bf191a1652a92651c05e8dd9202ebc44e93e1fa8bd7e1f5.img/SHA256E-s4194304--d5772027e0fef0101bf191a1652a92651c05e8dd9202ebc44e93e1fa8bd7e1f5.img
../.git/annex/objects/ww/5W/SHA256E-s35651584--9fdc6bafdd209e2200616ad6d9336ff72f8b68df35d9ae0f57e3ef9adba99a45.img/SHA256E-s35651584--9fdc6bafdd209e2200616ad6d9336ff72f8b68df35d9ae0f57e3ef9adba99a45.img