2010年10月15日金曜日

RedHatをシングルモードで起動

研究室の古いサーバ機にRH5.3 ELを入れたら、
haldaemonの起動中に完全フリーズして、一向に起動しなくなってしまった。
調べたところ、haldaemonは必須のデーモンではないらしいので止めてしまうことにする。

シングルモードでの起動はこちらを参考に。

シングルユーザーモードで起動する
http://www.jp.redhat.com/manual/Doc9/rhl-cg-ja-9/s1-rescuemode-booting-single.html

ついでに、いらなさそうな他のデーモンも止めた。

◇不要デーモンの停止(WBEL4)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆:
http://www.obenri.com/_minset_wbel4/daemon_wbel4.html

もーマジで焦りましたよ。

2010年10月14日木曜日

mach-o, but wrong architecture なエラー

PythonからCの実行ファイルを呼び出している最中に突如起こったエラー。
以前コンパイルしたときは起こらなかったのに、半年ぶりにコンパイルしたら発生。
Snow Leopardのアップデートをかけてる内に、何かが変わったらしい。
※ちなみに当家の環境は、OX10.6.4 & Python2.6.1

簡単にググってみた所、やはりアーキテクチャ系(x86_64とかi386とか)の不一致が原因のエラーとのこと。
おかげで便利なコマンドを覚えた。
fileコマンドを使うと、その実行ファイルのアーキテクチャが調べられる。


$ file $(which python)
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386): Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

$ file 今回作ってたpythonから呼び出すcの実行ファイル
cnt.so: Mach-O bundle i386


Pythonは一応i386にも対応している。
ただ、メインはx86_64という話を聞きかじったので、ものは試しにx86_64アーキテクチャを明示してコンパイルしてみる。

Makefile中のコンパイルコマンドの中に-arch x86_64を含めておいた。


$(CC) -fPIC -arch x86_64 $(CFLAGS) -I$(PYLIBS) -o $(SOTARGET).o -c $(SOTARGET).c
$(CC) -arch x86_64 -undefined dynamic_lookup -bundle $(SOTARGET).o -o $(SOTARGET).so


で、その結果をfileコマンドで試してみると以下の通り。


$ file cnt.so
cnt.so: Mach-O 64-bit bundle x86_64


実際、これで実行してみると問題なく動作可能。
良かった良かった。

2010年10月2日土曜日

本気の殺意が湧いた瞬間

不良品の代品が、また不良品だったときとか<怒

某K社の指紋認証機能付きHDDなるものを仕事の関係で購入したのですが、

一個目不良品
→ショップに相談
→3日経って届いた二個目も不良品

さすがにこの時点で返品しました。
これは不良品であることが仕様なのかな?
何て挑戦的!

ってか、これに費やした私の時間を返せ<怒