[О блоге]
[наверх]
[пред]
[2023-08-21 09:38:30+03:00]
[bacf08f6a5cdd17e07b5ad14070c61674ed7be20]
Темы: [bsd][hate]
Битый GPT не вывести
Нужно было ужать образ жёсткого диска. Сделал resize раздела, поменял
его размер. В конце остаётся много пустого места. Если скопировать такой
образ простой dd, то FreeBSD не хочет показывать и загружать таблицу
разделов, выводя в dmesg что GPT вообще плох плох и никакой recovery вам
не поможет.
Если переносить образ на диск большего размера -- то в dmesg будет
предупреждение что второй GPT не находится в конце диска, но это чинится
одной командой. А тут первый GPT указывает на LBA выходящего за пределы
диска. Всякие kern.geom.part.check_integrity не помогают. Хотя я ведь
точно знаю что первый GPT исправен и просто нужно сделать его копию и
поправить её адрес.
Имея на руках оригинальный диск, можно сделать gpart backup, который
выведет в простом текстовом формате разметку, а дальше gpart recover-ом
записать её на уменьшенный диск. Но вот backup берёт информацию из
GEOM-а, который на маленьком диске отказывается подгружать информацию о
разделах и поэтому backup не сработает.
И вот не нашёл вообще никаких средств в самой ОС чтобы заставить
показать хоть в каком-нибудь виде информацию о GPT разделах, чтобы хотя
бы вручную восстановить этот backup файлик и с него уже валидный GPT
записать. То есть мне просто нужно нечто, что могло бы прочитать 32
сектора диска в начале, интерпретировало
[оставить комментарий]
- комментарий 0:
From: kmeaw
Date: 2023-08-21 07:47:10Z
А работает ли на FreeBSD gdisk (он же GPT fdisk,
https://www.rodsbooks.com/gdisk/)? Может быть им будет проще сделать
задуманное, чем gpart? Там есть --backup и --load-backup, которые читают
GPT сами, без использования информации от ядра.
- комментарий 1:
From: Sergey Matveev
Date: 2023-08-21 07:51:51Z
*** kmeaw [2023-08-21 08:42]:
>А работает ли на FreeBSD gdisk
Блин, забыл об этом дописать, поторопился. Да, именно его из портов
поставил и всё как и хотел: предупреждает о битом GPT, но позволяет
вывести разделы которые смог отпарсить, что достаточно для
восстановления.
- комментарий 2:
From: kmeaw
Date: 2023-08-21 07:57:12Z
Ещё вижу в man 8 gpt:
gpt [-Hnqrv] [-m mediasize] [-s sectorsize] [-T timestamp] command
[command_options] device
gpt resizedisk [-s size] [-q]
The resizedisk command allows the user to resize a disk.
…
If the backup copy no longer exists due
to the medium shrinking, then a new backup copy will be created
using the primary copy.
The -s option allows the new size to be specified, otherwise the
partition will be increased to the maximum available size.
Что будет, если попробовать gpt -m $SIZE resizedisk или
gpt resizedisk -s $SIZE ?
- комментарий 3:
From: Sergey Matveev
Date: 2023-08-21 08:02:27Z
*** kmeaw [2023-08-21 08:52]:
>Ещё вижу в man 8 gpt:
А у меня такого man/команды нет. Судя по всему, это какая-то очень
старая команда, которая в NetBSD ещё есть, а в FreeBSD была давным
давно, только когда начинали поддерживать GPT.
А gpart явно говорит что только destroy и recover может выполнить с битым GPT:
When the kernel detects
corrupt metadata, it marks this table as corrupt and reports the problem.
destroy and recover are the only operations allowed on corrupt tables.