16.4. guestfish シェル
guestfish は、コマンドラインまたはシェルスクリプトから、ゲスト仮想マシンファイルシステムにアクセスするために使用できるインタラクティブなシェルです。libguestfs API の機能はすべて、シェルから利用できます。
仮想マシンのディスクイメージの表示または編集を開始するには、次のコマンドを実行して、目的のディスクイメージへのパスを置き換えます。
guestfish --ro -a /path/to/disk/image
--ro は、ディスクイメージが読み取り専用で開かれていることを意味します。このモードは常に安全ですが、書き込みアクセスは許可しません。ゲスト仮想マシンが実行されていないことが確実な場合、またはディスクイメージがライブゲスト仮想マシンに接続されていない場合にのみ、このオプションを省略してください。libguestfs を使用してライブゲスト仮想マシンを編集することはできません。これを試みると、ディスクが破損し、元に戻せなくなります。
/path/to/disk/image は、ディスクへのパスです。これは、ファイル、ホスト物理マシン論理ボリューム (/dev/VG/LV など)、ホスト物理マシンデバイス (/dev/cdrom)、または SAN LUN(/dev/sdf3) の場合があります。
注記
libguestfs および guestfish には root 権限は必要ありません。アクセスされているディスクイメージが root から読み取りまたは書き込み、あるいは両方を必要とする場合にのみ、これらを root として実行する必要があります。
guestfish を対話的に起動すると、以下のプロンプトが表示されます。
guestfish --ro -a /path/to/disk/image Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell ><fs>
プロンプトで 実行 と入力して、ライブラリーを開始し、ディスクイメージを割り当てます。これは、最初に実行するときに最大 30 秒かかることがあります。その後の起動は、非常に速く完了します。
注記
libguestfs は、KVM (利用可能な場合) などのハードウェア仮想化アクセラレーションを使用して、このプロセスを高速化します。
run コマンドを入力すると、以下のセクションで示すように、他のコマンドを使用できます。
16.4.1. guestfish を使用したファイルシステムの表示
このセクションでは、guestfish でファイルを表示する方法について説明します。
16.4.1.1. 手動による一覧表示と表示
list-filesystems コマンドは、libguestfs が検出したファイルシステムの一覧を表示します。この出力は、Red Hat Enterprise Linux 4 ディスクイメージを示しています。
><fs> run ><fs> list-filesystems /dev/vda1: ext3 /dev/VolGroup00/LogVol00: ext3 /dev/VolGroup00/LogVol01: swap
この出力は、Windows ディスクイメージを示しています。
><fs> run ><fs> list-filesystems /dev/vda1: ntfs /dev/vda2: ntfs
その他の便利なコマンドは、list-devices、list-partitions、lvs、pvs、vfs-type、および file です。help command と入力すると、以下の出力のように、コマンドの詳細とヘルプを表示できます。
><fs> help vfs-type NAME vfs-type - get the Linux VFS type corresponding to a mounted device SYNOPSIS vfs-type device DESCRIPTION This command gets the file system type corresponding to the file system on "device". For most file systems, the result is the name of the Linux VFS module which would be used to mount this file system if you mounted it without specifying the file system type. For example a string such as "ext3" or "ntfs".
ファイルシステムの実際の内容を表示するには、最初にマウントする必要があります。この例では、前の出力 (
/dev/vda2
) に示されている Windows パーティションの 1 つを使用します。この場合、これは C:\ドライブに対応することがわかっています。
><fs> mount-ro /dev/vda2 / ><fs> ll / total 1834753 drwxrwxrwx 1 root root 4096 Nov 1 11:40 . drwxr-xr-x 21 root root 4096 Nov 16 21:45 .. lrwxrwxrwx 2 root root 60 Jul 14 2009 Documents and Settings drwxrwxrwx 1 root root 4096 Nov 15 18:00 Program Files drwxrwxrwx 1 root root 4096 Sep 19 10:34 Users drwxrwxrwx 1 root root 16384 Sep 19 10:34 Windows
ls、ll、cat、そのmore、download、tar-out などの guestfish コマンドを使用して、ファイルおよびディレクトリーを表示およびダウンロードできます。
注記
このシェルには、現在の作業ディレクトリーの概念はありません。通常のシェルとは異なり、cd コマンドを使用してディレクトリーを変更することはできません。すべてのパスは、先頭のスラッシュ (/) 文字で始まる完全修飾する必要があります。Tab 鍵を使用して、パスを完成させます。
guestfish シェルを終了するには、exit と入力するか、Ctrl+d と入力します。
16.4.1.2. guestfish 検査の使用
ファイルシステムを手動で一覧表示してマウントする代わりに、guestfish 自体がイメージを検証して、ゲスト仮想マシンのようにファイルシステムをマウントできます。これを行うには、コマンドラインに -i を追加します。
guestfish --ro -a /path/to/disk/image -i Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell Operating system: Red Hat Enterprise Linux AS release 4 (Nahant Update 8) /dev/VolGroup00/LogVol00 mounted on / /dev/vda1 mounted on /boot ><fs> ll / total 210 drwxr-xr-x. 24 root root 4096 Oct 28 09:09 . drwxr-xr-x 21 root root 4096 Nov 17 15:10 .. drwxr-xr-x. 2 root root 4096 Oct 27 22:37 bin drwxr-xr-x. 4 root root 1024 Oct 27 21:52 boot drwxr-xr-x. 4 root root 4096 Oct 27 21:21 dev drwxr-xr-x. 86 root root 12288 Oct 28 09:09 etc [etc]
インスペクションおよびマウントを実行するために、guestfish は libguestfs バックエンドを起動する必要があるため、-i オプションを使用する場合は run コマンドを使用する必要はありません。-i オプションは、多くの一般的な Linux および Windows ゲスト仮想マシンで機能します。
16.4.1.3. 名前によるゲスト仮想マシンのアクセス
ゲスト仮想マシンは、libvirt として知られる名前 (つまり virsh list --all にあるように) を指定するとコマンドラインからアクセスできます。-d オプションを使用して、ゲスト仮想マシンに名前 (-i オプションの有無にかかわらず) でアクセスします。
guestfish --ro -d GuestName -i