LINUX.ORG.RU

Как восстановить разметку на диске на запущенной системе?

 , , , ,


1

1

Помогите, пожалуйста. Не могу ничего придумать.
В общем, хотел сделать загрузочную флешку с помощью Ventoy, и мисскликнул, установив его на свой основной диск с системой, чем снёс текущую разметку…
Но система пока жива, и я не перезагружался, ядро Linux еще работает на старой разметке!

Система Manjaro Linux.
Диск шифрованный LUKS.
SSD тип диска.
Не перезагружался несколько дней уже, Linux ядро еще помнит старую разметку. Перезагрузка, думаю, убьёт систему.


Ventoy:

Ventoy


Gparted показывает такое:

Gparted 1
Gparted 2


Команда lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID:

lsblk


Testdisk быстрый поиск:

Testdisk Quick


Testdisk глубокий поиск:

Testdisk Deep




Последнее исправление: ErrorMan (всего исправлений: 1)
Ответ на: комментарий от MirandaUser2

А как udisksctl определяет какая была таблица разделов? Ядро, насколько я знаю, в dmesg не пишет какую таблицу решило использовать. И в /proc/partitions тоже нет информации, откуда прочитаны разделы.

Просто, если udisksctl смотрит текущее наличие таблиц разделов на диски, то там ventoy мог перетереть и MBR и GPT таблицы.

mky ★★★★★
()
Ответ на: комментарий от mky

А ТС типа «всё сделал» и куда-то пропал.

Последнее посещение: 25.03.25 10:40:46 MSK

Просто, если udisksctl смотрит текущее наличие таблиц разделов на диски, то там ventoy мог перетереть и MBR и GPT таблицы.

Не исключено. Там в сообщениях есть fdisk c результатом работы ventoy, и это msdos таблица.

Я на самом деле не уверен относительно того, почему QsUPt7S остановился именно на msdos варианте.

MirandaUser2
()
Ответ на: комментарий от ErrorMan

Я как-то боюсь теперь перезагружаться…

Пока и не надо. Как справедливо заметили Выше, сценарий по разметке не должен был сработать без аргумента --no-reread.

Опубликуйте вывод sfdisk --dump /dev/nvme0n1 или fdisk --list /dev/nvme0n1. Там будет видно текущую физическую версию разметки. Вероятно, осталась та, что произведена ventoy.

QsUPt7S ★★★
()
Последнее исправление: QsUPt7S (всего исправлений: 1)
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# sfdisk --dump /dev/nvme0n1 или fdisk --list /dev/nvme0n1
Диск /dev/nvme0n1: 953,87 GiB, 1024209543168 байт, 2000409264 секторов
Disk model: SPCC M.2 PCIe SSD                       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x7b180a87

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145151 1891526656   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris
sfdisk: невозможно открыть или: Нет такого файла или каталога
sfdisk: невозможно открыть fdisk: Нет такого файла или каталога


Диск /dev/nvme0n1: 953,87 GiB, 1024209543168 байт, 2000409264 секторов
Disk model: SPCC M.2 PCIe SSD                       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x7b180a87

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145151 1891526656   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris

ErrorMan
() автор топика
Ответ на: комментарий от QsUPt7S

прошу прощения, опять невнимательность моя, вот правильный вывод:

[eman-pc ~]# sfdisk --dump /dev/nvme0n1
label: dos
label-id: 0x7b180a87
device: /dev/nvme0n1
unit: sectors
sector-size: 512

/dev/nvme0n1p1 : start=        4096, size=      614400, type=ef
/dev/nvme0n1p2 : start=      618496, size=  1891526656, type=83, bootable
/dev/nvme0n1p3 : start=  1892145256, size=   108252479, type=82
[eman-pc ~]# fdisk --list /dev/nvme0n1
Диск /dev/nvme0n1: 953,87 GiB, 1024209543168 байт, 2000409264 секторов
Disk model: SPCC M.2 PCIe SSD                       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x7b180a87

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145151 1891526656   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris
ErrorMan
() автор топика
Ответ на: комментарий от ErrorMan

Я разметку делал через –force

Тогда все команды должны были сработать нормально. Но у Вас не совпадает размер root раздела. Должен быть 1891526760 секторов а не 1891526656. Вы вводили цифры вручную?

QsUPt7S ★★★
()
Ответ на: комментарий от ErrorMan

Вот сценарий для sfdisk:

label: dos
/dev/nvme0n1p1 : start=4096, size=614400, type=uefi
/dev/nvme0n1p2 : start=618496, size=1891526760, bootable, type=linux
/dev/nvme0n1p3 : start=1892145256, size=108252479, type=swap

Скопируйте его, вставьте в файл /tmp/partTable.sfd, а затем выполните команды (с правами root):

cat /tmp/partTable.sfd | sfdisk --no-reread --no-tell-kernel /dev/nvme0n1
partprobe /dev/nvme0n1

Затем опубликуйте здесь вывод команд fdisk --list /dev/nvme0n1 и lsblk --fs.

Дальше надо будет переставить GRUB для MBR командой

grub-install --recheck --target=i386-pc /dev/nvme0n1
QsUPt7S ★★★
()
Последнее исправление: QsUPt7S (всего исправлений: 1)
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# fdisk --list /dev/nvme0n1
Диск /dev/nvme0n1: 953,87 GiB, 1024209543168 байт, 2000409264 секторов
Disk model: SPCC M.2 PCIe SSD                       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xda5eb17b

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145255 1891526760   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris
[eman-pc ~]# lsblk --fs
NAME                                          FSTYPE      FSVER LABEL        UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0                                         squashfs    4.0                                                           

#### !!! ТУТ Я ОПЯТЬ ПРОПУСТИЛ SNAP-ы из-за лимита сообщения!!!!

sda                                                                                                                              
├─sda1                                        ntfs              Восстановить CA20E92220E9166B                                    
├─sda2                                        vfat        FAT32              EEEB-5EFA                                           
├─sda3                                                                                                                           
└─sda4                                        ntfs                           2876F42376F3EF84                                    
sdb                                                                                                                              
└─sdb1                                        ntfs                           7A45A4F35EA7E5F3                      270,6G    42% /run/media/eman/7A45A4F35EA7E5F3
nvme0n1                                                                                                                          
├─nvme0n1p1                                   vfat        FAT16 ESP          E47B-0230                             299,6M     0% /boot/efi
├─nvme0n1p2                                   crypto_LUKS 1                  29d216c6-9e8e-43f3-8c2d-ba38c650bd6a                
│ └─luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a                                                                      353,6G    55% /
└─nvme0n1p3                                   crypto_LUKS 1                  1f368f7d-611b-4020-85ae-070f12f2d7ea                
  └─luks-1f368f7d-611b-4020-85ae-070f12f2d7ea swap        1     swap         61907b1a-dfa5-450c-a240-be6449dc805e                [SWAP]

Далее пошёл выполнять

grub-install --recheck --target=i386-pc /dev/nvme0n1

ErrorMan
() автор топика
Ответ на: комментарий от ErrorMan

Я всё копировал, даже особо не вчитываясь полностью доверяя вам. Отсебятина была только –force

Получается, sfdisk при указании прямого размера в KiB, а не в секторах, пытается выровнять размер по границам в 1MiB. Не знал. Буду учитывать.

QsUPt7S ★★★
()
Ответ на: комментарий от ErrorMan

Теперь что-то совсем непонятное творится. Куда-то исчезла большая часть видимого ядром root-раздела и его файловая система, хотя все размеры верны. partprobe сработал нормально?

QsUPt7S ★★★
()
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# cat /tmp/partTable.sfd | sfdisk --no-reread --no-tell-kernel /dev/nvme0n1
Диск /dev/nvme0n1: 953,87 GiB, 1024209543168 байт, 2000409264 секторов
Disk model: SPCC M.2 PCIe SSD                       
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0xda5eb17b

Старая ситуация:

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145255 1891526760   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris

>>> Заголовок скрипта принят.
>>> Created a new DOS (MBR) disklabel with disk identifier 0x1eda61bf.
/dev/nvme0n1p1: Создан новый раздел 1 с типом 'EFI (FAT-12/16/32)' и размером 300 MiB.
Partition #1 contains a vfat signature.
/dev/nvme0n1p2: Создан новый раздел 2 с типом 'Linux' и размером 902 GiB.
Partition #2 contains a crypto_LUKS signature.
/dev/nvme0n1p3: Создан новый раздел 3 с типом 'Linux swap / Solaris' и размером 51,6 GiB.
Partition #3 contains a crypto_LUKS signature.
/dev/nvme0n1p4: Done.

Новая ситуация:
Тип метки диска: dos
Идентификатор диска: 0x1eda61bf

Устр-во        Загрузочный     начало      Конец    Секторы Размер Идентификатор Тип
/dev/nvme0n1p1                   4096     618495     614400   300M            ef EFI (FAT-12/16/32)
/dev/nvme0n1p2 *               618496 1892145255 1891526760   902G            83 Linux
/dev/nvme0n1p3             1892145256 2000397734  108252479  51,6G            82 Linux своп / Solaris

Таблица разделов была изменена
[eman-pc ~]# partprobe /dev/nvme0n1
[eman-pc ~]# 

ErrorMan
() автор топика
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# partprobe /dev/nvme0n1
[eman-pc ~]# lsblk --fs /dev/nvme0n1
NAME                                          FSTYPE      FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                                                                   
├─nvme0n1p1                                   vfat        FAT16 ESP   E47B-0230                             299,6M     0% /boot/efi
├─nvme0n1p2                                   crypto_LUKS 1           29d216c6-9e8e-43f3-8c2d-ba38c650bd6a                
│ └─luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a                                                               353,6G    55% /
└─nvme0n1p3                                   crypto_LUKS 1           1f368f7d-611b-4020-85ae-070f12f2d7ea                
  └─luks-1f368f7d-611b-4020-85ae-070f12f2d7ea swap        1     swap  61907b1a-dfa5-450c-a240-be6449dc805e                [SWAP]
[eman-pc ~]# 
ErrorMan
() автор топика
Ответ на: комментарий от ErrorMan

Опубликуйте пожалуйста вывод следующих команд, так как я не могу понять, куда делся тип корневой файловой системы, её UUID, и почему 353GiB составляют 45% от 900GiB…

lsblk --list --output name,size,fstype,fssize,uuid,mountpoints /dev/nvme0n1
df -h --output=source,fstype,size,used,avail,target /
mount -lt ext4
QsUPt7S ★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Была затерта Ventoy, нет?

Не могла. Ventoy только испортила разметку, и сделала запись в последние сектора swap-раздела. А сейчас, почему-то lsblk --fs не отображает тип и UUID корневой фс и говорит, что 353GiB это 45% от 900GiB. Что-то не так…

QsUPt7S ★★★
()
Ответ на: комментарий от QsUPt7S

udisksctl info –block-device /dev/nvme0n1p2

Есть ещё вариант просто через /sys/

# смещение(начало) и размер
cat /sys/block/sda/sda1/start
cat /sys/block/sda/sda1/size

# все размеры в блоках
cat /sys/block/sda/queue/logical_block_size
router ★★★★★
()
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# lsblk --list --output name,size,fstype,fssize,uuid,mountpoints /dev/nvme0n1
NAME                                        SIZE FSTYPE      FSSIZE UUID                                 MOUNTPOINTS
luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a 901,9G             886,7G                                      /
luks-1f368f7d-611b-4020-85ae-070f12f2d7ea  51,6G swap               61907b1a-dfa5-450c-a240-be6449dc805e [SWAP]
nvme0n1                                   953,9G                                                         
nvme0n1p1                                   300M vfat        299,8M E47B-0230                            /boot/efi
nvme0n1p2                                   902G crypto_LUKS        29d216c6-9e8e-43f3-8c2d-ba38c650bd6a 
nvme0n1p3                                  51,6G crypto_LUKS        1f368f7d-611b-4020-85ae-070f12f2d7ea 

[eman-pc ~]# df -h --output=source,fstype,size,used,avail,target /
Файловая система                                      Тип  Размер Использовано  Дост Cмонтировано в
/dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a ext4   887G         489G  353G /
[eman-pc ~]# mount -lt ext4
/dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a on / type ext4 (rw,noatime)
ErrorMan
() автор топика

Testdisk Deep

Выбрать свою старую разметку и нажать ентер, после чего выбрать записать эту разметку на диск и перезагрузиться. Всё!

With ★☆☆
()

раздел с луксом легко найти… он прямо начинается с сигнатуры «LUKS». там пару байт перед этим. и с этого смещения раздел без форматирования создаешь примерного размера, чуть больше

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от QsUPt7S
[eman-pc ~]# udisksctl info --block-device /dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
/org/freedesktop/UDisks2/block_devices/dm_2d0:
  org.freedesktop.UDisks2.Block:
    Configuration:              [('fstab', {'fsname': <b'/dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a'>, 'dir': <b'/'>, 'type': <b'ext4'>, 'opts': <b'defaults,noatime'>, 'freq': <0>, 'passno': <1>})]
    CryptoBackingDevice:        '/org/freedesktop/UDisks2/block_devices/nvme0n1p2'
    Device:                     /dev/dm-0
    DeviceNumber:               65024
    Drive:                      '/'
    HintAuto:                   false
    HintIconName:               
    HintIgnore:                 false
    HintName:                   
    HintPartitionable:          false
    HintSymbolicIconName:       
    HintSystem:                 true
    Id:                         by-id-dm-name-luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
    IdLabel:                    
    IdType:                     ext4
    IdUUID:                     2e2abc94-18b3-455e-ade9-aaa99452b353
    IdUsage:                    filesystem
    IdVersion:                  1.0
    MDRaid:                     '/'
    MDRaidMember:               '/'
    PreferredDevice:            /dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
    ReadOnly:                   false
    Size:                       968459603968
    Symlinks:                   /dev/disk/by-diskseq/4
                                /dev/disk/by-id/dm-name-luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
                                /dev/disk/by-id/dm-uuid-CRYPT-LUKS1-29d216c69e8e43f38c2dba38c650bd6a-luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
                                /dev/disk/by-uuid/2e2abc94-18b3-455e-ade9-aaa99452b353
                                /dev/mapper/luks-29d216c6-9e8e-43f3-8c2d-ba38c650bd6a
    UserspaceMountOptions:      
  org.freedesktop.UDisks2.Filesystem:
    MountPoints:        /
    Size:               968459603968
ErrorMan
() автор топика
Ответ на: комментарий от ErrorMan

Похоже, по какой-то причине lsblk не отображает UUID и тип раздела, хотя ядро и остальные утилиты видят его. Структура ext4 не должна была пострадать во время всех проведённых манипуляций, так как записей в область нахождения root-раздела не совершалось. Возможно просто баг, или особенность поведения lsblk. Разметка на накопителе сейчас тоже в норме, и ядро её прекрасно видит.

Переустановите GRUB для MBR, так как во время написания этого поста вы затёрли образ boot.img из MBR.

grub-install --recheck --target=i386-pc /dev/nvme0n1

После переустановки GRUB можете перезагрузить систему. На всякий случай, рекомендую сначала загрузиться в live-окружение установочного образа одного из дистрибутивов, например Manjaro, подключить зашифрованный root-раздел, не монтируя, проверить его на ошибки, и лишь затем перезагрузиться в основную систему.

Команда для подключения зашифрованного раздела:

cryptsetup open --type luks /dev/disk/by-uuid/29d216c6-9e8e-43f3-8c2d-ba38c650bd6a rootPartition

Команда для проверки файловой системы в интерактивном режиме:

e2fsck -f /dev/mapper/rootPartition

Для проверки в автоматическом режиме, не требующем принятия решений, следует добавить ключ -p. Однако, следует учитывать, что проверка в автоматическом режиме может исправить не все проблемы (если таковые имеются).

QsUPt7S ★★★
()
Ответ на: комментарий от QsUPt7S

Всем спасибо, особенно QsUPt7S! Вы реально выручили меня! Только сегодня решился на перезагрузку, всё запустилось и без шагов указанных в последнем сообщении!

Ура!

ErrorMan
() автор топика