yuu_nkjm blog
2008-01-14(Mon) 編集
[coLinux] open SUSEのcoLinux用イメージを作る
はじめに
coLinux上でopenSUSEがつーかーいーたーいー,ってことで,自分でイメージファイルを作ってみる.CentOSでできる[1]んだったら,openSUSEでもいけるっしょ.
手順
ファイルのダウンロード
- 使用したcoLinuxはdevel-coLinux-20080420.exe.
- 使用したopenSUSEは10.3.
- qemu-0.9.0-windows.zipを展開.c:\qemuにおく.
- Kqemu-1.3.0pre11-install.exeをインストール.ひたすら次へ.
e:\opensuseに空ファイルの作成
fsutil file createnew e:\opensuse\qemu_opensuse10_3 5368709120 fsutil file createnew e:\opensuse\qemu_swap_512mb 536903168
DVDイメージからブート
cd c:\qemu qemu.exe -hda e:\opensuse\qemu_opensuse10_3 -hdb e:\opensuse\qemu_swap_512mb -cdrom e:\opensuse\openSUSE-10.3.iso -m 256 -boot d -L .
適当にインストールをすませる.(2008-12-21追記)パーティションの設定が重要だった./hdaを/に丸ごと割り当て,/hdbをswapに丸ごと割り当て.インストールが完了したら,qemeをシャットダウン.
スペシャルデバイスの作成??
再起動したら残りのセットアップを済ませて,rootでログイン.coLinuxで使えるように,cobdを作る.
cd /dev for i in 1 2 3 4 5 6 7 8 9 10 do mknod cobd$i b 117 $i done
coLinux用のデバイスファイル作成とみていいんかな?
イメージの切り出し(改行は要らないよ)
dd if=/cygdrive/e/opensuse/qemu_opensuse10_3 of=/cygdrive/e/opensuse/root.ext3 bs=512 skip=63
上はCygwinを使った例.Windows用のddも色々あるようだ.
- http://uranus.it.swin.edu.au/~jn/linux/rawwrite/dd.htm
- http://kennethhunt.com/archives/001030.html
- http://unxutils.sourceforge.net/
できたものを適当な名前に変更(openSUSE-10_3.img)し,coLinuxのフォルダに移動.
起動ファイルの作成
colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="E:\coLinux\openSUSE-10_3.img" ro cobd1="E:\coLinux\swap.img" root=/dev/cobd0 eth0=tuntap ro
とかやると無事起動できた.
まとめと今後の課題
qemuってエミュレータでDVDイメージを起動,5Gのファイルを仮想HDDの様に扱って,そこにインストール.その仮想HDDから要らないところをはぎ取ると,coLinux用のイメージのできあがり.ということかな.
SSHでログインしてyastがあがるぐらいは確認したけど,本当にちゃんと動くかはまだ分からない.もう一個覚えるのがめんどくさくて試してないけど,VMwareも触っておきたいかも.
参考文献
[1] CentOS 5.0のイメージを作る@masahilogを参照,というか,そのもの.masahilogさんに感謝!
2011-01-14(Fri) 編集
[Java] JVM上で実行している箇所(ソースコード内の行数)の表示
現在どのソースコードの何行目にいるかを取得したいことがある.log4jの機能を使って,ログファイルに書き出すような方法も考えられるが,文字列として取得したい場合などは他の方法が必要.そんなとき,Thread.currentThread().getStackTrace(),もしくはException.getStackTrace()を使う.
メソッドの呼び出し元を調べたい時にも使える.
Threadクラス
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
出力例↓
java.lang.Thread.getStackTrace(Thread.java:1436)
info.nkjm.yuu.java.Hoge.start(Hoge.java:23)
info.nkjm.yuu.java.Hoge.main(Hoge.java:16)
Exceptionクラス
StackTraceElement[] stackTraceElements = new Exception().getStackTrace();
出力例↓
info.nkjm.yuu.java.Hoge.start(Hoge.java:23)
info.nkjm.yuu.java.Hoge.main(Hoge.java:16)