rkhunterのwarning

久しぶりに電源を入れたLinuxMint11環境で rkhunter -c を実行したら warning がたくさん出てきました。調べてみると、

$ sudo rkhunter -c

でチェックを行いますが、時々メンテナンスをしてやらないといけないようです。

普通行う作業としては、rootkit検索のためのテキストデータファイルのアップデートを

$ sudo rkhunter –update

で実施します。また、ファイルに変化がないかどうかを調べるためのデータベースファイルのアップデートを

$ sudo rkhunter –propupd

で行います。

ただし後者は無闇に実行すると感染したファイルを比較対象のデータベースに登録してしまうリスクがあります。感染ファイルをデータベースに登録してしまうとチェックの意味がなくなりますので要注意です。信頼できるところからチェックの対象となるファイルのアップデートがかかったときのみ実行するべきでしょう。

Core2Quadマシン静音化(調査編)

最近使っていないCore2Quadマシン(マザーボード:GA-G31M-ES2L、CPU:Core2 Q6600、OS:WindowsXP Home Edition)があります。なぜ使っていないかというと、はっきりいって「うるさい」のです。てっきり、CPUファンがうるさいのかと思っていたのですが、必ずしもそうではないようなので調べてみました。

このマシンにはCPUファンの他にフロントにケースファンがついています。それもかなり大きな多分12cmくらいあるものです。

まずFANの回転数を調べるためにOpen Hardware Monitorをダウンロードしてきて実行してみました。

FAN1が1640rpmくらい、FAN2が1380rpmくらいで回っています。機内温度は34℃くらい、CPU温度は45~50℃くらいであることがわかります。

次に、CPUに負荷をかけるためにIntelBurnTestにかけてみます。

しばらく放置すると、

となって、CPU温度が73℃、機内温度が60℃に達します。このとき、FAN1は2800rpm付近まで回転数が上昇していますが、FAN2は1375rpmでほとんど変わっていません。つまり、FAN2がケースFANで回転数は制御されておらず、常に全力で回っていてうるさいのだと思われます。

こいつ(ケースFAN)を何とかすれば静かになりそうです。(まあ、12cmもあるファンが1400rpmで回ってたら風切音がうるさくて当たり前のような気がしますが)

Android SDK in Linuxで実機デバッグ環境構築

http://developer.android.com/guide/developing/device.html#setting-upのページに沿って、Linux環境での実機デバッグに挑戦します。デバッグターゲットはPocketWifi S(S31HW)です。

1.Android Manifestでアプリケーションをデバッグ可能に設定する

eclipseにてパッケージエクスプローラにて「AndroidManifest.xml」を選択し、真ん中の「Android Manifest Application」にて下の方の「「ア」アプリケーション」を選択します。

その中の「Debuggable」の項目を「true」にします。結果はAndroid Manifext.xmlに

 android:label="@string/app_name" android:debuggable="true"

という記述が追加されているかで確認できます。

2.Androidの実機側でUSBデバッグを許可する

「設定」→「アプリケーション」→「提供元不明のアプリ」にチェックを入れる。

「設定」→「アプリケーション」→「開発」→「USBデバッグ」にチェックを入れる。

3.udevルールを作成する

(1)lsusbコマンドでUSBベンダIDを調べる

Androidデバイスを接続し、lsusbコマンドで接続されているデバイスを表示する。

$ lsusb
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
            :
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 12d1:1038 Huawei Technologies Co., Ltd.
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

青の行がHuaweiなので、この行がPocketWiFi Sです。そしてベンダIDは赤字の「12d1」であることがわかります。

(2)udevルールファイルを作成する

ルート権限で「/etc/udev/rules.d/51-android.rules」を作成し、その中身を、

SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"

とする。作成したファイルは、アトリビュートを変更しておく。

$ sudo chmod a+r /etc/udev/rules.d/51-android.rules

 (3)udevルールファイルを再読み込みさせる

udevadmでルールを再読み込みさせる。

$ sudo udevadm control --reload-rules

この後、一旦PCからAndroid機を取り外し、再度取り付けます。

4.実機でデバイスが認識されているか確認する

adbコマンドでデバイスが認識されているか確認してみます。

$ adb devices
List of devices attached
5Cxxxxxxxxxx device

となって、2行目の方(5Cで始まる行)で認識されていることが確認できます。

 5.Eclipse上で「実行」してみる

実行すると、PocketWiFiS上で動きました!

 

STM32 Value Line DiscoveryをLinuxで開発する(3)

こんどは、Eclipse Plug-in をテストしてみます。参考にしたのは、http://gnuarmeclipse.sourceforge.net/wiki/Main_Pageです。EclipseはすでにAndroidの開発環境の構築の際にインストール済みなので、そこにARMのPlug-inをインストールしてみることになります。

1.EclipseのPlus-inのインストール

http://gnuarmeclipse.sourceforge.net/wiki/Plug-in_installationに沿って、プラグインをインストールしていきます。

  1. 「ヘルプ」→「新規ソフトウェアのインストール」で「インストール」ウインドウが開きます。
  2. 「追加」ボタンを押し、「リポジトリの追加」ダイアログでロケーションに「http://gnuarmeclipse.sourceforge.net/updates」を入力してOKを押します。
  3. しばらくすると、名前のところに「CDT GNU Cross Development Tools」というグループが表示されるので、グループのチェックボックスはチェックなしのまま、1階層下を開き、「GNU ARM C/C++ Development Support」にチェックを入れます。チェックを入れたら「次へ」を押します。
  4. インストールする項目の確認画面が表示されるので「次へ」を押します。
  5. ライセンスの同意確認画面がでてくるので、同意して「完了」を押します。
  6. ソフトウェアのインストールが実行されますが、途中で署名なしコンテンツを受け入れるか確認する警告が表示されますので、「OK」を押します。
  7. Eclipseの再始動確認画面がでてくるので、画面に従います。

2.プロジェクトの生成とToolChainの設定

プロジェクトを生成し、http://gnuarmeclipse.sourceforge.net/wiki/Featuresを参考にツールチェーンの所在をCDTに教えます。

  1. C言語のプロジェクトとして新規のプロジェクトを生成します。
  2. プロジェクトタイプは「ARM Cross Target Application」とし、ツールチェーンは「ARM Linux GCC(Sourcery G++ Lite)」とします。 (summon-arm-toolchain は同じarm-none-eabi-gccなので)
  3. 構成の選択の拡張設定の中の「C/C++ビルド」の「環境」で「すべての構成」を選択した上で、「追加」を押して「名前」に「PATH」を追加し、「値」に「~/sat/bin」を展開した値を追加して、ツールチェーンの場所を知らせます。(展開した値でなければうまく行かないようです)
  4. 「OK」、「完了」、「はい」で、プロジェクトを生成します

3.ソースファイルの追加とビルド

  1. ソースの追加で、main.cを追加します。
  2. stlink/example/blink/main.c の内容をコピー&ペーストします
  3. 「プロジェクト」→「プロパティ」で「環境」の「C/C++ビルド」の「PATH」に「~/sat/bin」を展開した値が入っているのを確認します。
  4. 同じく、「ビルド変数」に「~/sat/bin」を展開した値が入っているのを確認します。

これでビルドすると一応コンパイルされるのですが、まず、サンプルはどのボード向けのコンパイルをするか指定するマクロ定義がないのでエラーになります。

さらに、コンパイルできても、リンク時のマップ指定(何番地からの前提でリンクするか)を指定する箇所がわかりません。素直にMakefileがある前提(自分で作る前提)のプロジェクトとしたほうが良さそうです。

・・・・とりあえず、ここまでで今日は挫折・・・orz

STM32 Value Line DiscoveryをLinuxで開発する(2)

続きです。

2.stlinkのインストール

gitでリポジトリをクローンします。

~/stm32-linux $ mkdir stlink
~/stm32-linux $ cd stlink/
~/stm32-linux/stlink $ git clone git://github.com/texane/stlink.git
Cloning into stlink...
remote: Counting objects: 3515, done.
remote: Compressing objects: 100% (1228/1228), done.
remote: Total 3515 (delta 2276), reused 3434 (delta 2204)
Receiving objects: 100% (3515/3515), 12.63 MiB | 45 KiB/s, done.
Resolving deltas: 100% (2276/2276), done.
~/stm32-linux/stlink $

パッケージマネージャで libusb-1.0 と pkg-config がインストールされていることを確認する必要があります。自分の場合は一見libusb-1.0がインストールされているように見えたのですが、実際にmakeするとエラーになったので、

$ sudo apt-get install libusb-1.0

でlibusb-1.0をインストールしました。

その後、コンパイルします。コンパイルは make 一発です。

~/stm32-linux/stlink/stlink $ make

STM32 Value Line Discoveryを取り付けます。・・・が、こいつのSCSIエミュレーションはだめだめらしいので、システムから無視させるために、

~$ sudo modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i

とすることになっていますが、エラーになってしまいます。しかも、アンマウントしても、すぐに復活してしまいます。恒久策としては

~$ sudo cp stlink_v1.modprobe.conf /etc/modprobe.d
~$ sudo modprobe -r usb-storage && modprobe usb-storage

なのですが、それでもエラーになってしまいますので、一旦強制的に挿抜しました。

次に、udevルールをセットアップします。

~/stm32-linux/stlink/stlink $ sudo cp 49-stlinkv*.rules /etc/udev/rules.d
~/stm32-linux/stlink/stlink $ sudo udevadm control --reload rules

ここでSTM32 Value Line Discoveryを取り付けると、/devの下が

~/stm32-linux/stlink/stlink $ ls -la /dev/stlink*
lrwxrwxrwx 1 root root 15 2012-02-08 02:40 /dev/stlinkv1_2 -> bus/usb/001/005

というようになります。

3.弄ってみる

gdbserverを起動してみます。

~/stm32-linux/stlink/stlink $ ./gdbserver/st-util -1 /dev/stlinkv1_2
non-option ARGV-elements: /dev/stlinkv1_2
2012-02-08T02:44:28 INFO src/stlink-sg.c: Current mode unusable, trying to get back to a useful state...
2012-02-08T02:44:28 WARN src/stlink-sg.c: received tag 0 but expected 3
2012-02-08T02:44:28 INFO src/stlink-common.c: Loading device parameters....
2012-02-08T02:44:28 INFO src/stlink-common.c: Device connected is: F1 Medium-density Value Line device, id 0x10016420
2012-02-08T02:44:28 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes
2012-02-08T02:44:28 INFO src/stlink-sg.c: Successfully opened a stlink v1 debugger
Chip ID is 00000420, Core ID is 1ba01477.
KARL - should read back as 0x03, not 60 02 00 00
init watchpoints
Listening at *:4242...

とりあえず正しく認識して、gdbserverが起動しているようです。

4.何か動かしてみる

gdbserverが動いたままの状態にして、tutorialに沿って、Lチカのサンプルを動かしてみます。

まず、サンプルプログラムをコンパイルします。(赤字が入力箇所です)

~/stm32-linux/stlink/stlink/example/blink $ PATH=~/sat/bin:$PATH
~/stm32-linux/stlink/stlink/example/blink $ make
arm-none-eabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -Wl,-Ttext,0x20000000 -Wl,-e,0x20000000 -mcpu=cortex-m3 -DCONFIG_STM32VL_DISCOVERY=1 main.c -o blink_32VL.elf
arm-none-eabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -Wl,-Ttext,0x20000000 -Wl,-e,0x20000000 -mcpu=cortex-m3 -DCONFIG_STM32L_DISCOVERY main.c -o blink_32L.elf
arm-none-eabi-gcc -g -O2 -mlittle-endian -mthumb -ffreestanding -nostdlib -nostdinc -Wl,-Ttext,0x20000000 -Wl,-e,0x20000000 -mcpu=cortex-m4 -DCONFIG_STM32F4_DISCOVERY=1 main.c -o blink_F4.elf
main.c:83:6: warning: conflicting types for 'main'
main.c:53:2: note: previous implicit declaration of 'main' was here

次に、gdbserverに接続して、ダウンロード&実行します。

~/stm32-linux/stlink/stlink/example/blink $ ~/sat/bin/arm-none-eabi-gdb
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=arm-none-eabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) target extended localhost:4242
Remote debugging using localhost:4242
0x08000b4c in ?? ()
(gdb) load blink_32VL.elf
Loading section .text, size 0x40 lma 0x20000000
Start address 0x20000000, load size 64
Transfer rate: 810 bytes/sec, 64 bytes/write.
(gdb) continue
Continuing.
Cannot access memory at address 0x7bf35cc8

ボード上のLEDがチカチカし始めましたので成功です。

STM32 Value Line DiscoveryをLinuxで開発する(1)

STM32 Value Line Discoveryは面白そうで、安いのですが、開発環境がWindows専用だったりするので、購入したものの放置していました。

しかし、なにげに HACK A DAY を見ていたら、Linux上にSTM32の開発環境を構築する記事がでていたので、追試してみました。OSはLinuxMint11の64bit環境です。

まず、tutrialに沿って環境構築を進めます。

0. gitのインストール

リポジトリはgitで管理されています。ダウンロードするためにgitを使うので、インストールします。

~$ sudo apt-get install git
~$ mkdir stm32-linux
~$ cd stm32-linux

1.summon-arm-toolchainをインストール

gitでリポジトリをクローンします。

~/stm32-linux $ git clone git://github.com/esden/summon-arm-toolchain.git
Cloning into summon-arm-toolchain...
remote: Counting objects: 312, done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 312 (delta 145), reused 266 (delta 115)
Receiving objects: 100% (312/312), 61.76 KiB, done.
Resolving deltas: 100% (145/145), done.

インストーラスクリプトをカスタマイズします。

~/stm32-linux $ cd summon-arm-toolchain 
~/stm32-linux/summon-arm-toolchain $ gedit summon-arm-toolchain

以下の行のみ変更します。(コマンドラインオプションでも設定できるようです。)

SUDO=sudo
LIBSTM32_EN=1

その他の依存関係をクリアしておきます。

~/stm32-linux/summon-arm-toolchain $ sudo apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo build-essential libftdi-dev

ツールチェーンを構築します。

~/stm32-linux/summon-arm-toolchain $ ./summon-arm-toolchain

として構築します。勝手にツールチェーンをダウンロードして、コンパイルしていってくれます。

かなり負荷がかかるようで、普段は静かなCPUファンがかなりの轟音を立てていました。

 

Android SDK in LinuxMint11(64bit)環境構築

調子に乗って、LinuxMint11の64bit環境でAndroid SDKをインストールしてみます。

1.ia32-libsのインストール

JDKのインストールの前に、http://developer.android.com/sdk/installing.html#troubleshooting に従って、ia32-libsをインストールします。

2.JDKのインストール

ソフトウェアの管理から、「sun-java6-jdk」をインストールします。

3.Eclipseのインストール

ソフトウェアの管理からインストールできるeclipseのバージョンは3.5.2-8ubuntu3でした。一方で、Android SDKがサポートするeclipseのバージョンは3.6以降なので、手作業でインストールします。

$ cd /usr/share
$ sudo tar xvzof ~/ダウンロード/eclipse-jee-indigo-SR1-linux-gtk-x86_64.tar.gz

ちなみに途中で誤って3.5.2をインストールしてしまったので、「$ sudo apt-get autoremove eclipse」でアンインストールして、上記アーカイブの展開からやり直しました。

また、ダウンロードしてくる eclipse は「Eclipse IDE for Java EE Developers, 210 MB」でないとダメでした。「Eclipse Classic 3.7.1, 173 MB」や「Eclipse IDE for Java Developers, 127 MB」ではADT-Pluginのインストールで「開発ツール」がエラーになってしまいます。

4.Pleiadesのインストール

http://mergedoc.sourceforge.jp/ から Pleiades 安定版 をダウンロードした後、

$ cd /usr/share/eclipse
$ sudo unzip ~/ダウンロード/pleiades_1.3.3.zip

として、展開します。展開後、/usr/share/eclipse/eclipse.ini の末尾に

-javaagent:/usr/share/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追加します。(パスが違うので要注意)

5.Android SDKのインストール

home directry に android sdk を展開します。

$ tar xvfz android-sdk_r16-linux.tgz

SDK Tools のパスを .bashrc に追加します。

export PATH=${PATH}:/home/foobar/android-sdk-linux/tools:/home/foobar/android-sdk-linux/platform-tools:/usr/share/eclipse
(32bitの時と微妙に違うので注意!)

6.ADT Plug-in のインストール

Eclipseを

$ /usr/share/eclipse/eclipse &

として起動して、http://developer.android.com/sdk/eclipse-adt.html#installing に従って、ADTをインストール。途中で再起動したり、何度かライセンス確認等があるので注意。

★途中でSDKのアップデートがかかりました。なぜか、展開した場所と異なる場所にSDKがインストールされましたので、.bashrcを以下のように書き換えました。

export PATH=${PATH}:/home/foobar/android-sdks/tools:/home/foobar/android-sdks/platform-tools:/usr/share/eclipse

7.SDKコンポーネントの追加

http://developer.android.com/sdk/installing.html の Step 4に従って、SDKコンポーネントを追加します。

$ cd android-sdk-linux/tools
$ android

で Android SDK Manager が開く。しばらく待つと、Packageのリストが出てくるので、http://developer.android.com/sdk/installing.html#which に従って、パッケージを選択していく。

今回は「Tools/Android SDK Platform-tools」と「Android 2.3.3(API 10)」と「Android 2.2(API 9)」を追加した。(「Android 4.0.3(API 15)」は初めから選択されていた)

この辺は32bitの時と同じでした。

8.サンプルの起動

32bit環境の時と同様にhttp://android.keicode.com/basics/quick-start.php の「はじめてのAndroidプログラム」を参考に動かしたところ、無事にエミュレータでも動作しました。

Android SDKをインストールしてみた

Android SDKをインストールしてみます。

1.使用するLinux環境

http://developer.android.com/sdk/requirements.html に記載の環境を満たすように準備します。LinuxではUbuntu(8.04以降)でテストされている、と記載されていますが、Ubuntuではなく先にインストールしたLinuxMint12の32bit版を使ってみました。

ここに、http://developer.android.com/sdk/requirements.html に従って、システム要件を満たすようにインストールしていきます。

2.JDKのインストール

ソフトウェアの管理から、「sun-java6-jdk」をインストールします。

3.Eclipseのインストール

同じくソフトウェアの管理から、「eclipse」と「eclipse-jdt」をインストールします。今日の時点でインストールされたeclipseのバージョンは3.7.0-0ubuntu1でした。

4.Pleiadesのインストール

ソフトウェアの管理から、Eclipseを日本語化する「Pleiades」をインストールします。
インストール後、/etc/eclipse.ini (または /usr/lib/eclipse/eclipse.ini) の末尾に

-javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

を追加

5.Android SDKのインストール

home directry に android sdk を展開します。

$ tar xvfz android-sdk_r16-linux.tgz

SDK Tools のパスを .bashrc に追加します。

export PATH=${PATH}:/home/foobar/android-sdk-linux_86/tools

6.ADT Plug-in のインストール

Eclipseを起動して、http://developer.android.com/sdk/eclipse-adt.html#installing に従って、ADTをインストール。途中でライセンス確認があるので注意。

7.SDKコンポーネントの追加

http://developer.android.com/sdk/installing.html の Step 4に従って、SDKコンポーネントを追加します。

$ cd android-sdk-linux/tools
$ android

で Android SDK Manager が開く。しばらく待つと、Packageのリストが出てくるので、http://developer.android.com/sdk/installing.html#which に従って、パッケージを選択していく。

今回は「Tools/Android SDK Platform-tools」と「Android 2.3.3(API 10)」と「Android 2.2(API 9)」を追加した。(「Android 4.0.3(API 15)」は初めから選択されていた)

・・・が、eclipseでプロジェクト作成する際には表示されませんでした。そこで改めて「ウインドウ」→「Android SDK Manager」で再度設定したら現れるようになりました。

8.サンプルの起動

サンプルについては、http://android.keicode.com/basics/quick-start.php の「はじめてのAndroidプログラム」を参考に動かしたところ、無事にエミュレータでも動作しました。

<参考>

インストールの過程では以下のサイトを参考にさせていただきました。

BlueGriffonをインストールしてみた

HTMLファイルの編集が必要になり、HTMLエディタを調べました。

構文まで調べる元気はないのでWYSIWYGのものが基本になるわけで、ちょっと前ならKomposerを迷わず選択するところですが調べてみました。

すると、その後継(でいいのだろうか?)のBlueGriffonがHTML5などにも対応していて、良さげな感じなのでLinuxMint11の64bit環境にインストールしてみます。(こちらの説明を参考にしました→http://freesoft.tvbok.com/freesoft/web/html5_wysiwyg.html

  1. ダウンロードはZipファイルかシェルアーカイブのようなので、シェルアーカイブをダウンロードして、chmod a+x で実行属性をつけた後、起動します。
  2. インストール時の使用言語を問われますので、Englishを選びます(1.4の時点では日本語はない)。
  3. インストール先はホームディレクトリ配下になる用です。そのままインストール。
  4. インストールはあっという間に終了し、起動するか聞かれますので、起動してみます。
    すると、新しいバージョンのマニュアルがあるが、ダウンロードするか、と問われましたので、 ダウンロードをクリックしてみました。
    すると、マニュアルは5ユーロ+税金でのPDFファイルの販売のようです。つまり、ソフトウェアを使いこなそうと思ったら、5ユーロの寄付をしてね、みたいなものでしょう。マニュアルが日本語であれば、いいのですが、英語のようなので今回はキャンセルしました。

造り込みはしっかりしているようで、さすがKomposerの後継?です。表示も初めから日本語になっています。ただ、生成されるファイルが、.htmlではなく、.xhtmlになっています。これで目的にあった使い方ができるのかどうか、調べてみる必要がありそうです。

Mint12のインストールの続き

LinuxMint12をインストールしてみました・・・の続き。うまくいってませんが、とりあえず記録として残しておきます。

8.ウインドウマネージャの変更(でいいのか?)

鬱陶しいウインドウ貼り付き&全画面拡大現象を何とかするため、compiz設定マネージャがないのかと思ってしらべてみたら、そういうわけでもないようです。
で、一旦ログアウトして、ログインWindowというか、パスワード入力欄の右上の設定マーク(?)をクリックして、GNOME classicを選択してログインすると、より見慣れた形に近いウインドウになりました。
ウインドウの貼り付き現象もなくなっていました。

9.改めて Google Chrome をインストール

ウインドウマネージャを変更した後では、無事にChromeがインストールできました。