Puppyをインストール後、DHCPに少し不便な部分があったので、手動で設定変更しました。バグがあるのか、ネットワーク接続する場合、毎回「接続」アイコンでDHCP IPアドレス取得を行う必要があります。うーむ。これは面倒。よくよくスクリプトを解析してみると、どうも/etc/rc.d/rc.networkに「接続」アイコンによる設定が反映されていない模様。というわけで/etc/rc.d/rc.networkの最後に
if [ -s /etc/eth0mode ]; then
. /etc/eth0mode
fi
を追加しました。これで起動すれば自動的にDHCP IPアドレス取得が行われネットワーク接続が楽々。
2008年12月1日月曜日
2008年11月30日日曜日
Puppy Linux 4.0に移行
セキュリティや機能向上の面でバージョンアップが頻繁に行われるubuntuの派生、かつ、軽量という点でecoLinuxはそれなりに良かったのですが、どうもubuntuのバージョンアップに追随するのは簡単ではなさそうです。バージョンアップへの追随をあきらめて、軽量にフォーカスすると、ecoLinuxよりもPuppyのほうが軽量そうだということが最近わかってきました。
例によってDynabook 2550S(Celeron 366MHz) メモリ192MBにPuppy Linux 4.0をインストールしてみました。
LiveCDでの起動。唯一の問題は、PCMCIA LANカードの認識でしょうか。これまでコレガのLAPCCTXDを使ってましたが、認識されません。仕方なく、かなり古い3Comの3C589D-COMB0で対応。起動はすんなり、動作は驚くほど軽快。インターネットを調べていると、BuffaloのLPC-PCM-CLXも認識できるようなので、ハードディスクにPuppyをインストールしてから設定することにしました。
設定内容は/etc/pcmcia/configに
card "Buffalo LPC-PCM-CLX Fast Ethernet Card"
manfid 0xffff, 0x1090
bind "axnet_cs"
を追加。
さて、ハードディスクへのインストールですが、メニューからPuppyユニバーサルインストーラを起動します。そこで内蔵IDEへのインストールを指定します。最後にGrubをMBRにインストールし完了。起動後、先ほどのconfigを編集し、Buffaloのカードと交換して再起動。ところがカードが認識されません。ブートのメッセージを見ていると、どうもドライバがロードできていないようです。/lib/modulesの下にaxnet_cs.koがあるか調べてみました。ありません。どのディレクトリを調べてみてもない。
どうすればいいのか良くわからないので、再度、LiveCDでPuppyを起動。そして、axnet_cs.koを検索。発見! どうしてハードディスクインストールの時、コピーしてくれないんだ。Puppyをインストールしたハードディスクをマウントし、対応するディレクトリにコピーし、再び、ハードディスクからPuppyを起動。万事休す。
PCMCIAのLANドライバ以外も、サウンドドライバなど、はやりコピーしてくれないようなので、同じ方法でその後コピーを実行しました。
例によってDynabook 2550S(Celeron 366MHz) メモリ192MBにPuppy Linux 4.0をインストールしてみました。
LiveCDでの起動。唯一の問題は、PCMCIA LANカードの認識でしょうか。これまでコレガのLAPCCTXDを使ってましたが、認識されません。仕方なく、かなり古い3Comの3C589D-COMB0で対応。起動はすんなり、動作は驚くほど軽快。インターネットを調べていると、BuffaloのLPC-PCM-CLXも認識できるようなので、ハードディスクにPuppyをインストールしてから設定することにしました。
設定内容は/etc/pcmcia/configに
card "Buffalo LPC-PCM-CLX Fast Ethernet Card"
manfid 0xffff, 0x1090
bind "axnet_cs"
を追加。
さて、ハードディスクへのインストールですが、メニューからPuppyユニバーサルインストーラを起動します。そこで内蔵IDEへのインストールを指定します。最後にGrubをMBRにインストールし完了。起動後、先ほどのconfigを編集し、Buffaloのカードと交換して再起動。ところがカードが認識されません。ブートのメッセージを見ていると、どうもドライバがロードできていないようです。/lib/modulesの下にaxnet_cs.koがあるか調べてみました。ありません。どのディレクトリを調べてみてもない。
どうすればいいのか良くわからないので、再度、LiveCDでPuppyを起動。そして、axnet_cs.koを検索。発見! どうしてハードディスクインストールの時、コピーしてくれないんだ。Puppyをインストールしたハードディスクをマウントし、対応するディレクトリにコピーし、再び、ハードディスクからPuppyを起動。万事休す。
PCMCIAのLANドライバ以外も、サウンドドライバなど、はやりコピーしてくれないようなので、同じ方法でその後コピーを実行しました。
2008年9月15日月曜日
iTunes8の同期
iTunes7からiTunes8へバージョンアップしたらipod touchと同期できなくなりました。インターネットをいろいろ調べていると、Geniusをオフにすれば良いというアドバイスがありましたが、私の場合は、ウィルススキャンソフトが原因だったようです。
同期中に、ウィルススキャンソフトがリムーバルデバイスであるipod touchをスキャンしに行くと、うまく同期ができないようです。とういうわけで、ウィルススキャンソフトの設定で、リムーバルデバイスをスキャンしないように設定することで対処しました。
同期中に、ウィルススキャンソフトがリムーバルデバイスであるipod touchをスキャンしに行くと、うまく同期ができないようです。とういうわけで、ウィルススキャンソフトの設定で、リムーバルデバイスをスキャンしないように設定することで対処しました。
2008年6月28日土曜日
Visual C++ 2005 Expressでアセンブラ入門 Part-1
VC++ 2005 Expressの逆アセンブル表示を使ってみる
Visual C++ 2005 ExpressでWin32コンソールアプリケーションHelloWorldを作ります。新規プロジェクト作成で何もしない_tmainが自動生成されます(下記コード)。
// HelloWorld.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
とりあえず、「ビルド」メニューから「ソリューションのビルド」を選択してビルドしますが、その前にコンパイルの警告レベルをレベル4に上げておきましょう。
TIPS: 開発中(デバッグ中)は、コンパイルの警告レベルはレベル4にする
ソリューションのビルドができたら、「デバッグ」メニューから「ステップイン」を選択し実行を開始します。_tmainの最初で実行が止まります。 ソースコード上で右クリックメニューから「逆アセンブルを表示」を選択します。すると、こんな表示になると思います(下記コード)。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
00411380 push ebp ; (1)
00411381 mov ebp,esp ; (2)
00411383 sub esp,0C0h ; (3)
00411389 push ebx ; (4)
0041138A push esi ; (5)
0041138B push edi ; (6)
0041138C lea edi,[ebp-0C0h] ; (7)
00411392 mov ecx,30h ; (8)
00411397 mov eax,0CCCCCCCCh ; (9)
0041139C rep stos dword ptr es:[edi] ; (10)
return 0;
0041139E xor eax,eax ; (11)
}
004113A0 pop edi ; (12)
004113A1 pop esi
004113A2 pop ebx
004113A3 mov esp,ebp ; (13)
004113A5 pop ebp
004113A6 ret
詳細を説明する前に、スタックについて簡単に説明しておきます。スタックというのは、整理が苦手な人の机のようなもので、書類が平積みになっています。一番下をスタックのボトムと言い、一番上をスタックのトップといいます。新しい書類は、スタックのトップに積まれていきます。古い書類にアクセスするには、上の書類から順番にどかす必要があります。
ebpというのはスタックベースポインタと呼ばれるレジスタで、現在のスタックのボトム(スタックフレームと呼ぶ)がメモリ上のどこにあるかを指しています。コンピュータではスタックに積まれるのは書類ではなく値ですが。スタックに値を積むには、push命令を使います。(1) push ebpではebpレジスタの内容をスタックに積んでいます。
espというのはスタックポインタと呼ばれるレジスタで、現在のスタックのトップがメモリ上のどこにあるかを指しています。(2)の時点では、スタックのトップは、先ほどebpレジスタの内容保存した場所を指しています。1つだけ注意があります。机の上では、書類が積まれるたびに高さが増えていきます。ところが、espレジスタの値は、スタックに値が積まれるたびに小さくなります。ちょうど、天井から床方向へ書類を積んでいるような感じです。
(2)では、mov命令でespレジスタの内容をebpレジスタにコピーしています。新しいスタックフレームを定義したという意味です。
次に(3)では、espの値から0xC0(10進数で192)を引き、スタックのトップの位置を下位アドレス方向に変更します。これで192バイトの空き地ができます。
(4), (5), (6)ではebx, esi, ediという3つのレジスタの内容を順番にスタックに保存して行きます。(7)leaでediレジスタの値をebp-0C0h番地に設定します。空き地の先頭を指しています(下位アドレス側)。
(10) rep stos dword ptr es:[edi] というのは、edi(空き地の先頭)からecxで指定された回数だけ、eaxの値で埋める、という意味です。ecxには0x30(10進数で48)、eaxはDWORDで0xCCCCCCCCという値が入っています。ちょうど、上位アドレス方向に向かって、192バイト分の空き地を0xCCで埋められることになります。
(11) xor eax, eaxはちょっとトリッキーですが、eaxレジスタの値を0にしているだけです。これはreturn値に相当します。
(12)以降のpop命令はスタックに積んでいた値をレジスタに戻しています。また、(13)mov esp,ebpではスタックポインタをスタックベースポインタに戻しています。
ここまでの考察
まだ何もしてないアプリケーションなのに、アセンブラレベルではやけにコード量が多いと思いませんでしたか? そうなんです、 _tmainは関数なので、ここで実行されているのはまぎれもなく関数呼び出しなのです。そして関数呼び出しでは、いくつかのレジスタの値をスタックに積んだり、スタックからレジスタに値を戻したりとコード量が増えるのです。ただし、これはコードの最適化が行われないデバッグビルドの話であって、デフォルトでコードの最適化が行われるリリースビルドではこうはいきません。
ところで、192バイトの空き地は何なのでしょうか?わざわざ0xCCで埋めたりして。続きは次回。
Visual C++ 2005 ExpressでWin32コンソールアプリケーションHelloWorldを作ります。新規プロジェクト作成で何もしない_tmainが自動生成されます(下記コード)。
// HelloWorld.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
とりあえず、「ビルド」メニューから「ソリューションのビルド」を選択してビルドしますが、その前にコンパイルの警告レベルをレベル4に上げておきましょう。
TIPS: 開発中(デバッグ中)は、コンパイルの警告レベルはレベル4にする
ソリューションのビルドができたら、「デバッグ」メニューから「ステップイン」を選択し実行を開始します。_tmainの最初で実行が止まります。 ソースコード上で右クリックメニューから「逆アセンブルを表示」を選択します。すると、こんな表示になると思います(下記コード)。
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
00411380 push ebp ; (1)
00411381 mov ebp,esp ; (2)
00411383 sub esp,0C0h ; (3)
00411389 push ebx ; (4)
0041138A push esi ; (5)
0041138B push edi ; (6)
0041138C lea edi,[ebp-0C0h] ; (7)
00411392 mov ecx,30h ; (8)
00411397 mov eax,0CCCCCCCCh ; (9)
0041139C rep stos dword ptr es:[edi] ; (10)
return 0;
0041139E xor eax,eax ; (11)
}
004113A0 pop edi ; (12)
004113A1 pop esi
004113A2 pop ebx
004113A3 mov esp,ebp ; (13)
004113A5 pop ebp
004113A6 ret
詳細を説明する前に、スタックについて簡単に説明しておきます。スタックというのは、整理が苦手な人の机のようなもので、書類が平積みになっています。一番下をスタックのボトムと言い、一番上をスタックのトップといいます。新しい書類は、スタックのトップに積まれていきます。古い書類にアクセスするには、上の書類から順番にどかす必要があります。
ebpというのはスタックベースポインタと呼ばれるレジスタで、現在のスタックのボトム(スタックフレームと呼ぶ)がメモリ上のどこにあるかを指しています。コンピュータではスタックに積まれるのは書類ではなく値ですが。スタックに値を積むには、push命令を使います。(1) push ebpではebpレジスタの内容をスタックに積んでいます。
espというのはスタックポインタと呼ばれるレジスタで、現在のスタックのトップがメモリ上のどこにあるかを指しています。(2)の時点では、スタックのトップは、先ほどebpレジスタの内容保存した場所を指しています。1つだけ注意があります。机の上では、書類が積まれるたびに高さが増えていきます。ところが、espレジスタの値は、スタックに値が積まれるたびに小さくなります。ちょうど、天井から床方向へ書類を積んでいるような感じです。
(2)では、mov命令でespレジスタの内容をebpレジスタにコピーしています。新しいスタックフレームを定義したという意味です。
次に(3)では、espの値から0xC0(10進数で192)を引き、スタックのトップの位置を下位アドレス方向に変更します。これで192バイトの空き地ができます。
(4), (5), (6)ではebx, esi, ediという3つのレジスタの内容を順番にスタックに保存して行きます。(7)leaでediレジスタの値をebp-0C0h番地に設定します。空き地の先頭を指しています(下位アドレス側)。
(10) rep stos dword ptr es:[edi] というのは、edi(空き地の先頭)からecxで指定された回数だけ、eaxの値で埋める、という意味です。ecxには0x30(10進数で48)、eaxはDWORDで0xCCCCCCCCという値が入っています。ちょうど、上位アドレス方向に向かって、192バイト分の空き地を0xCCで埋められることになります。
(11) xor eax, eaxはちょっとトリッキーですが、eaxレジスタの値を0にしているだけです。これはreturn値に相当します。
(12)以降のpop命令はスタックに積んでいた値をレジスタに戻しています。また、(13)mov esp,ebpではスタックポインタをスタックベースポインタに戻しています。
ここまでの考察
まだ何もしてないアプリケーションなのに、アセンブラレベルではやけにコード量が多いと思いませんでしたか? そうなんです、 _tmainは関数なので、ここで実行されているのはまぎれもなく関数呼び出しなのです。そして関数呼び出しでは、いくつかのレジスタの値をスタックに積んだり、スタックからレジスタに値を戻したりとコード量が増えるのです。ただし、これはコードの最適化が行われないデバッグビルドの話であって、デフォルトでコードの最適化が行われるリリースビルドではこうはいきません。
ところで、192バイトの空き地は何なのでしょうか?わざわざ0xCCで埋めたりして。続きは次回。
2008年3月8日土曜日
Sony mylo COM-2
Sonyからmylo COM-2という製品が発売されました。パソコンでも、携帯電話でも、PDAでもない、インターネット携帯端末と呼べるものです。
パソコンとの違いは、小さく持ち運びが便利、機能も限定されており操作が簡単、そして起動が速いといったところでしょう。もちろん、小型のノートパソコンを使えば、同じようなことができるのでしょうけど、一般的には小型のノートパソコンになればなるほど価格も高めです。
携帯電話との違いは、PCサイトブラウザ、通信は無線LAN、両手で入力できるキーボードといったところです。最近の携帯電話はPCサイトを見れるブラウザを搭載してますが、画面サイズが小さすぎるのと、パケット代が気になって事実上は使えません。一方、myloでは無線LANを使って通信するので、インターネット接続できる場所がブロードバンドルータとして無線LANを導入している家や公衆の無線LANサービスが提供されている場所に限定されるわけですが、家で使う分にはパケット代を気にする必要はありません。
価格.comでは(仕方なく?)myloはパソコンのサブカテゴリであるPDAに入ってますが、Web側(ネットのあちら側)のサービスを利用する端末である、と考えると、従来のPDAとはコンセプトが異なると考えています。
myloと比較される製品にiPod touchがあります。iPod touchの良い点はいろいろとあるでしょうけど、私にとってはブラウザの応答性が良い点です。使用頻度にしてもブラウザが大半を占めますし、応答性は重要です。逆に悪い点は、株価アプリケーションが日本株対応していない、パソコン(iTunes)が必要である、カット&ペーストできない、があります。特に、株価アプリケーションについては、日本の消費者をバカしていると感じます。ポッドキャストについては、jailbreakを使わない限り、パソコン(iTunes)が必要になります。私にはパソコンの必要性を理解できません。
というわけで、日本メーカ発のインターネット携帯端末として、myloに期待したいですね。
パソコンとの違いは、小さく持ち運びが便利、機能も限定されており操作が簡単、そして起動が速いといったところでしょう。もちろん、小型のノートパソコンを使えば、同じようなことができるのでしょうけど、一般的には小型のノートパソコンになればなるほど価格も高めです。
携帯電話との違いは、PCサイトブラウザ、通信は無線LAN、両手で入力できるキーボードといったところです。最近の携帯電話はPCサイトを見れるブラウザを搭載してますが、画面サイズが小さすぎるのと、パケット代が気になって事実上は使えません。一方、myloでは無線LANを使って通信するので、インターネット接続できる場所がブロードバンドルータとして無線LANを導入している家や公衆の無線LANサービスが提供されている場所に限定されるわけですが、家で使う分にはパケット代を気にする必要はありません。
価格.comでは(仕方なく?)myloはパソコンのサブカテゴリであるPDAに入ってますが、Web側(ネットのあちら側)のサービスを利用する端末である、と考えると、従来のPDAとはコンセプトが異なると考えています。
myloと比較される製品にiPod touchがあります。iPod touchの良い点はいろいろとあるでしょうけど、私にとってはブラウザの応答性が良い点です。使用頻度にしてもブラウザが大半を占めますし、応答性は重要です。逆に悪い点は、株価アプリケーションが日本株対応していない、パソコン(iTunes)が必要である、カット&ペーストできない、があります。特に、株価アプリケーションについては、日本の消費者をバカしていると感じます。ポッドキャストについては、jailbreakを使わない限り、パソコン(iTunes)が必要になります。私にはパソコンの必要性を理解できません。
というわけで、日本メーカ発のインターネット携帯端末として、myloに期待したいですね。
2008年3月2日日曜日
Ecolinux-ez 1.7.3をインストールする
Vine Linux, Puppy Linx, Ecolinux, Xubuntu, Kubuntuなど軽量デスクトップLinuxと呼ばれるディストリビューションがいくつかあるようです。私は比較的古いノートパソコン(DynaBook 2550S, Celeron 366MHz, SDRAM 192MB)にVineをインストールして長らく使ってました。メモリ量も少ないことから、ウィンドウマネージャをxfceに変更し、通常使うブラウザは operaという設定です。
Vineを選択した理由は、増設前の64MBでもインストールが問題なくできた。手持ちのLANカードでインターネットアクセスできた。そこそこ快適に動いた。ただ、それだけの理由です。当たり前の話ですが、そもそも、軽量かどうか以前に、普通にインストールできて動くということが重要です。openSUSE、Fedoraなんかのインストールも試しましたが、メモリ量がネックでインストールさえままならないものもいくつかありました。
安定性という点では、UbuntuもデスクトップLinuxとして最近注目されてますが、私のパソコンには重すぎるのではないかとしばらく敬遠してました。しかし、Ubuntuの開発パワーは非常に魅力的です。バグフィックスやセキュリティ問題のフィックスの速さという点でも開発パワーのあるディストリビューションをできれば使いたいものです。
そんななか、Ubuntuの軽量化版派生があることを知りました。私のような素人には、最初からなるべく至れりつくせりの環境でないとつらいです。最初に、Kubuntu日本語ローカライズ版のインストールを試みましたが、エラー発生でインストールできず。そこで、xfceを採用しているEcolinux-ez 1.7.3のインストールを試みました。
基本的にはすんなりインストールできたわけですが、2つほど注意点があります。
あとは、FireFox3の正式版のリリースが待ち遠しいですね。これが出れば、operaを使わずともも、もう少しきびきび動くようになるのではないかと。
Vineを選択した理由は、増設前の64MBでもインストールが問題なくできた。手持ちのLANカードでインターネットアクセスできた。そこそこ快適に動いた。ただ、それだけの理由です。当たり前の話ですが、そもそも、軽量かどうか以前に、普通にインストールできて動くということが重要です。openSUSE、Fedoraなんかのインストールも試しましたが、メモリ量がネックでインストールさえままならないものもいくつかありました。
安定性という点では、UbuntuもデスクトップLinuxとして最近注目されてますが、私のパソコンには重すぎるのではないかとしばらく敬遠してました。しかし、Ubuntuの開発パワーは非常に魅力的です。バグフィックスやセキュリティ問題のフィックスの速さという点でも開発パワーのあるディストリビューションをできれば使いたいものです。
そんななか、Ubuntuの軽量化版派生があることを知りました。私のような素人には、最初からなるべく至れりつくせりの環境でないとつらいです。最初に、Kubuntu日本語ローカライズ版のインストールを試みましたが、エラー発生でインストールできず。そこで、xfceを採用しているEcolinux-ez 1.7.3のインストールを試みました。
基本的にはすんなりインストールできたわけですが、2つほど注意点があります。
- インストール時に画面サイズを1024x768にしても正しく認識されず、インストール後にxorg.confのDefaultDepthを16に変更してはじめて1024x768に変更できます。インストール中は画面が小さく少し苦労します。
- BIOSが古いので、ACPIを有効にするには、起動時にacpi=forceを指定するとのメッセージがでますが、指定した途端に使い物にならないぐらい動作が遅くなります。
あとは、FireFox3の正式版のリリースが待ち遠しいですね。これが出れば、operaを使わずともも、もう少しきびきび動くようになるのではないかと。
2008年2月9日土曜日
Vine Linux 4.2で自動ログインの設定を行う
「デスクトップ」→「システム管理」→「ログイン画面」で自動ログインがなぜか設定できない。
仕方ないので/etc/X11/gdm/custom.confの[daemon]セクションに
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=自動ログインしたいユーザ名
を直接記述しました。その後、ウィンドウマネージャをxfceに変更しましたが、設定は有効なようです。
仕方ないので/etc/X11/gdm/custom.confの[daemon]セクションに
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=自動ログインしたいユーザ名
を直接記述しました。その後、ウィンドウマネージャをxfceに変更しましたが、設定は有効なようです。
登録:
投稿 (Atom)