Cela fait un moment que je n’ai pas écrit sur ce blog et je me suis dit qu’un dimanche pluvieux comme aujorud’hui serait un jour idéal pour ça.
J’ai un NUC peu puissant qui traine dans un coin acheté à bas pris sur Ricardo.ch que j’utilise pour faire des tests et me suis dit que j’allais une fois essayer d’installer RetroPie sur un processeur x86 pour comparer la qualité de l’émulation et la vitesse par rapport à un Raspberry.
En cherchant, je suis tombé sur un article très bien fait qui récapitule toutes les étapes pour le faire de manière simple et rapide. Il comprend cependant des typo dans les commandes à passer qui sont pour moi génantes si quelqu’un d’inexpérimenté veut le refaire. Le bug de cet article est donc de reprendre ce qui a été, de corriger ces quelques typos et l’expliquer en français.
Edit : après avoir rédigé cet article, je me suis rendu compte que quelqu’un avait encore plus facilité le processus, rendant caduque le reste de l’article, grâce à ce script que je vous recommande fortemment.
La première étape est donc de télécharger un ISO de Ubuntu 18.04 LTS version serveur et d’imager une clé USB avec (par exemple avec Balena Etcher). Pourquoi la version serveur ? Simplement parce qu’elle est dénuée d’interface graphique que nous n’utiliserons pas, ce qui la rend plus light et ne consommera pas de l’espace de stockage inutilement.
Pour l’installation d’Ubuntu, je vous recommande de laisser toutes les options par défaut : utiliser le disque complet, pas de LVM, pas d’encrpytion, DHCP pour l’Ethernet et cliquer sur installer.
Ensuite, pour la création d’un user de base, entrez les mêmes identifiants que vous utiliseriez sur un Pi, pas besoin de complexifier quelque chose qui ne le nécessite pas (après, c’est vous qui voyez…).
- User: Retro Pie
- Server Name: retropie
- Username: Pi
- Password: raspberry
J’ai également configuré l’OS pour activer SSH afin de pouvoir facilement effectuer les opérations suivantes depuis ma machine principes.
Après quelques minutes se termine l’installation et vous pouvez retirer la clé USB.
Il est recommandé d’utiliser le noyeau HWE pour RetroPie car les kernels plus récents disposent de fonctionnalités que RetroPie n’utilise pas. Rappelez-vous : light is right. Pour le faire, commencez avec ceci :
sudo apt update
sudo apt upgrade
sudo apt install --install-recommends linux-generic-hwe-18.04
Puis redémarrez votre NUC. Une fois redémarré, on va entrer dans le vif du sujet avec RetroPie. Connectez-vous donc à votre NUC en SSH.
On va d’abord faire en sorte que l’utilisateur « pi » soit en mesure de lancer des commandes en tant que root (sudo) sans pasword (ça ira beaucoup plus vite pour la suite):
sudo sed -i -e '$a\pi ALL=(ALL) NOPASSWD:ALL' /etc/sudoers
Rentrez le password configuré et nous serons bons, vous n’aurez plus à rentrer de manière systématique ce password.
Ensuite, nous allons ajouter le repository universe avec toutes les dépendances nécessaires à RetroPie :
sudo apt-add-repository universe
sudo apt update -y
sudo apt upgrade -y
sudo apt install xorg openbox pulseaudio alsa-utils menu libglib2.0-bin python-xdg at-spi2-core dbus-x11 git dialog unzip xmlstarlet --no-install-recommends -y
On va ensuite créer un script d’autodémarrage OpenBox afin de démarrer le terminal puis démarrer EmulationStation :
mkdir -p ~/.config/openbox
echo 'gnome-terminal --full-screen --hide-menubar -- emulationstation' >> ~/.config/openbox/autostart
Puis un fichier .xsession adapté
echo 'exec openbox-session' >> ~/.xsession
On fait en suite que X11 démarre au boot :
echo 'if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then' >> ~/.bash_profile
sed -i '$ a\startx -- -nocursor >/dev/null 2>&1' ~/.bash_profile
sed -i '$ a\fi' ~/.bash_profile
On souhaite ensuite que l’utilisateur pi se logue automatiquement et que EmulationStation devienne l’écran principale affiché :
sudo mkdir /etc/systemd/system/getty@tty1.service.d
sudo sh -c 'echo [Service] >> /etc/systemd/system/getty@tty1.service.d/override.conf'
sudo sed -i '$ a\ExecStart=' /etc/systemd/system/getty@tty1.service.d/override.conf
sudo sed -i '$ a\ExecStart=-/sbin/agetty --skip-login --noissue --autologin pi %I $TERM' /etc/systemd/system/getty@tty1.service.d/override.conf
sudo sed -i '$ a\Type=idle' /etc/systemd/system/getty@tty1.service.d/override.conf
Après ça, nous sommes désormais prêts pour démarrer le téléchargement de RetroPie depuis le repository Git et lancer le script d’isntallation :
git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
sudo RetroPie-Setup/retropie_setup.sh
Ceci va lancer l’installation de RetroPie. Acceptez l’EULA et choisissez l’installation « Basic ». Selectionnez « Yes » pour installer tous les packages de Core et Main. C’est désormais le moment où vous pouvez aller faire autre chose, le processus de compilation va prendre du temps.
Une fois la compilation terminée, vous pouvez redémmarer votre NUC depuis le menu.
L’article original contient ensuite des instructions de customisation pour l’utilisation d’une manette Xbox One. N’en ayant pas une, je passerai au dessus de ces explications. Si cela vous intéresse, je vous recommande de vous référer à l’article original.
L’étape suivante sera de rendre les choses un peu plus jolies et cacher toutes ces vilains logs au boot qui démontrent trop qu’il s’agit d’un bête Linux. On va donc cacher tout ça avec Plymouth avec le theme par défaut de Pacman :
sudo apt update
sudo apt install plymouth plymouth-themes plymouth-x11 -y
git clone --depth=1 https://github.com/HerbFargus/plymouth-themes.git tempthemes
sudo cp -r ~/tempthemes/. /usr/share/plymouth/themes/
rm -rf tempthemes
sudo update-alternatives --install /usr/share/plymouth/themes/default.plymouth default.plymouth /usr/share/plymouth/themes/retropie-pacman/retropie-pacman.plymouth 10
sudo update-alternatives --set default.plymouth /usr/share/plymouth/themes/retropie-pacman/retropie-pacman.plymouth
sudo update-initramfs -u
sudo cp /etc/default/grub /etc/default/grub.backup
sudo sed -i -e 's/GRUB_TIMEOUT=10/GRUB_TIMEOUT=2/g' /etc/default/grub
sudo sed -i -e 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="quiet splash"/g' /etc/default/grub
sudo update-grub
Puis on cache les infos de last login :
sudo sed -i -e 's/session optional pam_lastlog.so/#session optional pam_lastlog.so/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_motd.so motd=\/run\/motd.dynamic/#session optional pam_motd.so motd=\/run\/motd.dynamic/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_motd.so noupdate/#session optional pam_motd.so noupdate/g' /etc/pam.d/login
sudo sed -i -e 's/session optional pam_mail.so standard/#session optional pam_mail.so standard/g' /etc/pam.d/login
On cache le terminal :
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ use-theme-colors false' ~/.bash_profile
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ use-theme-transparency false' ~/.bash_profile
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ default-show-menubar false' ~/.bash_profile
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ foreground-color '#FFFFFF'" ~/.bash_profile
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ background-color '#000000'" ~/.bash_profile
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ cursor-blink-mode 'off'" ~/.bash_profile
sed -i "1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ scrollbar-policy 'never'" ~/.bash_profile
sed -i '1 i\dbus-launch gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/ audible-bell false' ~/.bash_profile
cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
cp ~/.config/openbox/rc.xml ~/.config/openbox/rc.xmlbackup
sed -i '//a ' ~/.config/openbox/rc.xml
sed -i '//a true ' ~/.config/openbox/rc.xml
sed -i '//a no ' ~/.config/openbox/rc.xml
sed -i '//a below ' ~/.config/openbox/rc.xml
sed -i '//a no ' ~/.config/openbox/rc.xml
sed -i '//a yes ' ~/.config/openbox/rc.xml
sed -i '//a ' ~/.config/openbox/rc.xml
Vous comprenez maintenant pourquoi il est recommandé d’utiliser SSH ? 🙂
Et pour finir, on va retirer cloud-init, qui ne nous sert à rien :
sudo apt purge cloud-init -y
sudo rm -rf /etc/cloud/
sudo rm -rf /var/lib/cloud/
Voilà, vous devriez désormais être opérationnels ! Il se peut qu’il faille tweaker un peu certains paramètres graphiques pour obtenir de meilleures performances. Il s’avère que jouer en 4k va rendre l’expérience très mauvaise et il vous est suggéré de rester en 1080p.
Amusez-vous bien !