Syntax highlighter

2010-04-30

OS: GRUBの続きの続き

前回GRUBでカーネルイメージが読み込めたと思って喜んでいたのだが、VRAM周りのコードが上手く動いていなかった。
GRUBが最初に読み込む部分はアセンブラで書いているのだが、カーネルのコード(になる予定)から戻ってきたときには文字列が表示されるのに、コード内部で表示しようとしたら意図しない文字が表示されていた。
それでもって、自分で作ったVRAM用のクラスを使うとGRUBが再起動しまくりで、大変なことになっていた。

何が原因か分からなかったので、とりあえずデバッグすることに。
qemuのデバッグってどうやるのかとググって見たら、こんなページに遭遇。
-sと-Sオプションをつけるのね。意味は調べてないけど・・・
っで、gdbをカーネルイメージを引数にして起動。
(gdb) target remote localhost:1234
このコマンドでqemuに接続してすれば、普通にブレークポイントとか設定可能。

っで、動かしてみたところ、GRUBはELF形式にしか対応してないことが判明。
Cygwinで作ってるので、PE形式なイメージなわけで、どうしろと?
クロスコンパイラを作るのか?(GCCのターゲット指定でコンパイルだと思う)
と思っていたが、objcopyでバイナリ形式にしたら動いた。
まぁ、とりあえずこれでいいか。GRUB周りで苦しむのは本意ではないし・・・

どうでもいいが、調べている過程でmultiboot.hを覗いたのだが、カーネルに渡す構造体のなかにVBEの情報が入ってた。
まぁ、そのうち対応する予定なので、自前でなんだかやらなくても済んだかもと期待しておこう。
(でも、先にメモリとか割り込みテーブルとかやることは満載・・・)

2010-04-29

歯のクリーニング

今までの人生ではじめての経験であった。
今までそんなものとは無縁で生きてきたのだが、折角保険に入ってるし使わないともったいないとそそのかされて行って来た。

・・・


・・・・・・


・・・・・・・・・


涙が出るほど痛かった。
おかしいだろ!
歯を削るのと同じ機械だと思われるものでがりがり何かを削られて(多分歯石)、そのあとポリッシャーで表面を磨くという工程だったと思うのだが、
30分が永遠に続くんじゃないかと思えたくらい地獄の時間であった。

歯科衛生士さん(でいいのかな?)話によると、少なくとも6ヶ月に1回は行った方いいそうだ。
年に2回もあの地獄を味わうのかと思うと・・・

歯磨きの重要性を思い知った瞬間だった。

2010-04-16

暗いニュースが多いなぁ・・・

日本の政治関連のニュースを読んでいると暗いニュースしかみない。
まぁ、税金は払ってないし個人的にはあまり関係ないのだがやはり読んでいると辛い。

ポーランド大統領の国葬に出席しない総理大臣とか、
オバマ大統領にLoopyと呼ばれる総理大臣とか、
ジミンガーと叫んで自分の責任を放り出す総理大臣とか、
普天間基地の話はマスコミが報道し過ぎたせいで国民が知りすぎたなんて言っちゃう総理大臣とか、
そのくせ桜を見る会は開く総理大臣とか、
会話全文を読んでも質疑応答になってない回答をする総理大臣とか、
そもそも、国会に出ることが嫌いで仕事するのも嫌いそうに見える総理大臣とか

そんな感じの洒落で済むものから洒落にならないレベルのものまでたくさん。
(どれをとっても洒落にはならんが・・・)

ま、それを報道しない(らしい)マスコミも大問題だろうし、傀儡政権の裏でとんでも法案を無理やり通そうとしている民主党幹事長がいるらしいけど・・・

大丈夫なんだろうか、日本・・・

個人的に一番問題だなと思うのは、こんな状態になってもデモ一つ起こさない国民だろうと思ったり・・・
もはや政治家は役に立たないどころか、敵でしかない状態なのだから何か行動を起こす人がいてもよくないか?
(といって自分が起こすわけでもないので、やはり僕も問題な国民の一人・・・)

2010-04-10

OS: GRUBの続き

昨日のエントリーで、いまいち動かないと書いたが、少し前進した。

マルチブートに関してヘッダー等がいるので、GRUBのサイトからmultiboot-0.6.96をダウンロード。その中にboot.Sというファイルとkernel.cというファイルがあるのでコピー。
(とりあえず、動作確認できればいいので・・・)
っで、普通にビルド。
_edataが定義されてないと怒られる。

なんだこれ?

Google先生に聞いてみる。

・・・

・・・・・・

・・・・・・・・・

.dataセクションの終わりを示すポインタらしい。
うわさによるとリンカーが自動で作るものらしいが、CygwinのGCCではなのかGCC 3.4.4ではなのかは知らないが作ってくれないらしい。
とうことで、リンカスクリプトを書く。
というか、ここから拝借。
cygwinではelf-i386はサポートされてない(というかpe-i386しかサポートされてない)ので、OUTPUT_FORMATの行を削除。OUTPUT_ARCHも、まぁいらんかなと思い、削除。
っで、make。
なんか表示された。

激しく文字化けというか、意味不明の文字ばかり見えるが、とりあえず何か表示されているのでよしとしよう。
あとはカーネルっぽくいろいろ作るだか(というかそれが一番大変だと思うが・・・)

2010-04-09

OS: GRUBをCygwinで無理やり使う

ここ3日くらい調べてようやくなんとかなった。

ひょっとして同じところで躓いてる人がいるかもしれないので、メモ。
用意するもの:
Cygwin(当然か)
VFD(ここから)

あらかじめ、fstabに以下を記述。
a: /cygdrive/a vfat binary,posix=0 0 0
っで、ddでFDサイズのファイルを作って、VFDで開いてフォーマットしたら、
grub-installでFDイメージにインストール。このとき、デバイスは/dev/fd0を指定する。

面倒なので、スクリプト書いた。
#!/bin/sh -x
# generate floppy image with grub2.

grub=/lib/grub/i386-pc
file=fd.img
vfd=/cygdrive/d/bin/vfd/vfd
fd0=/cygdrive/a

# create floppy image.
dd if=/dev/zero of=$file bs=1k count=1440
$vfd open $file
# format
$vfd format
# いらないかも・・・
mkdir -p $fd0/boot/grub
# 適当にモジュールを指定しているので、必要なもの不必要なものは調べる。
grub-install --modules="_chain ls pc multiboot gpt fat boot reboot configfile cat help " --root-directory=$fd0 /dev/fd0
# grub.cfgは作ってくれないので、別途コピー
cp grub.cfg $fd0/boot/grub

$vfd save
$vfd close
こんな感じ。
きっと必要に応じて、イメージのdevice.mapとかを編集すればいいはず。とりあえず、GRUBが起動するところまでは確認。

あとは、自前のカーネルを読み込むだけなのだが、grub.cfgの書き方がいまいち分かっていない・・・
それとも、カーネルの方がまずいのかな?
「error: attempt to seek outside of file」
ってエラーだからカーネルかな・・・
調べないと・・・

2010-04-03

小ネタ

あまりに書いてないので小ネタを小出しに・・・
(半分くらい下ネタかも・・・)

日本にいたときのこと。
(こないだの帰省の時です)
栄スカイルのABCマートに靴を買いにいった。ものすごい勢いで地域が特定されているが気にしない・・・
大抵そういう店はBGMが流れているが、そのとき流れていた曲の一部に「ピーナッツ」って言っていると思われる部分があった。
でも、どう聞いても聞こえ方がNGな聞こえ方・・・
「ッツ」が「ス」に聞こえる・・・

どう考えてもアウトだろうと思った瞬間だった。

気合で探してみた。
くるりの愉快なピーナッツという曲みたい。

3:58秒くらいが個人的にはアウト・・・
いい曲だとは思うのだが、そこが印象に残りすぎる・・・

2010-03-19

最終日

明日の朝に日本を発つ。
8時40分の飛行機なので、チェックインは6時半くらいか?
ここ読んでて暇でこのクソ朝早くにこれそうな人は見送りに来てくれるとすごくうれしい、と明に言ってみよう。

最初にオランダに渡ったときは新天地に移動みたいな感じだったので、そうでもなかったが、今回は少し寂しい気がする。
やはりここにはいろいろ残してきたんだなぁと実感した。

涙で前が見えないということはないが、そんな気分。

2010-03-14

定演

行ってきた。

久しぶりに会えた先輩とかもいらっしゃってちょっとした同窓会の気分。
演奏自体は、合同はよかった。
後は、Topが抜きすぎで・・・少人数で大人数の歌い方をしていても映えんだろうと思うのだが・・・

2年後の合同は計画を立てて立つ予定でいこう。

2010-03-11

今更ながら

日本にいます。
先週の土曜日に戻っていました。

現在とりあえず日本を堪能してます。
高速が高い・・・

日本語が話せるっていいなぁ・・・
道とか分からなくてもとりあえずコンビニで聞けるとか便利すぎ!!

一応来週までいます。

2010-02-27

若者の○○離れ

それは無いだろうのある意味究極系。
ずばり、「若者のメンズブラ離れ」!!!
最初から近寄ってねぇし!!!

ちなみにその元となったであろうニュースの一部
ここ
それに対する反応
ここ

ちなみに若者が離れたもののまとめちっくな記事
ここ

いろいろなもの離れたね。
何で離れたかの原因は追求されてないところもポイントかね。

2010-02-26

鞍替え

長年(大学3年の時から)xyzzyを使ってきたが、諸事情によりEmacsを使うことにした。
職場のPCが英語だから文字化けするとか、将来的にLinuxを使う予定があるとか、利用者人口が多いのでスクリプトが充実してるとか、まぁ理由はいろいろ。

xyzzy自体がEmacsのCommonLisp版みたいなものなので鞍替えしてもそんなに違和感はない、っがさすがに個人的な設定とかはしないと些細な違いに戸惑う。
大きなのは、C-hのHelpだろう。
後は今まで使ってきたxyzzy-lispをemacs-lispからみつければ終了。
まぁ時間はそんなにかからない。

個人的にはさくさく動いたxyzzyの方がいいかなぁとも思いながら、Emacsももっさり感を除けばいい感じなので満足。
しばらくは平行して使うことになるかな。
それにしても、xyzzyのフォルダごとグレップとかの昨日ってEmacsにもあるのかな?

2010-02-23

招待状

大学の時に所属していた合唱団から定期演奏会の招待状が届いた。
正直驚き!!
実家の方に届くものだと思っていた。心意気はすばらしい!

ま、呼ばれなくても行くつもりだったけどね。
それはそれと置いておいて、微妙なダメだし。
今日届いても、航空券、有給とうはどう考えても間に合いません。最低2ヶ月はほしいです。

しかし、壮大な曲ばかりで驚いた。
雪花もあるし・・・懐かしい。もう歌えんが・・・
今メンバー何人なんだろう?

2010-02-15

C++: グローバル領域

GCの続き。
スタックからルートを取得する方法は理解したが、グローバル変数はどうするんだろうと調べてみた。
メモリの領域は、スタック、データ、テキストの3つに分かれていて、テキストが実コード、スタックはスタック、っでデータ領域にグローバル変数とかが入るらしい。
じゃあ、これを取得すればいいんじゃん!なんて思ったのだが、調べてもそんなもの頭と底をとる方法がない。普通こんなもん意識しないから、ある意味当たり前か・・・

とりあえず、試してみてだめだったこと。
DSセグメントレジスタを16ビット左シフトした値を頭とし、最初にヒープから取得したアドレスを底として捜査。
→ 無理。よく見るとグローバルなアドレスはヒープよりも下にある。

ちなみに、もう一つ問題があって、こんなコードが不正になる。
int *p = (int*)gc_malloc(sizeof(int) * 4); // とりあえず4つ確保
p[0] = 1;
p[1] = 2;
gc_collect();
// p[0] == 0 !!
コレクターを呼び出さなくても、GCが走れば不正になる。
理由:GCでアドレスが変わるので、例えばpが0x0032fec8を指していて、GC後に0x0033fda8になったとすると、実際に変数pが指している値はそのまま前の値になって不正になる。
スタックポインタの指す値を上書きしてるから大丈夫かと思ったら、甘かった・・・う~ん・・・

2010/02/18追記

実際には上記の不正は違っていて、回収されてはいけない値が回収されていた。
原因はスタックポインタ上にアドレスが無いから。
なぜ?
少し処理を足すとスタックが上書きされたりして、グローバル変数なのに問答無用で回収されたり・・・
なぜだ・・・

2010-02-11

C++: Copy GC

C++ではなくてCの話だが、まぁいいや。
いろいろな理由があってガーベジコレクションの勉強をしている。
BoehmGCを使えばいいのだが、ちょっとした理由からそれができないので・・・

っで、とりあえず保守的GCかPreciseGCしか知らなかったので調べてみた。
結構いろいろ種類があるが、Mostly-copying GCがよさげかなと(根拠なし)思い、その元となったCopy GCを実装してみた。
といってもこのページをとりあえず理解のために写経しただけとも言う。

基本の考え方は、ヒープとルートが分かればなんとかなりそうな感じ。
っが、どうやってルート調べるのかがすごく疑問だった。
それを解決してくれたのがこのページ
一般教養としてのGarbage Collection
ぜんぜん一般教養ではないと思うが・・・
ルートは基本スタック上につまれている変数から辿れるポインタだと思えばよさそう。
なら、ESPの値を引っ張ってくればいいだけじゃん、と思い実装。
動いた!

このままでは使えないのでもう少し調べないとなぁ・・・
(Mostly-copying GCの実装って難しいのかな?ぜんぜん見ない・・・)

2010-02-10

movie: AVATAR

土曜日に観たので、実は4日くらい前・・・
アバターを観てきた。リアルの世界にパンドラがないって言って自殺(?)しちゃう人がでたやつ。

以下、多分にネタバレ注意。



物語は他の星に移民する地球人の一人、ジェイクを中心に進められる。
このジェイク君(といっても、見た目は僕より年上だったから、30以上か?)がものすごくガキ!精神的に。
個人的に副題は、ジェイク成長物語だと思っている。
宣伝(?)どおり彼は下半身不随で車椅子。なので、動く体を手に入れられてはしゃぐ。っで、はしゃぎすぎて他のメンバーとはぐれ、アバターの村にの娘に命を助けられる。
これはチャンスとばかりに地球軍がジェイクにスパイを命じ、ジェイクはアバターの生態(といっても言語とか生活習慣とか)を探る。
正直、この辺までは微妙。いや、アクションとかは多めでいいんだけど、ジェイクが図体の割りにガキっぽくて見てていらいらした。
っで、しばらくすると、地球軍が領地を広げるために木をなぎ倒していく。止めようとするジェイク。相手は鉄の塊、メインカメラを素手で壊して終了。
っが、当然カメラなので自分の姿が映り、謹慎処分をくらう。
地球軍は何故か星を侵略して自分たちの物にしたいらしく、戦争をしかける。
っで、後はお約束の勧善懲悪(ではないが)なアクションで地球軍を倒し、ジェイクがアバターに生まれ変わって終了。

どこに欝になる要素があったのか分からんかった。
個人的には、白人 VS ネイティブアメリカンって感じ。この映画の中では、アバター、自然の動物が一体になって星を侵略から守ったけど、
歴史上では卑怯な白人がネイティブアメリカンから土地を奪い取ったんだよなぁ、とか思いながら観てた。
軍隊とか、地球連合軍なのにすごくアメリカっぽい感じだったし(ものすごく偏見が混じってます)
2度観たいとは思わない感じの映画。でもCGとかアクションとかはよかった。
ストーリーは正直2流だなぁと感じた。
(何様のつもりだ、俺・・・)

2010-02-05

電話

以前はほとんどなかったのに、今更になって結構頻繁(といっても月1程度)にエージェントから電話がかかってくる。
正直今更・・・

たいていMonsterBoardから来てるんだけど、ぜんぜん更新してないのにどうして引っかかるんだ?
(まぁ、未だに職探し中のステータスにしてあるのも問題か・・・)
ようやく景気が上向いてきて求人が増えたか、時期的なものか、単にこの業界が慢性的な人手不足かのどれかだとは思うが。
結構条件いいのが多いのよね・・・本当に何で今頃・・・

2010-02-02

Linux: UbuntuをVirtualBoxで試してみた

会社のPCでだが・・・

とりあえず、デフォルトでインストール。
ものすごく簡単だった。ネットで調べる必要がないくらいに。
デフォルトのWMがGnomeなので、KDEに変更。
初めて触ったWMがKDEなのでKDE好き(^^;

使用感。
Linuxのディストリビューションなんて、Fedora、Redhat(ほぼFedoraと一緒)、Debianくらいしか構ったことないし、
デスクトップLinuxで本格的に使ってたのはDebianだけなのであまり比較はできないが、
個人的には気に入った。
外側がKDEな上にUbuntu自体がDebianを元に作られてるのである意味当たり前か。
いろいろやるのにsudoしなきゃならないところとか、GUI上だとMaxかよって突っ込みを入れたくなる頻度でパスワード求められるけど。

ちなみに、
DebianをVirtualBox上で試そうと思ったんだけど、インストールが上手くいかなかった・・・
これ実機でもこの調子だとしたら、やっぱりきついよなぁ・・・

次にPC買ったらUbuntuかな。
(OSなしのPCが安く売ってればだけど・・・でもWindows7とかに特に魅力を感じないんだよね・・・)

2010-01-30

練習中の曲に関してのメモ

ギターの練習をしている。別に発表会とかはない。
ちなみに、練習してるのはこの曲

激ムズ。ギター暦1年未満がやる曲ではない気がする。しかも、クラシックギターではなく鉄弦のアコースティックギター・・・
それは置いておいて、これをやるにあたって必要そうな奏法のメモ。

ハンマリング、プリングオフ: いたるところで
ラスゲアード: 動画の49秒くらいのところのフレーズで出てくる
タンボーラ: 最後のノリがよくて格好いいところで
ポルタメント、グリッサンド: 結構いたるところでみる
チョーキング: 1分くらいのところで
ゴルベ?: 最後の方

タンボーラってサンピングのことか?
いろいろ無謀な気がするが、ロングスパンでやろう・・・

2010-01-28

OS: メモリ

ここ数日(数週間?)まったく時間が取れなかった。
今も取れているかはよく分からんが。

OSがメモリを割り当てるところで停まっていた。
まぁ、今も停まっていると言えばそうだが・・・

いまいちページングがよく分からない。E820hで取得したメモリーマップ情報からメモリアドレスを取得して、そのアドレスに対してページングOnする。
そこまでは上手くいっている(と思う)
っで、とりあえずmallocもしくはnewが使えないと話しにならない。ということで実装していたのだが、どうも変な挙動をしていた。
今日ふと、ページを初期化してから、アロケータの初期化をしたら、動いた(・A・)

鼻から悪魔が出るコードかもしれんが、とりあえずこれでいこう。
この辺が動けば少しやりやすくなるし・・・

まじめに参考書探さないとなぁ。
だれかお勧めの本とか知りませんか?

2010-01-24

ブリュッセル

ベルギーのブリュッセルに行ってきた。
別に観光情報とかが書かれるわけではない。単に所感。

実は(前に書いたっけ?)ブリュッセルに行くのは2度目。1度目はあまりいい思い出が無く終わったので、少し心配だった。
今回は2泊3日なので、まぁ少しゆっくり見て周れるかなと思いつつ、南駅(?)に到着。
メトロに乗ってホテル近くの駅まで。
一日目はこれで終了。仕事が終わってからなのでまぁこんなものだろう。
ちなみに、ロッテルダムからブリュッセルまで2時間弱くらい。

二日目とりあえず歩く。ショッピングストリートとか。本屋を探したが欲しい本が売っている店は見つからず。
どうでもいいが、ベルギーは一応オランダ語(フラマン語?)が公用語なのだが、ブリュッセルでは見るだけで、主に耳に入ってくるのはフランス語だった。
北部にあるアントワープではオランダ語だったのに、不思議。頻繁に旅行するようならフランス語を覚えた方がよさそうだ・・・
街自体は、新旧が入り混じってる感じ。パリの町並みによく似ているなぁと思わせるところが多々あったし、やはりフランス寄りなのだろう。
歩きつかれたのでホテルに戻って2日目終了。

3日目は日曜日なので店という店は閉まっている。雨も降ってるし、ということで特に何もせず帰る。

ちなみに、本当にどうでもいいことだが、ブリュッセルの平均身長は割りと低めだった。僕が普通か少し高いくらいに分類される感じだったので。
オランダの平均では僕は間違いなく低い方・・・190超えがごろごろいるんだよ・・・
ちょっとだけベルギーを好きになった瞬間だった。