Aaah cette µSD, tant de potentiel, si peu employée ! Mais quand même avoir 30GO de libre et se contenter que de 7 pour enregistrer nos photos, c’est assez frustrant ! peut on agir la-dessus ? Oui évidemment, autrement je me garderais bien d’aborder le sujet !

Sailfish23

Ce Tuto est une gentille récréation qui fait suite à l’article IV , qui suppose que vous avez a peu prêt assimilé les trois précédents, qui emprunte à l’article des icones  et qui termine une série commencée bien anodinement sur l’optimisation de l’utilisation d’une carte µSD sous SailfishOS. Si vous avez déjà abordé les articles pré-cités, alors vous débarquez en territoire familier.

Petite récréation

On va créer un subvolum SD64 qui sera monté sur /SD64. Alors comment l’exploiter au mieux ? Déjà  copier dans /SD64 les répertoires Documents Downloads Music Pictures Videos , pour finalement  les monter aux endroits idoines du home et d’android. Pour le comment du pourquoi, n’hésitez pas à consulter le tuto.

Pour créer un nouveau sous volume

D’abord, sur votre linux-box,  montons la µSD dans un répertoire de votre choix (/media/sdcard)

mkdir /media/sdcard
mount -o subvolid=0 /dev/mmcblk1 /media/sdcard

puis créons le sous volume : SD64

cd /media/sdcard
btrfs subvolume create SD64 - création du sous-volume :  SD64

en fait, là on vient d’en créer un 3ème :  fini les partitions trop petites ou trop grandes, il ne restera juste qu’un disque plein ou pas encore plein, pour enregistrer tous nos fichiers.Sailfish21

et enfin démontons tout ça

 cd
 umount /media/sdcard
 umount /media/sdcard
 

… et …

Retour de la carte µSD dans le JollaPhoneSailfish22

Ajoutons un espace SD64 :

La suite des opérations nécessitant de passer root, on suppose que vous avez déjà fait le nécessaire pour. rtfmTout d’abord montons les sous volumes SD64 dans un répertoire temporaire :

 devel-su
 Password:
 mkdir -p /SD64
 mount -o subvol=SD64,compress,dirsync,noatime,users /dev/mmcblk1 /SD64

l’idée est de déplacer les répertoires

  • Documents
  • Downloads
  • Music
  • Pictures
  • Videos

sur la µSD, dans le sous-volume SD64.Sailfish11Ce petit script va s’en charger :

for NAME in Documents Downloads Music Pictures Videos
   do
   cp -arf /home/nemo/$NAME /tmp/SD64
done

Il est important de

Monter le « subvolum » SD64 au démarrage

Les services de Systemd sont rangés dans /etc/systemd/system/ où nous allons modifier le fichier  androidsdcard.service, précédemment scripté. En tant que root corrigez ce fichier de la sorte, par exemple

systemctl stop aliendalvik.service
 touch /etc/systemd/system/androidsdcard.service
 cat << !  >/etc/systemd/system/androidsdcard.service
  [Unit]
  Description=Mount µSDCard btrfs subvolume pour Android et Nemo
  ConditionPathExists=/dev/mmcblk1
  ConditionPathIsDirectory=/data/media
  Requires=local-fs.target
  Before=aliendalvik.service
  After=local-fs.target mount-sd@mmcblk1.service
  BindsTo=mount-sd@mmcblk1.service
  [Service]
  Type=oneshot
  RemainAfterExit=yes
  ExecStart=/bin/sh -c '/bin/mount -o subvol=android,compress,dirsync,noatime,users /dev/mmcblk1 /data/media; /bin/mount -o subvol=SD64,compress,dirsync,noatime,users /dev/mmcblk1 /SD64'
  ExecStop=/bin/sh -c 'systemctl stop aliendalvik.service; /bin/umount /data/media; /bin/umount /SD64'
  [Install]
  WantedBy=local-fs.target aliendalvik.service
 !

Sailfish12ils vous faut maintenant ré-enregistrer le service :

systemctl disable androidsdcard.service
systemctl enable androidsdcard.service

avant de redémarrer … capture-viVérifiez dans un terminal que tout c’est bien passé

[nemo@Jolla ~]$ df -h
 Filesystem Size Used Avail Use% Mounted on
 rootfs 14G 6.2G 6.9G 48% /
 /dev/mmcblk0p28 14G 6.2G 6.9G 48% /
 devtmpfs 405M 64K 405M 1% /dev
 tmpfs 406M 416K 406M 1% /dev/shm
 tmpfs 406M 30M 376M 8% /run
 tmpfs 406M 0 406M 0% /sys/fs/cgroup
 tmpfs 406M 28K 406M 1% /tmp
 /dev/mmcblk0p19 7.9M 4.1M 3.9M 52% /drm
 /dev/mmcblk0p18 64M 45M 20M 70% /firmware
 /dev/mmcblk0p28 14G 6.2G 6.9G 48% /home
 /dev/mmcblk0p25 7.9M 4.2M 3.8M 53% /persist
 /dev/mmcblk0p9 48M 7.9M 40M 17% /var/systemlog
 tmpfs 406M 0 406M 0% /mnt/asec
 tmpfs 406M 0 406M 0% /mnt/obb
 /dev/mmcblk1 60G 21G 36G 37% /media/sdcard/a773af90-4417-4bc8-a7dc-47487815a909
 /dev/mmcblk1 60G 21G 36G 37% /data/media
 /dev/mmcblk1 60G 21G 36G 37% /SD64 /dev/fuse 60G 21G 36G 37% /home/nemo/android_storage
 [nemo@Jolla ~]$

Sailfish13que voit-on ?

  • /dev/mmcblk1 est désormais utilisé par /media/sdcard/a7735f90-4417-4bc8-a7dc-b74878154909, /data/media,  /home/nemo/SD64, /home/nemo/android_storage
  • qu’ils accèdent au même espace de stockage, pour une même volumétrie :  /dev/mmcblk1 60G 21G 36G 37%

L’ idée principale est de monter les répertoires Documents Downloads Music Pictures Video hébergés sur /SD64 vers leurs homologues sur /home/nemo et /data/media/SD64. Pour réaliser cette opération nous allons créer une commande SDMount, inspirée du tuto précédent,  dont la fonction sera de positionner /SD64/Pictures sur /home/nemo/pictures (et donc d’écrire et lire sur la µSD) et sur /data/media/SD64/Pictures pour que ces répertoires soient naturellement accessibles d’Android. Et on fera de même pour les répertoires Documents Downloads Music Video. On peut l’enregistrer de cette façon :

 devel-su
 Password:
 touch /usr/local/bin/SDmount
 cat <<! >/usr/local/bin/SDmount
 #!/bin/bash
  CMD=$1
  [ "$CMD" = "mount" ] && {
    for NAME in Documents Downloads Music Pictures Videos
      do
      mkdir -p /data/media/SD64/$NAME
      grep /data/media/SD64/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 1 ] && mount -o bind /SD64/$NAME /data/media/SD64/$NAME
      grep /home/nemo/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 1 ] && mount -o bind /SD64/$NAME /home/nemo/$NAME
    done
  # cp -f /usr/share/SDmount/SDumount.desktop /usr/share/applications/SDAction.desktop
  # cp -f /usr/share/SDmount/images/unmount.png /usr/share/icons/hicolor/86x86/apps/SDAction.png
  }
  [ $CMD = "umount" ] && {
    for NAME in Documents Downloads Music Pictures Videos
      do
      grep /data/media/SD64/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 0 ] && umount /data/media/SD64/$NAME
      grep /home/nemo/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 0 ] && umount /home/nemo/$NAME
  done
  # cp -f /usr/share/SDmount/SDmount.desktop /usr/share/applications/SDAction.desktop
  # cp -f /usr/share/SDmount/images/mount.png /usr/share/icons/hicolor/86x86/apps/SDAction.png
 }
 !
 chmod 750 /usr/local/bin/SDmount

sailfish-dive-tour-cancun_tr55un simple

/usr/local/bin/SDmount mount

en tant que root vous exécutera tous les montages nécessaires, comme un simple

/usr/local/bin/SDmount umount

vous  démonteront les répertoires de SD64. Sailfish20Pour automatiser cela au démarrage, il faudra que ce soit contrôlé par un service  : Homesdcard, conçu à l’image du précédent :

cat<<! > /etc/systemd/system/Homesdcard.service
 [Unit]
  Description=Mount SDCard btrfs subvolume for Home/Documents
  ConditionPathExists=/SD64
  ConditionPathIsDirectory=/home/nemo/SD64
  Requires=local-fs.target
  after=androidsdcard.service
  before=aliendalvik.service
  BindsTo=androidsdcard.service
  RequiresMountsFor=/home/nemo/SD64/Pictures
 [Service]
  Type=oneshot
  RemainAfterExit=yes
  ExecStart=/bin/sh -c '/usr/local/bin/SDmount mount'
  ExecStop=/bin/sh -c '/usr/local/bin/SDmount umount'
 [Install]
  WantedBy=local-fs.target androidsdcard.service
 !

Sailfish4qui sera activé par un

systemctl enable Homesdcard.service

si ce montage vous convient, n’oubliez pas de faire du ménage grâce à ces commandes assez définitives et irrémédiables :

/usr/local/bin/SDmount umount
  for NAME in Documents Downloads Music Pictures Videos
    do
    rm -rf /home/nemo/$NAME/*
 done
  /usr/local/bin/SDmount mount

2015021121412920150211213815

(6,23+21,16=27,39~29003976)

Et voila, désormais, on peut occuper 30GB dans un Home de 14GB , et constater qu’il en reste encore presque 30. Vous êtes en train de maîtriser la science des « seigneurs du temps » : plus grand dedans que dehors !

 

Après c’est selon vos cartes SD : si elle font moins de 24GB, ne déplacez pas les repertoires Documents, etc dessus, si elle en fait plus alors cela peut s’envisager … Surtout qu’il vous reste une réserve sur le Jolla, accessible dès que l’on retire les montages bind entre le subvolum /SD64 et /home/nemo par un SDmount mount, qui peut même être activé directement du home-screen !

Si jamais votre application  « galerie » n’affichait pas tous les documents attendus, le plus simple est rafraichir la base de donnée en lançant cette commande en tant qu’utilisateur standard  nemo :

tracker-control -es

Qui peut bien prendre une bonne minute … ou plus 😉 Exploitez ce tuto pour pouvoir l’activer sans invocation de la commande dans un terminal.

L’autre option pour contourner cet écueil est de sauvegarder la base de donnée lors de l’extinction, pour la restaurer à l’allumage. Les fichiers concernés sont rangés de le répertoire /home/nemo/.cache.

lors du umount :

[ -d /home/nemo/TrackSav ] && mkdir -p /home/nemo/TrackSav/
/usr/bin/rsync -a /home/nemo/.cache/tracker /home/nemo/TrackSav/

lors du mount :

[ -d /home/nemo/TrackSav ] && /usr/bin/rsync -a /home/nemo/TrackSav/ /home/nemo/.cache

instructions à rajouter au fichier SDmount de la sorte :

  [ "$CMD" = "mount" ] && {
    for NAME in Documents Downloads Music Pictures Videos
      do
      mkdir -p /data/media/SD64/$NAME
      grep /data/media/SD64/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 1 ] && mount -o bind /SD64/$NAME /data/media/SD64/$NAME
      grep /home/nemo/$NAME /etc/mtab 2>&1 >/dev/null
      [ $? -eq 1 ] && mount -o bind /SD64/$NAME /home/nemo/$NAME
    done
   [ -d /home/nemo/TrackSav ] && /usr/bin/rsync -a /home/nemo/TrackSav/ /home/nemo/.cache
  }
  [ $CMD = "umount" ] && {
   for NAME in Documents Downloads Music Pictures Videos
     do
     grep /data/media/SD64/$NAME /etc/mtab 2>&1 >/dev/null
     [ $? -eq 0 ] && umount /data/media/SD64/$NAME
     grep /home/nemo/$NAME /etc/mtab 2>&1 >/dev/null
     [ $? -eq 0 ] && umount /home/nemo/$NAME
   done
   [ -d /home/nemo/TrackSav ] && mkdir -p /home/nemo/TrackSav/
   /usr/bin/rsync -a /home/nemo/.cache/tracker /home/nemo/TrackSav/
  }
 
 

Et enfin, l’accès Media Transfer Protocol au jolla est largement perturbé, mais reste accessible via « filezilla » (mode développeur), et puis surtout, y-a moyen de s’amuser : si filezilla le peut, alors vous le pouvez, et sur une linux box il existe une solution alternative à MTP :

cat<<! >/usr/local/bin/sshfs-mount.jolla 
#!/bin/sh
export MOUNTPATH=~/media/jolla
mkdir -p ${MOUNTPATH}
sshfs nemo@192.168.xx.yy:/home/nemo/ ${MOUNTPATH}
!

avant de s’attaquer frontalement à MTP 😉

Bref vivement des 128GO class10 @ 60MO/s à prix raisonnable.

Forum_LINK

bandix400

bandix400

Auteur

Je suis passionné de génétique, d’informatique, de mécanique, et je m’arrête là car je manque déjà de temps pour tout faire ; autrement j’y rajouterais volontiers l’électronique, la musique, l’aquariophilie, le graphisme, le jeu Vidéo (simulation de conduite/FPS) et du ju-jitsu traditionnel.
bandix400

Les derniers articles par bandix400 (tout voir)

4 façons de regarder Youtube sur le RaspberryPi
Passer son N9 en Openmode