Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/02/2014, à 18:49

zodd

Agrandir file system mounté dans un device loop

Bonjour,

j'ai une image d'un système qui fait 2Go .. hors je manque de place dessus lorsque je la monte en device loop et que je chroot dessus:

file armhf.img   
armhf.img: x86 boot sector; partition 1: ID=0x1, active, starthead 32, startsector 2048, 2048 sectors; partition 2: ID=0x83, starthead 65, startsector 4096, 3747840 sectors, code offset 0x0  
  
$sudo mount -t ext4 -o loop,offset=2097152 armhf.img fs  
$cd fs && ls   
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var 

un df -h me montre que je suis déjà à 79% d'utilisation.. donc en gros j'aimerai par exemple étendre mon image à 3Go..

j'ai tenté un fdisk pour redimensionner la partition et faire un resize2fs ensuite mais en fait  ça me donne ça comme message;

root@VB:/# fdisk /dev/loop0
Unsupported ioctl: cmd=0x1268
Unsupported ioctl: cmd=0x1268
Unsupported ioctl: cmd=0x1268
Unsupported ioctl: cmd=0x5331
Unsupported ioctl: cmd=0x127a
Unsupported ioctl: cmd=0x1268
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xf5e15531.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): 

en gros comment grossir mon fichier armhf.img ? ^^

Edit: il semblrai que je puisse directement faire un fdisk armhf.img

ça me donne ça :

fdisk -l armhf.img 

Disque armhf.img : 1920 Mo, 1920991232 octets
255 têtes, 63 secteurs/piste, 233 cylindres, total 3751936 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x80008000

Périphérique Amorçage  Début         Fin      Blocs    Id. Système
armhf.img1   *        2048        4095        1024    1  FAT12
armhf.img2            4096     3751935     1873920   83  Linux

du coup il doit y avoir possibilité avec dd par exemple d'ajouter 1 Go à la suite par exemple pour pouvoir agrandir la partition 2 ... non?
donc un truc comme ça :
dd if=/dev/zero of=armhf.img  bs=1M seek=1873920 count=1000000

Dernière modification par zodd (Le 13/02/2014, à 19:18)

Hors ligne

#2 Le 14/02/2014, à 20:37

jamesbad000

Re : Agrandir file system mounté dans un device loop

Hello,

Vu que ton image disque est partitionnée, tu te simplifierais la vie en montant ton image disque comme un disque. (évite d'avoir à indiquer l'emplacement de la partition)
avec losetup puis partprobe.
Ensuite tu accède à ton disque sous la forme /dev/loopX et tes partions sous la forme /dev/loopXpY

Pour agrandir ton image disque, ajouter conv=notrunc
Cette option évite la suppression des données du fichier existant

Je viens de tester avec une image de 10Mo puis agrandissement à 20Mo comme ceci :

red@Acer-Extensa-5630:~$ sudo dd if=/dev/zero of=disk1.img bs=1M count=10
10+0 enregistrements lus
10+0 enregistrements écrits
10485760 octets (10 MB) copiés, 0,136903 s, 76,6 MB/s

fred@Acer-Extensa-5630:~$ sudo losetup -f --show disk1.img
/dev/loop0

fred@Acer-Extensa-5630:~$ sudo parted /dev/loop0 mktable  msdos
Information: Ne pas oublier de mettre à jour /etc/fstab si nécessaire.  

fred@Acer-Extensa-5630:~$ sudo parted /dev/loop0 mkpart primary fat32 63s $((1024*9))s
Avertissement: L'alignement de la partition ainsi définie n'est pas optimal au niveau performance.
Ignorer/Ignore/Annuler/Cancel? Ignore
Information: Ne pas oublier de mettre à jour /etc/fstab si nécessaire.    

fred@Acer-Extensa-5630:~$ sudo mkfs.ext4 /dev/loop0p1
mke2fs 1.42 (29-Nov-2011)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
2432 i-noeuds, 9696 blocs
484 blocs (4.99%) réservés pour le super utilisateur
Premier bloc de données=1
Nombre maximum de blocs du système de fichiers=9961472
2 groupes de blocs
8192 blocs par groupe, 8192 fragments par groupe
1216 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
        8193

Allocation des tables de groupe : complété                        
Écriture des tables d'i-noeuds : complété                        
Création du journal (1024 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

fred@Acer-Extensa-5630:~$ sudo lsblk --o "SIZE" -f
  SIZE NAME                  FSTYPE  LABEL          MOUNTPOINT
   10M loop0                                        
  9,5M └─loop0p1                       

fred@Acer-Extensa-5630:~$ sudo mount /dev/loop0p1 /mnt

fred@Acer-Extensa-5630:~$ sudo sh -c "echo 'données de test' > /mnt/fichierTest"

fred@Acer-Extensa-5630:~$ cat /mnt/fichierTest 
données de test

fred@Acer-Extensa-5630:~$ sudo umount /mnt

fred@Acer-Extensa-5630:~$ sudo losetup -d /dev/loop0

fred@Acer-Extensa-5630:~$ sudo dd if=/dev/zero of=disk1.img bs=1M seek=10 count=10 conv=notrunc
10+0 enregistrements lus
10+0 enregistrements écrits
10485760 octets (10 MB) copiés, 0,137373 s, 76,3 MB/s


fred@Acer-Extensa-5630:~$ sudo losetup -f disk1.img

fred@Acer-Extensa-5630:~$ sudo partprobe

fred@Acer-Extensa-5630:~$ sudo parted /dev/loop0 rm  1 
Information: Ne pas oublier de mettre à jour /etc/fstab si nécessaire.    


fred@Acer-Extensa-5630:~$ sudo parted /dev/loop0 mkpart primary fat32 63s $((1024*39))s
Avertissement: L'alignement de la partition ainsi définie n'est pas optimal au niveau performance.
Ignorer/Ignore/Annuler/Cancel? Ignore                                     
Information: Ne pas oublier de mettre à jour /etc/fstab si nécessaire.    


fred@Acer-Extensa-5630:~$ sudo resize2fs /dev/loop0p1
resize2fs 1.42 (29-Nov-2011)
SVP exécutez « e2fsck -f /dev/loop0p1 » d'abord.


fred@Acer-Extensa-5630:~$ sudo e2fsck -f /dev/loop0p1
e2fsck 1.42 (29-Nov-2011)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/loop0p1 : 12/2432 fichiers (8.3% non contigüs), 1426/9696 blocs

fred@Acer-Extensa-5630:~$ sudo resize2fs /dev/loop0p1
resize2fs 1.42 (29-Nov-2011)
En train de redimensionner le système de fichiers sur /dev/loop0p1 à 19936 (1k) blocs.
Le système de fichiers /dev/loop0p1 a maintenant une taille de 19936 blocs.


fred@Acer-Extensa-5630:~$ sudo mount /dev/loop0p1 /mnt

fred@Acer-Extensa-5630:~$ sudo df -H
Sys. de fichiers      Taille Utilisé Dispo Uti% Monté sur
(...)
/dev/loop0p1             20M    1,2M   18M   7% /mnt

fred@Acer-Extensa-5630:~$ cat /mnt/fichierTest 
données de test

ps j'ai créé une partition avec un flag fat que j'ai en fait formaté en ext4. La contradiction est sans importance. Car le flag, linux n'en a rien à faire.

ps 2: pour agrandir la partition, je l'ai supprimé, puis recréée au même emplacement de départ. Car l'option resize ou move de parted cherche à agrandir en même temps le système de fichier, et ne sait pas manipuler l'ext4 (sans parler des messages précisant que ces fonctions ne sont pas fiables)

Dernière modification par jamesbad000 (Le 14/02/2014, à 20:41)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#3 Le 14/02/2014, à 23:16

zodd

Re : Agrandir file system mounté dans un device loop

Merci pour ta réponse, ça va bien m'aider ^^
j'avais réussi à agrandir la taille de mon fichier d'un giga  avec
dd if=/dev/zero of=armhf.img  bs=1 seek=1873920 count=1G

et ensuite avec fdisk j'avais supprimé la partition 2 (il y a deux partitions dans mon image) et à la recréer en prenant toute la taille du fichier, mais je n'avais pas réussit à utiliser resize2fs car je n'arrivais pas à ne sélectionner que la deuxième partition /dev/loop0p2 une fois chrooté dans mon file system ..

en tout cas merci encore^^

Hors ligne