Монтирование EFI-диска на внешнем USB.

Вопрос или проблема

Недавно я купил новый SSHD, чтобы заменить старый в своем ноутбуке, но у меня возникли проблемы. Я установил Ubuntu 15.10 на новый диск и поместил старый в USB-корпус, который у меня есть, но диск на USB не имеет раздела (я кричал 5 минут, потому что не могу потерять данные).

Итак, я вернул старый диск в отсек для дисков и поставил новый в USB-корпус, и все мои данные были на месте, но диск на USB не показывает разделов.

Оба диска в USB-корпусе показывают модель и производителя правильно, но не показывают разделы. Корпус в порядке, проверен со старым HDD, который не имеет GPT/EFI раздела.

Как я могу смонтировать внешний диск, чтобы перенести файлы?

Вывод команд:

 $ sudo blkid /dev/sdb 
 /dev/sdb: PTTYPE="PMBR"


 $ sudo parted /dev/sdb print 
 Error: /dev/sdb: нераспознанная метка диска
 Model: ST1000LM 014-1EJ164 (scsi)                                     
 Disk /dev/sdb: 1000GB Размер сектора (логический/физический): 4096B/4096B
 Partition Table: unknown Disk Flags:

$ sudo gdisk /dev/sdb 
GPT fdisk (gdisk) version 1.0.0

Сканирование таблицы разделов:
  MBR: защитный
  BSD: отсутствует
  APM: отсутствует
  GPT: отсутствует

Попробуйте поискать в гугле восстановление потерянных разделов. Одним из продуктов является http://findandmount.com/. Он утверждает, что может находить файловые системы, даже если главный загрузочный блок потерял разделы. Я также помню, что использовал продукт на http://www.ultimatebootcd.com/ для этого же, но не могу вспомнить, какой именно.

Попробуйте эту команду

sudo apt-get install exfat-fuse exfat-utils

Обратите внимание на эту часть:

Размер сектора (логический/физический): 4096B/4096B

Этот диск поддерживает использование блоков размером 4KiB. Я предполагаю, что USB-корпус и внутренний SATA-контроллер в ноутбуке используют разные стратегии для работы с этим: один преобразует их в традиционные блоки размером 512 байт, а другой может использовать новый размер блоков нативно.

Я предполагаю, что когда диск находится во внутреннем отсеке ноутбука, вы получите следующий вывод:

Размер сектора (логический/физический): 512B/4096B

С использованием GPT-схемы разбиения это становится проблемой: спецификация GPT предполагает, что таблица разделов должна начинаться с блока №1. Блок №0 зарезервирован для “защитного MBR”, который просто позволяет старым системам идентифицировать диск как используемый, даже если они понимают только MBR-стиль разбиения.

Но если вы разбиваете диск, используя эмулированные 512-байтные блоки, а затем переключаетесь в нативный режим (например, перемещая диск из внутреннего контроллера к USB, поддерживающему 4 KiB), 512-байтный блок №1 становится второй восьмой частью 4 KiB-блока №0.

Соответственно, если вы изначально используете нативные 4 KiB блоки при разбиении диска, а затем переключаетесь на эмулированные 512-байтные блоки, таблица разделов GPT теперь начинается с блока №8.

К сожалению, единственный способ исправить вашу ситуацию без переразбиения – это найти старый внешний USB-адаптер HDD, который специально не может использовать 4 KiB-блоки, чтобы он вызвал бы эмуляцию сектора размером 512 байт, как это делает внутренний SATA-контроллер ноутбука.

С версией ядра Linux 4.14 или новее (или с более старой версией, где есть эта исправленная версия), можно переключить логический размер блока. Если у вас также есть версия losetup, содержащая эту заплатку, вы сможете иметь свой диск в вашем USB-адаптере и затем выполнить:

losetup -P -b 512 /dev/loop0 /dev/sdb

чтобы получить доступ к /dev/sdb через /dev/loop0 с использованием другого логического размера блока. Разделы появятся как /dev/loop0pN, где N – номер раздела, или, если эта схема еще не поддерживается вашей дистрибуцией, вы можете опустить опцию -P и использовать инструмент kpartx из пакета device-mapper-multipath:

kpartx -a /dev/loop0

… чтобы автоматически создать отображения для каждого раздела на вашем loop-устройстве, названные вроде /dev/mapper/loop0pN.

Затем вы можете смонтировать эти устройства разделов обычным образом, просто с другим именем устройства.

После демонтирования устройств разделов процедура для отмены этой настройки такова:

kpartx -d /dev/loop0    # только если использование kpartx было необходимо
losetup -d /dev/loop0 

Ответ или решение

Недавно вы приобрели новый SSHD для замены старого диска в вашем ноутбуке, столкнувшись с проблемой монтирования вашего диска, связанной с различиями в способах обработки диска различными интерфейсами. Новый диск был установлен с Ubuntu 15.10, а старый перенесен в USB-кейс, где были замечены проблемы с распознаванием разделов.

При подключении к USB-кейсу ваш диск не отображается должным образом, что вызвано вероятным несоответствием в размере логического сектора, так как USB-кейс использует черновые 4KiB блоки, в то время как внутренний SATA-контроллер ноутбука, вероятно, эмулирует 512-байтовые сектора.

Шаги для решения проблемы:

  1. Проблема с распознаванием диска: Ваш старый диск не отображает разделы, когда подключен через USB-кейс, но функционирует корректно при установке внутрь ноутбука. Это возникает из-за различий в стратегии обработки блоков между USB-кейсом и SATA-контроллером.

  2. Использование losetup: В современных версиях ядра Linux (начиная с версии 4.14) возможно изменение логического размера сектора с помощью losetup. Это позволит вам обойти проблему, создав петлевой (loop) устройство с 512-байтовыми секторами:

    losetup -P -b 512 /dev/loop0 /dev/sdb

    Это создаст устройство /dev/loop0, через которое доступ к диску будет осуществляться с нужным размером блока. Разделы будут доступны как /dev/loop0pN.

  3. Использование kpartx: Если схема именования /dev/loop0pN не поддерживается в вашей системе, увеличьте поддержку разделов с помощью kpartx:

    kpartx -a /dev/loop0

    Это создаст устройства разделов с именами по образцу /dev/mapper/loop0pN.

  4. Монтирование и демонтаж: После монтирования необходимых разделов для копирования данных, завершите процесс, демонтировав все монтированные файловые системы. При необходимости, удалите петлевой интерфейс:

    kpartx -d /dev/loop0    # если использовался kpartx
    losetup -d /dev/loop0

Эти действия должны помочь вам получить доступ к вашим данным без необходимости перепартироваться или рисковать потерей информации. Важно помнить, что эти решения требуют понимания работы с системной утилитой и могут варьироваться в зависимости от конфигурации вашей системы. Убедитесь, что вы создали резервные копии до начала каких-либо манипуляций, чтобы защитить важные данные.

Оцените материал
Добавить комментарий

Капча загружается...