You've already forked osfv-test-data
mirror of
https://github.com/Dasharo/osfv-test-data.git
synced 2026-06-13 19:16:20 -07:00
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:
committed by
Michał Żygowski
parent
c1a2834deb
commit
3bb3e592ae
+32
-14
@@ -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 @@
|
||||
../.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
|
||||
Reference in New Issue
Block a user