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

301
RickwhoPrograms

До сих пор я добился большого прогресса в своем проекте USB, однако мне было интересно, есть ли способ DD разделить несколько разделов в один файл образа Raw для повторного распространения. Ниже приведены команды, которые я использовал для достижения полного клона от usb до usb:

 DD if=/dev/sd[x] status=progress | gzip > newredhat.raw.gz 

однако единственная проблема в этом заключается в том, что он копирует всю флешку USB (то есть копирует том как 28 ГБ), а в некоторых случаях не работает при попытке перейти на меньшую флешку. Я попытался сделать следующее, чтобы обойти это:

dd if=/dev/sdb1 | dd if=/dev/sdb2 | dd if=/dev/sdb3 | gzip > newredhat.raw.gz 

Что, к моему удивлению, сработало, однако я не верю, что это сохраняет файл так, как я себе это представляю. Есть ли способ избежать копирования всего диска (SDB) и скопировать только необходимые разделы SDB1, SDB2 и SDB3 таким образом, чтобы я сохранил их в один файл образа, а затем zcat-файл, чтобы новый USB переменного размера, чтобы он потом работал?

Спасибо за любую помощь заранее!

1
Я бы порекомендовал вместо этого файловое резервное копирование. Вы `dd` таблица разделов (обычно первые 1 МБ диска) и` tar` содержимого отдельных разделов. Недостатком является, очевидно, невозможность хранить резервную копию в одном файле. iBug 6 лет назад 1
Правильно, я тоже думал об этом подходе, однако он не сохраняет единую файловую структуру, потому что в конечном итоге весь пакет заархивируется в gz, а степень сжатия на самом деле довольно велика. Я сделал 32gb gzipped как 8gb! Кроме того, я знаю, что должен быть способ достичь этого, мне пришлось изо всех сил пытаться найти другой метод, но в конце концов я сделал, ха-ха! RickwhoPrograms 6 лет назад 0
`дд если = ... | дд если =… | дд если =… | … Не имеет смысла. Только последний `dd` может сделать что-то полезное. Kamil Maciorowski 6 лет назад 0
первые 2 (sdb1 и sdb2) составляют 200 м и 1,1 г соответственно, поэтому, если команда не работает, почему я получаю файл 3,6 ГБ? Происходит ли репликация? RickwhoPrograms 6 лет назад 0
Пожалуйста, опубликуйте вывод `gdisk -l / dev / sdb`. Добавьте эту информацию к вашему вопросу, выполнив [edit] ing. Kamil Maciorowski 6 лет назад 0

1 ответ на вопрос

0
plugwash

Если вы только пытаетесь избежать копирования пустого пространства в конце, то должно сработать следующее.

  • Запустите fdisk на устройстве.
  • Убедитесь, что единицы измерения настроены на секторы (они используются по умолчанию в последних версиях fdisk)
  • Нажмите p, чтобы распечатать таблицу разделов.
  • Прочитайте конечный сектор последнего раздела.
  • Добавить 1
  • Разделите на 2048, чтобы преобразовать в мегабайты
  • Округлить до ближайшего целого числа (лучше скопировать несколько ненужных секторов, чем не копировать нужные сектора)
  • DD если = / dev / sd [x] bs = 1M count = <размер в мегабайтах, который вы рассчитали> status = progress | gzip> newredhat.raw.gz
позвольте мне дать этому шанс и посмотреть, работает ли он как задумано! спасибо за подробный ответ !! RickwhoPrograms 6 лет назад 0
Будет ли это эффективно сохранить файл в загрузочный образ меньшего размера? И что, если я просто хочу захватить, скажем, первые 7 ГБ загрузочного носителя? RickwhoPrograms 6 лет назад 0
`dd ... bs = 7G count = 1`? Alex 6 лет назад 0
но будет ли это копировать его таким образом, чтобы он сохранялся как загрузочный необработанный образ? RickwhoPrograms 6 лет назад 0
Я не уверен. Если вы хотите оптимизировать изображение, вы можете использовать clonezilla, который сохраняет в своем изображении только актуальные данные. Я не знаю, будет ли это работать для вас, если вы собираетесь распространять ваше решение, но на самом деле вы можете настроить / автоматизировать clonezilla или дать получателю ссылку на clonezilla и инструкцию, как восстановить изображение. Alex 6 лет назад 0
Привет, Алекс, я попробовал несколько вещей безрезультатно, я думаю, что единственным оптимальным или близким решением было бы сделать то же самое, что предложил plugwash, сейчас я попробую, чтобы посмотреть, работает ли он. Если это не так, выслушайте его ответ и решите проблему, основываясь на этом! RickwhoPrograms 6 лет назад 0
К сожалению, спроецированное решение, похоже, тоже не работает, RHEL зависает при загрузке ОС и никогда не загружается полностью. Поиск продолжается! Fdisk произвел 18 500 МБ, которые я скопировал 19 000, просто чтобы быть в безопасности, но все еще зависает! RickwhoPrograms 6 лет назад 0