2 votes

Répartition du stockage interne du SGH-I717

J'ai rencontré quelques variantes de cette question, mais je n'ai pas trouvé de solution définitive.

J'ai un Samsung Galaxy Note SGH-I717, fonctionnant actuellement sous Android 4.1.2. Le téléphone est annoncé comme ayant une capacité de 16 Go, dont 1,97 Go de "mémoire de l'appareil" et 10,84 Go de "stockage USB".

Comment puis-je augmenter la partition "mémoire de l'appareil" au détriment de la partition "stockage USB" ?

J'ai cru comprendre que j'aurais besoin d'un fichier PIT, mais je ne sais pas où je peux l'obtenir. Idéalement, je voudrais que le stockage interne soit divisé en deux partitions égales.

2 Go pour le stockage des applications est loin d'être suffisant, et je ne sais pas pourquoi Samsung impose de telles limites arbitraires.

Je suis également ouvert à d'autres suggestions. L'installation de Cyanogenmod permettrait-elle de modifier ces partitions, ou cela est-il contrôlé à un niveau encore plus bas ?

Gracias.

5voto

Marc Points 51

Désolé, je n'ai pas de réponse définitive à vous donner, mais j'ai quelques informations qui peuvent vous mettre sur la voie.

Vous pouvez utiliser diverses applications Apps2SD, TitaniumBackup ou le gestionnaire d'applications intégré pour déplacer certaines applications vers la partition de 10 Go. Les applications qui fonctionnent en permanence (processus d'arrière-plan, widgets, etc.) doivent rester sur la partition de 2 Go.

J'ai possédé 3 appareils Android et je me souviens avoir repartitionné l'un d'entre eux une fois, je crois que c'était le GT-P1000 en passant d'Android 1.x à 2.3. Je suivais un guide et je ne comprenais pas très bien ce que je faisais, je suivais juste les instructions étape par étape... Je sais que le repartitionnement était nécessaire car jusque là mes ROMs étaient toutes pour un système de fichiers basé sur RFS et je faisais la transition vers ext4 pour améliorer les performances du kernel. Je pense qu'ils ont également réduit /system (ROM) pour donner plus d'espace à /data (Apps).

Tout d'abord, familiarisez-vous avec XDA. Toutes les réponses dont j'ai eu besoin s'y trouvent. Je sais que tous les éléments nécessaires à la réalisation de votre projet s'y trouvent, mais peut-être pas rassemblés dans un seul fil de discussion. J'ai appris toutes ces choses au cours des 4 dernières années, et j'ai une expérience professionnelle en programmation et en administration de système depuis plus de 15 ans avant cela - il vous faudra peut-être un peu de temps pour tout assimiler.

Deuxièmement, oui, absolument, c'est possible Il n'est peut-être pas pratique. Vous pouvez soit modifier un fichier PIT, soit le faire avec fdisk via ADB en mode récupération.

Vous parlez de redimensionnement du NTFS, mais sachez que le format du système de fichiers est indépendant de votre table de partition. Dans le monde PC, vous pouvez avoir jusqu'à 4 partitions sur un disque dur, et vous pouvez mélanger FAT16, FAT32, NTFS sur chaque partition autant que vous le souhaitez. La première partition primaire se présente sous la forme C:\Npuis D:\Npuis les partitions logiques (Win9x et DOS ne supportaient qu'une seule partition primaire, les autres devaient être des partitions étendues avec 1 à 4 partitions logiques à l'intérieur de la partition étendue).

Le redimensionnement d'une partition n'entraîne pas le redimensionnement d'un système de fichiers. La plupart des outils de disque modernes effectuent les deux étapes en un seul clic, mais il s'agit tout de même de deux étapes. De plus, tous les systèmes de fichiers ne prennent pas en charge le redimensionnement, certains ne peuvent que croître, d'autres peuvent rétrécir et croître. Il existe également des outils tiers qui peuvent redimensionner des formats non redimensionnables (PartitionMagic).

Comme vous mentionnez NTFS, je présume que vous êtes un utilisateur de Windows, mais si vous êtes familier avec Unix (et donc Linux), il vous sera plus facile de suivre. Voici une traduction de haut niveau :

HardDisk1 (primary master) on a PC will show up as /dev/hda in Linux x86.
HardDisk2 (primary slave) is /dev/hdb
HD3 (secondary master) is /dev/hdc
HD4 (secondary slave) is /dev/hdd
SCSI, SATA and USB disks might be /dev/sda, /dev/sdb, ...

Les partitions sont subordonnées aux lecteurs :

HD1, Part1 = /dev/hda1
HD1, Part2 = /dev/hda2
HD1, Part3 = /dev/hda3
HD2, Part1 = /dev/hdb1
HD2, Part2 = /dev/hdb2

Ensuite, vous placez un système de fichiers sur vos partitions et vous les montez.

Fenêtres :

HD1,P1::NTFS, mounted as C:\
HD2,P1::ExFAT, mounted as D:\

Linux x86 :

/dev/hda1::ext3 mounted as /
/dev/hda2::JFS mounted as /usr
/dev/hdb1::ExFAT, mounted as /data

De plus, la table de partition contient un indice indiquant le type de système de fichiers, mais les deux ne correspondent pas toujours. Ce n'est pas parce que la table de partition indique que /dev/hdb1 est de type 0x07 que la table de fichiers est en réalité NTFS. Un bon système d'exploitation devrait comparer les deux et refuser de monter le système de fichiers, et un bon outil de formatage devrait mettre à jour la table de partition, mais pas toujours... Samsung ou Android sont connus pour attribuer des types de partition apparemment arbitraires pour indiquer la fonction plutôt que le système de fichiers. Je suis sûr qu'il y a une rime et une raison quelque part, mais je n'en ai aucune idée.

Android possède plusieurs partitions, les trois premières sont primaires, la quatrième est étendue et contient jusqu'à 30 partitions logiques. Chacune a une fonction spécifique et il existe de nombreuses FS différentes, certaines connues et d'autres propriétaires.

Le stockage intégré de 16 Go est équivalent au /dev/hda de x86, mais il s'appelle /dev/block/mmcblk0.

La première carte SD est /dev/mmcblk1 et ainsi de suite. Les partitions de chaque "disque" sont ...p1, ...p2, ...p3 et ainsi de suite.

Chaque fournisseur de produit et chaque appareil a son propre schéma de répartition des partitions.

Voir http://forum.xda-developers.com/showthread.php?t=1959445

Le i717 utilise le schéma suivant, je ne sais pas ce que tout signifie, mais j'en connais la majeure partie (j'ai obtenu cela en combinant "df" & "fdisk -l /dev/block/mmcblk0" d'Android et "heimdall print-pit" de MacOS en mode téléchargement) :

/dev/block/mmcblk0 <-- entire 16GB 'disk'
/dev/block/mmcblk0boot0 - ???
/dev/block/mmcblk0boot1 - ???
/dev/block/mmcblk0p1 - SMD_HDR - Primary boot loader
/dev/block/mmcblk0p2 - SBL1 - Secondary boot loader #1, your flash counter sits in here
/dev/block/mmcblk0p3 - SBL2
/dev/block/mmcblk0p4 - Extended Partition, container for the following logical partitions
/dev/block/mmcblk0p5 - RPM
/dev/block/mmcblk0p6 - SBL3
/dev/block/mmcblk0p7 - ABOOT
/dev/block/mmcblk0p8 - BOOT
/dev/block/mmcblk0p9 - TZ
/dev/block/mmcblk0p10 - SSD
/dev/block/mmcblk0p11 - PIT
/dev/block/mmcblk0p12 - PARAM
/dev/block/mmcblk0p13 - MODEM - 100MB /firmware vfat (baseband modem part 1)
/dev/block/mmcblk0p14 - MSM_ST1
/dev/block/mmcblk0p15 - MSM_ST2
/dev/block/mmcblk0p16 - MSM_FSG
/dev/block/mmcblk0p17 - 100MB /system/etc/firmware/misc_mdm vfat (modem part 2)
/dev/block/mmcblk0p18 - M9K_EFS1
/dev/block/mmcblk0p19 - M9K_EFS2
/dev/block/mmcblk0p20 - M9K_FSG
/dev/block/mmcblk0p21 - DEVENC - 10MB /efs ext4 - individual info like IMEI and Encryption
/dev/block/mmcblk0p22 - RECOVERY - 10MB  - Recovery, ClockWorkMod or TWRP
/dev/block/mmcblk0p23 - FOTA
/dev/block/mmcblk0p24 - SYSTEM - 1GB /system ext4
/dev/block/mmcblk0p25 - USERDATA - 2GB /data ext4
/dev/block/mmcblk0p26 - CACHE - 300 MB /cache 
/dev/block/mmcblk0p27 - TOMBSTONES - crash dump area?
/dev/block/mmcblk0p28 - UMS 10GB /sdcard user's playground (usually a vold virtual device)

Ainsi, votre partition de 2 Go est /dev/block/mmcblk0p25 et votre partition de 10 Go est /dev/block/mmcblk0p28.

Faire ce que vous voulez tout en préservant les données n'est pas vraiment possible, mais j'ai déjà fait quelque chose de similaire sur x86 comme suit :

first you have to shrink the filesystem on /dev/block/mmcblk0p28,
then shrink the partition,
then move the partition to the end of the disk,
then move p27 to end just before p28 starts,
move p26 to butt up against p27,
grow partition p25 to fill the empty space in front on p26,
then extended filesystem on p25 to fill the partition...

En réalité, il n'existe pas d'outils facilement disponibles pour faire tout cela. Une méthode plus pratique :

1 You'll have to back up the contents of p25, p26, p27 and p28 to external SD,
2 rebuild the partition table with the new boundaries,
3 create new filesystems on each,
4 then restore data onto each.

Il s'agit en fait d'une réinitialisation d'usine, la ROM devrait rester intacte. Si je devais le faire, je le ferais :

0 insert a brand new 32GB sd card into the note
1 boot to recovery
2 connect with adb shell
3 mount /dev/block/mmcblk1p1 to /external_sd
4 mount /dev/block/mmcblk0p25 to /data
5 mount /dev/block/mmcblk0p28 to /sdcard
6 tar /data to /external_sd/data.tar
7 tar /sdcard to /external_sd/sdcard.tar
8 unmount /data and /sdcard
9 use fdisk to rebuild partitions p25, p26, p27 & p28 where p25 is bigger, p26 & p27 are moved and p28 is smaller
10 make new filesystems on all four p25-p28
11 mount /data and /sdcard again
12 untar /external_sd/data.tar to /data
13 untar /external_sd/sdcard.tar to /sdcard
14 pray
15 reboot

Voici la table de partition complète :

~ # fdisk -ul /dev/block/mmcblk0

Disk /dev/block/mmcblk0: 15.7 GB, 15758000128 bytes
1 heads, 16 sectors/track, 1923584 cylinders, total 30777344 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1               1      204800      102400  92 Unknown
  Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2   *      204801      205800         500  4d Unknown
  Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3          205801      208800        1500  51 Unknown
  Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4          208801    30777343    15284271+  5 Extended
  Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5          212992      213991         500  47 Unknown
/dev/block/mmcblk0p6          221184      225279        2048  45 Unknown
/dev/block/mmcblk0p7          229376      234375        2500  4c Unknown
/dev/block/mmcblk0p8          237568      258047       10240  48 Unknown
/dev/block/mmcblk0p9          262144      263143         500  46 Unknown
/dev/block/mmcblk0p10         270336      271335         500  5d Unknown
/dev/block/mmcblk0p11         278528      279527         500  91 Unknown
/dev/block/mmcblk0p12         286720      307199       10240  93 Unknown
/dev/block/mmcblk0p13         311296      511999      100352   c Win95 FAT32 (LBA)
/dev/block/mmcblk0p14         516096      522239        3072  4a Unknown
/dev/block/mmcblk0p15         524288      530431        3072  4b Unknown
/dev/block/mmcblk0p16         532480      538623        3072  58 Unknown
/dev/block/mmcblk0p17         540672      741375      100352  8f Unknown
/dev/block/mmcblk0p18         745472      751615        3072  59 Unknown
/dev/block/mmcblk0p19         753664      759807        3072  5a Unknown
/dev/block/mmcblk0p20         761856      767999        3072  5b Unknown
/dev/block/mmcblk0p21         770048      790527       10240  ab Darwin boot
/dev/block/mmcblk0p22         794624      815103       10240  60 Unknown
/dev/block/mmcblk0p23         819200      839679       10240  94 Unknown
/dev/block/mmcblk0p24         843776     2940927     1048576  a5 FreeBSD
/dev/block/mmcblk0p25        2940928     7139327     2099200  a6 OpenBSD
/dev/block/mmcblk0p26        7143424     7761919      309248  a8 Darwin UFS
/dev/block/mmcblk0p27        7766016     8030207      132096  a9 NetBSD
/dev/block/mmcblk0p28        8036352    30777343    11370496  90 Unknown

J'allais décrire ce que vous pourriez faire avec fdisk, mais je vois que la table de partition existante laisse des espaces inégaux entre chaque partition - cela me dérange parce que je ne sais pas pourquoi. Traditionnellement, sur un disque, vous créeriez chaque partition en commençant 1 secteur après la précédente. Cependant, la taille des partitions est toujours alignée sur les limites des cylindres, donc peut-être que chaque nouvelle partition commence sur une limite (multiples de puissances de 2 ?) même si la partition précédente ne se termine pas sur une limite ? ?? Les espaces sont tous (multiples de 1024) plus 1, mais jusqu'à ce que je sache quelle est la règle pour créer un espace, je ne toucherais pas aux partitions... Est-ce que cela signifie que je peux agrandir la partition précédente de 1024, 2048, 3192, 4096, ... blocs ? Est-ce que le système utilise sournoisement cet espace vide à des fins non documentées ? qui sait ?

Sidebar : Vous demandez si l'installation de CyanogenMod aiderait ou si c'est plus bas. Les partitions sont à peu près aussi basses que possible, il y a les chargeurs de démarrage, le noyau, la ROM (Cyanogen, ParanoidAndroid, etc.), puis l'espace utilisateur comme /data, /sdcard et /external_sd. Le démarrage en mode de récupération est un peu comme le démarrage d'une image LiveCD d'un système d'exploitation sans disque où l'ensemble du système est chargé dans la RAM. De cette manière, vous pouvez faire ce que vous voulez sur le disque dur : sauvegarder, formater, partitionner, restaurer, redimensionner, disséquer, cloner, etc. ; ensuite, tant que vous avez tout remis en place correctement, vous pouvez redémarrer dans votre système d'exploitation d'origine.

Quant à la raison pour laquelle Samsung a choisi cette limite arbitraire de 2 Go, il s'agit d'une question de compatibilité ascendante datant de l'époque où les puces de mémoire de 2 Go étaient les plus grandes que l'on pouvait obtenir, et dans un appareil, il y avait 2 puces de 2 Go. La première puce avait des partitions pour les chargeurs de démarrage, le noyau, Root(/), /usr et la ROM /system - et était en LECTURE SEULE du système d'exploitation en cours d'exécution pour empêcher les utilisateurs de casser l'appareil ; la deuxième puce était montée en LECTURE / LARGE sur /data pour permettre aux utilisateurs d'installer des applications et des paramètres. C'était l'Android de base utilisant le stockage intégré. Si vous vouliez plus d'espace, vous pouviez utiliser une carte SD que vous placiez dans un emplacement, et qui était montée sur /sdcard. Lorsque les puces sont devenues plus grandes et moins chères, Samsung est resté fidèle à la conception de base et vous a donné 12 Go (10 utilisables) de stockage interne en le présentant comme /sdcard, puis ils ont ajouté le stockage externe et ont créé /external_sd. Cela a causé beaucoup de confusion, et certaines ROMs montaient la carte SD externe comme /sdcard et montaient les 12GB comme quelque chose d'autre comme /emmc. Sauter des ROMs à l'époque était pénible si vous échangiez entre des développeurs qui suivaient des paradigmes différents. Aujourd'hui, c'est devenu plus standard avec /storage/sdcard0, sdcard1, etc. et les applications sont conçues dans cette optique, laissant les utilisateurs choisir la carte SD à utiliser plutôt que de supposer que /sdcard ou /emmc existent sous la bonne forme.

Dans l'ensemble, je suis d'accord que 2GB est trop petit pour /data, je suis constamment en train de déplacer des applications vers SD et d'intégrer les mises à jour de google app dans la ROM. Je ne pense pas que j'irais jusqu'à l'égalité, et je sais que je ne les combinerais pas en un seul gros /data et que je n'aurais qu'une carte SD externe comme /sdcard - à l'ancienne... Peut-être 4 Go pour /data et 8 Go pour /sdcard...

Quoi qu'il en soit, bonne chance.

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