<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Linux · Loosely Decoupled</title>
    <link>https://looselydecoupled.com/topics/linux/</link>
    <description>Linux systems work, shell automation and the cross-platform edges.</description>
    <language>en-us</language>
    
    <copyright>© 2026 Emmanuel Tsouris</copyright>
    <lastBuildDate>Sun, 29 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://looselydecoupled.com/topics/linux/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Create a Bootable Linux USB Drive on macOS with dd</title>
      <link>https://looselydecoupled.com/bootable-linux-usb-macos-dd/</link>
      <guid isPermaLink="true">https://looselydecoupled.com/bootable-linux-usb-macos-dd/</guid>
      <pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
      <dc:creator>Emmanuel Tsouris</dc:creator>
      <category>macOS</category>
      <category>Linux</category>
      
      <description>Four Terminal commands write a Linux ISO to a USB drive without Etcher; a 3 GB Mint image took about seven minutes and booted a 2011 iMac.</description>
      <content:encoded><![CDATA[<div class="answer" data-answer="true">
  <p class="answer__label" data-pagefind-ignore>TL;DR</p>
  <p>Find the USB drive with <code>diskutil list</code>, unmount it, write the ISO to its raw
device with <code>dd</code>, and eject it.</p>
<p><code>dd</code> writes to whatever device you name, with no confirmation and no undo.
Replace <code>N</code> in <code>diskN</code> with the number <code>diskutil list</code> shows for your USB
drive, and check it before the third command.</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">list</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">unmountDisk</span> <span class="console__token">/dev/diskN</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">sudo</span> <span class="console__token">dd</span> <span class="console__token">if=&#34;$HOME/Downloads/linuxmint-22.3-cinnamon-64bit.iso&#34;</span> <span class="console__token">\</span>
</span><span class="line">    <span class="console__token">of=/dev/rdiskN</span> <span class="console__token">bs=1m</span> <span class="console__token">status=progress</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">eject</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div>
</div>

<p>I wanted to repurpose my old Mac, a 2011 iMac, by putting Linux Mint on it.
balenaEtcher stopped at &ldquo;Starting&hellip;&rdquo; on my Apple Silicon MacBook Pro. I
wrote the installer drive with <code>dd</code> instead, and the iMac booted from it.
<code>dd</code> ships with macOS, so nothing needs installing. It copies the image onto
the device block for block, which is what Etcher&rsquo;s helper does in code.</p>
<!-- style-check: procedure -->
<h2 id="1-identify-the-usb-device">1. Identify the USB device<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#1-identify-the-usb-device"
     aria-label="Link to section: 1. Identify the USB device" data-pagefind-ignore></a>
</h2>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">list</span></span></code></pre>
    </div>
  </div></div><p>Find the external disk in the output. Its number replaces <code>N</code> in the commands
that follow:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">/dev/diskN (external, physical):</span></span></code></pre></div></div>
  </div>
</div><p>Before going further, confirm both:</p>
<ul>
<li>The header reads <code>external, physical</code>. Internal disks read <code>internal, physical</code>, and APFS containers read <code>synthesized</code>. Neither is your USB
drive.</li>
<li>The size matches your USB drive.</li>
</ul>
<div class="admonition admonition--warning" role="note">
  <p class="admonition__label">
    <svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#i-triangle-alert"/></svg>
    <span>Warning</span>
  </p>
  <p><code>dd</code> writes to whatever device you name, with no confirmation and no undo.
An internal disk named by mistake is overwritten from block zero. Read the
identifier off <code>diskutil list</code> for this drive on this machine; disk numbers
change between boots and between ports.</p>
</div><h2 id="2-unmount-the-disk">2. Unmount the disk<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#2-unmount-the-disk"
     aria-label="Link to section: 2. Unmount the disk" data-pagefind-ignore></a>
</h2>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">unmountDisk</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div><p>Unmount, not eject. An ejected disk is removed from <code>/dev</code>. An unmounted disk
stays in <code>/dev</code> with no volume mounted, so <code>dd</code> can open it for writing.</p>
<h2 id="3-write-the-iso">3. Write the ISO<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#3-write-the-iso"
     aria-label="Link to section: 3. Write the ISO" data-pagefind-ignore></a>
</h2>
<p>This command erases everything on the drive and replaces it with the image.
<code>sudo</code> prompts for your administrator password.</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">sudo</span> <span class="console__token">dd</span> <span class="console__token">if=&#34;$HOME/Downloads/linuxmint-22.3-cinnamon-64bit.iso&#34;</span> <span class="console__token">\</span>
</span><span class="line">    <span class="console__token">of=/dev/rdiskN</span> <span class="console__token">bs=1m</span> <span class="console__token">status=progress</span></span></code></pre>
    </div>
  </div></div><p>Three details in that command:</p>
<ul>
<li><code>&quot;$HOME/Downloads/...&quot;</code>, not <code>~/Downloads/...</code>. The default macOS shell,
zsh, doesn&rsquo;t expand a tilde after <code>if=</code>, and <code>dd</code> reports the file as
missing. <code>$HOME</code> expands in every shell.</li>
<li><code>rdiskN</code>, not <code>diskN</code>. The <code>r</code> prefix names the raw device, which
bypasses the buffer cache and writes faster on macOS.</li>
<li><code>status=progress</code> prints the bytes written as it goes, so a slow write
shows progress instead of looking stalled.</li>
</ul>
<p>On this drive, the sustained rate was about 7.6 MB/s, and the 3 GB image took
about seven minutes. That rate is the drive&rsquo;s own write speed, not a fault.</p>
<h2 id="4-confirm-it-finished">4. Confirm it finished<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#4-confirm-it-finished"
     aria-label="Link to section: 4. Confirm it finished" data-pagefind-ignore></a>
</h2>
<p><code>dd</code> reports the total when it completes:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">3091660800 bytes transferred in 404.24 secs (7648047 bytes/sec)</span></span></code></pre></div></div>
  </div>
</div><p>Compare the byte count with the ISO&rsquo;s size:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">stat</span> <span class="console__token">-f</span> <span class="console__token">%z</span> <span class="console__token">&#34;$HOME/Downloads/linuxmint-22.3-cinnamon-64bit.iso&#34;</span></span></code></pre>
    </div>
  </div><div class="code-block code-block--wrap console__output">
    <p class="console__output-label">Output</p>
    <div class="code-block__scroll"><pre><code><span class="line"><span class="console__token">3091660800</span></span></code></pre>
    </div>
  </div></div><p>The two numbers match and no I/O error was printed, so the write is
complete. <code>dd</code> doesn&rsquo;t read the drive back to verify it the way Etcher
does. Booting from the drive, later in this article, is the verification.</p>
<p>When <code>dd</code> releases the device, macOS might report that the disk isn&rsquo;t
readable and offer to initialize it. Choose Ignore or Eject. Initialize opens
Disk Utility, where erasing the drive would undo the write.</p>
<h2 id="5-eject">5. Eject<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#5-eject"
     aria-label="Link to section: 5. Eject" data-pagefind-ignore></a>
</h2>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">eject</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div><!-- style-check: end procedure -->
<h2 id="what-finder-shows-afterward">What Finder shows afterward<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#what-finder-shows-afterward"
     aria-label="Link to section: What Finder shows afterward" data-pagefind-ignore></a>
</h2>
<p>Finder shows unfamiliar partitions, or a fraction of the drive&rsquo;s capacity.
That&rsquo;s expected: the ISO was written as a raw disk image, not as a file system
that macOS can mount. On a 32 GB drive, the image uses about 3 GB, and the
rest is outside any partition in this layout. Don&rsquo;t change anything on the
drive until you&rsquo;ve booted from it.</p>
<p>To return the drive to ordinary use later, erase it as exFAT. This removes the
Linux image:</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">eraseDisk</span> <span class="console__token">ExFAT</span> <span class="console__token">USB</span> <span class="console__token">GPT</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div><!-- style-check: procedure -->
<h2 id="boot-the-usb-drive">Boot the USB drive<a class="heading-anchor" href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/#boot-the-usb-drive"
     aria-label="Link to section: Boot the USB drive" data-pagefind-ignore></a>
</h2>
<p>An Intel Mac, such as the 2011 iMac, can boot from this drive. An Apple
Silicon Mac can&rsquo;t.</p>
<p>On an Intel Mac, hold Option during startup and select the external entry.
The entry is usually labeled &ldquo;EFI Boot&rdquo;, though the label depends on the firmware
and on how the drive is enumerated.</p>
<div class="tested" id="tested">
  <p class="label label--seam">Tested with</p><dl class="tested__rows">
    <div class="tested__row"><dt>macOS</dt> <dd>Tahoe 26.3.1, MacBook Pro (Apple Silicon)</dd></div>
    <div class="tested__row"><dt>Boot target</dt> <dd>iMac (2011)</dd></div>
    <div class="tested__row"><dt>USB</dt> <dd>PNY 32 GB USB 3.0</dd></div>
    <div class="tested__row"><dt>ISO</dt> <dd>Linux Mint 22.3 Cinnamon 64-bit</dd></div>
    <div class="tested__row"><dt>Date</dt> <dd>March 2026</dd></div>
  </dl>
</div>
<!-- style-check: end procedure -->
]]></content:encoded>
    </item>
    
    <item>
      <title>balenaEtcher Stuck at Starting on macOS: Erase the USB Drive as exFAT</title>
      <link>https://looselydecoupled.com/balena-etcher-stuck-starting-macos/</link>
      <guid isPermaLink="true">https://looselydecoupled.com/balena-etcher-stuck-starting-macos/</guid>
      <pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate>
      <dc:creator>Emmanuel Tsouris</dc:creator>
      <category>macOS</category>
      <category>Linux</category>
      
      <description>An APFS-formatted USB drive stops Etcher&#39;s helper before it writes a byte; erased as exFAT, the same drive flashes normally.</description>
      <content:encoded><![CDATA[<div class="answer" data-answer="true">
  <p class="answer__label" data-pagefind-ignore>TL;DR</p>
  <p>When balenaEtcher stays at &ldquo;Starting&hellip;&rdquo; with no progress bar and no error,
check the USB drive&rsquo;s format. On a drive formatted as APFS, Etcher&rsquo;s helper
receives the write request and never starts writing. Running Etcher as <code>sudo</code>
doesn&rsquo;t change that. Erase the whole drive as exFAT and flash again.</p>
<p>The erase deletes everything on the drive. Replace <code>N</code> in <code>diskN</code> with the
number <code>diskutil list</code> shows for your USB drive, and check it before the last
command.</p>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">list</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">unmountDisk</span> <span class="console__token">force</span> <span class="console__token">/dev/diskN</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">eraseDisk</span> <span class="console__token">ExFAT</span> <span class="console__token">USB</span> <span class="console__token">GPT</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div><p>If Etcher still stops, write the ISO with <code>dd</code> instead, as described in
<a href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/">Create a bootable Linux USB drive on macOS with dd</a>.</p>

</div>

<p>I wanted to repurpose my old Mac, a 2011 iMac, by putting Linux Mint on it.
I wrote the installer USB drive on my Apple Silicon MacBook Pro with
balenaEtcher. Etcher stopped at &ldquo;Starting&hellip;&rdquo; and gave no reason, so I wrote
the drive with <code>dd</code>, and the iMac booted from it. Later I reproduced the hang
on a second drive to find the cause.</p>
<h2 id="symptoms">Symptoms<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#symptoms"
     aria-label="Link to section: Symptoms" data-pagefind-ignore></a>
</h2>
<p>balenaEtcher (also searched as Balena Etcher) detects the drive and loads the
ISO. After you click Flash, the window stays at:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Starting...</span></span></code></pre></div></div>
  </div>
</div><p>No progress bar appears and no error is raised. Launching the app from a
terminal with elevated permissions makes no difference:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">sudo /Applications/balenaEtcher.app/Contents/MacOS/balenaEtcher</span></span></code></pre></div></div>
  </div>
</div><p>Etcher&rsquo;s DevTools console shows the flasher starting and then stopping short
of the write. This is Etcher 2.1.6 with an APFS-formatted drive:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Starting priviledged flasher sidecar on port 3435
</span></span><span class="line"><span class="cl">/Applications/balenaEtcher.app/Contents/Resources/etcher-util
</span></span><span class="line"><span class="cl">... with privileges ...
</span></span><span class="line"><span class="cl">elevated pending
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">elevated granted
</span></span><span class="line"><span class="cl">etcher-&lt;id&gt;
</span></span><span class="line"><span class="cl">Connection to sidecar flasher process attempt 1 / 10 failed; retrying in 1000ms...
</span></span><span class="line"><span class="cl">etcher-&lt;id&gt;
</span></span><span class="line"><span class="cl">CHILD READY
</span></span><span class="line"><span class="cl">start heartbeat
</span></span><span class="line"><span class="cl">params Object
</span></span><span class="line"><span class="cl">CHILD LOG: Ready ...
</span></span><span class="line"><span class="cl">CHILD LOG: write requested
</span></span><span class="line"><span class="cl">CHILD LOG: Image: /Users/&lt;user&gt;/Downloads/&lt;image&gt;.iso
</span></span><span class="line"><span class="cl">CHILD LOG: Devices: /dev/diskN
</span></span><span class="line"><span class="cl">CHILD LOG: Auto blockmapping: true
</span></span><span class="line"><span class="cl">CHILD LOG: Decompress first: true</span></span></code></pre></div></div>
  </div>
</div><p>The log reaches <code>write requested</code>, echoes the job&rsquo;s settings, and no bytes
follow. In the log, <code>&lt;user&gt;</code> is your account name and <code>&lt;image&gt;</code> is the ISO
you selected. <code>N</code> is your drive&rsquo;s disk number, and <code>&lt;id&gt;</code> is a random name
Etcher gives each helper run.</p>
<h2 id="apfs-drive-that-stops-the-helper-before-the-write">APFS drive that stops the helper before the write<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#apfs-drive-that-stops-the-helper-before-the-write"
     aria-label="Link to section: APFS drive that stops the helper before the write" data-pagefind-ignore></a>
</h2>
<p>Etcher doesn&rsquo;t write the disk itself. The Electron app launches a separate
privileged helper, the &ldquo;sidecar flasher&rdquo;, and hands it the image and the
device. The <code>CHILD LOG</code> lines after <code>write requested</code> are the helper echoing
that request back. Etcher asks macOS for administrator rights for the helper
itself, which is what the <code>elevated pending</code> and <code>elevated granted</code> lines
record, so <code>sudo</code> adds nothing. Run as <code>sudo</code>, the log is identical.</p>
<p>The log doesn&rsquo;t show why the helper stops. The drive&rsquo;s format does. I
reproduced the hang with a second USB drive, a different ISO and Etcher 2.1.6,
and changed only the format between two runs:</p>
<div class="table-wrap" data-scrollable data-label="Table: Drive format">
  <table>
    <thead>
      <tr><th scope="col">Drive format</th><th scope="col">What Etcher did</th></tr>
    </thead>
    <tbody>
      <tr><td>APFS, GUID partition map</td><td>Stopped at &ldquo;Starting&hellip;&rdquo;; the log ended at <code>Decompress first: true</code></td></tr>
      <tr><td>exFAT, GUID partition map</td><td>Started writing; the next log line was the first progress line</td></tr>
    </tbody>
  </table>
</div>
<p>Erased as exFAT, the same flash continued straight into progress:</p>
<div class="code-block code-block--wrap" data-copyable data-copy-label="Text">
  <div class="code-block__head"><span class="code-block__lang">Text</span>
  </div>
  <div class="code-block__scroll">
    <div data-copy-source><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">CHILD LOG: Decompress first: true
</span></span><span class="line"><span class="cl">Flashing 1 device, 0% at 1.60 MB/s (total 1.60 MB/s) eta in 235s with 0 failed devices</span></span></code></pre></div></div>
  </div>
</div><p>That matches the reports on balena&rsquo;s forums.
<a href="https://forums.balena.io/t/etcher-stalls-on-0-flashing-never-starts-fix/375032" rel="external noopener" target="_blank">One thread<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#i-external-link"/></svg><span class="visually-hidden"> (opens in a new tab)</span></a>
states that Etcher doesn&rsquo;t work on an APFS drive and surfaces no error.
<a href="https://forums.balena.io/t/mac-14-8-23j21-and-balena-etcher/374842" rel="external noopener" target="_blank">Another<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#i-external-link"/></svg><span class="visually-hidden"> (opens in a new tab)</span></a>
with this hang was resolved by erasing the drive as exFAT.</p>
<p>A USB drive isn&rsquo;t APFS unless someone made it so. Disk Utility offers APFS
only when you erase the whole device with a GUID partition map, not when you
erase a volume on a drive with the older MBR layout. I don&rsquo;t know what the
first drive was formatted as when it hung. <code>dd</code> wrote the Mint image to it
without an error, so the ISO and the drive weren&rsquo;t at fault.</p>
<!-- style-check: procedure -->
<h2 id="erase-the-usb-drive-as-exfat">Erase the USB drive as exFAT<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#erase-the-usb-drive-as-exfat"
     aria-label="Link to section: Erase the USB drive as exFAT" data-pagefind-ignore></a>
</h2>
<p>The erase replaces the drive&rsquo;s partition map and every volume on it. Copy off
anything you need from the drive first.</p>
<h3 id="1-find-the-usb-drive">1. Find the USB drive<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#1-find-the-usb-drive"
     aria-label="Link to section: 1. Find the USB drive" data-pagefind-ignore></a>
</h3>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">list</span></span></code></pre>
    </div>
  </div></div><p>Find the header that reads <code>external, physical</code> and matches your drive&rsquo;s size.
Its number replaces <code>N</code> in the next step.
An APFS drive also appears a second time, as a <code>synthesized</code> container. Use
the <code>external, physical</code> identifier, not the container&rsquo;s.</p>
<h3 id="2-erase-it">2. Erase it<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#2-erase-it"
     aria-label="Link to section: 2. Erase it" data-pagefind-ignore></a>
</h3>
<div class="console"><div class="code-block code-block--wrap console__command" data-copyable data-copy-label="command">
    <div class="code-block__head"><span class="code-block__lang">Command</span></div>
    <div class="code-block__scroll"><pre data-copy-source><code><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">unmountDisk</span> <span class="console__token">force</span> <span class="console__token">/dev/diskN</span>
</span><span class="line"><span class="prompt">$ </span><span class="console__token">diskutil</span> <span class="console__token">eraseDisk</span> <span class="console__token">ExFAT</span> <span class="console__token">USB</span> <span class="console__token">GPT</span> <span class="console__token">/dev/diskN</span></span></code></pre>
    </div>
  </div></div><p><code>force</code> matters when Spotlight is indexing the drive. Without it, the erase
can fail with <code>Couldn't unmount disk. : (-69888)</code> and name the process <code>mds</code>.
<code>USB</code> is the new volume name; any name works, because the flash overwrites it.</p>
<h3 id="3-flash-again">3. Flash again<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#3-flash-again"
     aria-label="Link to section: 3. Flash again" data-pagefind-ignore></a>
</h3>
<p>Select the ISO and the drive in Etcher, and click Flash. Within a few seconds,
the window shows <code>Flashing...</code> with a percentage, and the DevTools log shows
<code>Flashing 1 device</code> lines.</p>
<!-- style-check: end procedure -->
<h2 id="write-the-iso-with-dd-instead">Write the ISO with dd instead<a class="heading-anchor" href="https://looselydecoupled.com/balena-etcher-stuck-starting-macos/#write-the-iso-with-dd-instead"
     aria-label="Link to section: Write the ISO with dd instead" data-pagefind-ignore></a>
</h2>
<p>If Etcher still stops after the erase, <code>dd</code> writes the image without Etcher&rsquo;s
helper. That&rsquo;s how the Mint drive in this article was written. The steps, the
checks that keep <code>dd</code> off the wrong disk, and how to confirm the write are in
<a href="https://looselydecoupled.com/bootable-linux-usb-macos-dd/">Create a bootable Linux USB drive on macOS with dd</a>.</p>
<div class="tested" id="tested">
  <p class="label label--seam">Tested with</p><dl class="tested__rows">
    <div class="tested__row"><dt>macOS</dt> <dd>Tahoe 26.3.1, MacBook Pro (Apple Silicon)</dd></div>
    <div class="tested__row"><dt>USB</dt> <dd>PNY 32 GB USB 3.0</dd></div>
    <div class="tested__row"><dt>ISO</dt> <dd>Linux Mint 22.3 Cinnamon 64-bit</dd></div>
    <div class="tested__row"><dt>Reproduction</dt> <dd>balenaEtcher 2.1.6, CHIPSBNK 1 GB USB 2.0, Alpine 3.24.2 x86_64</dd></div>
    <div class="tested__row"><dt>Date</dt> <dd>March 2026</dd></div>
  </dl>
</div>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
