これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド guestfs-recipes です。
プログラム:
NAME
guestfs-recipes - libguestfs、guestfish、および virt ツールのレシピ
DESCRIPTION
このページには、libguestfs を使用して実行できることのレシピとリンクが含まれています。
ゲストフィッシュ(1) と virt ツール。
アクセス a リモート ディスク 画像 ゲストフィッシュ
ディスク イメージが SSH、HTTP、FTP、NBD を使用してアクセスできるリモート サーバー上にある場合、
iSCSI などの場合は、直接開くことができます。 「リモートストレージの追加」を参照してください。
ゲストフィッシュ(1) いくつかの例を示します。 これには、libguestfs ≥ 1.22 および qemu ≥ 1.5 が必要です。
監査 a バーチャル 機械 for setuid ファイル
参照: virt-lsとします。
監査 a バーチャル 機械 for 脆弱性 & セキュリティ 問題
以下を参照してください。
https://rwmj.wordpress.com/2013/05/16/scanning-offline-guests-using-openscap-and-guestmount/#content
変更する 背景 画像 in a Windows XP VM
以下のリンクで使用方法が説明されています ゲストフィッシュ(1) ユーザーの背景画像を変更する
Windows XP VM の。 残念ながら、このテクニックは次の場合と大幅に異なるようです。
Windows の各バージョン。
https://lists.fedoraproject.org/pipermail/virt/2011-May/002655.html
https://lists.fedoraproject.org/pipermail/virt/2011-May/002658.html
チェックサム a file or デバイス 以内 a ディスク 画像
ディスクイメージ内のデバイス全体、またはパーティション、LV などをチェックサムするには:
guestfish --ro -a disc.img run : checksum-device md5 /dev/sda1
「md5」を必要なチェックサムのタイプに置き換えます。 「guestfs_checksum_device」を参照してください。
ゲスト(3) サポートされているタイプのリストを参照してください。
の/ dev / sda1 「最初のパーティション」を意味します。 使用できます / dev / sdaに ディスク全体をチェックサムするには
イメージ、または論理ボリュームまたは RAID デバイスの名前。
単一のファイルをチェックサムするには:
guestfish --ro -a disc.img -i チェックサム sha256 /etc/passwd
または Windows ゲストの場合:
guestfish --ro -a disc.img -i \
チェックサム sha256 'win:\windows\system32\config\SOFTWARE'
クローニング a バーチャル 機械
次のようなツールを組み合わせて使用します cp(1) dd(1)、および次のような virt ツール virt-sysprep(1)
仮想スパース化(1)と virt-サイズ変更とします。
詳細については、「コピーとクローン作成」を参照してください。 virt-sysprepとします。
変換 a CD-ROM / DVD / ISO 〜へ a ターボール
これは入力を変換します cd.iso 出力する cd.tar.gz:
guestfish --ro -a cd.iso -m /dev/sda tgz-out / cd.tar.gz
サブディレクトリのみをエクスポートするには、たとえば、 / files、 行う:
guestfish --ro -a cd.iso -m /dev/sda tgz-out /files cd.tar.gz
変換 から XNUMXつ フォーマット/ファイルシステム 〜へ 別の
XNUMX つのフォーマット / ファイルシステム / パーティション / ボリューム マネージャーのデータ ディスクがある場合は、次のことができます。
この手法を使用して別の変換を行います。
この例では、データ ディスクを含む単一のパーティションを持つデータ ディスクから始めます。
ファイルシステムを作成し、同じファイルを含む別のディスクを ext3 上に作成したいと考えています。
スパース RAW フォーマット ディスク上の論理ボリュームに埋め込まれたファイルシステム。
まず、フォーマット済みだが空のターゲット ディスクを作成します。
truncate -s 10G target.img
virt-format -a target.img --partition=mbr --lvm --filesystem=ext3
次に、XNUMX つの guestfish インスタンスをパイプ処理して、古いデータを新しいディスクに転送します。
guestfish --ro -a source.img -m /dev/sda1 --tar-out / - | \
guestfish --rw -a target.img -m /dev/VG/LV -- tar-in - /
最終的なディスク イメージを参照するには、次の手順を実行します。
guestfish --ro -a target.img -m /dev/VG/LV
>> ll /
この手法は非常に強力で、たとえばソース ディレクトリを分割することができます。
ターゲットファイルシステム上で。
これは、ブート可能な仮想マシン ディスクでは (少なくとも直接的には) 機能しないことに注意してください。
ブートローダーを上書きコピーしません。
変換 Windows DVD 〜へ 起動可能な USB キー
http://rwmj.wordpress.com/2013/05/09/tip-convert-a-windows-dvd-iso-to-a-bootable-usb-key-using-guestfish/#コンテンツ
変換 Xen スタイル パーティションレス 画像 〜へ 仕切られた ディスク 画像
Xen ディスク イメージは多くの場合パーティションレスです。つまり、ファイル システムは次の場所で直接開始されます。
パーティションテーブルのないディスクの先頭。 実際、これらを直接使用できます。
KVM (ゲストが Windows でない場合) ですが、通常の KVM に変換したい人もいます。
パーティション化されたディスク イメージ。これは Windows ゲストに必要です。 使用方法は次のとおりです
これを行うにはゲストフィッシュ:
ゲストフィッシュ
> add-ro input.img
> sparse Output.img 10G # 出力サイズを調整する
>> 走る
# 出力ディスクにパーティション テーブルを作成します。
> パート初期化 /dev/sdb mbr
> part-add /dev/sdb p 2048 -2048
# データをターゲット パーティションにコピーします。
> デバイスからデバイスへのコピー /dev/sda /dev/sdb1 sparse:true
# 必要に応じて、ターゲット ファイルシステムのサイズを変更します。 ntfsresizeを使用する
# Windows ゲストの場合:
> size2fs /dev/sdb1
このようなディスク イメージは直接ブートできません。 外部から起動する必要がある場合があります
カーネルとinitramfs (以下を参照)。 または、guestfish コマンド「syslinux」または
「extlinux」: SYSLINUX ブートローダーをインストールします。
創造する 空の ディスク 画像
仮想フォーマット(1) ツールはこれを直接実行できます。
virt-make-fs(1) コンテンツを含むディスク イメージを作成します。 これにより、いくつかのものも作成できます
仮想フロッピー デバイス (VFD) などの標準ディスク イメージ。
使用することもできます ゲストフィッシュ(1) -N 空のディスクイメージを作成するオプション。 役立つガイド
以下に利用可能なオプションについて説明します。
https://rwmj.wordpress.com/2010/09/08/new-guestfish-n-options-in-1-5-9/#content
仮想ビルダー(1) 最小限のゲストを作成できます。
削除 a file (または 他の シンプルな file オペレーション)
ゲストフィッシュを使用します。 ファイルを削除するには:
guestfish -a disc.img -i rm /file/to/delete
ファイルを操作するには (ファイルを最新の状態にするか、ファイルを作成します):
guestfish -a disc.img -i touch /file/to/touch
ファイルを統計します。 これは読み取り専用操作であるため、次のコードを追加することで安全性を高めることができます。
--ろ フラグ。
guestfish --ro -a disc.img -i stat /file/to/stat
これらのコマンドは数十あります。 見る ゲストフィッシュ(1) または「guestfish -h」の出力
デフ 2 ゲスト。 比較します a スナップショット 〜へ 現在 バージョン
libguestfs ≥ 1.26 なので、次を使用します。 仮想差分(1) XNUMX 人のゲストの違いを探すため (
たとえば、元は同じソースからクローンされた場合)、または XNUMX つのスナップショット間でクローンされた場合
同じゲストから。 libguestfs の以前のバージョンでは、次を使用します。 virt-lsとします。
無効にします a systemd サービス
以下は「systemctlマスク...」と同等です。 「cloud-init」を無効にするには
サービスが次回起動時に開始されないようにします。
guestfish -a disc.img -i \
ln-sf /dev/null /etc/systemd/system/cloud-init.service
tmp-on-tmpfs を無効にするには:
guestfish -a disc.img -i \
ln-sf /dev/null /etc/systemd/system/tmp.mount
上記のコマンドの問題の XNUMX つは、名前を取得してもフィードバックがないことです。
間違ってマスクしようとしているサービス。 しかし、あなたは使うことができます virt-ls(1) 利用可能なものをリストする
このような systemd サービス:
virt-ls -a /tmp/fedora-19.img -R /lib/systemd/システム
ダンプ 生 ファイルシステム コンテンツ から 内部 a ディスク 画像 or VM
あなたが使用することができます ゲストフィッシュ(1) raw ファイルシステムのコンテンツを抽出する「download」コマンド
ディスク イメージまたは VM 内の任意のファイル システム (暗号化されているか、LV 内に埋め込まれているファイル システムも含む)
または RAID デバイス):
guestfish --ro -a disc.img 実行: /dev/sda1 sda1.img をダウンロード
guestfish --ro -d ゲスト実行: /dev/vg_guest/lv_root lv.img をダウンロードします。
標準出力にダウンロードするには、ファイル名を「-」文字に置き換えます。
guestfish --ro -a disc.img 実行 : ダウンロード /dev/sda1 - | gzip > sda1.gz
ディスクイメージ内のファイルシステムを一覧表示するには、次を使用します。 virt-ファイルシステムとします。
「生のファイルシステムコンテンツのアップロード」も参照してください。
編集 グラブ の監視 in a VM
これを使用して次のことができます。
· 起動しない仮想マシンを修正します。
· VM の起動に使用するカーネルを変更します。
· カーネル コマンド ライン オプションを変更します。
virt-編集(1) grub 設定を編集するには:
virt-edit -d BrokenGuest /boot/grub2/grub.cfg
または、起動できない VM 内の一般的ないじりに使用します。 仮想レスキュー(1) このように:
virt-rescue -d BrokenGuest
輸出 どれか ディレクトリにジョブを開始します。 から a VM
輸出する /ホーム VM からローカル ディレクトリへの使用 仮想コピーアウト(1):
virt-copy-out -d ゲスト /ホーム .
注意:
・コマンドの最後のドットは印刷エラーではありません。 これは、にコピーアウトしたいことを意味します
現在のディレクトリ。
· これにより、現在のディレクトリの下に「home」という名前のディレクトリが作成されます。
ゲストが Windows ゲストの場合は、ドライブ文字とバックスラッシュを使用できますが、
次のように、パスの前に「win:」を付けて引用符で囲み、シェルから保護する必要があります。
virt-copy-out -d WinGuest 'win:c:\windows\system32\config' 。
出力を圧縮 tarball として取得するには、次のようにします。
virt-tar-out -d ゲスト /ホーム - | gzip --best > home.tar.gz
魅力的に思えますが、これは通常、バックアップを取得するための信頼できる方法ではありません。
ランニングゲスト。 FAQ のエントリを参照してください。 http://libguestfs.org/FAQ.html#バックアップ
もう完成させ、ワークスペースに掲示しましたか? でる which user is 最も スペース
この単純なスクリプトは、Linux ゲストを調べて、どのユーザーが最も多くのスペースを使用しているかを調べます。
ホームディレクトリ内:
#!/bin/sh -
セット-e
vm="$1"
ディレクトリ=/ホーム
eval $(guestfish --ro -d "$vm" -i --listen)
for d in $(guestfish --remote ls "$dir"); する
echo -n "$dir/$d"
echo -ne '\t'
guestfish --remote du "$dir/$d";
完了 | ソート -nr -k 2
guestfish--リモート出口
輸出 外部 kernel & initramfs (初期化)
Linux ゲストにブート ローダーがないか、壊れている場合は、通常はブートできます。
外部カーネルとinitramfsを使用します。 この構成では、ハイパーバイザーは次のように機能します。
ブートローダー、カーネルをホスト ディスクからゲスト メモリにロードし、直接ジャンプします
カーネルに。
ただし、ディスク イメージに対応する適切なカーネルを取得する方法を疑問に思うかもしれません。
持っている。 libguestfs ≥ 1.24 以降 仮想ビルダー(1) 最新のカーネルと対応するカーネルを取得できます
あなたのための initramfs:
mkdir 出力ディレクトリ
virt-builder --get-kernel ディスク.img -o 出力ディレクトリ
ls -lh 出力ディレクトリ
入手 DHCP 住所 から a VM
以下のリンクでは、最後のデータを取得するためのさまざまな手法について説明しています。
仮想マシンに割り当てられた DHCP アドレス。
https://rwmj.wordpress.com/2011/03/31/tip-code-for-getting-dhcp-address-from-a-virtual-machine-disk-image/#content
libguestfs ソース サンプル ディレクトリには、最新バージョンの
virt-dhcp-アドレス.c プログラム。
入手 オペレーティング BOX 名 文字列
次のスクリプトを という名前のファイルに保存します。 製品名.sh:
#!/bin/sh -
セット-e
eval "$(guestfish --ro -d "$1" --i --listen)"
root="$(guestfish --remote Inspection-get-roots)"
guestfish --remote Inspection-get-product-name "$root"
guestfish--リモート出口
スクリプトを実行可能にして、名前付きゲスト上で実行します。
# 製品名.sh RHEL60x64
Red Hat Enterprise Linux Server リリース 6.0 (サンティアゴ)
XPath クエリを使用することもできます。 virt-インスペクター(1)「xpath」コマンドを使用したXML
line ツールまたはお気に入りのプログラミング言語から:
# virt-inspector RHEL60x64 > xml
# xpath '//製品名' < xml
1つのノードが見つかりました:
-ノード-
Red Hat Enterprise Linux Server リリース 6.0 (サンティアゴ)
入手 デフォルト ブート kernel for a Linux VM
以下のリンクには、Linux VM のデフォルトのブート カーネルを出力するプログラムが含まれています。
https://rwmj.wordpress.com/2010/10/30/tip-use-augeas-to-get-the-default-boot-kernel-for-a-vm/#content
これは Augeas を使用しており、この技術は一般的に次のようなさまざまなタスクに適用できます。
を次のように定義しています:
· ゲスト内のユーザーアカウントをリストする
· どのリポジトリを使用するように構成されているか
· どの NTP サーバーに接続しますか
· 前回起動したときの起動メッセージは何でしたか
· 最近ログインした人のリスト
http://augeas.net/
ハンギング ゲスト
libguestfs を使用して、ゲストがハングしている理由を調べるさまざまな方法があります。
無反応:
1. virt-cat を使用してログ ファイルを読み取ります。
virt-cat ゲスト /var/log/messages | 少ない
2. Windows イベント ログを読み取ります (Windows Vista 以降のみ)。
https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content
3. ゲスト内で最後に更新されたファイルを確認します。
https://rwmj.wordpress.com/2012/02/27/using-libguestfs-to-find-out-why-a-windows-guest-was-hanging/#content
これにより、どのプログラムが実行されているかを知る手がかりが得られる可能性があります。
ヘックスダンピング セクター から ゲスト
ブート パーティション (マスター ブート レコード / 最初のセクター) を XNUMX 進ダンプします。
guestfish --ro -a ディスク.img 実行: pread-device /dev/sda 0x200 0 |
XNUMX 進ダンプ -C
(0x200 = 512 バイト、これは従来の PC セクターのサイズです)
N 番目のパーティションを XNUMX 進ダンプするには、次のコマンドの「N」を数字に置き換えます。
guestfish --ro -a disc.img \
実行:pread-device /dev/sda 0x200 $((N*0x200)) |
XNUMX 進ダンプ -C
XNUMX 進数編集 セクター in ゲスト
ブート パーティション (マスター ブート レコード / 最初のセクター) を XNUMX 進数編集します。
guestfish --rw -a disc.img 実行: hexedit /dev/sda 0x200
インストールを開始する パッケージ (回転数、 Debianの パッケージ) in a ゲスト
libguestfs 1.26 以降、 仮想ビルダー(1) virt-カスタマイズ(1)と virt-sysprep(1) を持っています
- インストール Linux ゲストにパッケージをインストールするためのオプション。 (ある場合は virt-customize を使用してください
既存のゲスト、またはゲストを最初から作成する場合は virt-builder)。
例:
virt-builder fedora-20 --emacs をインストールします
インストールを開始する パッケージ から an 代替の 倉庫
libguestfs 1.26 以降、使用できます 仮想ビルダー(1) virt-カスタマイズ(1)または virt-sysprep(1)
--編集 パッケージをインストールする前にリポジトリのメタデータを編集するオプション
たとえば、これは Fedora の更新テスト リポジトリからパッケージをインストールします。
virt-builder fedora-20 \
--edit '/etc/yum.repos.d/fedora-updates-testing.repo:
s/有効=0/有効=1/' \
--emacs をインストールする
インストールを開始する SYSLINUX bootloader in a ゲスト
SYSLINUX は、Linux および Windows ゲスト用の小型で構成が簡単なブートローダーです。 もしあなたの
ゲストはブート可能ではありません。guestfish のいずれかを使用して SYSLINUX ブートローダーをインストールできます。
コマンド「syslinux」(FAT ベースのゲストの場合) または「extlinux」(ext2/3/4 および btrfs ベースの場合)
ゲスト)。
このガイドは、Linux ゲストを前提としています。 の/ dev / sda1 is /ブート, /boot/vmlinuz ゲストです
カーネル、および の/ dev / sda3 ルートパーティションです。 Windows ゲストの場合は、FAT-
ブート パーティションがフォーマットされている場合は、代わりに「syslinux」コマンドを使用する必要があります。
作る syslinux.cfg 設定ファイル。 次の場所にある SYSLINUX ドキュメントを確認してください。
http://www.syslinux.org しかし、それは次のように見えるかもしれません:
デフォルトのLinux
LABEL Linux
SAY カーネルをブートしています
カーネル vmlinuz
INITRD initrd
APPEND ro root=/dev/sda3
syslinux マスター ブート レコード (次のような名前のファイル) を見つけます。
/usr/share/syslinux/mbr.bin).
guestfish -a disc.img -i
# マスター ブート レコードと構成ファイルをアップロードします。
> アップロード ..../mbr.bin /boot/mbr.bin
> アップロード ..../syslinux.cfg /boot/syslinux.cfg
# MBR をブート セクターに配置します。
> ファイルをデバイスにコピー /boot/mbr.bin /dev/sda サイズ:440
# 最初のパーティションに syslinux をインストールします。
> 外部リナックス /ブート
# 最初のパーティションをブート可能として設定します。
> パーツセットブート可能 /dev/sda 1 true
も参照してください。
http://rwmj.wordpress.com/2013/04/04/new-in-libguestfs-use-syslinux-or-extlinux-to-make-bootable-guests/#コンテンツ
リスト インストール in a VM
以下をファイルに保存します list-apps.sh:
#!/bin/sh -
セット-e
eval "$(guestfish --ro -d "$1" --i --listen)"
root="$(guestfish --remote Inspection-get-roots)"
guestfish --remote Inspection-list-applications "$root"
guestfish--リモート出口
ファイルを実行可能にすると、任意の名前付き仮想マシンで実行できるようになります。
# list-apps.sh WinGuest
[0] = {
app_name: Mozilla Firefox (3.6.12)
app_display_name: Mozilla Firefox (3.6.12)
app_epoch:0
アプリのバージョン: 3.6.12 (GB)
アプリリリース:
app_install_path: C:\Program Files\Mozilla Firefox
app_trans_path:
app_publisher: Mozilla
app_url: http://www.mozilla.com/en-GB/
app_source_package:
app_summary:
app_description: Mozilla Firefox
}
[1] = {
app_name: VLC メディア プレーヤー
app_display_name: VLC メディア プレーヤー 1.1.5
app_epoch:0
app_version:1.1.5
アプリリリース:
app_install_path: C:\Program Files\VideoLAN\VLC
app_trans_path:
app_publisher: VideoLAN
app_url: http://www.videolan.org/
app_source_package:
app_summary:
app_description:
}
(libvirt 仮想マシンではなく) ディスク イメージ上でスクリプトを実行する場合は、次のように変更します。
「-d "$1"」から「-a "$1"」まで。 こちらも参照 virt-インスペクターとします。
リスト ファイル & ディレクトリ in a VM
virt-lsとします。
リスト サービス in a Windows VM
以下のリンクには、Windows からサービスを一覧表示するために使用できるスクリプトが含まれています。
VM、およびそれらのサービスが起動時に実行されるか、オンデマンドでロードされるか。
https://rwmj.wordpress.com/2010/12/10/tip-list-services-in-a-windows-guest/#content
アカウントを作成し a ディスク 画像 まばらな
仮想スパース化とします。
モニター ディスク 使用 が 時間
あなたが使用することができます virt-df(1) ゲストのディスク使用量を長期的に監視するため。 以下のリンク
ガイドが含まれています。
http://virt-tools.org/learning/advanced-virt-df/
リーディング Windows イベント ログ から Windows ビスタ (または 後で)
ゲストフィッシュ(1) さらに、以下のリンクで説明されているツールを使用して、
Windows Vista 以降のバージョンを実行している仮想マシンからの Windows イベント ログ。
https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content
削除します ルート password (Linux)
使い方 virt-編集(1) -e オプションを使用すると、ファイルに対して単純な置換を行うことができます。 一つの使い方は、
Linux ゲストから root パスワードを削除します。
virt-edit -d ダム名 /etc/passwd -e の/^root:.*?:/ルート::/'
virt-edit -a ディスク.img /etc/passwd -e の/^root:.*?:/ルート::/'
削除します 管理者 password (Windowsの場合)
以下のリンクには、管理者パスワードをパスワードから削除するための XNUMX つのテクニックが含まれています。
Windows VM、より正確に言えば、次回ログインしたときにコマンド プロンプトが表示されます。
これを使用すると、セキュリティを回避できます。
https://mdbooth.wordpress.com/2010/10/18/resetting-a-windows-guests-administrator-password-with-guestfish/
シスプレッピング a バーチャル 機械 (Windowsの場合)
簡単ではありませんが、libguestfs だけを使用して「sysprep」を実行することも可能です。
現在、Aeolus Oz プロジェクトにはこれを行うコードがあります (libguestfs を使用)。 それ
これを追加する可能性があります virt-sysprep(1) 今後。
https://github.com/clalancette/oz
https://www.redhat.com/archives/virt-tools-list/2011-May/msg00019.html
開梱 a ライブ CD
Linux ライブ CD には、ロシア人形のようにラップされたディスク イメージの複数のレイヤーが含まれることがよくあります。
あなたが使用することができます ゲストフィッシュ(1) ガイドで概説されているように、これらの複数のレイヤーの内部を確認します。
を参照してください。
https://rwmj.wordpress.com/2009/07/15/unpack-the-russian-doll-of-a-f11-live-cd/#content
アップロード & ダウンロード ファイル
以下のリンクには、アップロード (コピーイン) およびダウンロード (コピー) に関する一般的なヒントが含まれています。
out) VM からのファイル。
https://rwmj.wordpress.com/2010/12/02/tip-uploading-and-downloading/#content
アップロード 生 ファイルシステム コンテンツ
あなたが使用することができます ゲストフィッシュ(1) ファイルシステム全体を VM にアップロードする (ファイルシステムにもアップロードする)
これは暗号化されるか、LV または RAID デバイス内に埋め込まれます。
guestfish --rw -a disc.img 実行: sda1.img /dev/sda1 をアップロードします
guestfish --rw -d ゲスト実行: lv.img /dev/vg_guest/lv_root をアップロードします。
よくある問題の XNUMX つは、ファイル システムのサイズがターゲットに対して適切ではないことです。 もしそれが
大きすぎるため、libguestfs でできることはあまりありません。
ファイルシステムが異なります。 ただし、ファイルシステムをターゲットに拡張する必要がある場合は、次のようにすることができます。
guestfish を使用して、適切なサイズにサイズ変更します。
guestfish --rw -d ゲストの実行: \
lv.img /dev/vg_guest/lv_root をアップロードします: \
size2fs /dev/vg_guest/lv_root
(または、ファイルシステムが NTFS の場合は「ntfsresize」を使用します)。
libguestfs 豊富なツール群 on ヴイエムウェア ESX ゲスト
以下のリンクは libguestfs の使用方法を説明しています。 ゲストフィッシュ(1) および任意の仮想ツール
VMware ESX ゲスト。最初に sshfs 経由で VMware VMFS を共有します。
https://rwmj.wordpress.com/2011/05/10/tip-use-libguestfs-on-vmware-esx-guests/#content
onworks.net サービスを使用してオンラインで guestfs-recipes を使用する