Vous pouvez essayer d'utiliser le hack MBRFAT - le premier secteur qui ressemble à la fois à un secteur de démarrage FAT et à une table de partition MBR. De telles images peuvent être créées par le programme makebootfat utilitaire.
Je n'ai pas essayé de le faire en réalité, mais en théorie vous devriez faire ce qui suit :
-
Créer un files
répertoire qui doit contenir les fichiers à placer dans l'image du système de fichiers FAT32 (il peut être vide).
-
Localisez les fichiers suivants :
-
mbrfat.bin
- doit être contenue dans le makebootfat
paquet ;
-
ldlinux.sys
y ldlinux.bss
- proviennent de la Syslinux 3.x (utilisez une version 3.x, je ne suis pas sûr que le paquet makebootfat
est compatible avec les versions plus récentes).
-
Créez un fichier pour l'image du système de fichiers FAT32 avec la taille souhaitée de la partie FAT32 :
dd if=/dev/zero of=fat.img bs=1M count=1024
-
Créez l'image du système de fichiers FAT32 avec MBRFAT :
makebootfat -o fat.img -m mbrfat.bin -b ldlinux.bss -c ldlinux.sys -F -Y -v files/
(Notez que le fait de placer ldlinux.sys
dans le files/
ne fonctionne pas - il doit être copié avec l'option -c
option).
-
Mettez votre carte dans le téléphone et attachez-la à vos ordinateurs comme UMS (si vous travaillez avec un lecteur de carte, il vous sera difficile de monter des partitions imbriquées).
-
Écrivez l'image créée sur le disque entier exposé par votre téléphone :
dd if=fat.img of=/dev/sdX bs=1M
-
Créez vos partitions supplémentaires sur le même périphérique que celui sur lequel vous avez écrit l'image. Si vous voulez placer le chargeur de démarrage sur la partition EXT4 au lieu d'utiliser SYSLINUX sur la partition FAT32, marquez votre partition EXT4 active et retirez le drapeau actif de la partition FAT32.
-
Faites une copie de sauvegarde du secteur MBR+FAT :
dd if=/dev/sdX of=mbr_fat_backup.bin bs=512 count=1
-
Installez Linux sur la partition EXT4, en faisant très attention à ne pas installer le chargeur de démarrage sur le MBR du disque. Certains installateurs ne prennent pas en charge l'installation du chargeur de démarrage dans les secteurs de démarrage de la partition ; dans ce cas, il faut soit sauter l'installation du chargeur de démarrage et l'installer manuellement plus tard, soit (si le saut n'est pas possible) restaurer le secteur MBR+FAT à partir de la sauvegarde après l'installation, puis installer le chargeur de démarrage dans le secteur de démarrage de la partition. Vous pouvez également configurer SYSLINUX sur la partition FAT32 comme votre chargeur de démarrage (pour cela, vous devrez copier le noyau et l'image initramfs sur la partition FAT32).
Cette configuration fonctionnerait comme suit :
- Android verra le contenu de la partition externe comme une partition FAT32, bien que le nombre de secteurs du système de fichiers soit inférieur à la taille de la partition. Le noyau Linux sur l'appareil Android n'essaiera pas d'analyser la table de partition imbriquée, par conséquent la partition EXT4 imbriquée ne sera pas accessible à partir de là.
- Lorsqu'Android expose le contenu de la partition comme un périphérique de stockage de masse USB, le système d'exploitation de l'ordinateur hôte analysera le secteur 0 du périphérique exposé comme une table de partition MBR, et y verra plusieurs partitions. Pour la partition FAT32, il utilisera un autre secteur comme secteur de démarrage contenant la BPB FAT32 ; cette copie de la BPB contiendra une valeur plus petite dans le champ "nombre de secteurs réservés", de sorte que la FAT et les clusters de données se retrouveront dans les mêmes secteurs physiques que lors de l'utilisation de la BPB dans le secteur 0 de la partition externe.
Le problème avec cette configuration est que l'accès à la partition EXT4 lors de l'utilisation de la carte dans un lecteur de carte ne sera pas possible, sauf si vous utilisez des utilitaires comme kpartx
pour exposer des partitions imbriquées. Le démarrage lors de l'utilisation d'un lecteur de carte pourrait fonctionner si vous créez une autre partition sur la carte directement et y installez un chargeur de démarrage (avec une copie séparée du noyau et des images initramfs) ; notez que cette partition ne sera pas accessible lors de l'utilisation du téléphone.
En outre, mbrfat.bin
est quelque peu bogué, et certains ordinateurs ne démarrent pas lorsqu'ils l'utilisent.