Raspberry Pi 3B+ multiboot

Bonjour à tous,

j’utilise déjà deux Raspberry Pi 3B+ pour ma domotique (JEEDOM) et une borne d’arcade (RECOLBOX)

j’aimerais me lancer dans un nouveau projet en remplacement de ma borne d’arcade actuelle.
j’aimerais faire un borne polyvalente :
1- jeux arcade (RECALBOX)
2- jeux de fléchettes (RASPIDARTS)
3- jukebox (FRUITBOX)

j’ai trouvé une réalisation similaire mais le changement de distribution se fait via un lecture de carte SD multiple avec la nécessité de choisir manuellement avant le démarrage.
j’aimerais savoir s’il est possible de concevoir un multi-boot qui proposerait les 3 choix et une validation par les boutons de la borne ?

merci pour votre aide

Bah si j’aurais ce projet, je prendrais un Raspbian OS Lite, sur lequel j’installe les 3 manuellements. Après un script python qui affiche le choix avec le bouton défini correspondant, qui est lui lancé au démarrage utilisateur. Une fois le bouton pressé, il lance la commande requise pour démarrer le logiciel souhaité.


Sinon il y a BerryBoot, moins conviviale (pas de bouton) mais offre un excellent Multiboot.

1 « J'aime »

Merci pour ta réponse :blush:
Cool, c’est donc techniquement possible.
Je vais m’essayer sur un raspberry qu’il me reste avant d’acheter tout le matériel et de construire la « bête ».
Seul point négatif, je ne maîtrise pas la programmation python. :face_with_raised_eyebrow:
Je trouverai bien quelqu’un dans mes contacts qui saura faire ça ou un tuto sur le net :smirk:

par curiosoté, j’ai demandé à ChatGPT de m’écrire un script python. (ci-dessous) :sweat_smile:
quelqu’un peut me dire ce que cela vaut ? :face_with_raised_eyebrow:

réponse de ChatGPT:

« Bien sûr! Voici un script Python que vous pouvez utiliser pour exécuter au démarrage un Raspberry Pi 3B+ et permettre de choisir entre les programmes Recalbox, RaspiDarts et Fruitbox installés sur un disque dur externe en utilisant des boutons : »

python
import RPi.GPIO as GPIO
import os
import time

# Configuration des broches des boutons
BUTTON_RECALBOX = 17
BUTTON_RASPIDARTS = 18
BUTTON_FRUITBOX = 27

# Configuration des chemins des programmes
RECALBOX_PATH = "/chemin/vers/recalbox"
RASPIDARTS_PATH = "/chemin/vers/raspidarts"
FRUITBOX_PATH = "/chemin/vers/fruitbox"

# Configuration de la fonction de sélection
def choose_program(channel):
    if channel == BUTTON_RECALBOX:
        if os.path.exists(RECALBOX_PATH):
            os.system(RECALBOX_PATH)
        else:
            print("Le programme Recalbox n'est pas installé sur le disque dur externe.")
    elif channel == BUTTON_RASPIDARTS:
        if os.path.exists(RASPIDARTS_PATH):
            os.system(RASPIDARTS_PATH)
        else:
            print("Le programme RaspiDarts n'est pas installé sur le disque dur externe.")
    elif channel == BUTTON_FRUITBOX:
        if os.path.exists(FRUITBOX_PATH):
            os.system(FRUITBOX_PATH)
        else:
            print("Le programme Fruitbox n'est pas installé sur le disque dur externe.")

# Configuration des broches en mode BCM
GPIO.setmode(GPIO.BCM)

# Configuration des broches des boutons en entrée avec une résistance de pull-up interne
GPIO.setup(BUTTON_RECALBOX, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(BUTTON_RASPIDARTS, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(BUTTON_FRUITBOX, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# Configuration des interruptions pour les boutons
GPIO.add_event_detect(BUTTON_RECALBOX, GPIO.FALLING, callback=choose_program, bouncetime=300)
GPIO.add_event_detect(BUTTON_RASPIDARTS, GPIO.FALLING, callback=choose_program, bouncetime=300)
GPIO.add_event_detect(BUTTON_FRUITBOX, GPIO.FALLING, callback=choose_program, bouncetime=300)

try:
    # Boucle principale pour maintenir le script en cours d'exécution
    while True:
        time.sleep(1)

except KeyboardInterrupt:
    # Nettoyage des broches GPIO en cas d'interruption du script
    GPIO.cleanup()

"Pour exécuter ce script au démarrage du Raspberry Pi 3B+, vous pouvez suivre ces étapes :

  1. Ouvrez un terminal sur votre Raspberry Pi.

  2. Créez un nouveau fichier de script Python en utilisant la commande nano (ou tout autre éditeur de texte de votre choix) :

   nano arcade_startup.py
   
  1. Copiez-collez le script ci-dessus dans le fichier. 4. Enregistrez et fermez le fichier en appuyant sur Ctrl + X, puis en confirmant avec Y et en appuyant sur Entrée. 5. Rendez le script exécutable en utilisant la commande suivante :
   chmod +x arcade_startup.py
   
  1. Ouvrez le fichier de configuration rc.local en utilisant la commande nano :
   sudo nano /etc/rc.local
   
  1. Ajoutez la ligne suivante avant la ligne exit 0 :
   python3 /chemin/vers/arcade_startup.py &
   

Assurez-vous de remplacer /chemin/vers/arcade_startup.py par le chemin complet vers le fichier arcade_startup.py que vous avez créé précédemment. 8. Enregistrez et fermez le fichier en appuyant sur Ctrl + X, puis en confirmant avec Y et en appuyant sur Entrée. 9. Redémarrez votre Raspberry Pi et le script arcade_startup.py s’exécutera automatiquement au démarrage. Assurez-vous d’avoir les boutons connectés aux broches GPIO correspondantes (17, 18 et 27 dans cet exemple) et d’avoir les programmes Recalbox, RaspiDarts et Fruitbox installés sur votre disque dur externe aux emplacements spécifiés. Ce script utilise la bibliothèque RPi.GPIO pour détecter les interruptions lorsque les boutons sont enfoncés et exécuter le programme correspondant."

et biensur, je lui ai demandé comment installer les 3 programmes sur le disque dur et il a répondu :

"Bien sûr! Voici les étapes pour installer les programmes Recalbox, RaspiDarts et Fruitbox sur un disque dur externe :

  1. Connectez votre disque dur externe à votre Raspberry Pi 3B+.

  2. Assurez-vous que votre Raspberry Pi est connecté à Internet. Pour l’installation de Recalbox :

  3. Ouvrez un terminal sur votre Raspberry Pi.

  4. Tapez la commande suivante pour installer le gestionnaire de paquets APT :

   sudo apt-get install -y dialog
   
  1. Tapez la commande suivante pour installer Recalbox :
   sudo apt-get install -y recalbox
   
  1. Une fois l’installation terminée, vous pouvez accéder à Recalbox en utilisant la commande recalbox. Pour l’installation de RaspiDarts : 7. Ouvrez un terminal sur votre Raspberry Pi. 8. Tapez la commande suivante pour cloner le dépôt RaspiDarts depuis GitHub :
   git clone https://github.com/raspidarts/raspidarts.git
   
  1. Accédez au répertoire RaspiDarts en utilisant la commande suivante :
   cd raspidarts
   
  1. Exécutez le script d’installation en utilisant la commande suivante :
    sudo ./install.sh
    
  1. Suivez les instructions à l’écran pour terminer l’installation de RaspiDarts. Pour l’installation de Fruitbox : 12. Ouvrez un terminal sur votre Raspberry Pi. 13. Tapez la commande suivante pour cloner le dépôt Fruitbox depuis GitHub :
    git clone https://github.com/Fruit-Box/fruitbox.git
    
  1. Accédez au répertoire Fruitbox en utilisant la commande suivante :
    cd fruitbox
    
  1. Exécutez le script d’installation en utilisant la commande suivante :
    sudo ./install.sh
    
  1. Suivez les instructions à l’écran pour terminer l’installation de Fruitbox. Après avoir suivi ces étapes, les programmes Recalbox, RaspiDarts et Fruitbox devraient être installés sur votre disque dur externe. Vous pouvez maintenant utiliser le script Python que je vous ai fourni précédemment pour choisir entre ces programmes en appuyant sur des boutons.