Missing Partition Table Issue

Hello this is my first time using etcher so please bear with me here but im trying to make a bootable snow leopard mac os on a usb drive on my windows computer and this is the error I got from etcher, the ISO im using is a snow leopard iso i found online but im not sure what a partition table is the while the mac did boot from this usb, halfway through installing with this usb drive it runs into an error so im not sure what the fix here would be, any help is appreciated. Thanks!

ERROR CODE:
β€œIt looks like this is not a bootable image. The image does not appear to contain a a partition table, and might not be recognized or bootable by your device.”

Hello,
This is not an error, just a warning. Etcher looks for a GPT or MBR partition table in disk images and warns you if it can’t find one.
Depending on the device that you’ll be using the flashed disk with, it might still boot. And it looks like it booted in your case so this is not an issue.

I know this is not on topic, but I was wondering if you had a list of steps from a wiped hdd to a working mac. I actually am also trying to do snow leopard. I have yet to find an iso, but I have a dmg.

Hi @natetsm

Please check Apple docs for creating a bootable macOS install disk: How to create a bootable installer for macOS - Apple Support
Check the createinstallmedia part.

I just wanted to write Windows installer ISO-s on Mac but the same issue happened. Then I managed to make it on a Windows using Rufus. Now, Rufus DID make a bootable drive from the SAME ISO which balenaEtcher failed to make from.

Guys, we love this app, it’s seamless – until we don’t want to make bootable Windows drives. Yet, it means that balenaEtcher does not know something it should know and what’s possible: to make a bootable Windows installer from an ISO file.

Etcher currently doesn’t support creating Windows bootable disks, mostly due to complexity around NFTS and FAT limitations.

In the meantime, to create one on macOS:

    brew install wimlib

    image_file=Win10_20H2_v2_English_x64.iso

    hdiutil mount ${image_file}

    # assuming USB is on /dev/disk2
    usb_disk=$(diskutil list | grep external | head -n 1 | awk '{print $1}')

    diskutil eraseDisk MS-DOS "WINDOWS10" MBR ${usb_disk}

    rsync -avh --progress --exclude=sources/install.wim /Volumes/DVD_ROM/ /Volumes/WINDOWS10

    wimlib-imagex split /Volumes/DVD_ROM/sources/install.wim /Volumes/WINDOWS10/sources/install.swm 3800

    hdiutil eject /Volumes/WINDOWS10

    hdiutil eject /Volumes/DVD_ROM

This requires the target Windows device to have UEFI boot options enabled (not legacy boot).

Etcher will however write /Applications/Install\ macOS\ {Catalina,BigSur,etc.}.app/Contents/SharedSupport/BaseSystem.dmg to a USB drive, which will be bootable without any further steps.

1 Like

Maybe, instead of the huge warning with triangle ! it should include

/Volumes/DVD_ROM β†’ /Volumes/CCCOMA_X64FRE_NL-NL_DV9 (in my case)

  • mkdir -p /Volumes/WINDOWS10/sources

Updated Shell script once you’ve installed wimlib:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
#–– CONFIGURATION ––#
IMAGE="${1:-Win10_22H2_English_x64v1.iso}"   # use first argument or default
LABEL="WINDOWS10"                            # USB label
WIM_SPLIT_SIZE=3800                          # max size per .swm chunk, in MB

#–– HELPERS ––#
die(){ echo "ERROR: $*" >&2; exit 1; }

# Check if file exists
check_file(){
  local file="$1"
  if [[ ! -f "$file" ]]; then
    die "Required file '$file' does not exist or is not accessible."
  fi
  echo "File found: $file ($(du -h "$file" | cut -f1) in size)"
}

check_dir(){
  local dir="$1"
  if [[ -z "$dir" ]]; then
    die "Empty directory path provided."
  fi
  
  if [[ ! -d "$dir" ]]; then
    die "Required directory '$dir' does not exist or is not accessible."
  fi
  echo "Directory verified: $dir"
}

#–– VERIFY PREREQUISITES ––#
echo "Verifying ISO file..."
check_file "$IMAGE"

# Check required tools
command -v hdiutil >/dev/null 2>&1 || die "hdiutil is required but not installed."
command -v diskutil >/dev/null 2>&1 || die "diskutil is required but not installed."
command -v rsync >/dev/null 2>&1 || die "rsync is required but not installed."
command -v wimlib-imagex >/dev/null 2>&1 || die "wimlib-imagex is required but not installed."

#–– 1. Mount ISO and find its mount-point ––#
echo "Mounting ISO '$IMAGE'..."
MOUNT_OUTPUT=$(hdiutil attach "$IMAGE" -nobrowse -readonly 2>&1) || die "Failed to mount ISO: $MOUNT_OUTPUT"
echo "Mount output: $MOUNT_OUTPUT"

# Better parsing of mount point - look for the device and path
ISO_DEV=$(echo "$MOUNT_OUTPUT" | awk '{print $1}' | grep "^/dev/" | head -1)
if [[ -z "$ISO_DEV" ]]; then
  die "Failed to determine ISO device."
fi

# Find the volume from mounted filesystems
ISO_MOUNT=$(df -h | grep "$ISO_DEV" | awk '{print $NF}')
if [[ -z "$ISO_MOUNT" ]]; then
  die "Failed to determine ISO mount point."
fi

check_dir "$ISO_MOUNT"
echo "ISO mounted at: $ISO_MOUNT"

#–– 2. Identify & wipe USB ––#
echo "Locating external USB disk..."
USB_DEV=$(diskutil list | awk '/external/ {print $1; exit}')
[[ -n "$USB_DEV" ]] || die "No external USB disk found."
echo "Erasing $USB_DEV as FAT32 MBR ($LABEL)…"
diskutil eraseDisk MS-DOS "$LABEL" MBR "$USB_DEV" \
  || die "Failed to erase $USB_DEV."

#–– 3. Mount the new USB volume ––#
echo "Mounting USB volume..."
diskutil mountDisk "$USB_DEV" \
  || die "Could not mount $USB_DEV after erase."
USB_VOL="/Volumes/$LABEL"
check_dir "$USB_VOL"
echo "USB mounted at: $USB_VOL"

#–– 4. Prepare source exclusion and copy ––#
echo "Verifying Windows installer files..."
check_dir "$ISO_MOUNT/sources"
if [[ ! -f "$ISO_MOUNT/sources/install.wim" ]]; then
  echo "Checking for alternative installer file locations..."
  if [[ -f "$ISO_MOUNT/sources/install.esd" ]]; then
    echo "Found install.esd instead of install.wim - converting..."
    wimlib-imagex export "$ISO_MOUNT/sources/install.esd" all "$USB_VOL/sources/install.wim" || die "ESD to WIM conversion failed."
    INSTALL_WIM="$USB_VOL/sources/install.wim"
  else
    die "Cannot find install.wim or install.esd in the ISO."
  fi
else
  INSTALL_WIM="$ISO_MOUNT/sources/install.wim"
fi

echo "Copying installer files (excluding install.wim/install.esd)…"
# Ensure the target exists
mkdir -p "$USB_VOL"/sources
rsync -avh --progress \
  --exclude='sources/install.wim' \
  --exclude='sources/install.esd' \
  "$ISO_MOUNT"/ \
  "$USB_VOL"/ \
  || die "rsync copy failed."

#–– 5. Split the big WIM into SWM chunks ––#
echo "Splitting install.wim into ${WIM_SPLIT_SIZE}MB chunks…"
wimlib-imagex split \
  "$INSTALL_WIM" \
  "$USB_VOL/sources/install.swm" \
  "$WIM_SPLIT_SIZE" \
  || die "wimlib-imagex split failed."

#–– 6. Clean up mounts ––#
echo "Unmounting USB and ISO…"
diskutil unmountDisk "$USB_DEV" \
  || echo "Warning: could not unmount $USB_DEV cleanly."
hdiutil detach "$ISO_MOUNT" \
  || echo "Warning: could not detach ISO mount."
echo "Done. Your Windows recovery USB is ready."