If you want to install Debian 13 on CM3588 NAS Kit with the root filesystem living on a fast NVMe SSD — not on the tiny eMMC — this guide walks you through the exact steps. The FriendlyELEC eFlasher tool makes it surprisingly straightforward, but there are a few critical choices you need to get right before you start flashing.
This is a headless server setup: no desktop, no GUI, just a clean Debian 13 Trixie console with Docker ready to go. The guide assumes you want to install Debian 13 on CM3588 fresh, with the NVMe wiped clean. 🖥️
What You Need to Know About CM3588 Boot Architecture
The first thing to understand before you install Debian 13 on CM3588 is a hard constraint: the RK3588 SoC cannot boot directly from NVMe. The bootloader (U-Boot) must always live on either eMMC or a microSD card.
This means the setup is split:
- eMMC → bootloader + boot partition only
- NVMe SSD → root filesystem (
/) with your full Debian 13 installation
The eFlasher tool handles this split automatically. You just need to tell it where to put each piece.
Prerequisites to Install Debian 13 on CM3588 ⚙️
- FriendlyELEC CM3588 NAS Kit (16GB RAM, 64GB eMMC)
- NVMe SSD installed in the M.2 slot (at least one, e.g. nvme0n1)
- microSD card 64GB or larger — the
multiple-oseFlasher image is over 54GB - A PC to write the SD card image (Windows, Linux, or macOS)
- Balena Etcher or
ddfor writing the image - HDMI monitor (strongly recommended — you need the eFlasher GUI)
- 12V power supply (80W+ if all four NVMe slots are populated)
⚠️ Incompatible SSDs: According to FriendlyELEC’s wiki, the CM3588 NAS Kit has known issues with WD Blue SN580 and WD Black SN850 NVMe drives. If you have one of these, update the SSD firmware from a Windows PC before proceeding.
Step 1 — Download the eFlasher Image 📥
Go to the official FriendlyELEC download page: 👉 http://download.friendlyelec.com/CM3588
Navigate to: 01_Official images → 02_SD-to-eMMC images
Download the file with multiple-os in the filename:
rk3588-eflasher-multiple-os-YYYYMMDD-30g.img.gz
⚠️ Critical: Do NOT download the single-OS eFlasher image (without
multiple-os). That version auto-flashes to eMMC on boot with no GUI and no way to select NVMe as the destination.
The multiple-os image boots into a graphical interface where you pick both the OS and the target storage device.
Step 2 — Write the Image to the microSD Card 💾
On Linux:
gunzip -c rk3588-eflasher-multiple-os-*.img.gz | sudo dd bs=4M of=/dev/sdX status=progress
sync
Replace /dev/sdX with your actual SD card device (check with lsblk before running).
On Windows/macOS: Open Balena Etcher, select the .img.gz file directly (Etcher decompresses automatically), select your SD card, and flash.
Step 3 — Prepare the Hardware 🔧
- Make sure the NVMe SSD is seated in the M.2 slot
- Insert the microSD card into the CM3588 slot
- Connect an HDMI monitor
- Do not power on yet
Step 4 — Boot into eFlasher
Power on the CM3588. It will automatically boot from the SD card and launch the eFlasher graphical interface on the HDMI output.
Wait for the GUI to fully load before touching anything.
Step 5 — Select OS and Storage Destinations 🎯
This is the most important step when you install Debian 13 on CM3588 — getting the destinations wrong means your rootfs ends up on eMMC instead of NVMe.
In the eFlasher GUI:
- Select Debian 13 Trixie Core from the OS list (look for
debian-trixie-core) - Open the OS settings panel
- Set:
- Boot destination →
eMMC - System destination →
M.2 SSD
- Boot destination →
Checkboxes at the bottom
When you install Debian 13 on CM3588 and the NVMe had a previous OS (like Proxmox with LVM partitions), the checkbox settings matter:
- Start automatically at startup → ❌ Leave unchecked. This is for mass production flashing — it would re-flash on every boot from SD.
- Disable overlay filesystem → ✅ Check this. Overlay FS is only useful when running the OS directly from SD. Since your rootfs goes to NVMe, you don’t need it.
- Low format → ✅ Check this if your NVMe had a previous OS. It wipes all existing partition structures (LVM, GPT headers, etc.) before writing the new layout. Takes longer but guarantees a clean slate.
Step 6 — Flash and Wait ⏳
Confirm and start the flashing process. eFlasher will:
- Write the bootloader and boot partition to eMMC
- Wipe the NVMe SSD
- Write the Debian 13 rootfs to NVMe
You can follow progress on the HDMI monitor. The NVMe activity LEDs on the board will also blink during the write.
When it finishes, eFlasher shows a completion screen.
Step 7 — First Boot into Debian 13 🚀
Remove the microSD card. The CM3588 will reboot automatically.
After a few seconds you should see:
CM3588-Plus login:
Log in with the default FriendlyELEC credentials:
login: root
password: fa
Step 8 — Verify the Installation ✅
After you install Debian 13 on CM3588, run these three commands to confirm everything landed in the right place:
cat /etc/os-release
findmnt /
uname -r
Expected output:
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
...
TARGET SOURCE FSTYPE OPTIONS
/ /dev/nvme0n1p1 ext4 rw,relatime
...
6.1.x
If findmnt / shows /dev/mmcblk2pX instead of /dev/nvme0n1pX — something went wrong with the destination selection in eFlasher. You need to reflash.
Step 9 — Initial System Setup 🔐
Change the root password immediately:
passwd
Update all packages:
apt update && apt upgrade -y
apt autoremove -y
Step 10 — Install Docker 🐳
The Debian repos may carry an older Docker version. Install from the official Docker repository to get the latest release. If you’re new to Docker concepts, check out Docker for Beginners first.
# Install dependencies
apt install -y ca-certificates curl gnupg
# Add Docker's GPG key
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# Add the official Docker repository
echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian trixie stable" \
| tee /etc/apt/sources.list.d/docker.list
# Install Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Verify
docker --version
docker run hello-world
See the official Docker installation docs for more details.
After Docker is running, consider adding Portainer for a web GUI to manage your containers, or set up automated Docker update monitoring to keep your stack current.
Final Verification 🎉
cat /etc/os-release && findmnt / && docker --version
You should see Debian 13 Trixie, rootfs on NVMe, and Docker version 29+. If all three check out — your CM3588 is ready.
What’s Next?
With install Debian 13 on CM3588 done and Docker running on NVMe, the next logical steps are:
- Set up a self-hosted password manager with Vaultwarden
- Deploy Immich for photo management on fast NVMe storage
- Monitor your Docker containers with Stashboard
The RK3588 inside the CM3588 is a capable ARM SoC — having Debian 13 on a fast NVMe SSD gives it a solid foundation for a self-hosted homelab node. 🏠
