postmarketOS

Utiliser Docker sur un Xiaomi Redmi 4x

Posted by

Je viens de récupérer un Xiaomi Redmi 4X, le téléphone fonctionne bien mais les boutons situés en bas du téléphone ne répondent plus. Ce téléphone existe en trois versions différente, il peut avoir 2, 3 ou 4Go de mémoire vive, ce qui sera assez pour faire un mini serveur. Ma version possède 3Go de mémoire vive et 32Go de stockage interne.

Préparation

Matériel requis

  • Un ordinateur avec un système GNU/Linux
  • Un cable micro USB
  • Un Redmi 4X, nom de code Santoni, avec le bootloader déverrouillé

Logiciel

Installez pmbootstrap en suivant le guide officiel sur votre ordinateur. Auparavant vous aurez besoin de git, si cela n’est pas spécifié, les commande doivent être executées sur votre ordinateur.

Préparation de Postmarket OS

Pour utiliser Docker sur notre téléphone, nous allons remplacer Android par postmarketOS. Ce système d’exploitation, basé sur Alpine Linux est simple et minimaliste.

Téléchargeons le projet

pmbootstrap init

Répondez aux questions :

Enter to use the default Work path
Channel: edge
Vendor: xiaomi
Device codename: santoni
Enable this package: y
Username: votre nom d'utilisateur
User interface: none (Nous n'en avons pas besoin pour un serveur)
Change boot partition size: n
Extra packages: none
Timezone: changez la si besoin, sinon entrez "y"
Device hostname: le nom de votre futur serveur
Build outdated packages: y

Remplacez le fichier ~/.local/var/pmbootstrap/cache_git/pmaports/device/testing/linux-xiaomi-santoni/config-xiaomi-santoni.aarch64 par le contenu du fichier suivant :

Ouvrez le fichier ~/.local/var/pmbootstrap/cache_git/pmaports/device/testing/linux-xiaomi-santoni/APKBUILD et ajoutez les lignes suivantes à la fonction « build« .

make ARCH="$_carch" CC="${CC:-gcc}" CFLAGS_MODULE="-fno-pic" \
       KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" modules

Dans la fonction « package« , ajoutez :

cd "$builddir"
unset LDFLAGS
make ARCH="$_carch" CC="${CC:-gcc}" \
   KBUILD_BUILD_VERSION="$((pkgrel + 1))-postmarketOS" \
   INSTALL_MOD_PATH="$pkgdir" INSTALL_MOD_STRIP=1 \
   modules_install

Nous allons maintenant configurer pmbootstrap pour activer nos modifications et compiler notre nouveau kernel.

pmbootstrap pkgrel_bump linux-xiaomi-santoni
pmbootstrap checksum linux-xiaomi-santoni
pmbootstrap kconfig check -f
pmbootstrap build linux-xiaomi-santoni --force

Flashez votre téléphone

Appuyez simultanément sur le bouton volume bas et le bouton power pour démarrer en mode Fastboot et connectez votre téléphone à votre ordinateur.

pmbootstrap install

Flashons le téléphone

pmbootstrap flasher flash_rootfs
pmbootstrap flasher flash_kernel

Redémarrez le téléphone

Installation de Docker

Connectez vous à votre téléphone en utilisant ssh

ssh user@172.16.42.1

Configurez la connexion Wifi

sudo nmcli --ask dev wifi connect

Installez docker, activez les cgroups et activez tous les dameons au démarrage.

sudo apk add docker
sudo rc-update add cgroups
sudo rc-update add docker
sudo service cgroups start
sudo service docker start

Nous pouvons maintenant vérifier que Docker fonctionne.

xiaomi-santoni:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Partitions

Le système a été flashé sur un partition de 3Go, il y a donc beaucoup de place inutilisée. Executez la commande suivante et renetez le nom de la partition la plus grosse (/dev/mmcblk0p49 dans mon cas).

sudo fdisk -l

Formatez là en ext4 (n’oubliez pas d’adapter à votre cas).

mkfs.ext4 /dev/mmcblk0p49

Notre partition est maintenant prête à être utilisez. Vous pouvez configurez le montage en utilisant le fichier /etc/fstab file, quelques suggestions:

  • /home
  • /var/lib/docker
  • /var/log

Vous pouvez aussi la partager et adapter le partitionnement à vos besoins. Pour avoir plus de stockage, vous pouvez aussi ajouter une carte micro sd.

Conclusion

Nous avons installé postmarketOS et Docker sur notre téléphone. Laissez un commentaire sur la façon dont vous pensez l’utiliser. De mon coté, je pense faire tourner quelques service et potentiellement un serveur d’intégration pour mon code.

Bugs rencontrés :

  • Le téléphone doit être démarré avant d’être connecté à l’ordinateur
  • htop montre un load average de 4 au minimum, même si aucun service n’est démarré
  • Difficile d’éteindre le téléphone, pour cela je dois déconnecter le cable d’alimentation, me connecter en SSH et lancer la commande poweroff

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *