У меня проблема с загрузочным USB, который я сделал. Так что это постоянный проект, над которым я работаю некоторое время. По сути, я установил Red Hat 7 на USB, так что USB по сути является ОС. Затем я выполнил следующие команды, чтобы попытаться записать этот "живой USB" в файл .raw.gz для повторного распространения:

  if=/dev/sda bs=10000 count=500000 status=progress | gzip > newredhat.raw.gz

Вышеприведенная задача захватывает первые 5 ГБ загрузочного USB и сохраняет его в образ с именем newredhat.raw.gz в виде сжатого файла .raw. Процесс работает как надо, кроме одной вещи. Затем я запускаю следующую команду, чтобы поместить этот пользовательский образ на другой USB-диск, отформатированный в fat32 и на 100% чистый:

 zcat newredhat.raw.gz > /dev/sdc

После того, как извлечение / запись завершена, новый USB загружается должным образом, однако загружается в аварийный режим. Я часами искал, что может быть за этим, но, учитывая, что это, возможно, очень уникальный сценарий, в этом нет особого смысла. Я попытался vi / etc / fstab, и он говорит мне, что / etc / fstab не существует и создает новый файл для редактирования. Я также посмотрел на журнал, и единственное, что возвращается, это "не удалось смонтировать sysroot". Идея всего этого проекта заключается в том, что он может быть простым извлечением - иди клон для моих USB и серверов на базе Linux. Что действительно странно, так это то, что этот точный метод работал для openSUSE. Это как-то связано с тем, как Red Hat создает свою архитектуру после установки? Если это так, есть ли работа вокруг? Заранее спасибо за всю помощь!

1 ответ1

1

1) Параметр bs для dd - это размер блока. Если это не степень двойки, и, в частности, если это не размер блока вашего устройства, вы делаете это неправильно. В этом случае не используйте dd .

2) В зависимости от того, как именно вы выложили первую флешку (вы не сказали нам), взяв первые 5 ГБ, возможно, пропустила таблицу разделов в конце.

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

gzip /dev/sda1 > newredhat.raw.gz
zcat newredhat.raw.gz > /dev/sdc1

Таким образом, таблица разделов может компенсировать устройства разного размера.

Это также работает между USB-накопителями и жесткими дисками.

3) Для отладки того, что происходит с вашей второй флешкой, было бы крайне полезно посмотреть сообщения, которые он показывает, прежде чем перейти в аварийный режим. dmesg или logs помогут, если он быстро прокрутится. Поэтому, пожалуйста, отредактируйте вопрос с помощью дословных сообщений, которые вы видите перед тем, как он жалуется на "не удалось смонтировать sysroot". У меня есть подозрение, что это потому, что вы испортили таблицу разделов (см. Выше). И обнаруженная таблица разделов должна отображаться в dmesg/logs. И если "тот же самый точный метод работал для openSUSE", это может быть потому, что openSUSE использовал другую схему разбиения, и / или ваши USB-флешки были одинакового размера.

редактировать

Одна проблема, связанная с простым копированием начала всей карты памяти USB, заключается в том, что, например, GPT также будет содержать информацию в самом конце. Хотя это дублирующая информация, это может вызвать проблемы.

Итак, еще раз: вместо того, чтобы копировать только первые 5G карты памяти 32G на карту памяти 16G, создайте раздел размером 5G на первой карте памяти, сделайте раздел точно такого же размера на второй карте, затем скопируйте раздел (/dev/sda1), а не вся палка (/dev/sda). Вы можете создать разделы с fdisk gdisk parted или все , что вам нравится. Вам не нужно ничего вычислять, вы просто должны убедиться, что разделы имеют одинаковый размер.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .