summaryrefslogtreecommitdiff
path: root/fbgl_qemu_test_env.sh
blob: 2b4a8a04c53e5c767bfd00efbb804d895aad6535 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash

# Variables
TINYCORE_URL="http://tinycorelinux.net/14.x/x86/release/TinyCore-current.iso"  # TinyCore ISO URL
ISO_FILE="TinyCore.iso"                 # Local TinyCore ISO file
DISK_IMAGE="tinycore_test.img"          # Disk image for TinyCore
DISK_SIZE="128M"                        # Size of the disk image
MOUNT_DIR="mnt_tinycore"                # Mount point for the disk image

# Ensure a binary is provided as an argument
if [ -z "$1" ]; then
    echo "Usage: $0 <path_to_precompiled_binary>"
    exit 1
fi
BINARY="$1"

# Ensure the binary exists
if [ ! -f "$BINARY" ]; then
    echo "Error: Precompiled binary '$BINARY' not found."
    exit 1
fi

# Ensure dependencies are installed
REQUIRED_TOOLS=("wget" "qemu-system-x86_64" "dd" "mkfs.ext4" "mount" "losetup")
for tool in "${REQUIRED_TOOLS[@]}"; do
    if ! command -v $tool &>/dev/null; then
        echo "Error: $tool is required but not installed. Please install it first."
        exit 1
    fi
done

# Step 1: Download TinyCore Linux ISO
if [ ! -f "$ISO_FILE" ]; then
    echo "Downloading TinyCore Linux ISO..."
    wget -O $ISO_FILE $TINYCORE_URL
fi

# Step 2: Create a Disk Image
echo "Creating disk image..."
dd if=/dev/zero of=$DISK_IMAGE bs=1M count=${DISK_SIZE/M/}
mkfs.ext4 $DISK_IMAGE

# Step 3: Mount and Prepare Disk Image
echo "Mounting disk image..."
mkdir -p $MOUNT_DIR
sudo mount -o loop $DISK_IMAGE $MOUNT_DIR

echo "Preparing disk image for TinyCore Linux..."
sudo mkdir -p $MOUNT_DIR/tce
sudo cp $ISO_FILE $MOUNT_DIR/

# Step 4: Add Precompiled Binary
echo "Adding precompiled binary '$BINARY'..."
sudo cp "$BINARY" $MOUNT_DIR/

# Step 5: Unmount Disk Image
echo "Unmounting disk image..."
sudo umount $MOUNT_DIR
rmdir $MOUNT_DIR

# Step 6: Boot TinyCore Linux in QEMU
echo "Booting TinyCore Linux with QEMU..."
qemu-system-x86_64 \
    -cdrom $ISO_FILE \
    -hda $DISK_IMAGE \
    -m 512M \
    -boot d \
    -nographic