First Boot
Power on. Ubuntu loads. You log in. Now what?
Everything from here happens in a terminal. That’s the command line — a text window where you type instructions and the machine responds. On a QB2, the terminal is your instrument panel. Learning its three or four most-used commands will get you surprisingly far.
Finding a Terminal
If you’re looking at the GNOME desktop:
- Press
Ctrl+Alt+T— opens a terminal on most Ubuntu setups - Or press the Super key (Windows key), type
terminal, press Enter - Or right-click the desktop and choose “Open Terminal”
Once a terminal window is open, you’re in the right place. It shows a prompt ending in $ — everything you type goes after that.
The Three Commands You Need Right Now
Check disk space first. Models are large. This is non-negotiable to understand before you do anything else:
df -h ~
This shows your home directory’s disk usage. The Size column is total, Avail is what’s free. You need room — at minimum 3 GB for a small model (Qwen3-0.6B), 20+ GB for anything like Llama-3.1-8B. If you’re under 5 GB free, stop here and figure out where the space went before continuing.
Check internet connectivity:
ping -c 3 google.com
If this fails, check your network cable or go to Settings → Network. Everything else in this guide requires internet access for model downloads.
Update the package list (do this once after first boot):
sudo apt update
sudo means “run as administrator.” Ubuntu will ask for your password. This doesn’t install or change anything — it just refreshes the list of what’s available. You’ll see a lot of text scroll by. That’s normal.
Ubuntu: What You Should Know
The QB2 runs Ubuntu 24.04 LTS. If this is your first time with it:
- Package manager is
apt— install things withsudo apt install <name> - Files are case-sensitive:
Model.pyandmodel.pyare different files - Your home directory is
~— short for/home/yourusername sudoruns a command as administrator — use it only when a command tells you to
Your Login, Password, and SSH
Many QB2 units ship with a default login — username ttuser, password ttuser. If that’s how yours arrived, change the password the moment you’re in, before the machine is reachable on a shared network:
passwd
It asks for the current password (ttuser), then a new one twice.
Turn on SSH
Later in this guide — and on every other path — you reach the QB2 from your own laptop over SSH: forwarding a model server’s port back to your machine, copying files, running commands remotely. SSH isn’t always running on a fresh box, so turn it on once:
# Install and enable the SSH server
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
# Confirm it's listening
systemctl status ssh
Then find the address other machines use to reach you:
hostname -I # the QB2's IP address on your network
hostname # its name — often <name>.local
From your laptop you can now run ssh ttuser@<that-ip>. This is what makes the remote-access steps in Serving Models on QB2 — and bringing tt-studio’s web UI to your own browser — work.
ufw firewall is installed but inactive by default, so nothing on the QB2 is blocked out of the box. If you or your IT team turn it on (sudo ufw status tells you), remember to allow SSH with sudo ufw allow 22/tcp — and any service port you forward later, like 8000 for the inference server.
Python: A Field Guide to the Confusion
This is where new Linux users often hit a wall. Ubuntu ships with its own Python. The Tenstorrent software has its own Python environments. These are separate and don’t mix. Here’s the landscape:
What exists on your system
| Name | Location | What it is |
|---|---|---|
| System Python | /usr/bin/python3 |
Ubuntu’s built-in Python — don’t pip install here |
| TTNN venv | ~/tt-metal/python_env/ |
Pre-built environment for TTNN and the Direct API |
| Tenstorrent venv | ~/.tenstorrent-venv/ |
Main venv with vLLM and other tools |
| TT-Forge (TT-XLA) | pip wheel in a Python 3.12 venv | Compile PyTorch/JAX models — install it yourself (see TT-Forge) |
Why does this matter?
Ubuntu 24.04 enforces what’s called externally-managed Python — the system Python is protected. If you try to pip install something directly, Ubuntu will refuse with an error about breaking system packages. This is intentional. It protects you.
The right move is always: activate the correct venv, then install inside it. The Tenstorrent venvs already have everything you need for this guide, so you won’t need to install much.
What which python3 tells you
Before running any Python code, check which Python is active:
which python3
If you see /usr/bin/python3 — you’re using the system Python. Tenstorrent imports will fail.
If you see something like /home/yourname/tt-metal/python_env/bin/python3 — you’re inside the right venv. Go ahead.
pip, pyenv, uv — a brief map
You may encounter other Python tools in documentation or online:
pip— Python package installer. Works inside a venv. Fine to use there.pyenv— manages multiple Python versions (3.10, 3.11, etc.). The QB2 doesn’t need it — the venvs handle version isolation.virtualenv/python -m venv— creates isolated environments. The Tenstorrent venvs were built this way.uv— a fast, modern alternative to pip and virtualenv. Works, but the QB2 docs and this guide use standard venv activation.
For this guide: ignore pyenv, ignore uv. Activate the venv Tenstorrent provides. That’s all you need.
Activating and deactivating
# Activate the TTNN environment
source ~/tt-metal/python_env/bin/activate
# Your prompt now shows (python_env) — you're inside
# Deactivate when done
deactivate
The (python_env) prefix in your prompt is the signal. When it’s there, Python calls and imports go to the right place. When it’s not, they don’t.
/etc/profile.d/ that activate an environment automatically at login. Run which python3 before sourcing any venv to see what's already active — activating on top of an active venv is messy.
Next: Is This Thing On? →