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 !
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.
et enfin démontons tout ça
cd
umount /media/sdcard
umount /media/sdcard
… et …
Retour de la carte µSD dans le JollaPhone
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. Tout 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.Ce 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
!
ils vous faut maintenant ré-enregistrer le service :
systemctl disable androidsdcard.service
systemctl enable androidsdcard.service
avant de redémarrer … Vé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 ~]$
- /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
/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. Pour 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
!
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
(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.
bandix400
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.
Les derniers articles par bandix400 (tout voir)
- SonyX’2, le retour de la vengeance du fils caché … - 27 janvier 2018
- SFOS, mais en VO - 31 octobre 2017
- Sony’X, où Sailfish X sur Xperia X - 3 octobre 2017