0 votes

Carte SD Partitions multiples Accès USB

Je veux diviser ma carte SD en 2 partitions : une pour Android, et une contenant un système d'exploitation amorçable utilisé à partir d'ordinateurs via USB ou en l'insérant dans des lecteurs de cartes. Je ne peux pas accéder à la seconde partition depuis l'USB !

Specs :

  • Téléphone : motorola defy+
  • Système : CynogenMod 10 (Android 4.1.2)
  • Disposition de la carte SD :
    1. FAT32 primaire, 1 Go, destiné à Android uniquement (données des applications)
    2. Primaire EXT4, 15Go, invisible depuis Android destiné aux ordinateurs (système linux bootable)

Statut actuel :

  • Tout fonctionne avec un lecteur de carte SD d'ordinateur portable : Je peux monter et parcourir les partitions FAT32 et EXT4. Je peux démarrer à partir de la carte SD et démarrer sur le linux que j'ai installé sur la partition ext.
  • Du téléphone : Android peut monter et accéder à la partition FAT32, la partition ext4 est invisible comme je le souhaite.
  • Problème de l'USB : Lorsque j'accède à la carte du téléphone depuis un ordinateur via USB (Android est configuré comme périphérique de stockage de masse USB), je ne peux accéder qu'à la partition FAT32.

Ma question :

Android semble n'exposer que la première partition en tant que périphérique de bloc via USB. Je ne peux donc pas accéder à la deuxième partition, ni même la voir avec les outils de partitionnement. Évidemment, le démarrage à partir de celle-ci ne fonctionne pas non plus. Puis-je faire en sorte qu'Android expose la totalité de la carte SD en tant que périphérique de bloc via USB, de sorte que toutes les partitions soient visibles depuis un ordinateur et que je puisse démarrer dessus.

Toute aide ou indication sera appréciée, merci !

2voto

Sergey Vlasov Points 2739

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 :

  1. 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).

  2. 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).
  3. 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
  4. 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).

  5. 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).

  6. Écrivez l'image créée sur le disque entier exposé par votre téléphone :

    dd if=fat.img of=/dev/sdX bs=1M
  7. 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.

  8. Faites une copie de sauvegarde du secteur MBR+FAT :

    dd if=/dev/sdX of=mbr_fat_backup.bin bs=512 count=1
  9. 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.

0voto

forums Points 840

Il se peut que vous ne puissiez le faire que par l'intermédiaire de l'application Recovery en utilisant le Mount USB Storage fonction. Elle est présente dans toutes les restaurations personnalisées. La raison plausible pour laquelle vous ne pouvez pas accéder à la partition EXT4 dans Android est qu'elle peut être montée et utilisée par Cyanogenmod. Vous pourriez être en mesure de démonter de force la partition EXT4 dans la fonction Recovery sur le Mount et décocher le montage correspondant, si le noyau le supporte.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X