どらねこへいとくるー

we're doraneko hate crew

qemuで使っていた.qcow2形式のファイルシステムイメージをx64 debian上でマウントしてファイルを修復したりfsckしたりした話

あらすじ

ARM用クロスコンパイル環境として、qemu を使って仮想ARMマシンを立ち上げ、その上で開発していました。

ある日、仮想マシンにログインできなくなる事件が発生。 結論から言うと /etc/passwd とかが壊れていました。これを修復する方法を模索した話です。

手順

OS Xからやる方法が見つからなかった(分からなかった)ので、Linux上で作業することにしました。

前準備

今回はvagrant仮想マシン上にdebianを上げて、その上で作業しました。 これはLinuxマシンなら何でも大差無いと思うので手順は省略。debian系ディストリであれば同じ手順でいけるのではと思います。

ちなみにvagrantでファイルの共有をするには Vagrantfile に以下のような感じで記述。

config.vm.synced_folder "~/qemudir", "/shared/qemu"

この辺りも手段は問わない感じです(仮想debianから .qcow2 がいじれれば)

vagrantで仮想Linuxを起動しログイン

vagrantならこんな感じ。やっていることは普通にVirtual Box等で仮想Linuxを起動してログインしているだけです。

% vagrant up   # 仮想マシン起動
% vagrant ssh  # 仮想マシンにログイン

仮想マシン上で修復準備

# root権限がないと出来ないことばかりなのでrootになってしまう
# ここは逐一sudoでコマンドを叩いても良いと思います
$ sudo su

# 仮想Linuxにqemu-utilsをインストール
$ apt-get install qemu-utils

# nbdというカーネルモジュールをロード
$ modprobe nbd max_part=8

# qcow2を/dev配下のブロックデバイスとして見えるようにする
$ qemu-nbd --connect=/dev/nbd0 diskimage.qcow2

# fdiskでパーティションを(一応)調べてみる。今回は/dev/nbd0p1 というのがメインパーティションだった。
$ fdisk /dev/nbd0

仮想マシン上でファイルシステム修復

# ブロックデバイスとして扱える状態なので、fsckができるようです
$ fsck /dev/nbd0p1

# マウント。これで中身が見られるようになります
$ mount /dev/nbd0p1 /mnt

# 終わったらアンマウントして後処理。
$ umount /mnt
$ qemu-nbd --disconect /dev/nbd0

壊れていた /etc/passwd を正しいものに置き換えたところ、無事ログイン出来るようになりました。

参考サイト

大変参考にさせていただきました。ありがとうございます。

vi / vim を初めて触るレベルの人が最初に習得すべき12個の操作

はじめに、 たまにVimを触る必要があるけどあんまり積極的に触りたくない 人に向けた記事ではないです。 Vimを習得したいけど情報多すぎるし、とりあえず何を覚えるのが良いの? みたいな人に向けています。

vi / vim という魔物エディタと戦うために最低限まずはこの12個知っておけば良いんじゃないかな、という操作です。本当は10個にしたかったんですが絞りきれませんでした。

当然「いや u くらいは…」「 Ctrl 絡みのキーバインドが無い…」とかあるんですが、それは2歩目ということでこの記事では1歩目だけに絞りました。

1歩歩き出せれば、2歩目を踏み出すのは容易だろうと思います。

カーソル移動系

vi / vim を起動すると ノーマルモード になっており、まず編集したい箇所までカーソルを移動します。

  • 1 h … 左
  • 2 j … 下
  • 3 k … 上
  • 4 l … 右

ノーマルモード→インサートモード

編集したい箇所までカーソルを移動したら、文字を入力するために インサートモード に変更します。

  • 5 i … カーソル位置に文字入力
  • 6 a … カーソル位置の右に文字入力
  • 7 o … カーソル位置の下に文字入力

インサートモード→ノーマルモード

文字の入力が終わったら ノーマルモード に戻ります。

  • 8 Esc … ノーマルモードに戻る

文字削除

ノーマルモードの状態で削除したい文字にカーソルを移動して削除をします。

  • 9 x … 1文字削除
  • 10 dd … 1行削除

終了

編集が終了したら vi / vim を終了します。

  • 11 :wq … 保存して終了
  • 12 :q! … 保存しないで終了

追記・undo/redoくらいはさせて!

と言われたのでオマケ。古臭い環境の古い vi や、busybox の vi なんかだと使えない場合もあります。

ちなみにノーマルモードでおこなってください。

  • u … アンドゥ
  • Ctrl+r … リドゥ

「なんか変になっちゃった!」→ Escu で元に戻る!という使い方は非常に多い気がします。

最後に

この12個を知ってれば一通りの編集が出来るようになります。 はじめはノーマルモードとインサートモードという概念がわかりづらいので、慌てず今自分がどのモードで操作をしているのかを念頭に置いて作業すると良いです。

そしてどの状態でも Esc を押せばノーマルモードになります。これはとても重要。ワケわからなくなったら慌てずに Esc を押しましょう。

そして次のステップへいくためにお手元のターミナルでおもむろに vimtutor と打って実行してみてください。

追記

生き残る というレベルから Vimの強大な力 を感じるに至るまでの Vim との触れ合い方を書いてくださっている記事がとっても良いのでリンク貼らせていただきます。ご参考までに。

MacBook AirよりもMacBook Pro Retinaの方が音質が良い気がする(EarPods & iTunes)

スピーカーは知りません。イヤフォンの話。

http://store.storeimages.cdn-apple.com/8362/as-images.apple.com/is/image/AppleInc/aos/published/images/M/D8/MD827/MD827?wid=572&hei=572&fmt=jpeg&qlt=95&op_sharpen=0&resMode=bicub&op_usm=0.5,0.5,0,0&iccEmbed=0&layer=comp&.v=1400693496133

EarPodsの良さはiPhoneとの組み合わせで引き出される(と思う)

EarPodsはiPhoneユーザはご存知、iPhone付属のイヤフォンです。

元々iPhone/iPod Touchのシャリっとした音とEarPodsの低音強めなとこが合わさって絶妙に良さ気な音質を作り上げていた(と思っている)のですが、以前使っていたMacBook AirとEarPodsはあまり相性が良くなかったように思います。

Proは何かが違うのか?

最近仕事用のPCがMacBook Pro Retinaに変わったのですが、これにEarPodsを接続してiTunesで曲を聴いてみると…けっこうiPhone/iPod Touchに近い音質なんですよね。

まー個人の感想ではあるのですが。。一応書き留めておきます。 何か違うんですかねぇ。でも明らかに音は違うんですよねぇ。

無線から有線に

しかしアレです、EarPodsとiPod Touchを常用しているのですが、この組み合わせの音質が絶妙ですっかりこの組み合わせです。元々音質をある程度割りきって利便性重視でBluetoothイヤフォン使ってたんですが、すっかり有線に戻ってしまいました。よ。