You're trying to install Batocera on an older business PC (like Lenovo H50-50, ThinkCentre, HP EliteDesk, Dell OptiPlex from 2014-2016 era) and getting:
- Error 1962: No operating system found (in UEFI mode)
- Boot loops with flashing cursor (in Legacy mode)
- Standard flashing tools (Rufus, Etcher) report success but system won't boot
- BIOS detects the drive but won't boot from it
Batocera's standard image uses a GPT partition table with UEFI boot structure. Many older business PCs have UEFI implementations that are:
- Finicky about GPT/UEFI boot structures
- Don't properly auto-detect EFI System Partitions
- Work better with traditional MBR/Legacy boot
The solution is to manually convert Batocera to use MBR/Legacy boot instead of GPT/UEFI.
Don't want to run 20+ manual commands? Use the automated script instead:
# Boot SystemRescue, mount your Batocera image drive, then run:
wget https://raw.githubusercontent.com/Nomuarch/batocera-legacy-boot-fix/main/batocera-mbr-converter.sh
chmod +x batocera-mbr-converter.sh
sudo ./batocera-mbr-converter.shThe script handles everything: partitioning, copying, filesystem expansion, and bootloader installation. Just follow the prompts.
See SCRIPT-README.md for detailed script instructions.
If you prefer to understand each step or need to troubleshoot, follow the manual guide below.
- Target PC - The system you want to run Batocera on
- Target drive - SSD or HDD to install Batocera (will be wiped)
- USB stick 1 - For SystemRescue bootable USB (~1GB minimum)
- USB stick 2 OR spare drive - To hold the Batocera image file (~12GB free space needed)
- Another computer - To prepare the USB sticks
This guide was successfully tested on:
- Lenovo H50-50 (model 90B6) - i5-4460, 8GB RAM
- Likely works on similar-era business desktops with troublesome UEFI implementations
-
Download required files:
- SystemRescue ISO (latest version)
- Batocera x86_64 - get the
.img.gzfile
-
Extract Batocera:
- Use 7-Zip or similar to extract the
.img.gzto get the raw.imgfile
- Use 7-Zip or similar to extract the
-
Create SystemRescue USB:
- Flash SystemRescue ISO to USB stick 1 using Rufus or Etcher
- Important: In Rufus, choose ISO mode with MBR partition scheme
-
Copy Batocera image:
- Copy the extracted Batocera
.imgfile to USB stick 2 (or spare drive) - Just copy the file, don't flash it
- Copy the extracted Batocera
-
Connect everything to target PC:
- SystemRescue USB in one port
- USB/drive with Batocera image in another port
- Target installation drive connected via SATA
-
Boot SystemRescue:
- Enter BIOS and set boot from SystemRescue USB
- Boot and wait for SystemRescue to load
- When prompted, just press Enter through the boot options
-
Open terminal and become root:
sudo su
-
Identify your drives:
lsblk
Note which device is your target drive (usually
/dev/sdaif it's the only internal drive) -
Mount the drive containing Batocera image:
If it's a NTFS-formatted drive:
mkdir -p /mnt/batocera-source mount -t ntfs-3g /dev/sdX# /mnt/batocera-source
If it's FAT32/exFAT formatted:
mkdir -p /mnt/batocera-source mount /dev/sdX# /mnt/batocera-source
Replace
sdX#with the actual device (e.g.,sdb1for USB stick 2) -
Verify the image file is accessible:
ls -lh /mnt/batocera-source
You should see your Batocera
.imgfile -
Mount the Batocera image to a loop device:
losetup --partscan --find --show /mnt/batocera-source/batocera-x86_64-VERSION-DATE.img
Replace
VERSION-DATEwith your actual filename. This will output something like/dev/loop0or/dev/loop1- note which one. -
Check the Batocera partition sizes:
fdisk -l /dev/loop0
(Replace
loop0with whatever you got in step 7)You should see two partitions:
- First partition: ~10GB (boot partition)
- Second partition: ~512MB (system partition)
-
Open GParted:
startx
This starts the graphical environment. Once loaded, open a terminal in the GUI and run:
gparted
-
Prepare target drive in GParted:
- Select your target drive (e.g.,
/dev/sda) from the dropdown in top-right - Delete all existing partitions (right-click each → Delete)
- Go to Device menu → Create Partition Table → select msdos → Apply
- Create first partition:
- Right-click unallocated space → New
- Size: 10500 MiB (10.5 GB)
- File system: fat32
- Click Add
- Create second partition:
- Right-click remaining space → New
- Size: Use all remaining space
- File system: ext4
- Click Add
- Click the green checkmark to Apply all operations
- Wait for completion, then close GParted
- Select your target drive (e.g.,
-
Return to terminal (press Ctrl+Alt+F2 or open terminal in GUI)
-
Copy Batocera data to target drive:
First partition (this takes several minutes):
dd if=/dev/loop0p1 of=/dev/sda1 status=progress
Second partition (much faster):
dd if=/dev/loop0p2 of=/dev/sda2 status=progress
Replace
loop0andsdawith your actual device names if different. -
Fix partition sizes in GParted:
- Open GParted again:
gparted - Select target drive (
/dev/sda) - Right-click
/dev/sda1→ Check (fixes and expands partition) - Right-click
/dev/sda2→ Check (fixes and expands partition) - Click Apply
- Close GParted
- Open GParted again:
-
Install MBR bootloader:
dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda
Replace
sdawith your target drive if different. -
Set boot flags in GParted:
- Open GParted:
gparted - Right-click
/dev/sda1→ Manage Flags - Tick boot checkbox
- Tick lba checkbox (if available)
- Click Close
- Click Apply if prompted
- Close GParted
- Open GParted:
-
Reboot:
reboot
Remove the SystemRescue USB before the system restarts!
Before booting Batocera, configure BIOS:
-
Enter BIOS Setup (usually F1, F2, or Del during boot)
-
Set these options:
- CSM/Legacy Support: Enabled
- Boot Mode: Legacy First (or Legacy Only)
- Secure Boot: Disabled
- SATA Mode: AHCI
- Boot Priority: Set your target drive first
-
Save and Exit
-
System should now boot into Batocera!
- You'll see an MBR boot prompt briefly
- Batocera logo will appear
- First boot takes longer as it expands the filesystem
- EmulationStation interface will load
The device isn't formatted or the filesystem type is wrong. Use fdisk -l /dev/sdX to check the partition type and mount with the correct -t flag (ntfs-3g, vfat, exfat, etc.)
This is normal on SystemRescue. Use the dd method with syslinux's mbr.bin as shown in step 14.
- Double-check BIOS settings (CSM enabled, Legacy mode)
- Verify boot flag was set on
/dev/sda1in GParted - Try running the mbr installation command again
- Check cables/SATA port
- Try different SATA port
- Check if drive is failing (run SMART test)
- Verify the dd copy completed successfully
When you flash Batocera with Rufus or Etcher in normal mode:
- They write a GPT partition table
- The EFI System Partition may be malformed or too small
- The BIOS can't find or won't recognize the UEFI bootloader
- Even if partitions exist, the boot structure doesn't match what the BIOS expects
This manual method:
- Creates a proper MBR partition table
- Uses traditional Legacy boot
- Installs a bootloader the BIOS recognizes
- Sets correct boot flags
If you don't want to deal with this complexity:
- Flash Batocera to a USB stick normally
- Boot from USB stick
- Use your SSD/HDD for ROM storage only
- Configure Batocera to store
/userdataon the internal drive
This is simpler but means the USB stick handles all boot duties.
This guide was developed through extensive troubleshooting on a Lenovo H50-50 that refused to boot Batocera using standard methods. The solution combines techniques from various Linux installation guides adapted specifically for Batocera.
If this guide helped you, or if you have improvements/corrections, please submit a pull request or open an issue.
Please comment if this worked (or didn't work) for your hardware:
Working:
- Lenovo H50-50 (90B6) - i5-4460, 8GB RAM ✓
Not tested but likely compatible:
- Other Lenovo H-series desktops (2014-2016)
- Lenovo ThinkCentre M-series (Haswell era)
- Dell OptiPlex (9020, 7020, 3020 series)
- HP EliteDesk/ProDesk (800 G1, 600 G1 series)
License: This guide is released under CC0 (public domain). Use it however helps you.