Gestion multiboot et script recalbox-part.sh



  • Bonjour,

    En remplacement de mon mediacenter RPi3 sous recalbox avec kodi, j'envisage une solution multiboot avec 3 os distinct : Recalbox 4.1, Kodi et Debian Jessie. J'utilise pour cela Odroid-Multiboot (lien github) de loboris et le résultat est bluffant grâce à cet outil.

    Cependant, je rencontre une difficulté qui a nécessité pas mal vraiment beaucoup d'investigation (je découvre encore et toujours :p ) à savoir :

    • recalbox ne fonctionne qu'en stand-alone (kodi étant embarqué), il interprète donc la partition servant au share (/recalbox/share) comme étant la suivant de celle de boot/

    Afin de permettre recalbox de fonctionner (enfin jusqu'à présent tout fonctionne...), j'ai modifié la fonction suivante (certainement optimisable) :

    • fichier : /recalbox/script/recalbox-part.sh
    determine_default_share_part() {
         XSHARE=$(lsblk -o name,label | grep SHARE | cut -d ' ' -f 1 | cut -d '-' -f 2)
         echo "/dev/$XSHARE"
    
    #   BOOTPART=$(determine_boot_part)
    #   XBOOT=$(echo "${BOOTPART}" | sed -e s+'^.*\([0-9]\)$'+'\1'+)
    #
    #   # check that it is a number
    #   if ! echo "${XBOOT}" | grep -qE '^[0-9]$'
    #   then
    #       return 1
    #   fi
    #
    #   XSHARE=$(expr ${XBOOT} + 1)
    #   echo "${BOOTPART}" | sed -e s+"${XBOOT}$"+"${XSHARE}"+
    }
    

    Ainsi, le point de montage /recalbox/share est réalisé en recherchant la partition s'appelant SHARE

    Pour vous donner une idée du résultat, voici

        sdb                                                  29G
        +-sdb1    vfat   /media/ben/sduserdata sduserdata     1G
        +-sdb2    ext4   /media/ben/system     RECALBOX     384M
        +-sdb3                                                8M
        +-sdb4
           +-sdb5 ext4   /media/ben/recalbox   SHARE          2G
           +-sdb6 ext4   /media/ben/sdoelec    sdoelec        2G
           +-sdb7 ext4   /media/ben/sdlinux1   sdlinux     23,5G
    

    RECALBOX contient l'ensemble du contenu de l'image RECALBOX (boot/ +overlay par la suite) et SHARE le point de montage décrit ci-dessus

    Et j'ai configuré mon /boot/recalbox-boot.conf pour accéder au NAS :

    sharedevice=NETWORK
    sharenetwork_smb1=ROMS@IP_NAS:PATH_NAS:username=USER,password=PASS
    
    1. Pensez-vous que cette modification est pertinente, à ajuster ou à éviter ?
    2. Pensez-vous que le nom de cette partition est varialisable ? bref, que l'on précise dans recalbox-boot.conf le nom de la partition a utiliser pour le share ?
    3. Ai-je oublié autre choses ?
    4. Ai-je le droit de publier un lien externe vers Odroid.com (pour détailler l'ensemble) ? ou, plus tard, vers mon blog (pour les mêmes raisons) ?

    Je suis preneur de toute remarque ou conseil également :p


  • Moderator
    Team

    @Pi-Druid yo ! Alors plusieurs remarques :

    • c'est un script que je dois réécrire poyr une grosse nouveauté que j'ai dans les cartons
    • le nom de la partition : ca ne marchera peut être pas parce que de mémoire, ce n'est pas tout le temps SHARE, mais ausdi share ... Et oui, case sensitive ... Me semble que c'est en minuscule sur l'image par noobs maid en majuscule par le .img ... Youpi ...
    • dans le recalbox-boot.conf, pk pas oui. Mais le grand Dieu de recalbox aurait tendance à dire : faut que ce soit user friendly, et éviter l'edition manuelle

    Mais oui, il y a des pistes d'amelioration. La première etant de faire comme chez odroid justement : regarder où est l'espace libre sur la sd quand on crée le share.

    Historiquement je ne sais pas pk on n'utilise pas les label de partition. Et il y a 2 écoles opposées dans le monde linux sur ce sujet.



  • @Substring Hello !

    Tout d'abord, merci beaucoup pour ton retour.

    Effectivement, il semble y avoir pas mal à faire. En creusant un peu plus, la modification que je proposais n'est pas entièrement viable pour recalbox 4.1 (la version utilisée lors de la rédaction du post initial n'était pas conforme. Depuis, je constate des problèmes)

    • La partition SHARE est recréée lorsqu'elle n'est pas trouvée visiblement (je perds donc son contenu à chaque démarrage).
    • Je me rends compte également que la partition boot/ n'est pas correctement identifiée non plus.

    A priori, pour pouvoir envisager recalbox en "vrai" multiboot, une des pistes serait de revoir en profondeur les scripts :

    • /etc/init.d/S04mountboot
    • /etc/init.d/S11share

    Pour le coup...

    • /recalbox/scripts/recalbox-part.sh ne serait plus utile
    • idem pour /recalbox/scripts/recalbox-mount.sh
    • à chaque mise à jour c'est le risque de perdre ses données

    Je vais étudier cela plus en détail dans les prochains jours, mais je suis preneur de toute autre option (ou conseil), mon objectif reste avant tout d'avoir un vrai multiboot linux / kodi / retrogaming sur Odroid C2 avec la possibilité de procéder indépendamment à la monté de version de chacun.


  • Moderator
    Team

    @pi-druid il y a une autre grosse difficulté supplémentaire dans les cartons : squashfs. J'ai bien avancé sur le sujet, et une des difficultés restantes concerne l'identification du share, parce quedans ce cas / est monté sur /dev/loop0 hahaha

    La suggestion que je peux te faire : identifier l'espace libre de la sd ou clé usb (attention : / peut etre sur /dev/sdN, /dev/loopN, /dev/mmcblp[01]) et ecrire dans le recalbox-boot.conf le device créé pour le share.

    Encore une difficulté dans un myltiboot : recalbox mange tout l'espace restant ...

    De quoi faire ... Et tu marches sur des oeufs


  • Moderator
    Team

    Ah au fait, je viens de lire irc : pas (encore) delsblk mais il y a blkid qu'on utilise déjà. Je ne sais pas s'il y a une différence fondamentale entre les 2


Log in to reply
 

Want to support us ?

Join us on :

199
Online

26179
Users

13547
Topics

102799
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.