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