Create Disk Image for gem5

In this page, we will explain how to prepare custom disk image for gem5. You can create your own OS image, or prepare data for user-level application running inside of gem5.

Create empty file

Create empty file to store raw disk data.

dd if=/dev/zeros of=disk.img oflag=direct bs=1M count=1024

Above command line will create disk.img file with 1GB = 1M * 1024 size.

Mount file as loop device

Map created file as loop device. You may need administrator privileges.

# Create loop device
losetup -f --partscan disk.img

# Check device number
losetup -l

To detach loop device, use following command:

# Detach using loop device file
losetup -d /dev/loop0

Create partition

Create partition table and format. Here, we used fdisk, but you can use your favorite utility such as parted.

# Run fdisk
fdisk /dev/loop0

Use n command to create partition, p to print current partition table and w to save changes.

Some Linux Kernel may have problem when updating partition table. Please use partprobe or kpartx to solve the issue. Or you can re-map disk image using losetup.

Format created partition using mkfs.

# Format first partition as ext4
mkfs -t ext4 /dev/loop0p1

Mount/Unmount partition

Mount formatted partition.

mkdir mnt
mount /dev/loop0p1 mnt

After use, unmount using:

umount /dev/loop0p1

Don’t forget to detach loop device.

Use in gem5 and SimpleSSD

If you created new OS image, you can specify using --disk-image option of gem5. If you want simulate SSD to have contents of disk image, modify SimpleSSD configuration file to enable disk image feature and specify disk image path.