MBR преобразован в систему на основе GPT, как загрузить Linux и Windows

Большинство USB-устройств просто не работают таким образом.

Только очень немногие типы USB-устройств (, в основном устройства ввода, такие как мыши, клавиатуры, джойстики и т. д. ), могут отправлять данные по шине USB, если они специально не запрашиваются. Если вы сначала не отправите соответствующий запрос на USB-устройство, большинство USB-устройств не будут выводить никаких данных.

Затем возникает вопрос о конечных точках USB . Каждое USB-устройство может иметь несколько конечных точек; вы можете думать об этом как о номерах портов TCP. Всегда есть одна «управляющая» конечная точка и любое количество других конечных точек для определенных потоков данных. Некоторые конечные точки являются только входными -, другие только выходными -. Чтобы получить значимые данные с USB-устройства, вам нужен какой-то способ определить, к какой конечной точке устройства вы подключаетесь.

Или, если ваш вопрос касается дампа необработанного потока USB-пакетов, он обычно скрыт за уровнем USB-драйвера Linux. Чтобы получить доступ к необработанному потоку пакетов, вам необходимо смонтировать файловую систему debugfsи загрузить модуль ядра usbmon. Теперь вы можете выполнить такие действия, как cat /sys/kernel/debug/usb/usbmon/0u, чтобы получить дамп всего трафика USB в системе, или использовать другой номер шины вместо 0, чтобы получить трафик только определенной шины USB. Модуль также предоставит устройства /dev/usbmon*для более продвинутых программ анализа USB-трафика.

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

1
04.09.2021, 14:04
1 ответ

Насколько мне известно, Windows не обрабатывает такой преобразованный системный диск как особый случай после завершения преобразования, поэтому с ним следует обращаться точно так же, как с диском в «свежей» системе на основе GPT -..

В частности, Windows накладывает ограничение на то, что системные диски с разделами GPT -всегда должны загружать Windows в собственном стиле UEFI :, то есть использование процесса загрузки в стиле BIOS -на дисках с разделами GPT -не допускается..

Во-первых, введение в различия между разделами MBR и GPT:

  • В GPT нет разделения на первичные/расширенные/логические разделы, как в MBR. Все разделы GPT - это просто разделы.
  • Несмотря на то, что в таблице разделов GPT есть бит атрибута раздела «устаревший загрузочный BIOS», он вообще не используется при загрузке в стиле UEFI .
  • MBR -диск с разделами обычно имеет зазор неиспользуемых дисковых блоков между блоком #0 (фактической основной загрузочной записи )и началом первого раздела. В современных системах первый раздел обычно выравнивается ровно на 1 МБ от начала диска, поэтому, если используются общие блоки по 512 -байт, первый раздел будет начинаться с блока #2048. Промежуток между MBR и первый раздел используется загрузчиками, такими как GRUB. На дисках с разделами GPT -эта область занята фактической таблицей разделов GPT и не может использоваться.
  • На дисках с разделами MBR -тип раздела определяется одним байтом. На дисках с разделами GPT -тип каждого раздела идентифицируется UUID.
  • Разделенные диски MBR -имеют 32 -битную подпись диска ; Разделенные диски GPT -имеют 128-битный UUID -для той же цели.Каждый раздел GPT также имеет уникальный UUID в таблице разделов :. Его можно использовать для уникальной идентификации раздела, даже если используемая в нем файловая система неизвестна. Linux отображает это как PARTUUID; для дисков с разделами MBR -комбинация подписи диска MBR и номера раздела используется вместо реального UUID раздела.
  • Таблица разделов MBR находится в блоке #0; если используются расширенные разделы, начало каждого логического раздела имеет добавление -в таблице разделов. Таблица разделов GPT начинается в блоке #1 и занимает несколько блоков; также есть резервная таблица разделов GPT в самом конце диска. Это часто вызывает удивление, если вы привыкли стирать разметку диска, просто обнуляя количество блоков только в начале диска.

Поскольку UUID типов разделов неудобны для использования людьми, различные программы разбиения на разделы использовали различные методы для их сокращения. gdiskбудет использовать четырехзначный -код типа; Gparted представляет UUID различных типов разделов с помощью различных флагов (, что, на мой взгляд, является неудачным выбором ).

Процесс загрузки в собственном стиле UEFI -также сильно отличается от процесса загрузки в классическом стиле BIOS -:

  • Процесс загрузки в стиле BIOS -начинается с (обычно )назначения идентификатора устройства BIOS 0x80 (= первый жесткий диск BIOS )устройству, которое в данный момент выбрано в настройках BIOS в качестве загрузочный диск. При загрузке в стиле UEFI параметры прошивки («Настройки BIOS» в системе UEFI )определяют путь загрузки :, он может принимать различные формы, но наиболее распространенный для установленных операционных систем будет указывать UUID раздела и путь к загрузочному файлу .
  • При загрузке в стиле BIOS -прошивка проверяет 2 -байтовую загрузочную подпись в конце блока #0 выбранного загрузочного диска, а затем просто выполняет около 440 байт машинного кода, который помещается в блок MBR, в дополнение к фактическому разделу стол. При загрузке в стиле UEFI -прошивка имеет встроенную -возможность понимания некоторых типов файловых систем:спецификация UEFI говорит, что совместимая прошивка UEFI должна понимать FAT32, но может понимать и другие типы файловых систем. «Загрузочный диск» UEFI должен содержать раздел со специальным типом UUID :, который называется системным разделом EFI или сокращенно ESP. Микропрограмма будет искать раздел ESP, уникальный UUID которого совпадает с указанным в пути загрузки, а затем попытается загрузить указанный загрузочный файл из этого раздела.
  • При загрузке в стиле UEFI -со съемного носителя или с диска, который ранее не был настроен в соответствии с параметрами прошивки, прошивка ищет раздел ESP, содержащий файловую систему, которую может прочитать прошивка, и файл с конкретное имя пути. Для 64-битного -оборудования x86 этот путь загрузки резервного/съемного носителя UEFI будет \EFI\boot\bootx64.efiв стиле Windows -или <ESP mount point>/EFI/boot/bootx64.efiв стиле Linux -.

Раздел ESP имеет стандартную структуру :каждая установленная ОС должна создать подкаталог -\EFI\<vendor or distribution name>\и поместить в него только свои файлы загрузчика. Подкаталог \EFI\boot\sub -зарезервирован для загрузчиков резервных/съемных -носителей, которые следуют правилу Highlander :. Для каждой архитектуры системы может быть только один(). ].


Установив «флаг загрузки» GParted для раздела, отличного от -ESP, вы фактически изменили тип UUID этого раздела на UUID типа ESP. Это была ошибка :теперь на диске два раздела с типом ESP.Вы должны изменить тип раздела, который вы изменили, на исходный. В GParted это означало бы удаление флагов «boot» и «esp»; в gdiskэто, вероятно, означало бы установку кода типа на8300(«Файловая система Linux» )или, возможно,8304(«Linux x86 -64 root» ).

Поскольку у вас также есть Windows на том же диске, не рекомендуется пытаться использовать BIOS -Загрузочный раздел(gdiskс кодом типаef02):, который обычно заставит вас перейти к настройкам прошивки и включить/ отключайте CSM каждый раз, когда вы хотите переключиться между операционными системами. Вместо этого вы можете использовать живой загрузочный носитель Linux, чтобы смонтировать установку на -диске, например. /mnt, а затем перейдите к нему, чтобы заменить текущий загрузчик в стиле BIOS -(, обычно GRUB с типом архитектуры i386-pc)на родной UEFI (, например. GRUB с типом архитектуры x86_64-efi). В основном (все следующие команды какroot):

mount <your root filesystem device> /mnt
mount -o rbind /dev /mnt/dev
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
chroot /mnt /bin/bash

Теперь ваш сеанс будет использовать среду вашей установленной ОС Linux, и вы должны иметь возможность использовать менеджер пакетов и любые другие инструменты почти как обычно (предупреждение :, если у вас есть части стандартной системы, такие как /varкак отдельные разделы, смонтируйте и их!)

Первым шагом должно быть добавление точки монтирования для ESP и его монтирование. Сначала запустите lsblk -o +UUID, чтобы найти UUID вашего раздела ESP; поскольку его тип файловой системы, скорее всего, FAT32, он должен иметь вид xxxx-yyyy. Замените <ESP UUID>в следующих командах фактическим UUID:

mount UUID=<ESP UUID> /boot/efi
echo "UUID=<ESP UUID> /boot/efi vfat umask=0077,shortname=winnt,flush 0 2" >>/etc/fstab 

Следующий шаг — переключение типа загрузчика.

К сожалению, вы не указали, какой дистрибутив Linux вы используете. Если это Debian, или Ubuntu, или какой-либо производный от них дистрибутив, то можно использовать стандартные инструменты управления пакетами для удаления пакетов grub-pcи grub-pc-binи установки вместо них grub-efi-amd64и grub-efi-amd64-bin.затем запуститеgrub-install /dev/sda(или любой другой диск, содержащий ваш раздел ESP ), и, наконец, запустите update-grubдля восстановления конфигурации GRUB.

На этом этапе вы можете выйти из chroot, отменить монтирование и посмотреть, может ли ваша система загрузиться сейчас.

(if you had to mount any extra partitions, unmount them now)
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
reboot

Вы также можете установить утилиту efibootmgr, так как она позволяет просматривать, создавать резервные копии и изменять параметры загрузки прошивки во время работы Linux. (Windows может сделать то же самое с помощью команды bcdedit, но, на мой взгляд, эта команда гораздо более неудобна в использовании, чем efibootmgr.)

2
04.09.2021, 19:55

Теги

Похожие вопросы