MinIO on Rockstor: Fixing the CPU x86-64-v2 Error and Console Port Startup Failure
Two errors, one fix that actually matters
If you’re running Rockstor on older hardware and MinIO refuses to start, you’re probably hitting a CPU compatibility wall, a misleading error about checksums, and then the real crash — a misconfigured console port. All three show up in the same log output, which makes it easy to chase the wrong thing. Here’s what each line actually means.
The CPU problem: x86-64-v2
Starting in late 2023, MinIO’s official Docker images began requiring the x86-64-v2 microarchitecture baseline. CPUs that predate roughly 2009–2011 — many older Xeons, Atoms, and Core 2 chips — don’t support the required instruction extensions, so the container exits immediately with:
Fatal glibc error: CPU does not support x86-64-v2
MinIO’s response was to publish parallel -cpuv1 image tags. Same release, built without the newer ISA requirements. You append -cpuv1 to any release tag:
minio/minio:RELEASE.2024-09-22T00-33-43Z-cpuv1
That’s the right move. But switching to the cpuv1 image surfaces a second problem hiding in the Rock-On JSON configuration.
The checksum ERRO: not the real issue
Once MinIO actually starts, you’ll see this in the logs:
ERRO: Calculating checksum failed: open minio: no such file or directory
Alarming-looking. Not the problem. MinIO performs a self-integrity check at startup by trying to open its own binary at os.Args[0]. Inside the container, that resolves to the bare string minio — no path prefix — and the working directory contains no file by that name. So the open call fails and gets logged at ERROR level. MinIO keeps going. This is cosmetic. The crash comes from the very next line.
The real killer: missing port in address
Here’s the FATAL that actually stops MinIO:
FATAL Unable to start listening on console port: address 9001: missing port in address
The error text is Go’s net package being precise about what went wrong. Go’s network address parser expects strings in host:port form. A bare number like 9001 has no colon, so the parser reads it as a hostname — and that hostname has no port attached, hence “missing port in address.”
The fix is a single character. MINIO_CONSOLE_ADDRESS must be :9001, not 9001. The leading colon means “bind on all interfaces, port 9001.” Without it, MinIO has no valid address to bind to and exits.
This is easy to miss during Rock-On setup. When Rockstor prompts you to fill in the environment variable, the description field says something like “for example, :9001” — and the colon sitting right after an opening quote can look like sentence punctuation rather than a required character. Type :9001 including the colon and the FATAL goes away.
A more robust fix: drop the env var, hardcode it in cmd_arguments
The cleanest way to eliminate the colon problem entirely is to remove the user-facing MINIO_CONSOLE_ADDRESS environment variable from the JSON and pass the console address directly as a server argument instead:
"cmd_arguments": [
["server", "/data", "--console-address", ":9001"]
]
This hardcodes port 9001 for the web console. For a private-network single-instance MinIO deployment that’s almost always fine. If you ever need the console on a different port, you’d edit the JSON and reinstall the Rock-On — a minor inconvenience versus the confusion the colon problem causes.
The corrected Rock-On JSON (containers section)
Here’s the full containers block with both changes applied — the -cpuv1 image tag and the hardcoded console address in cmd_arguments:
"containers": {
"MinIOcpuV1": {
"image": "minio/minio",
"tag": "RELEASE.2024-09-22T00-33-43Z-cpuv1",
"launch_order": 1,
"ports": {
"9000": {
"description": "Port for API access, default 9000",
"host_default": 9000,
"label": "MinIO API Port",
"ui": false
},
"9001": {
"description": "Port for Admin Portal access, default 9001",
"host_default": 9001,
"label": "MinIO Admin Portal Port",
"ui": true
}
},
"volumes": {
"/data": {
"description": "Choose a share for MinIO object storage",
"label": "MinIO Object Storage"
}
},
"cmd_arguments": [
["server", "/data", "--console-address", ":9001"]
],
"environment": {
"MINIO_ROOT_USER": {
"description": "MinIO Administrator Username, 3 to 128 alphanumeric characters",
"label": "MinIO Admin User"
},
"MINIO_ROOT_PASSWORD": {
"description": "MinIO Administrator Password, 8 to 128 alphanumeric characters",
"label": "MinIO Admin Password"
}
}
}
}
The MINIO_CONSOLE_ADDRESS environment variable entry is gone. Fewer fields for users to fill in wrong, fewer sources of the FATAL.
Finding MinIO container logs on Rockstor
If you hit further problems after making these changes, the container logs are your first stop. SSH into the Rockstor box and run:
docker logs MinIOcpuV1
If the container name differs, docker ps -a lists all containers including stopped ones. The FATAL line always appears before MinIO exits, so scroll toward the bottom of the output. Errors logged above a FATAL are almost always red herrings.
Sources
