Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

qcow2のディスクイメージをマウントして編集する@Ubuntu12.04

      2013/11/05

KVMなどで使われているqcow2形式のディスクイメージは、単純なディスクイメージと異なり、そのままループバックに繋いでもマウントすることができません。中身を編集するには、qemu-nbd コマンドを使って nbd (Network Block Device) 経由で扱います。nbd は、ネットワーク経由でローカルディスク上にあるディスクイメージをリモートからブロックデバイスとして扱えるようにするための機能がメインのものですが、今回はローカルにあるqcow2のディスクイメージをマウントするのに使うので、ネットワークはあまり関係ありません。

今回は、Ubuntu のクラウド向けの qcow2 ディスクイメージ precise-server-cloudimg-amd64-disk1.img をマウントしてみます。

qemu-utils パッケージがインストールされていない場合はインストールします。

# apt-get install qemu-utils

nbd カーネルモジュールをロードします。

# modprobe nbd

ロードが正常に完了すると、/dev/nbd0 や /dev/nbd1 といったデバイスが見えます。

# ls /dev/nbd*
/dev/nbd0    /dev/nbd1   /dev/nbd11  /dev/nbd13  /dev/nbd15  /dev/nbd3  /dev/nbd5  /dev/nbd7  /dev/nbd9
/dev/nbd0p1  /dev/nbd10  /dev/nbd12  /dev/nbd14  /dev/nbd2   /dev/nbd4  /dev/nbd6  /dev/nbd8

/dev/nbd0 に ディスクイメージを繋ぎます。
※ファイル名は絶対パスを書かないとエラーになるので、`pwd`を付けています。

# qemu-nbd --connect=/dev/nbd0 `pwd`/precise-server-cloudimg-amd64-disk1.img

connectすると、パーティションがある場合は自動的にパーティションに応じたデバイスが自動的に作らるので、kpartxは不要です。

# ls /dev/nbd0*
/dev/nbd0  /dev/nbd0p1

いまどのデバイスを使っているかは、コマンドでは確認できそうにないですが、プロセスをgrepして確認可能です。

# ps -ef | grep [q]emu-nbd
root     11461     1  0 10:49 ?        00:00:00 qemu-nbd --connect=/dev/nbd0 /home/share/img/precise-server-cloudimg-amd64-disk1.img

後は、/dev/nbd0p1 を適当にマウントすれば中身が見られます。

# mkdir /mnt/tmp
# mount /dev/nbd0p1 /mnt/tmp

ディスクイメージのデフォルトのパスワード変更したいなら、chroot して passwd コマンド叩けば、イメージ起動後にコンソールからログインできるようにもなります。

# chroot /mnt/tmp
# passwd ubuntu
# exit

後始末は、アンマウントして、disconnectします。disconnectの時は、デバイス名の前に”=”は不要です。

# umount /mnt/tmp
# qemu-nbd --disconnect /dev/nbd0 
/dev/nbd0 disconnected

 - IT技術, サーバ構築 ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
CentOS 7のクラウドイメージにssh経由でrootログイン@OpenStack

CentOS コミュニティはCentOS のクラウドイメージを公式に配布していま …

no image
vimでシンタックスのハイライトがおかしくなる

vim では、テキストファイルの種類に応じて色をつけてくれる機能(ハイライト機能 …

no image
viで制御コードの入力

.vimrcといった設定ファイルを書いていると、制御コードを入力したいときがあり …

no image
Galaxy SIIIのカメラのシャッター音を消す@Android 4.1.2

root 化した端末必須です。 root 権限で実行でき、/system を読み …

no image
USB LANアダプタ GU-1000Air 購入@Ubuntu 9.04 beta

プラネックスのUSBギガビットLANアダプタ GU-1000Airを購入。 搭載 …

no image
Search Everything 日本語版

WordPressのページ機能でページを作成しても、検索窓の検索対象になりません …

no image
screenからtmuxに乗り換えてみる

screenからtmuxに乗り換えた時のメモ。 まずは、ネットの情報を参考に、~ …

no image
CodeReadingWiki 改造版でソースコード解読

etherさん作成のCodeReadingWiki が、ソースコードを読むのにす …

no image
タイムゾーンの変更方法@RHEL

RHELやCentoSインストール時にタイムゾーン間違ったり、VMwareでクイ …

no image
vim (vi) でマッチした文字列の一部を置換

vim (vi)の置換のお話です。 全行のoldをnewに置換したい場合は普通こ …