
異なるファイルシステム(fatやext4など)を使用する2つの(比較的小さい)qemu(raw形式)ディスクイメージがあります。
USBスティックに2つの異なるパーティションで保存してコンピュータに接続し、そこから起動できるようにしたいと思います。
fdiskとddを使用してこれを行うことができますが、これにはrootアクセスと手動介入が必要です(これは今後数ヶ月間頻繁に実行される予定です)。
タスクをどのように自動化できますか? sudoとrootアクセスを防ぐことはできますか?
現在のディスクイメージは継続的な統合プロセス中に作成され、ルートアクセスや手動介入は必要ありませんが、この新しい要件を満たすために2つのディスクをマージする方法はありません。
編集する
自動化する必要があるのは、実際のUSBキーのパーティション化ではなく、すでに埋め込まれたsudo dd ...
データ(権限が保存されている)を含める必要がある単一の.diskイメージで使用できるパーティションを作成することです。
ネイティブディスクイメージを作成するには、ルートが必要な理由を理解できません。
答え1
ルートは必要ありません。 "fdisk someimage.hdd"を実行すると、そのファイルにアクセスできる限り問題はありません。 ddのoffsetおよびnotruncパラメーターを使用して、パーティションに対応するファイル部分でddを実行することもできます。
ddパーティションデバイスを使用する場合と比較して手動でオフセットを指定することはかなり不便です。ルートアクセスが便利な場所はここです。 "losetup"コマンドを使用して、イメージとそのパーティションのループバックブロックデバイスを作成できます。
ただし、パーティションのサイズを変更しないと、練習を繰り返すたびにこれらのオフセット計算は変更されないため、一度計算すると後で再利用できます。
別の方法があります。イメージを一度作成してオフセットを計算したら、将来のイメージを再構築するためにfdiskとddを使用することなく、パーティションテーブルを含むディスクイメージの先頭を別々のファイルに抽出できます。接続するだけです(「cat」)、パーティションテーブルと2つのパーティションイメージを単一のディスクイメージにします。 (場合によっては、ディスクの末尾にバックアップパーティションテーブルがある可能性があるため、パーティションテーブルを含むディスクプレフィックスファイルと同様に、パーティションの後にディスクサフィックスファイルを追加する必要があります。)
答え2
短い答えは「いいえ」です。
USBドライブのスクリプトまたは同様のファイルを使用して2つのパーティションを作成する必要がある限り、パーティションテーブルを編集し、rootアクセスを必要とするファイルシステムを作成できます。
すでに正しいファイルシステムを備えたパーティションがあり、qemuの両方のイメージがローカルにマウントされている場合(ルートも必要ですが、pmountを確認してください)、イメージのファイルをUSBスティックのパーティションにコピーしてみることができます。通常のファイルだけが存在し、そのファイルが属するユーザー/グループに興味がない限り、ルートなしで動作します。