Files
libretro/wiki/first-install.md
T
Abdessamad Derraz 123d698e43 feat: build the site with Astro Starlight
generate_site.py writes the Starlight project in website/ and nothing
else: mkdocs.yml, the MkDocs hooks, theme overrides and stylesheet go,
and the wiki is written in Starlight's syntax. Both workflows set up
Node with the official actions/setup-node pinned by commit, run npm ci
from the committed lockfile, build with the strict link validator and
check the result with validate_site.py.

The search weighs a page by what it answers: Start here pages first,
a system page's cards and file names before a guide citing them, deep
guides, launchers, aliases and frozen copies after. Status badges,
hash blocks and the export change lists leave the index. The ranking
sits at the centre of a range where the 13 queries of search_gate.py
all answer, in the search box itself.

839 pages, every URL and 45,611 ids match the MkDocs build. The tests
read the Starlight content and syntax.
2026-10-22 18:47:22 +02:00

3.8 KiB

level, order, nav_title
level order nav_title
start 30 First install, step by step

First install

From an empty BIOS folder to games that start.

You need: internet and some free space. The installer says how much.

1. Open a terminal and paste

A terminal is a window where you type commands. Paste the line for your system, then press Enter.

Open the Start menu. Type PowerShell and open it.

irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex

Open Terminal. It is in Applications, then Utilities.

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh

On a Steam Deck, switch to Desktop Mode and open Konsole.

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh

Install Termux, a terminal app. Run these three lines in it.

pkg install python
termux-setup-storage
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh

On Batocera, Recalbox and other game systems, follow your setup's page.

2. Check the folder it found

It shows your setup and its BIOS folder:

  Found Batocera at /userdata/bios
  • Right folder? Go on.
  • Wrong folder? Press Ctrl+C to stop. Then see If it stops.

3. Choose what to install

  Enter) install everything
  i) only what the installed cores read
  c) choose systems, cores and regions
  q) quit

Enter installs everything. c lets you pick consoles.

4. Wait

It shows one line per file. You can stop with Ctrl+C at any time. Run the command again to carry on.

5. Look for "Done."

Done. 14481 files installed, 0 files already up to date.
Location: /userdata/bios

Done. means it worked. It may list files it could not install.

Check it later

Add --check to the same command. It changes nothing.

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --check

All good when you see 0 wrong hash.

Undo

It keeps every file it replaces in a retrobios-backup folder, beside your BIOS folder. Nothing is deleted.

To put your files back, run the command with --restore and that folder. The end of the run prints the exact line.

If it stops

No supported platform detected.

At a terminal, a menu follows. Pick your setup by its number, then type its BIOS folder.

With --no-input, or without a terminal, it stops and prints the command to use.

Error: Python 3.8 or newer is required.

The message shows the command that installs Python. Run it, then run the installer again.

A RetroPie 4.8 image has Python 3.7.3, and its update command finds nothing newer. Use the RetroPie ZIP there, unzipped into ~/RetroPie/BIOS/.

Error: the downloaded installer does not match its expected fingerprint.

The download was cut short. Nothing was changed. Run the command again.

Cannot create ...

You do not have the right to write there. On Batocera, Recalbox and ROCKNIX, put sudo and a space before the command. It then runs as the administrator.

Not enough space on the drive holding ...

It stopped before writing. Free some space, or use --dest to pick another drive.

The game still does not start

See When a game does not start.

:::tip[Next]