Как объединить 2 образа диска в один с 2 разделами?

У меня есть 2 (относительно небольших) образа диска для qemu (raw format), содержащих разные файловые системы (скажем, fat и ext4).

Я хочу поместить их в USB-накопитель в виде двух разных разделов, чтобы я мог подключить его к компьютеру и загрузиться оттуда.

Я мог бы сделать это с помощью fdisk и dd, но это потребует доступа root и ручного вмешательства (это будет частая деятельность в следующие месяцы.

Как я могу автоматизировать задачу? Могу ли я избежать доступа sudo и root?

В настоящее время образы дисков создаются в процессе непрерывной интеграции и не требуют доступа root или ручного вмешательства, но я не могу найти способ объединить эти два диска для удовлетворения этого нового требования.

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

Мне нужно автоматизировать не раздел фактического ключа usb, а создание образа необработанного диска, который можно записать в ключ usb с помощью одного sudo dd ... Образ диска должен содержать разделы, заполненные данными (с сохранением разрешений).

То, что я не могу понять, – это то, почему я должен использовать root для записи образа необработанного диска.

Простой ответ: no

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

Учитывая, что у вас уже есть эти разделы с правильной файловой системой, и у вас есть два изображения из qemu, смонтированных локально (для чего требуется также root, но посмотрите на pmount), вы можете попытаться скопировать файлы из изображений в раздел на USB-палке. До тех пор, пока у вас есть только обычные файлы и вы не заботитесь о пользователе / ​​группе, к которой они принадлежат, это должно работать без root.

Вам не нужен корень. Вы можете запустить «fdisk someimage.hdd» и до тех пор, пока у вас есть доступ к этому файлу, все в порядке. Вы также можете использовать dd для частей этого файла, которые соответствуют разделам, используя параметры offset и notrunc для dd.

Указание смещений вручную довольно неудобно по сравнению с использованием устройств разделов с dd. Здесь может оказаться полезным доступ root – вы можете использовать команду «losetup» для создания блочных устройств loopback для вашего изображения и его разделов.

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

И есть еще один способ – после того, как вы сделаете изображение один раз и выяснили смещения, вы можете извлечь начало образа диска, содержащего таблицу разделов, в виде отдельного файла, и вам не нужно использовать fdisk и dd для ваших будущих пересозданий изображений – просто конкатенируйте («cat») таблицу разделов и изображения двух разделов в образ диска. (В некоторых случаях вам может понадобиться cat также файл с суффиксом диска после разделов, похожих на файл с префиксом диска, содержащий таблицу разделов, поскольку в конце диска может быть таблица резервных разделов).