Ouverture d'une partition chiffrée depuis un live-usb. (requested offset is beyond real size of device)

Bonjour,

Mon ordinateur ne veut plus démarrer, j’ai donc booté sur une live-usb et j’essaye d’accéder à ma partition principale (chiffrée). J’ai pu accéder au deuxième disque dur (non-chiffré)

Error unlocking /dev/sdg2: Command-line `cryptsetup luksOpen "/dev/sdg2" "luks-80b3b621-1102-43c5-afe5-9bb056858530" ' 
exited with non-zero exit status 1: Requested offset is beyond real size of device /dev/sdg2.

Au départ l’installation était en qwerty mais j’ai vite corrigé ça. Je n’avais pas la même erreur :

Error unlocking /dev/sdg2: Command-line `cryptsetup luksOpen "/dev/sdg2" "luks-80b3b621-1102-43c5-afe5-9bb056858530" ' 
exited with non-zero exit status 2: No key available with this passphrase.

Je vois bien le disque avec un fdisk -l :

# fdisk -l
Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5de7988a

Device     Boot  Start    End Sectors  Size Id Type
/dev/sdg1  *      2048 499711  497664  243M 83 Linux
/dev/sdg2       501760 505855    4096    2M 83 Linux

J’ai aussi essayé de l’ouvrir directement depuis le terminal :

# cryptsetup luksOpen /dev/sdg2 "luks-80b3b621-1102-43c5-afe5-9bb056858530"
Enter passphrase for /dev/sdg2: 
Requested offset is beyond real size of device /dev/sdg2.

Quand je regarde avec gparted la taille des partitions, j’ai une grosse partie qui n’est pas allouée.

/dev/sdg1         ext2                    /media/lubuntu/82....    243.00 MiB    41.57 MiB
unallocated    unallocated                                                    1.00 MiB        --     
/dev/sdg2         crypt-luks                                                        2.00 MiB        --
unallocated     unallocated                                                   232.64 GiB    --

À mon avis le problème vient de TestDisk que j’ai lancé avant pour essayer de récupérer mes partitions… :frowning: Une idée pour résoudre le problème ?

Pourquoi avoir utilisé testdisk ? La table de partition était endommagée ?

La partition n° 2 me semble bien petite. Si elle est censée s’étendre jusqu’à la fin du disque (pas d’autre partition derrière), tu peux essayer de l’agrandir au maximum.

J’ai cru que le problème venait de là mais j’ai sans doute été trop vite…

Je vais tenter ça. Gparted refuse de l’étendre ( Linux Unified Key Setup encryption is not yet supported. ). Je regarde comment faire ça proprement.

[Edit: j’en profite pour noter des astuces que je ne connaissais pas.

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    1    30G  0 disk /cdrom
├─sda1   8:1    1   840M  0 part 
└─sda2   8:2    1   2.3M  0 part 
sdg      8:96   0 232.9G  0 disk 
├─sdg1   8:97   0   243M  0 part 
└─sdg2   8:98   0     2M  0 part     
sdh      8:112  0 232.9G  0 disk 
└─sdh1   8:113  0 232.9G  0 part /media/lubuntu/data
sdi      8:128  0 465.8G  0 disk 
└─sdi1   8:129  0 465.8G  0 part /media/lubuntu/BACKUP

(Ici la partition que je veux agrandir est sdg2.)

Je vois partout qu’il faut déchiffrer la partition avant de l’agrandir… Oui mais je ne peux pas déchiffrer sans l’agrandir ? C’est un peu le serpent qui se mange la queue. :frowning:

[Edit2 : Une bonne nouvelle, c’est que l’header de Luks semble intact :

# cryptsetup luksDump /dev/sdg2
LUKS header information for /dev/sdg2

Version:           1
Cipher name:       aes
Cipher mode:       xts-plain64
Hash spec:         sha1
Payload offset:    4096
MK bits:           512
MK digest:         05 ef 68 2f f3 fc 82 4a d8 50 45 bc 50 33 84 81 21 c1 41 61 
MK salt:           f4 3e e4 3b b9 85 f1 6c 3f 40 98 79 b4 00 90 14 
                   ef 1c 24 a2 00 95 b6 d6 2e 1d ab 63 a3 8a 8b 0e 
MK iterations:     70750
UUID:              80b3b621-1102-43c5-afe5-9bb056858530

Key Slot 0: ENABLED
    Iterations:             205127
    Salt:                   86 0f 25 53 14 71 20 d1 42 ff ee a2 a5 92 de 3e 
                              40 c8 74 dd f2 78 63 3a c5 c2 70 4d 1d cb 0b ad 
    Key material offset:    8
    AF stripes:                4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

La seule solution que je trouve serait de détruire ma partition chiffrée et d’en recréer une qui commence au même endroit ( avec fdisk, comme dans ce tutoriel sur lisenet.com )…

Sachant que je n’ai pas de backup (j’en entends déjà qui rigolent dans le fond), je suis moyen excité à cette idée. Y a-t-il une autre solution ?

[Edit:

# fdisk /dev/sdg
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5de7988a

Device         Boot   Start       End         Sectors    Size       Id   Type
/dev/sdg1  *           2048        499711   497664      243M    83   Linux
/dev/sdg2               501760   505855    4096          2M         83   Linux

Ce que je pense devoir faire maintenant :

  1. Supprimer la deuxième partition (sdg2) qui est ma partition chiffrée. Toujours dans fdisk :

    Command (m for help): d
    Partition number (1-4): 2

  2. Vérifier :

Command (m for help): p

Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
[...]

Device         Boot   Start       End         Sectors    Size       Id   Type
/dev/sdg1  *           2048        499711   497664      243M    83   Linux
  1. Créer à nouveau la partition chiffrée ( sdg2 ) :

    Command (m for help): n
    Partition type:
    p primary (0 primary, 0 extended, 4 free)
    e extended
    Select (default p):
    Using default response p
    Partition number (1-4, default 1):
    Using default value 2
    First sector (2048-1953504687, default 2048): 501760
    Last sector, +sectors or +size{K,M,G} (501760-???, default ???):
    Using default value ???

  2. Vérifier :

    Command (m for help): p

    Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
    […]

    Device Boot Start End Sectors Size Id Type
    /dev/sdg1 * 2048 499711 497664 243M 83 Linux
    /dev/sdg2 501760 ??? ??? ???G 83 Linux

  3. Écrire les modifications :

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

  4. Redémarrer

Est-ce que quelqu’un peut me confirmer que c’est la meilleure procédure à suivre ? J’ai peur de faire pire que mieux, même si ça me semble la seule chose à tenter… :neutral_face:

Dernière question : Tant qu’on “écrit” pas les modifications (avec “w” dans fdisk), ça n’a pas d’effet ? Je peux aller jusque là sans risques ?

Apparemment Gparted essaie d’être intelligent et d’agrandir le contenu en même temps que la partition. En ligne de commande, parted n’a pas ce problème avec l’action resizepart.

C’est une autre possibilité, mais pas la seule. Supprimer une partition principale avec fdisk ne fait rien d’autre que modifier la table de partition, sans toucher aux données. Tant que tu n’enregistres pas les changements, fdisk ne modifie pas la table de partition du disque (contrairement à partedqui exécute les actions immédiatement sans confirmation).

Du coup, pas de différence particulière si je le fais avec fdisk ou parted ? C’est juste deux solutions possibles ?

(Parce que je pense avoir bien compris la procédure avec fdisk donc si tu me confirmes que c’est bon, je tente le truc. :slight_smile: )

[Edit: Je l’ai tenté !

# fdisk /dev/sdg

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x5de7988a

Device     Boot  Start    End Sectors  Size Id Type
/dev/sdg1  *      2048 499711  497664  243M 83 Linux
/dev/sdg2       501760 505855    4096    2M 83 Linux

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): p
Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
[...]

Device     Boot Start    End Sectors  Size Id Type
/dev/sdg1  *     2048 499711  497664  243M 83 Linux

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (499712-488397167, default 499712): 501760
Last sector, +sectors or +size{K,M,G,T,P} (501760-488397167, default 488397167):       

Created a new partition 2 of type 'Linux' and of size 232.7 GiB.

Command (m for help): p
Disk /dev/sdg: 232.9 GiB, 250059350016 bytes, 488397168 sectors
[...]

Device     Boot  Start       End   Sectors   Size Id Type
/dev/sdg1  *      2048    499711    497664   243M 83 Linux
/dev/sdg2       501760 488397167 487895408 232.7G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Je redémarre, croisez les doigts avec moi.

Différence dans la méthode (suppression+création ou agrandissement).
Pas de différence dans le résultat si tout se passe bien.

Tout s’est apparemment bien passé, j’ai accès à ma partition chiffrée depuis mon live-usb. Je vais tout sauvegarder tant que j’ai accès (sait-on jamais…) puis tenter de redémarrer sans la live-usb et voir si j’ai accès à l’ordinateur comme avant ! :slight_smile:

Merci beaucoup pour tes conseils et le temps que tu as passé -encore une fois- pour m’aider.

(En plus j’ai appris plein de trucs ! :smiley: )