昨日土曜日はYURIA さんの誕生日のお祝いです。
いつものケーキ逆手切りは、ついにためらいなく刺されることによって伝説の剣になりました。
今年はトラベルカフェ新宿サザンテラス店を貸し切り。
今年でもう8年目!
毎年この時期になると、昔 YURIA さんが「『一緒にご飯食べたことあるんだよ!』とか自慢できるように頑張る!」とか言ってた台詞を思い出すという。自慢していいですか!(←
# みんなもくもくとカニ食べてたのを覚えてるから相当昔。
今年は twitter で、なうってみた! #yuria_birthday_2010
みんな気がついたら耳で遊んでたり。全員妙に似合ってる。
風邪を引いたらサマーとか、懐かし笑える BGM の中ご飯食べたり−。
そうそう、プレゼントは Vitantonio のワッフル&ホットサンドベーカーを複数名よりプレゼント。
他、トースターやレシピ本も揃う程度の連携プレイ。
見てたら自分も欲しくなった!
これで今年も無事終了ですね。みなさま、新年もよろしくお願いいたします。
今年もおめでとうございましたー。
@ipv6labs, @kazuhisya, @satokaz, @mayn_lum, @saria (わたし) で集まり−。
「今日ってなんの集まりなんでしょうね」
「わかりません」
正直、ほんとに分かりません。
そもそもわたし、全員と初対面だよ (正確には、さとかずさんには勉強会で会ってはいるけど)。
Solaris というか、Sun マシンと、ZFS だけで3時間余裕です。
そしてインフラ屋が燃える中、わたしプログラマ。
たぶん Scala や Erlang がどうとか話したらインフラ屋が困るんだろうなあという逆パターンのように、趣味レベルで基本的なインフラ構築スキルは持ってるものの、製品名出るともうさっぱりだよw
年齢層も見事、上はダブルスコアまで。最年少は惜しくも逃したけど!
突発企画かつ、何かイベントがあったわけでもなく、ただ呼ばれたので集まりましたな流れですけど、また集まりましょう−。
普段から技術を追ってる人間なら、適当に集まっても話題には困りませんね。
おつかれさまでした。また近いうちにー。
お題「vmlinuz を解凍して vmlinux を取りだそう」。
環境は Mandriva Linux 2010.0。
Traditionally, when creating a bootable kernel image, the kernel is also compressed using the zlib algorithm, or since Linux 2.6.30[1], using LZMA or BZIP2, which requires a very small decompression stub to be included in the resulting image.
vmlinuz は gzip で圧縮されていることが知られています。Kernel 2.6.30 以降は LZMA か BZIP2 が使われていることもあるらしいですが、結論から言うと今回のは gzip。
ただし、ただの gzip 圧縮というわけではなく、16進数ダンプやらなにやらして確認して、ようやく解凍できました。
普通に gunzip を試みる
普通に gunzip を試してみます。
kei@frederica ~ $ gunzip /boot/vmlinuz-2.6.31.12-desktop-1mnb gzip: /boot/vmlinuz-2.6.31.12-desktop-1mnb: unknown suffix -- ignored
gunzip は拡張子を見るプログラムだったみたいですよ。
拡張子をつけて改めて。
kei@frederica ~ $ cp /boot/vmlinuz-2.6.31.12-desktop-1mnb ./vmlinuz.gz kei@frederica ~ $ gunzip ./vmlinuz.gz gzip: ./vmlinuz.gz: not in gzip format
!? gzip じゃねーよとおこられます。
ちなみにこのあと、BZIP2 や LZMA を試しても同様に撃沈。
16進数ダンプして gzip ヘッダーを確認する
od (8進数ダンプツール) にオプションをつけて16進数出力して確認してみます。
od -A d -t x1 /boot/vmlinuz-2.6.31.12-desktop-1mnb > vmlinuz.dump
-A d で表示されるオフセットの基数は10進数に。
-t x1 で16進数出力に。
gzip のヘッダーは「1f 8b 08 00」。なんか頭にいないんですけど。
0015952 c7 c1 c0 16 2c 00 48 c1 e9 03 fd f3 48 a5 fc 5e 0015968 48 8d 83 20 d8 2b 00 ff e0 1f 8b 08 00 d8 a0 5e 0015984 4b 02 03 ec fd 0b 7c 14 d5 fd f8 ff cf e6 02 41
ファイルに落として確認するのは面倒ですので、grep に渡すだけでいいです。
kei@frederica ~ $ od -A d -t x1 /boot/vmlinuz-2.6.31.12-desktop-1mnb | grep '1f 8b 08 00' 0015968 48 8d 83 20 d8 2b 00 ff e0 1f 8b 08 00 d8 a0 5e
gzip ヘッダーの開始バイト位置を確認する
0015968 48 8d 83 20 d8 2b 00 ff e0 1f 8b 08 00 d8 a0 5e
15968 から数えて 1f は 15968 + 9 = 15977。
つまりここまでスキップしてから gzip として解凍すれば、解凍できるはず。
dd でバイトスキップして zcat に渡す
dd でインプットファイルに /boot/vmlinuz-2.6.31.12-desktop-1mnb を食べさせて、ブロックサイズを1で 15977 個スキップします (0 から数えるから)。
kei@frederica ~ $ dd if=/boot/vmlinuz-2.6.31.12-desktop-1mnb bs=1 skip=15977 | zcat > vmlinux gzip: stdin: decompression OK, trailing garbage ignored
「decompression OK」!
strings で vmlinux を参照
無事解凍できましたが、当然バイナリ。
でも、Kernel version とかの文字列が含まれているはずです。
kei@frederica ~ $ strings vmlinux | grep "Linux version" Linux version 2.6.31.12-desktop-1mnb (qateam@titan.mandriva.com) (gcc version 4.4.1 (GCC) ) #1 SMP Tue Jan 26 02:59:07 EST 2010
とれたー!
結論
vmlinuz は gzip ヘッダーが頭にいないので、dd でスキップして解凍しましょう。
ちなみに fedora 8 の xen kernel は拡張子を .gz にしたうえで gunzip したら普通に解凍できたり。xen kernel は単純な gzip なのかなー。
昨日 (2010/02/20) のお話。
@yusuke1118 がテンションがおかしいだとか泣きたいだとか言うので、そうか、つかれているんだなと飲みにお付き合いした次第。
初っぱなから「人生ってなんだろね」とか言い出すから優しく見守ろうじゃないかとか思ってたのに、だんだん話の展開がおかしいじゃないかと。
毒吐きどころか、全くの想定外の話の展開になったあげく、あなたがもんもんを解消するかわりにわたしがもんもんとしてきたじゃないかと。どうしてくれるこのやろうw と言いたい。
読み違えた君の負けだwRT @saria: むしろこんな展開予定外だったのでわたしのが揺さぶられたとかなにこれ。 QT @yusuke1118: いつもより精神を揺さぶる的な意味で激しい同期飲みであった。…ペルソナだったらコミュランクが上がるどころかペルソナが転生しているレベル。
お互い帰ってからギップルが湧くクラスの tweet をする悟りタイム入ったけど、こういう飲みは新しい。
でも話されたこっちのほうが、もんもんとされた気持ちをどうしてくれるこのやろうw
今週の頭 (2010/02/15) のお話。
@notti0929 他複数名と、ビールが1200円くらいするどんだけなところでの飲み会。
出だしからリモコンがバッテリー不足なのか落ちました。
再起動。
黒い画面にカーネルメッセージ。
そして「mount error」。マテ。
華麗にスルーされて起動画面。
運用モードとトレーニングモードと設定の3つのボタン。
Linux かは確認してないけど、Windows CE じゃなかったよ。カラオケリモコンみたいに MontaVista Linux とかみたいな組み込み Linux じゃないかなー。













