Montar partição em HD com GPT alterada, sem acesso à GPT antiga

Prezados, boa tarde.

Fiz uma cagada numa partição do meu HD. Encryptei ele usando o LVM, no assistente de instalação do Ubuntu (rodando no pendrive), mas não cheguei a terminar a instalação do sistema operacional. Agora não consigo acessar os arquivos, pois não dá para montar a partição no Ubuntu (rodando em outro HD), mesmo tendo a passphrase.

Usei este tutorial: Mount and Transfer Data From an Encrypted Filesystem in Ubuntu | Dev Notes

Terminal:

salviano@salviano-H81M-H:~$ sudo lsblk -f /dev/sdb
NAME   FSTYPE      LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sdb                                                                          
├─sdb1 vfat              0268-2B7F                                           
├─sdb2 ext4              d29f79d6-58d9-4200-8ef9-821987af4b93                
└─sdb3 crypto_LUKS       3459b6b5-690a-4d81-8acd-19efe93cd9b9                
salviano@salviano-H81M-H:~$ sudo file -s /dev/sdb3
/dev/sdb3: LUKS encrypted file, ver 2 [, , sha256] UUID: 3459b6b5-690a-4d81-8acd-19efe93cd9b9
salviano@salviano-H81M-H:~$ sudo cryptsetup luksOpen /dev/sdb3 encrypted_device
Enter passphrase for /dev/sdb3: 
salviano@salviano-H81M-H:~$ sudo vgdisplay --short
  "vgubuntu" <930,28 GiB [<930,28 GiB used / 0    free]
salviano@salviano-H81M-H:~$ sudo lvs -o lv_name,lv_size -S vg_name=vgubuntu
  LV     LSize  
  root   929,32g
  swap_1 976,00m
salviano@salviano-H81M-H:~$ sudo lvchange -ay vgubuntu/root
salviano@salviano-H81M-H:~$ sudo mkdir /mnt/hd
salviano@salviano-H81M-H:~$ sudo mount /dev/vgubuntu/root /mnt/hd
mount: /mnt/hd: wrong fs type, bad option, bad superblock on /dev/mapper/vgubuntu-root, missing codepage or helper program, or other error.
salviano@salviano-H81M-H:~$ sudo lsblk -f /dev/sdb
NAME                  FSTYPE   LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
sdb                                                                                        
├─sdb1                vfat           0268-2B7F                                             
├─sdb2                ext4           d29f79d6-58d9-4200-8ef9-821987af4b93                  
└─sdb3                crypto_L       3459b6b5-690a-4d81-8acd-19efe93cd9b9                  
  └─encrypted_device  LVM2_mem       JXblqS-5X5K-5ilw-Opgf-cad4-6Hwf-k7kZed                
    ├─vgubuntu-root                                                                        
    └─vgubuntu-swap_1                                                                      

FDISK (eu tenho um outro HD de 640gb):

salviano@salviano-H81M-H:~$ sudo fdisk -l
Disk /dev/loop0: 54,97 MiB, 57614336 bytes, 112528 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


Disk /dev/loop1: 240,82 MiB, 252493824 bytes, 493152 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


Disk /dev/loop2: 62,9 MiB, 65105920 bytes, 127160 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


Disk /dev/loop3: 49,8 MiB, 52203520 bytes, 101960 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


Disk /dev/loop4: 27,9 MiB, 28405760 bytes, 55480 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


Disk /dev/sdb: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000DM003-1CH1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: A9D84AB9-C03F-4B7B-B0E8-9D49F0A4A71A

Device       Start        End    Sectors   Size Type
/dev/sdb1     2048    1050623    1048576   512M EFI System
/dev/sdb2  1050624    2549759    1499136   732M Linux filesystem
/dev/sdb3  2549760 1953523711 1950973952 930,3G Linux filesystem


Disk /dev/sda: 596,18 GiB, 640135028736 bytes, 1250263728 sectors
Disk model: SAMSUNG HM641JI 
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: gpt
Disk identifier: 31D0637B-84CE-4637-94B6-5252B77FEBB1

Device       Start        End    Sectors   Size Type
/dev/sda1     2048    1050623    1048576   512M EFI System
/dev/sda2  1050624 1250263039 1249212416 595,7G Linux filesystem


Disk /dev/mapper/encrypted_device: 930,29 GiB, 998881886208 bytes, 1950941184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/mapper/vgubuntu-root: 929,33 GiB, 997854281728 bytes, 1948934144 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/mapper/vgubuntu-swap_1: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Alguém pode me ajudar pelo menos acessar os arquivos? Depois eu posso formatar o HD todo, mas queria queria recuperar algumas coisas.

Obrigado!

Como que vc formatou essa partição? Tenta especificar o tipo e opções de montagem no comando mount. Ex:
mount -t btrfs -o subvol=XXX,compress=none /dev/YYYY /mnt/hd

A questão envolve o HD todo na verdade. Todas essas 3 partições foram criadas pelo assistente de instalação do Ubuntu 20.04:

Device Start End Sectors Size Type
/dev/sdb1 2048 1050623 1048576 512M EFI System
/dev/sdb2 1050624 2549759 1499136 732M Linux filesystem
/dev/sdb3 2549760 1953523711 1950973952 930,3G Linux filesystem

O HD antes tinha 2 partições ext4 e uma NTFS, no assistente de instalação eu optei por usar encriptação com o LVM, selecionei uma das partições ext4, criei a chave, mas depois eu arrependi rs. Por medo de afetar o HD todo dei back. Mas já tinha afetado o HD todo. Agora eu to usando outro HD pra tentar acessar os arquivos, que estão numa partição NTFS, cujos dados estão encriptados na partição sdb3, entendeu?

Eu já to jogando a toalha já… a cagada foi grande, mas o prejuízo nem tanto. Só quero ter certeza que não tem como voltar atrás mesmo.

LVM não encripta, o luks faz isso, vai precisar da senha.

Sim, eu tenho a passphrase e tentei pelo pelo cryptsetup luksOpen. O device é criado, os volumes lógicos ativados, mas não consigo montar a partição. Vou tentar suporte com o pessoal do Ubuntu.

Vamos ao conceito.

o luks vai encriptar a partição do linux, geralmente e nesse caso a nativa (/sda, sda1, sda2 etc…), depois de aberto ai você monta a partição, nesse caso com o lvm, vai montar o volume.

isso é configurado no grupo, para abrir o dispositivo e depois montar o volume.

mostra o seu grub.cfg

Se eu entendi direito o assistente de instalação criou uma nova tabela de partição no seu HD.

Então dá para recuperar os dados “facilmente” desde que você tenha feito um backup da tabela de partição anterior. Daí é so criar uma partição com o exato inicio da partição antiga (em numero de setores).

Se vc não tirou uma foto da tabela (fdisk -l) antes de instalar o sistema (coisa que eu me acostumei a fazer antes de mexer no particionamento do disco que não tem backup) (aliás, que eu até parei de fazer dois anos atras quando comprei uma unidade de 4TB exclusiva para backups) então vai aumentar a dificuldade.

Deve ter algum programa que vasculhe o disco em busca do início da partição ntfs e indique o setor, mas eu desconheço…

Sugiro renomear o tópico para “Como recuperar tabela de partição perdida?”

1 Curtida

Cara, acredito que seja isso mesmo. Eu não tirei foto da antiga GPT, obrigado pelo ensinamento.

O assistente criou uma GPT nova com 3 partições: sdb1 em fat32, 537mb para EFI System (para o grub, certo?); sdb2 em ext4, 768mb (não sei pq); e sdb3 encriptada em LUKS contendo tudo que tinha anteriomente no hd, GPT e dados…

Visualizando no GNOME Disks:

Fiz um scan usando o gpart dessa forma:

salviano@salviano-H81M-H:~$ sudo gpart /dev/sdb3

Begin scan...
Possible partition(Windows NT/W2K FS), size(903317mb), offset(48856mb)
Possible partition(Linux ext2), size(451mb), offset(952173mb)

*** Fatal error: dev(/dev/sdb3): seek failure.

E é exatamente essa partição que eu sonho em recuperar: Possible partition(Windows NT/W2K FS), size(903317mb), offset(48856mb)
Tô no caminho?

SIM!!!

Não sei que macumba vc fez para descobrir isso, mas assumindo que vc descobriu o início da partição perdida, vc pode montar uma partição fictícia nesse exato espaço.

Vc calcula quantos bytes acima está a partição perdida. Eu não sei se ele deu a informação em MB (1000 * 1000) ou M (1024 * 1024). Mas tenta dos dois jeitos.
a) 48856 * 1000 * 1000 = 48856000000 bytes
b) 48856 * 1024 * 1024 = 51229229056 bytes

Daí segue o tutorial Mounting a raw partition file made with dd or dd_rescue in Linux :: Major Hayden 🤠 — Words of wisdom from a social nerd

Ele dá duas opções. A primeira vc monta direto:
# mount -t ntfs -o ro,loop,offset=48856000000 /dev/sdb3 /mnt/hd
se der erro:
# mount -t ntfs -o ro,loop,offset=51229229056 /dev/sdb3 /mnt/hd

O pulo do gato é usar a partição 3 como se fosse uma imagem de disco, já que pro linux o tratamento para dispositivo de bloco e arquivo é semelhante.

Se mesmo assim não deu certo, tenta montar com o losetup especificando também o tamanho da partição.
# losetup --offset 48856000000 --sizelimit 903317000000 /dev/loop2 /dev/sdb3
depois
mount -t ntfs -o ro /dev/loop2 /mnt/hd

Daí tenta usando o multiplicador 1024 * 1024.

Não esquece de montar sempre usando a opção ro, que é pra manter somente leitura no sistema de arquivos!

Acho que vai dar pra montar e salvar os arquivos!

1 Curtida

meu amigo, que coisa maravilhosa!!! funcionou certinho! usei a segunda linha com offset=51229229056 e to com o hd montado aqui. muito obrigado, mano. quanta coisa aprendi nesse rolo!! vou editar o post original

1 Curtida

Coloquei esse título, caso tenha uma sugestão melhor, eu edito aqui.

1 Curtida

Ótima notícia! Eu também aprendi coisas novas nesse tópico, principalmente que o gpart faz esse trabalho de identificação de partições!

2 Curtidas