キーボード修理

昨日出がけに少量の水をこぼしてしまったせいか、いつのまにか自宅のMajestouch TenkeylessのEnterキーが効かなくなっていた。
(きちんと拭き取ってケア出来ていたつもりだったのだが)


今まで億劫でキーボードを分解掃除したりはしていなかったのだが、さすがにエンターキーが聞かないと不自由するので分解することに。
ガワを空けるのに多少手こずったが、スイッチをほとんど使っていないApplicationキーと交換。
ついでにLEDも目に優しくない高輝度LEDから手持ちの通常輝度のものに交換した。


動作しなくなっていたスイッチを分解してみると、接点部分に緑青が付着していた。
精密ドライバーで軽くこすって緑青を除去してみるとスイッチが復活。新たにスイッチを買い足さずに済んだ。

mac mini への Linux インストール

仕事でmac miniLinuxをインストールした。
他の人が事前に挑戦してハマってしまっていたようだが、調べてみたら別にたいしたことは無かったので要点だけをメモ。

  • USB接続の光学ドライブからブートするために、起動時にcキーを押しっぱなしにする。
  • 出荷時のHDDではGPT(GUID Partition Table)が採用されている。
  • LinuxインストールCD等からpartedコマンドを使用してパーティションテーブルをGPT形式からmsdos形式に書き換えた後に、通常の手順でインストールを行う。

ライブイベント参加と雑感

4/18に下北沢ELAで行われたライブイベントに行ってきた。

お目当てはkido takahiroが率いるRiccoLabelだったのだが、イベント全体でエレクトロニカ色が強すぎて正直楽しめなかった。
時間の都合でkashiwa daisukeが聞けなかったのも残念・・。


でもkido takahiroはカッコよかったなあ。同性の私でも、単に容姿端麗というだけではない内面的な魅力を一目見ただけで感じた。
おそらく本当にやりたいことをして暮らしているというのが大きいのではないかと思う。


そういえばTwitterで見かけた人がこんな言葉を紹介していた。

自分の人生は自分で責任をとりなさい。すると、どうなるか?
恐ろしいことに、誰のせいにもできなくなります。


エリカ・ジョング


うーん。名言だと思う。
ついつい色々なことを自分以外のせいにしてしまいがちだが、本質的には現在の環境は私が選択したことによって手に入れたものなのだ。


学生時代に私がハマっていた予備校の人気講師も同じことを折に触れて言っていたのを思い出した。

「人生は選択」です。
定まった運命などないのです。
あなたがこれから選ぶのですから。


荻野暢也


いま私は、自分の仕事と将来に関して不安を抱え悩んでいるため清々しく毎日を生きることが出来なくなってきている。
自分の人生に対して本当に自分で責任をとる覚悟を持たない限り、清々しく生きることなんてできないだろうなあ。
こころに留めて今後の物事に取り組んでいこう。

Virt-P2Vのビルド方法

物理環境から仮想環境へのサーバ移行を行うことをP2V(Physical to Virtual)と呼ぶようです。

P2VツールのひとつにVirt-P2V(http://people.redhat.com/~rjones/virt-p2v/)がありますが、このツールは現在バイナリ(isoイメージ)がダウンロードできず、ソースコードだけが入手できる状態です。


今日は、私が確認したVirt-P2Vのビルド手順を紹介します。

ビルド手順

今回は(KVM上の)最小構成でインストールしたi386なfedora12を使用してビルドしました。


まずはソースコードをダウンロードして解凍します。


$ wget []http://people.redhat.com/~rjones/virt-p2v/virt-p2v-0.9.9.tar.gz[]
$ tar xzf virt-p2v-0.9.9.tar.gz
$ cd virt-p2v-0.9.9

READMEに記載されている必要パッケージをインストールします。
その他にもmercurialとcreaterepoパッケージが必要になりますので事前にインストールしておきます。
(依存関係で色々なパッケージが同時にインストールされます)


$ sudo yum -y install livecd-tools rpm-build
$ sudo yum -y install ocaml ocaml-findlib ocaml-extlib ocaml-pcre ocaml-xml-light \
ocaml-newt ocaml-libvirt ocaml-fileutils ocaml-gettext ocaml-gettext-devel

$ sudo yum -y install mercurial createrepo

パッケージのインストールが済んだらビルドを開始します。


$ ./configure
checking for a []BSD[]-compatible install... /usr/bin/install -c
checking for ocamlc... ocamlc
OCaml version is 3.11.1+rc1
OCaml library path is /usr/lib/ocaml
checking for ocamlopt... ocamlopt
checking for ocamlc.opt... ocamlc.opt
checking for ocamlopt.opt... ocamlopt.opt
checking for ocamldep... ocamldep
checking for ocamlmktop... ocamlmktop
checking for ocamlmklib... ocamlmklib
checking for ocamldoc... ./configure: line 2313: WARNING:: command not found
no
checking for ocamlfind... ocamlfind
checking for module unix... .
checking for module extlib... +extlib
checking for module xml-light... +xml-light
checking for module newt... +newt
checking for module pcre... +pcre
checking for module libvirt... +libvirt
checking for module gettext... +gettext
checking for livecd-creator... livecd-creator
checking for livecd-iso-to-pxeboot... livecd-iso-to-pxeboot
checking for perldoc... perldoc
checking for qemu... no
checking for qemu-kvm... no
checking for ocaml-gettext... ocaml-gettext
------------------------------------------------------------
Thanks for downloading virt-p2v 0.9.9
------------------------------------------------------------
configure: creating ./config.status
config.status: creating Makefile
config.status: creating po/Makefile
config.status: creating p2v.ks
config.status: creating virt-p2v.spec

$ make rpm
make dist
make[1]: Entering directory `/usr/local/src/virt-p2v-0.9.9'
make check-manifest
make[2]: Entering directory `/usr/local/src/virt-p2v-0.9.9'
abort: There is no Mercurial repository here (.hg not found)!
<以下略>

.hgが無いと怒られました。どうやらリポジトリ情報が保存してあるmercurialの設定ファイルのようです。
.hgをどうやって作成するべきかあれこれ悩んでいたのですが、試しに開発用リポジトリからソースコードを取得すると.hgが入ってました。


$ cd ..
$ hg clone []http://hg.et.redhat.com/virt/applications/virt-p2v--devel[]
destination directory: virt-p2v--devel
requesting all changes
adding changesets
adding manifests
adding file changes
added 152 changesets with 345 changes to 75 files (+1 heads)
updating to branch default
64 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ ls
virt-p2v-0.9.9 virt-p2v-0.9.9.tar.gz virt-p2v--devel
$ ls -a virt-p2v--devel
. COPYING inittab Makefile.in README virt-p2v virt-p2v.1.txt
.. extras install-sh MANIFEST README.developers virt-p2v.1 virt-p2v.pod
aclocal.m4 .hg iso-attach p2v.ks.in TODO virt-p2v.1.css virt-p2v.spec.in
configure.ac .hgignore lvm.conf po tty1 virt-p2v.1.html virt-p2v-update-wrapper

気になったので、make rpmでひっかかっている場所を見てみました。


$ cd virt-p2v-0.9.9
$ less Makefile

check-manifest:
@hg manifest | sort > .check-manifest; \
sort MANIFEST > .orig-manifest; \
diff -u .orig-manifest .check-manifest; rv=$$?; \
rm -f .orig-manifest .check-manifest; \
exit $$rv

MANIFESTの中身も確認みたところ、どうもリポジトリに入っているファイル一覧をチェックしている様子。
開発版の.hgを拝借してきても問題なさそうなのでコピーして再トライ。


$ cp -a ../virt-p2v--devel/.hg .
$ make rpm
make dist
make[1]: Entering directory `/usr/local/src/virt-p2v-0.9.9'
make check-manifest
make[2]: Entering directory `/usr/local/src/virt-p2v-0.9.9'
--- .orig-manifest 2010-04-16 07:46:42.167689964 +0900
+++ .check-manifest 2010-04-16 07:46:42.162696352 +0900
@@ -40,6 +40,8 @@
MANIFEST
p2v.ks.in
po/de.po
+po/es.po
+po/it.po
po/ja.po
po/LINGUAS
po/Makefile.in
make[2]: *** [check-manifest] Error 1
make[2]: Leaving directory `/usr/local/src/virt-p2v-0.9.9'
make[1]: *** [dist] Error 2
make[1]: Leaving directory `/usr/local/src/virt-p2v-0.9.9'
make: *** [p2vrepo/virt-p2v-0.9.9-1.noarch.rpm] Error 2
開発版には、スペインとイタリアの言語ファイルが追加されている模様。
言語ファイルも開発版のソースツリーから持ってきて、MANIFESTファイルを編集します。

$ cp -a ../virt-p2v--devel/po/es.po ../virt-p2v--devel/po/it.po ./po
$ vi MANIFEST
ファイル最後尾に以下2行を追加する。
po/es.po
po/it.po

この状態でmake rpmが通るようになりました。


$ make rpm

お次はmake buildです。root権限で実行して下さい。


$ sudo make build
test -f p2vrepo/virt-p2v-0.9.9-1.noarch.rpm
test -x virt-p2v
./virt-p2v --test
rm -f virt-p2v-0.9.9.iso
livecd-creator --config=p2v.ks --fslabel=virt-p2v-0.9.9
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=virt-p2v-0.9.9
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
262144 inodes, 1048576 blocks
10485 blocks (1.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
tune2fs 1.41.9 (22-Aug-2009)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
Retrieving file:///usr/local/src/virt-p2v-0.9.9/p2vrepo/repodata/repomd.xml ...OK
Retrieving file:///usr/local/src/virt-p2v-0.9.9/p2vrepo/repodata/primary.xml.gz ...OK
/usr/lib/python2.6/site-packages/imgcreate/errors.py:45: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 return unicode(self.message)
Error creating Live CD : Unable to download from repo : Cannot retrieve repository metadata (repomd.xml) for repository: released. Please verify its path and try again
<以下略>

LiveCDイメージに収録するパッケージをリポジトリからダウンロードするところでコケているみたいです。
p2v.ksファイルの中で指定されているリポジトリURLを現在使用できるものに変更します。


$ cp -a p2v.ks p2v.ks.orig
$ vi p2v.ks
以下のdiff結果を参考にリポジトリ指定を書き換える
$ diff -u p2v.ks.orig p2v.ks
--- p2v.ks.orig 2010-04-16 22:40:15.712718787 +0900
+++ p2v.ks 2010-04-16 23:01:57.343700887 +0900
@@ -30,8 +30,8 @@
bootloader --append="console=tty0 console=ttyS0,9600n8"

# Basic Fedora repository and updates.
-repo --name=released --baseurl=[]http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Everything/i386/os/[]
-repo --name=updates --baseurl=[]http://download.fedora.redhat.com/pub/fedora/linux/updates/10/i386/[]
+repo --name=released --mirrorlist=[]http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=i386[]
+repo --name=updates --mirrorlist=[]http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-12&arch=i386[]
#repo --name=released --mirrorlist=[]http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-10&arch=i386[]

# A local repository if selected by ./configure --enable-localrepo=...

さあ今度こそ。


$ sudo make build

LiveCDイメージを作成するのにしばらく時間がかかりますが、特にエラーもなくvirt-p2v-0.9.9.isoが作成されるはずです。

最後に

上で紹介した手順でVirt-P2Vのイメージが作成できますが、ソースがまともにビルドできない状態で配布されていたりちょっと不安な部分があります。
(機会がないので、まだこのイメージでのP2Vを試せていません)
ちなみに、Virt-P2Vの公式ページには以下の但し書きが記載されています。

Please note this project is in the process of being rewritten.
At this time we recommend you try alternate methods or follow the manual process here.

お決まりですが使用は自己責任で。

blogはじめました

今まで何度か三日坊主なブログをつけたことがあるのですが、書きたいネタがいくつか貯まってきているので懲りずに再挑戦することにしました。

あまり気張らずに、できるだけ長く続けることが目標です。