Вопрос или проблема
У меня есть ноутбук с двойной загрузкой (Win10 и ubuntu), который использует загрузку UEFI и имеет 2 физических SSD. После того как я попытался уменьшить раздел ubuntu (sda6 ниже) и загрузил ubuntu, ядро ubuntu начинает загружаться, а через некоторое время я попадаю в оболочку восстановления busybox (потому что fsck нужно запустить после изменения размера, как скрипт инициализации)
К сожалению, fsresize и другие утилиты отсутствуют в распространённой версии busybox, поэтому я загрузился с USB-носителя live gparted и получил доступ к другим инструментам, таким как gdisk, lsblk, testdisk, parted и так далее.
Схема разделов следующая:
root@debian:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 463.4M 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs /run/live/rootfs/filesystem.squashfs sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 260M 0 part ├─sda2 8:2 0 16M 0 part ├─sda3 8:3 0 105.9G 0 part ├─sda4 8:4 0 23.5M 0 part ├─sda5 8:5 0 47.1M 0 part ├─sda6 8:6 0 131.4G 0 part └─sda7 8:7 0 800M 0 part sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part sdc 8:32 1 3.7G 0 disk └─sdc1 8:33 1 3.7G 0 part /usr/lib/live/mount/medium /run/live/medium sr0 11:0 1 1024M 0 rom mmcblk0 179:0 0 14.6G 0 disk └─mmcblk0p1 179:1 0 14.6G 0 part
где /dev/sda6 — это проблемный раздел ubuntu.
С помощью live CD gparted я попробовал процесс восстановления с помощью fsck:
root@debian:~# fsck.ext4 /dev/sda6 e2fsck 1.47.0 (5-Feb-2023) Размер файловой системы (согласно суперблоку) составляет 35389440 блоков Физический размер устройства составляет 34451766 блоков Скорее всего, суперблок или таблица разделов повреждены! Прервать? да
Одно из решений, найденных в интернете, это изменить размер раздела с помощью resize2fs, что не работает:
root@debian:~# resize2fs -f /dev/sda6 resize2fs 1.47.0 (5-Feb-2023) Изменение размера файловой системы на /dev/sda6 до 34451766 (4k) блоков. resize2fs: Не удается прочитать битовую карту блока при попытке изменить размер /dev/sda6 Пожалуйста, запустите 'e2fsck -fy /dev/sda6', чтобы исправить файловую систему после прерванной операции изменения размера.
Я также попробовал fsck с другими суперблоками (32768 и т.д.), но они все выдали ту же ошибку.
Затем я проверил таблицу разделов, которая показывает:
root@debian:/home/user# gdisk /dev/sda GPT fdisk (gdisk) версия 1.0.10 Сканирование таблицы разделов: MBR: защитный BSD: отсутствует APM: отсутствует GPT: присутствует Найдена действительная GPT с защитным MBR; используется GPT. Команда (? для справки): p Диск /dev/sda: 500118192 сектора, 238.5 GiB Модель: SanDisk SD9SB8W2 Размер сектора (логический/физический): 512/512 байт Идентификатор диска (GUID): 0AE22A81-8CBF-4E26-BD23-C0B1279204CA Таблица разделов может содержать до 128 записей Основная таблица разделов начинается с сектора 2 и заканчивается сектором 33 Первый используемый сектор — 34, последний используемый сектор — 500118158 Разделы будут выровнены на границах 2 секторов Общее свободное пространство составляет 15338 секторов (7.5 MiB) Номер Начало (сектор) Конец (сектор) Размер Код Имя 1 2048 534527 260.0 MiB EF00 EFI системный раздел 2 534528 567295 16.0 MiB 0C01 Зарезервированный Microsoft ... 3 567296 222707711 105.9 GiB 0700 Основной раздел данных 4 222709090 222757289 23.5 МиБ 0700 5 222757290 222853679 47.1 MiB EF00 EFI системный раздел 6 222853680 498467812 131.4 GiB 8300 7 498479104 500117503 800.0 MiB 2700 Основной раздел данных Команда (? для справки):
Я заметил, что конец раздела 6 не находится перед началом раздела 7, поэтому я удалил раздел и заново его создал, теперь раздел 6 заканчивается прямо перед разделом 7 (498479103)
После этого изменения раздела fsck продолжает выдавать ту же ошибку.
В dmesg есть ошибка о неправильной геометрии на /dev/sda6
У меня есть резервные копии, так что это не большая проблема, и к моему удивлению testdisk может считать, получить доступ и скопировать все мои данные (расширенные -> параметры файловой системы) на /dev/sdb1 (другой диск в той же системе)
Диск /dev/sda - 256 ГБ / 238 GiB - CHS 31130 255 63 Раздел Начало Конец Размер в секторах 1 P EFI System 2048 534527 532480 [EFI системный раздел] 2 P MS Reserved 534528 567295 32768 [Зарезервированный раздел Microsoft] 3 P MS Data 567296 222707711 222140416 [Основной раздел данных] [ОС] 4 P MS Data 222709090 222757289 48200 [HIVE-CONFIG] 5 P EFI System 222757290 222853679 96390 [EFI системный раздел] > 6 P Linux filesys. data 222853680 498467812 275614133 7 P Windows Recovery Env 498479104 500117503 1638400 [Основной раздел данных] [ Тип ] >[Создание образа] [ Выход ] Создать образ
gparted или parted отказываются что-либо делать с разделом, потому что на нём есть ошибки.
Нет групп томов, которые использовались. По крайней мере, оригинальный fstab не упоминает об этом.
Есть ли кто-нибудь, кто знает чудесное решение для исправления этого без полной переустановки, например, перестройки файловой системы? Или перестройки (нескольких) суперблоков?
Ответ или решение
Решение проблемы с поврежденным суперблоком или таблицей разделов в Ubuntu
Описание проблемы
Проблема, с которой вы столкнулись, заключается в повреждении суперблока или таблицы разделов вашего диска. Команда fsck
указывает на то, что размер файловой системы, указанный в суперблоке, не соответствует физическому размеру устройства. Ваша система запускается в режим восстановления, так как fsck
требует проверки файловой системы после выполнения команд изменения размерности.
Причины возникновения проблемы
- Изменение размера раздела: Попытка изменить размер раздела Ubuntu могла повредить структуру файловой системы, особенно если процесс был прерван или завершился ошибкой.
- Поврежденный суперблок: Суперблок хранит важную информацию о файловой системе, и если он поврежден, система не сможет корректно идентифицировать размер и структуру файловой системы.
- Ошибки в таблице разделов: Неверные данные в таблице разделов могут привести к несоответствию между ожидаемыми и фактическими значениями, что также вызывает поведение системы как в вашем случае.
Шаги для восстановления
-
Проверка таблицы разделов:
- Поскольку вы уже использовали
gdisk
и убедились, что таблица была исправлена, необходимо проверить наличие других проблем с разделом /dev/sda6. - Используйте
gdisk /dev/sda
и выполните командуv
для проверки на ошибки. Главное, чтобы GPT-таблица была в порядке.
- Поскольку вы уже использовали
-
Проверка суперблоков:
- Попробуйте восстановить файловую систему с помощью альтернативных суперблоков. Если вы попробовали суперблоки 32768, возможно, стоит попробовать 98304, 163840 и 229376, так как они часто резервируются для ext4.
e2fsck -b 98304 /dev/sda6
- Попробуйте восстановить файловую систему с помощью альтернативных суперблоков. Если вы попробовали суперблоки 32768, возможно, стоит попробовать 98304, 163840 и 229376, так как они часто резервируются для ext4.
-
Запуск fsck:
- Попробуйте снова запустить
fsck
с ключом-f
для принудительного выполнения.fsck.ext4 -f /dev/sda6
- Попробуйте снова запустить
-
Использование TestDisk:
- Поскольку TestDisk может успешно читать данные, вы можете использовать его для выполнения операции восстановления. Это может помочь в восстанавливающей операции на уровне файловой системы.
-
Резервное копирование данных:
- Поскольку у вас уже есть резервные копии, рекомендуется сохранить важные данные с помощью инструментов, как
rsync
, или через графический интерфейс GParted для большего удобства.
- Поскольку у вас уже есть резервные копии, рекомендуется сохранить важные данные с помощью инструментов, как
-
Восстановление файловой системы:
- Если все вышеперечисленные методы не помогли, вам нужно будет восстановить файловую систему. Можно сделать это, используя команду:
mkfs.ext4 /dev/sda6
Однако учтите, что это приведет к удалению всех данных на разделе!
- Если все вышеперечисленные методы не помогли, вам нужно будет восстановить файловую систему. Можно сделать это, используя команду:
Заключение
Если повреждение суперблока или таблицы разделов сохранится после всех перечисленных попыток, возможно, лучше всего будет переустановить Ubuntu, используя ранее созданные резервные копии. Важно помнить, что работа с партициями и файловыми системами предполагает наличие резервных копий, как в вашем случае, что существенно упрощает процесс восстановления.