タグ別アーカイブ: トラブルシューティング

Windows 8 RTMで遭遇した問題点

前の記事で触れたとおり、Windows 7 UltimateからWindows 8 Proへアップグレードインストールした。アップグレードインストール時、またはアップグレード後に遭遇した問題点を紹介したいと思う。

まだ1日しか使っておらず、内容には不正確な点があることを予めご了承願いたい。
続きを読む Windows 8 RTMで遭遇した問題点

さくらVPS + Ubuntu 12.04LTSで「Booting from Harddisk」から進まない(ように見える)現象

昨日、さくらVPSを再起動したところ、標記の現象に遭遇した。
再起動をかけたところ一向にUbuntuが立ち上がってこないので、おかしいぞと思ってVNCコンソールを見ると以下のような画面で止まっていた。

Booting from Hard Disk

やべー、バックアップまだ取ってないし、どうしよう。

続きを読む さくらVPS + Ubuntu 12.04LTSで「Booting from Harddisk」から進まない(ように見える)現象

Windows 7 でUSB Composite Deviceが認識されないときの対処法

某Androidスマホを購入して早速PCにUSBで接続したところ、どうやってもドライバが入ってくれなくなった。
デバイスマネージャーには一応不明なデバイスとして出ているので、HTCのドライバを無理やり警告を無視して適用してやるとADBでの通信はできるようになった。
けれども、mass storageモードにしても認識してくれないという問題があった。

そこで、他のPCに接続してみると、普通にドライバ入れなくてもmass storageは認識するので、このPCだけの問題だということがわかった。他のPCで確認すると、不明なデバイスとして認識されているところは本来は「USB Composite Device」として認識されるはずなのだ。これはWindows標準のドライバだ。

過去に接続したスマートフォンは正しくUSB Composite Deviceとして認識されているが、今回購入したのは認識してくれない。つまり、過去に認識したデバイスはそのまま使えるが、新規に認識することが出来ないという状態だ。

これはおかしいぞとC:\Windows\infフォルダを見てみると、そこにあるはずの、usb.infとusb.PNFが無くなっていた。何か行儀の悪いアンインストーラーが道連れに消していってしまったのだろう。ではどこからそれを復旧するか。

答えはこれである。

C:\Windows\System32\DriverStore\FileRepository\usb.inf_XXXXXXXXX

(環境によってXXXXXXXXXの部分は異なる)

フォルダが複数ある場合は、更新日時が最新のほうを選ぼう。

このフォルダの中にusb.infusb.PNFがあるので、この二つをC:\Windows\infフォルダにコピーすれば良い。

これで無事認識できるようになった。

おそらく、ここのブログで取り上げられている不具合なんかも同じ系統ではないかと。

Ubuntu 11.10 64bitでInspircdをmakeしたときのエラーと脆弱性を回避する

普通に./configureとmakeとかすればいいのだけど、引っかかったところをメモ。

バージョンは、inspircd-1.2.8。
普通にコンパイルしようとすると以下のビルドエラーが出る。

        LINK:               inspircd
command_parse.o: In function `CommandParser::FindSym(void**, void*, std::stringconst&)':
command_parse.cpp:(.text+0x2a50): undefined reference to `dlsym'
command_parse.cpp:(.text+0x2a5c): undefined reference to `dlerror'
command_parse.o: In function `CommandParser::ReloadCommand(std::string, User*)':
command_parse.cpp:(.text+0x2d80): undefined reference to `dlclose'
command_parse.o: In function `CommandParser::LoadCommand(char const*)':
command_parse.cpp:(.text+0x3257): undefined reference to `dlopen'
command_parse.cpp:(.text+0x3271): undefined reference to `dlerror'
dynamic.o: In function `DLLManager::DLLManager(InspIRCd*, char const*)':
dynamic.cpp:(.text+0x68): undefined reference to `dlopen'
dynamic.cpp:(.text+0x82): undefined reference to `dlerror'
dynamic.o: In function `DLLManager::~DLLManager()':
dynamic.cpp:(.text+0xc9): undefined reference to `dlclose'
dynamic.o: In function `DLLManager::GetSymbol(void**, char const*)':
dynamic.cpp:(.text+0x130): undefined reference to `dlerror'
dynamic.cpp:(.text+0x147): undefined reference to `dlsym'
dynamic.cpp:(.text+0x153): undefined reference to `dlerror'
collect2: ld returned 1 exit status
make[1]: *** [inspircd] Error 1
make: *** [ircd] Error 2

./configure を実行後、以下のファイルを修正する必要がある。
./src/Makefike

修正前

        $(RUNCC) $(FLAGS)   -rdynamic -L. -o inspircd $(LDLIBS)  bancache.o base.o channelmanager.o channels.o cidr.o command_parse.o commands.o configreader.o cull_list.o dns.o dynamic.o filelogger.o hashcomp.o helperfuncs.o inspircd.o inspsocket.o inspstring.o listensocket.o logger.o mode.o modules.o server.o snomasks.o socket.o socketengine.o testsuite.o threadengine.o timer.o user_resolver.o usermanager.o userprocess.o users.o wildcard.o xline.o modes/modeclasses.a socketengine_epoll.o threadengine_pthread.o

修正後

        $(RUNCC) $(FLAGS)   -rdynamic -L. -o inspircd  bancache.o base.o channelmanager.o channels.o cidr.o command_parse.o commands.o configreader.o cull_list.o dns.o dynamic.o filelogger.o hashcomp.o helperfuncs.o inspircd.o inspsocket.o inspstring.o listensocket.o logger.o mode.o modules.o server.o snomasks.o socket.o socketengine.o testsuite.o threadengine.o timer.o user_resolver.o usermanager.o userprocess.o users.o wildcard.o xline.o modes/modeclasses.a socketengine_epoll.o threadengine_pthread.o $(LDLIBS) 

変わったところは、$(LDLIBS)の場所。
どうやら、gccの仕様変更で、リンクのコマンドオプションはオブジェクトよりも後にしなければならないらしい。
モジュールとかもその要領で変更する必要があるのがあるかも。なんか、LDLIBSに自分でライブラリ追加指定しても使ってなかったらリンクされないとかいう仕様になってるっぽいし、ちょっと不便。

あと、Inspircdには、セキュリティ上の問題点(脆弱性)が指摘されている。
JVNVU#212651 InspIRCd にメモリ破損の脆弱性

これについては、ここを参考に、./src/dns.cppを修正する必要がある。

修正前

                case DNS_QUERY_PTR:
                        o = 0;
                        q = 0;
                       while (q == 0 && i < length && o + 256 < 1023)

修正後

                case DNS_QUERY_PTR:
                        o = 0;
                        q = 0;
                       while (q == 0 && i >= 0 && i < length && o + 256 < 511)

iが0以下になったり、512以上になったりするということなのかな?

HDDケース『裸族のお立ち台』(CROSU3)でS.M.A.R.T情報が読めない場合の対処法

HDDケース『裸族のお立ち台』(CROSU3)を購入したが、CrystalDiskInfoでS.M.A.R.T情報が読めないという現象があった。
これはもしやまた、CrystalDiskInfoの作者様に連絡しなければならないかと思ったが、自分で解決することができた。
といっても、ファームウェアアップデートを適用するだけ。

FWは以下からDLできた。
http://www.century.co.jp/support/download/crosu3up.html

FWをアップデートしてから気付いたけど、アップデート前のVID、PIDをメモって置けばよかったと後悔。