2011/08/23

[Android][OASIZ]「OASIZ 作業記録」 Version 0.525 を公開しました。

Android Market にて、「OASIZ 作業記録」 Version 0.525 を公開しました。
https://market.android.com/details?id=jp.dip.oyasirazu.timelogger

github からも、野良 apk のダウンロードが可能です。
https://github.com/mikoto2000/OASIZ_TimeLogger/archives/master

ふー。
確認不足でまともに動かないものをアップロードした上に、今日まで気づかないとは。
穴があったら入りたい...。
あと、 github のダウンロード機能を勘違いしていました。
前回の記事からはダウンロードできないみたいですね。
改めて最新版 apk ファイルをアップロードしました。
Android マーケット・github どちらからもまともな apk がダウンロードできるようになりました。

2011/08/22

「OASIZ 作業記録」を公開しました。

Android Market にて、「OASIZ 作業記録」を公開しました。
https://market.android.com/details?id=jp.dip.oyasirazu.timelogger

github からも、野良 apk のダウンロードが可能です。
https://github.com/mikoto2000/OASIZ_TimeLogger/tree/master/bin/0.5

以下、 README より引用。

■ これは何?
時間記録支援アプリケーションです。


■ 何ができるの?

- 作業名を指定して、作業時間を記録すること
- 作業名を後から変更すること
- 作業記録をエクスポートすること
- 壁紙を選択すること

* 詳細画面のリストをタップすることで、選択した作業名を修正できます。
* 詳細画面のメニューから、 ACTION_SEND に対応したアクティビティに作業記録を送ることができます。
* 詳細画面のメニューに、壁紙選択メニューがあります

このアプリケーションは、無保証です、
不具合があるかもしれません。
個人の責任で使用してください。

github にてソースコードを公開しています。
https://github.com/mikoto2000/OASIZ_TimeLogger


■変更履歴
2011/08/21 Version 0.5 を公開しました。


■ TODO
・テストを真面目にする
・縦画面と横画面で別々の背景画像が指定できるとよいね。
・説明書的なものが必要か?
  (画面オーバレイで出てくるヘルプとか理想)
・テーマ指定(最低でも文字色くらいは...)
・入力補助機能が欲しい
・メモ書きくらいできるようにしたほうが良い?

2011/06/18

[Memo]Vimperator で Evernote プラグインを便利に使う

Evernote Web Clipper プラグインを入れる
Evernote Web Clipper :: Add-ons for Firefox


~/.vimperatorrc に追加
command clip javascript Evernote.Overlay.init(null)
これで、「:clip」と打つと、Evernote のクリップウインドウが表示されるようになる。
一度起動すると、2回め以降はbookmarkletよりもきびきび動く気がするので幸せ。

2011/05/16

[Android]Galaxy Tab のバックアップとリストア

前提条件

Galaxy Tab の root を取得していること。

カーネルイメージを転送するツール(Heimdall)の入手

Heimdall – Glass Echidna
上記ページから deb パッケージをダウンロードする。
フロントエンドは、 libqtcore4 が必要らしいのでそれもインストール
sudo aptitude install libqtcore4
sudo dpkg -i heimdall_1.1.1-1_amd64.deb heimdall-frontend_1.1.1-1_amd64.deb
squeez では libqtcore4.6 までしか提供されていない。
heimdall が依存しているのは 4.7。
一時的に aptline を sid にして対応する。
...と思ったが、qtcore4 依存のものが多くて不安になったのでフロントエンドは保留。

イメージのバックアップ

dd if=/dev/block/bml1 of=/sdcard/boot.bin bs=4096
dd if=/dev/block/bml2 of=/sdcard/pit.pit bs=4096
dd if=/dev/block/stl3 of=/sdcard/efs.rfs bs=4096
dd if=/dev/block/bml4 of=/sdcard/Sbl.bin bs=4096
dd if=/dev/block/stl6 of=/sdcard/param.lfs bs=4096
dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096
dd if=/dev/block/stl9 of=/sdcard/factoryfs.rfs bs=4096
dd if=/dev/block/stl10 of=/sdcard/dbdata.rfs bs=4096
dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096
dd if=/dev/block/bml12 of=/sdcard/modem.bin bs=4096 
/data/bin/busybox tar -czvf /sdcard/data.tar.gz /data

adb pull /sdcard/param.lfs .
adb pull /sdcard/zImage .
adb pull /sdcard/factoryfs.rfs .
adb pull /sdcard/dbdata.rfs .
adb pull /sdcard/cache.rfs .
adb pull /sdcard/modem.bin .
adb pull /sdcard/efs.rfs .
adb pull /sdcard/boot.bin .
adb pull /sdcard/Sbl.bin .
adb pull /sdcard/pit.pit .
adb pull /sdcard/data.tar.gz .

バックアップのリストア

データ領域のリストア
adb push data.tar.gz /sdcard/data.tar.gz
adb shell su -c "tar -zxvf /sdcard/data.tar.gz"
その他領域のリストア
adb reboot download
heimdall flash --kernel zImage --factoryfs factoryfs.rfs --modem modem.bin --cache cache.rfs --dbdata dbdata.rfs --param param.lfs

参考文献

後で見る

カスタム ROM 作成のための足がかりになるか?
HOWTO: Unpack, Edit, and Re-Pack Boot Images - Android Wiki

2011/05/05

[Android]Galaxy Tab root 化

galaxy tab を root 化したい

ディスク(?)イメージごとバックアップをとりたい。
カスタム ROM を入れたり、最終的には Android Framework 以下の部分に手を入れてみたかったり。
結論から言うと、下記ページをみながら作業するといいよ。で終了。
dynabookAZをSuperOneClick抜きでルート化する - D!
以下、作業記録。
作業記録
以下のツールで root 化できるらしい。
[APP]SuperOneClick v1.9.1 (Root, Unroot, Enable Non-Market App) - xda-developers
mono のインストールが必要なのでインストール。
sudo aptitude install mono-2.0-devel
(libmono の一部で良い気もするが面倒なので全部インストール。)
** (SuperOneClick.exe:24913): WARNING **: The following assembly referenced from /home/mikoto/Download/SuperOneClick1.9.1/SuperOneClick.exe could not be loaded:
     Assembly:   System.Windows.Forms    (assemblyref_index=2)
     Version:    2.0.0.0
     Public Key: b77a5c561934e089
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/mikoto/Download/SuperOneClick1.9.1/).


** (SuperOneClick.exe:24913): WARNING **: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.

** (SuperOneClick.exe:24913): WARNING **: Missing method EnableVisualStyles in assembly /home/mikoto/Download/SuperOneClick1.9.1/SuperOneClick.exe, type System.Windows.Forms.Application

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies.
File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
...うーむ。Forms が無い?それっぽいパッケージを追加。
sudo aptitude install libmono-winforms2.0-cil
よし、動いた。
とおもいきやルート化中にフリーズ。 chmod で失敗している?エラーログも吐かないし原因不明。
下記ページを見て手動セットアップ。
dynabookAZをSuperOneClick抜きでルート化する - D!
取り合えすこれでルート化はできたので、イメージバックアップをとってみよう。

2010/12/19

[Debian]debian squeeze amd64 に AcrobatReader9 をインストール

atpline に追加

deb http://www.debian-multimedia.org etch main non-free

acroread と、その日本語環境インストール

sudo aptitude search acroread acroread-fonts-jpn acroread-l10n-ja acroread-dictionary-ja
以上。

2010/12/17

[Java]リフレクションしてみた

極簡単なリフレクションの例。
コピペ支援的な感じで。
import java.lang.reflect.Constructor;

public class ReflectionTest {
   public static void main(String[] args) {
      try {
         // create String instance
         String string_classStr = "java.lang.String";
         Class<String> string_class = (Class<String>) Class.forName(string_classStr);
         Class string_argTypes[] = { String.class };
         Constructor<String> string_constructor = string_class.getConstructor(string_argTypes);
         Object string_constructorArgs[] = { "TESTING@TESTONG" };
         String string = (String) string_constructor.newInstance(string_constructorArgs);
         System.out.println(string);
         
         // call toString() method
         Method string_toString = string_class.getMethod("toString", null);
         String dst_string = (String) string_toString.invoke(string, null);
         System.out.println(dst_string);
         
         // call split("@") method
         Class string_split_argTypes[] = { String.class };
         Object string_split_args[] = {"@"};
         Method string_split = string_class.getMethod("split", string_split_argTypes);
         String[] string_splitArray = (String[]) string_split.invoke(string, string_split_args);
         for (String str : string_splitArray) {
            System.out.println(str);
         }
         
         // call String.format("num1 : %d, num2 : %d", 13, 14) methods (static method, and "13, 14" is var args)
         Class string_format_argTypes[] = { String.class, Object[].class };
         Object string_format_args[] = { "num1 : %d, num2 : %d", new Object[]{13, 14} };
         Method string_format = string_class.getMethod("format", string_format_argTypes);
         dst_string = (String) string_format.invoke(null, string_format_args);
         System.out.println(dst_string);
         
      } catch (NoSuchMethodException e) {
         e.printStackTrace();
      } catch (IllegalArgumentException e) {
         e.printStackTrace();
      } catch (InstantiationException e) {
         e.printStackTrace();
      } catch (IllegalAccessException e) {
         e.printStackTrace();
      } catch (InvocationTargetException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }
   }
}
追記 reflection の綴りをがっつり間違えていたので修正しました。

2010/12/08

[Java][C]JNIのヘッダを作るメイクファイル

JNI のヘッダを作ってくれる Makefile

OUTPUT_DIR=jni/
CLASSPATH=bin/
PACKAGE_BASE=jp.dip.oyasirazu.jnitest.
DIRECTORY_BASE=jp/dip/oyasirazu/jnitest/
HEADER_BASE=${OUTPUT_DIR}jp_dip_oyasirazu_jnitest_

all: ${HEADER_BASE}JNITest.h \
     ${HEADER_BASE}TestClass.h

${HEADER_BASE}%.h : ${CLASSPATH}${DIRECTORY_BASE}%.class
   javah -classpath ${CLASSPATH} -d ${OUTPUT_DIR} ${PACKAGE_BASE}$(subst ${HEADER_BASE},,$*)
ちょうきもちわるい。
ヘッダは '_' 区切りだし、パッケージは '.' 区切りだし、ディレクトリは '/' 区切りだし...。
何か良い方法無いのかね?
make doc でシグネチャ一覧 txt をどこかに出力とかも便利かもねー。
きちんと調べれば ndk-build とか .mk とか編集するとできる気もする。
いつかきっと調べる。
でもこの辺がころころ変わることなんて滅多にないはずだから無駄な努力だった気もする。

2010/12/07

[Debian]windowsに接続されたプリンタを使う

必要パッケージ

sudo aptitude install dpkg-dev debhelper autotools-dev
sudo aptitude install cups libcups2-dev
sudo aptitude install libltdl3-dev

pipslite_1.5.0-2.tar.gz をダウンロード。

Linuxドライバー|アヴァシス株式会社
tar zxfv pipslite_3.5.0-2.tar.gz
cd pipslite_1.5.0
sudo dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i pipslite_1.5.0-2_amd64.deb

windows側の設定

[Debian]いろんな(?)開発環境導入

OS

は squeez です。

java5

一時的に aptline を lenny に変更し、
sudo aptitude install sun-java5-jdk
aptline を元にもどすのを忘れずに!

java6

sudo aptitude install sun-java6-jdk

java5 と java6 の切り替え

sudo update-alternatives --config java
sudo update-alternatives --config javac
それぞれ、使いたい java に対応した番号を入力すれば ok.

android, em ビルドのためのものども(java は上でインストール済みだから除く)

sudo aptitude install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev uboot-mkimage
X11 のシンボリックリンクが無いらしい。
sudo ln -s /usrsudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so/lib32/libX11.so.6 /usr/lib32/libX11.so

eclipse

sudo aptitude install eclipse

arm linux クロスコンパイル環境

下記サイトをみて arm linux 用の toolchain を持ってくる。
Embedded Debian -- Cross-development toolchains
aptline に 
deb http://www.emdebian.org/debian/ lenny main 
を追加すると同時に、 squeeze を lenny とする。
sudo aptitude install linux-libc-dev-armel-cross libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi
lenny を squeez に戻す。

自分用に arm-linux-gnueabi をコピー

cp -r /usr/arm-linux-gnueabi ~/embdebian/

jpeglib のクロスコンパイル

mkdir -p ~/embdebian/libs
cd ~/embdebian/libs
apt-get source libjpeg8-dev
cd libjpeg8-8b
./configure CC=arm-linux-gnueabi-gcc --host=x86_64-linux --target=arm-linux-gnueabi --prefix=~/embdebian/arm-linux-gnueabi
make -j8
make install
これで、 arm-linux-gnueabi 内に、 arm 用の jpeglib がインストールされる。

2010/12/04

[Debiain]最小構成インストールから一通りインストールした記録

apt-line の設定。

vi /etc/apt/sources.list
すべての行に「 contrib non-free 」を追加。

apt パッケージ情報の更新

aptitude update

x-window-system のインストール

aptitude install x-window-system

xfce4 のインストール

aptitude install xfce4

slim (ログインマネージャ) のインストール

aptitude install slim

管理?

aptitude install sudo

ブラウザ

sudo aptitude install iceweasel iceweasel-vimperator
sudo aptitude install flashplugin-nonfree

エディタ

aptitude install vim-gtk

フォント

aptitude install ttf-ipafont-gothic ttf-ipafont-mincho

日本語入力

aptitude install anthy uim-anthy
スタートメニューから、設定->入力メソッド切替器
uim-toolbar を選択。
うかつにターミナルで LC_ALL=C とかいう設定をすると、日本語入力受け付けなくなるので注意。

スクリーンショット

sudo aptitude install xfce4-screenshooter

ランチャ

<Super>space(スタート+スペース)に xfrun4 を割り当てる。
スタートメニュー->設定->キーボード->アプリケーションショートカットキー
xfrun4 をダブルクリックし、スタート+スペースを押下。
"Gnome Do" とかインストールしても、アプリケーションランチャとしてしか使わないからこれで十分。
xfrun4 の環境変数とかがよく分からなかったから、シンボリックリンクで alias の代わりとする。
cd /usr/bin
sudo ln -s xfce4-terminal terminal
sudo ln -s xfce4-screenshooter screenshooter
sudo chmod go-w terminal screenshooter

ネットワーク共有

sudo aptitude install cifs-utils
mount.cifs //ネットワークドライブ マウントポイント
で、ネットワークドライブのマウントができるようになる。
面倒だけれど、 fstab なんかに設定すれば許容範囲内?
マウントしたところに書き込めるように設定
/etc/fstab
//192.168.1.24/datas /home/netdrives/data cifs gid=netdrive,file_mode=0774,dir_mode=0775 0 0
//192.168.1.24/datas02 /home/netdrives/data02 cifs gid=netdrive,file_mode=0774,dir_mode=0775 0 0
こんな感じで設定して、書き込みを許すユーザに netdrive グループに入ってもらう。
IP 直打ちが嫌なら以下の LAN 内の名前解決をする。

LAN 内の名前解決

必要パッケージのインストール
sudo aptitude install samba winbind
名前解決の設定
sudo vi /etc/nsswitch.conf
hosts の項目に wins を追加
sudo vi /etc/samba/smb.conf
wins support = yes と変更。
不要サービスの停止
sudo mv /etc/init.d/S18winbind /etc/init.d/K18winbind

画像ビューワ

sudo aptitude install ristrett

動画プレイヤー

sudo aptitude install vlc
倍速再生でも音が高くならない設定
ツール->設定->左下の「すべて」を選択->オーディオ->フィルタ
「再生レートとオーディオ速度調整機能の同期」にチェック
多分その下のテキストエリアに「scaletempo」と表示される。
表示されなければ自分で書いて。

パネルの設定

sudo aptitude install xfce4-cpugraph-plugin
パネルに、ミキサー, cpugraph, Orageカレンダーを追加

グラフィックドライバ

sudo aptitude install nvidia-setting nvidia-xconfig
依存関係があるから必要なカーネルやら何やらもすべてインストールしてくれる。

リモートデスクトップ

sudo aptitude install rdesktop

仮想端末?

sudo aptitude install screen

圧縮解凍

sudo aptitude install xarchiver

パッケージ内ファイル検索

sudo aptitude install apt-file

マインドマップ

sudo aptitude install freemind ttf-sazanami-gothic ttf-sazanami-mincho
さざなみフォントをインストールしないと文字化けするみたい。

2010/01/08

[Java]整数の各桁を足し合わせる問題

■ 整数の各桁を足し合わせる問題

5分で終わると聞いてやってみました。
5分問題 やってみた。 - 地獄の猫日記

■ ということで、作ってみた

負数が入力だった場合どうすれば良いのか解らなかったので、とりあえずマイナスは無視して数字を全部足す事にした。
・無難(?)な回答
public class PlaceNumberAdder02 {
   long number;
   public PlaceNumberAdder02(long number){
      setNumber(number);
   }

   public long addNumbers(){
      long number = this.number;
      long sum = 0;
      
      number = Math.abs(number);
      
      do {
         sum += number % 10;
      } while((number /= 10) != 0);
      
      return sum;
   }
   
   public void setNumber(long number){
      this.number = number;
   }
   
   public long getNumber(){
      return number;
   }
}
・変態(?)回答
public class PlaceNumberAdder01 {
   long number;
   public PlaceNumberAdder01(long number){
      setNumber(number);
   }
   
   public long addNumbers(){
      String numberStr = String.valueOf(number);
      long sum = 0;

      if(number < 0){
         numberStr = numberStr.substring(1);
      }
      
      for(int i = 0; i < numberStr.length(); i++){
         sum += Integer.parseInt(numberStr.substring(i, i+1));
      }
      
      return sum;
   }
   
   public void setNumber(long number){
      this.number = number;
   }
   
   public long getNumber(){
      return number;
   }
}
変態回答が01なのが問題だよねー。
・...言い訳をさせてもらうと
「3の倍数 or 3を含む」数の時にアホと表示するプログラムを書いた時に、数字を文字に変換して処理を行ったもんで、今回もそののりで書いてみた感じ。
普通に処理した場合(PlaceNumberAdder02)に比べて2から2.5倍くらい遅くなります。
しかし、プログラムの形的にも面白みの無い物になってしまったなぁ...。
あと、名前とかもっと考えようよ、自分。

■ テスト

・テストコード(とは言えない何か)
public class PlaceNumberAdderTest {
   static final long l1 = 1234, l2 = 9999, l3 = -65535;
   
   public static void main(String[] args) {

      System.out.println("Number = " + l1);

      PlaceNumberAdder01 pna1 = new PlaceNumberAdder01(l1);
      System.out.println("pna1: " + pna1.addNumbers());
      
      PlaceNumberAdder02 pna2 = new PlaceNumberAdder02(l1);
      System.out.println("pna2: " + pna2.addNumbers());

      System.out.println();
      System.out.println("Number = " + l2);

      pna1.setNumber(l2);
      System.out.println("pna1: " + pna1.addNumbers());
      
      pna2.setNumber(l2);
      System.out.println("pna2: " + pna2.addNumbers());

      System.out.println();
      System.out.println("Number = " + l3);

      pna1.setNumber(l3);
      System.out.println("pna1: " + pna1.addNumbers());
      
      pna2.setNumber(l3);
      System.out.println("pna2: " + pna2.addNumbers());

   }
}
・実行結果
Number = 1234
pna1: 10
pna2: 10

Number = 9999
pna1: 36
pna2: 36

Number = -65535
pna1: 24
pna2: 24
こんな感じ。

2009/12/17

[Java]カード配り問題に挑戦

■ カード配り問題に挑戦

qune: プログラミングメモ - カード配り問題とか
10分で終わると聞いてやってみました。
結局20分かかりました...。

■ ソースコード

public class Cards {
 public String[] deal(int numPlayers, String deck){
  String[] playerCards = new String[numPlayers];
  int cardNum = deck.length();
  
  //配列初期化
  for(int i = 0; i < numPlayers; i++){
   playerCards[i] = "";
  }
  
  //プレイヤーに同じ数のカードを配るために、余るカードは抜けておく
  int amari = cardNum % numPlayers; 
  deck = deck.substring(0, cardNum - amari);
  cardNum = deck.length();
  
  //一人に一枚づつすら配れない場合は誰にもカードを配らない
  if(cardNum == 0){ return playerCards; }
  
  //カードを配る
  for(int i = 0; i < cardNum; i++){
   playerCards[i%numPlayers] += deck.charAt(i);
  }
  
  //結果を返す
  return playerCards;
 }
}

public class CardsTest {
 public static void main(String[] args) {
  int numPlayers;
  String deck;
  String[] results;
  
  Cards cards = new Cards();

  //例1
  numPlayers = 6;
  deck = "012345012345012345";
  //Returns: {"000", "111", "222", "333", "444", "555" }
  results = cards.deal(numPlayers, deck);
  
  for(String result : results){
   System.out.print("\""+result+"\" ");
  }
  System.out.println();

  //例2
  numPlayers = 4;
  deck = "111122223333";
  //Returns: {"123", "123", "123", "123" }

  results = cards.deal(numPlayers, deck);
  
  for(String result : results){
   System.out.print("\""+result+"\" ");
  }
  System.out.println();

  //例3  
  numPlayers = 1;
  deck = "012345012345012345";
  //Returns: {"012345012345012345" }

  results = cards.deal(numPlayers, deck);
  
  for(String result : results){
   System.out.print("\""+result+"\" ");
  }
  System.out.println();
  
  //例4
  numPlayers = 6;
  deck = "01234";
  //Returns: {"", "", "", "", "", "" }

  results = cards.deal(numPlayers, deck);
  
  for(String result : results){
   System.out.print("\""+result+"\" ");
  }
  System.out.println();
  
  //例5
  numPlayers = 2;
  deck = "";
  //Returns: {"", "" }

  results = cards.deal(numPlayers, deck);
  
  for(String result : results){
   System.out.print("\""+result+"\" ");
  }
  System.out.println();
 }
}

■ 出力結果

"000" "111" "222" "333" "444" "555" 
"123" "123" "123" "123" 
"012345012345012345" 
"" "" "" "" "" "" 
"" "" 
ソースが無駄に長かった...。
そして別にsubstringする必要が無かった...orz
//プレイヤーに同じ数のカードを配るために、余るカードは抜けておく
int amari = cardNum % numPlayers; 
deck = deck.substring(0, cardNum - amari);
cardNum = deck.length();
上記は無駄。以下でokであることを確認...orz
cardNum -= cardNum % numPlayers;
いちいち文字列を作り直さないで、for文の繰り替えし数で調整すればいいじゃない。という話。うへぇ。

2009/12/05

[普通の日記]レイアウトがひどい

ファイル名とかコマンドとかいっぱいでてくる場合は気をつけないなぁ...。

[Debian]ネットにつながらなくなりました...。

■ ネットにつながらなくなりました...。

 インストール後しばらくは普通に使えていたのですがねぇ...。
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
 こんな感じのがひたすら表示されていく感じ。IPを静的割当にしてもつながらない、というかルータへの ping すら通らないという...。
 取り合えず ifconfig。eth0 の認識を確認。それと同時にものすごい勢いで増えていく損失パケット(dropped)を確認。

■ 原因をさぐる

 やっぱり google 検索。「debian ifconfig 損失」で検索。 NIC のドライバがおかしいとこうなるらしい。Debian が NIC 用にロードしたモジュールが、実際はその NIC に対応していなかったって感じ?

■ NIC のドライバをインストールしよう

 今回の本題。
・このノートパソコンの NIC は何だ?
 初めのうちはきちんと動いているみたいだったから特に調べてませんよ? PC の型番で検索をかけて NIC の型番を調べる。
 NIC = Realtek RTL 8168D/8111D Family PCI-E GBE NIC
 (【NVIDIA ION】ドスパラ Prime Note Cresion NA まとめページ【Atom 330】 - スペックより)
 そういえばさっき調べたページでも蟹さんはちょっとアレという話題がでていたなぁ。
・ドライバ入手
 Realteck のホームページから r8168-8.015.00.tar.bz2 をダウンロード。解凍、READMEを読む。ふむ、ビルドにはヘッダやら何やら、新たにパッケージをインストールする必要があるらしい。
・必要なパッケージのダウンロード
 カーネルヘッダーパッケージが必要らしい。自分が使っているカーネルは 2.6.26-2-amd64(?) だから、ダウンロードするのは「linux-headers-2.6.26-2-amd64」。
 もちろん aptitude とか使えないので、別 PC にて手動ダウンロード。debian パッケージの内容を検索(http://www.debian.org/distrib/packages#search_packages) で「linux-headers-2.6.26-2」を検索し、「linux-headers-2.6.26-2-amd64」パッケージをダウンロード。芋づる式に依存パッケージ、依存パッケージの依存パッケージ...とか、全部もってくる。
 もってきたパッケージを USB 経由で debian へ。
・必要なパッケージのインストール
 もってきたパッケージがすべて揃っているディレクトリで、dpkg。
: dpkg -i *
 何か言われると思ったけれどすんなり完了しました。
・ドライバのビルド
 間違ってロードされているモジュールの削除。
: rmmod r8169
 正しいモジュールのビルド
: make clean modules
: make install
 変更の適用(?)
: depmod -a
 正しいモジュールのロード
: modprobe r8168
 確認
: ifconfig -a
・ドライバの自動ロード設定
 mkinitramfs で、起動時に r8168 をロードしてくれる initrd を作成する。
: mkinitramfs -o initrd.img-2.6.26-2-amd64 2.6.26-2-amd64
 元の initrd のバックアップをとったのち、今作った initrd を /boot に突っ込む。
: mv /boot/initrd.img-2.6.26-2-amd64 /boot/initrd.img-2.6.26-2-amd64.bkup
: mv initrd.img-2.6.26-2-amd64 /boot/
 これで、起動時に自動で r8168 をロードしてくれる。...はず。

■ ネットにつながるようになりました!

 めでたしめでたし。

2009/11/24

[電子工作]組み込みLinuxなら何でも良いわけで...

Chumbyの代わりにBeagle Boardという手もあるなぁ。Chumbyより安いし。
Digi-Key japanで約15000円也。
LM3674MF-ADJ/NOPBも250円くらいで売ってるみたい。
もう少しBeagle Boadについて調べたら注文してみましょうかね?

2009/11/20

[電子工作]Chumby修理計画?

前回の続き?
あきらめモード満点だったんですが、kinnekoさんからコメントをいただきまして、
kinneko さんのコメント...

http://tech.cerevo.com/blog/archives/50 このへん?

だそうなので、このページを真似して抵抗やら電圧やらを測ってみた。
  • R300=12V
  • J302=1.4V, 125Ω
  • J303=5.3V, 400Ω
  • J304=1.9V, 155Ω
3.3Vがだめになったせいでいろいろ不具合がおきたということかしら?
作業中にもうひとつわかったことが、U300が熱いということ。
やけどしそうになりました。
U302は指で触れる程度なのにU300は触ってたらやけどする、絶対。
これが原因か?
この場合、U300を新品交換って感じでよいのだろうか?
というかそれくらいしか思いつかないのでやってみようか。
どうせこのままでも動かないわけだし。
しかし、その辺で売ってるのか?LM3674ってやつは。

2009/11/19

[電子工作]Chumby壊れてた

シリアルコンソールケーブル作るまでもなかった。
シリアルコンソールの+3VとGNDをテスターで計ったら1.5V位しか電圧がなかった...orz
これはもう自分じゃ手に負えないわ。
さて、これからどうしようかねぇ...。

2009/11/18

[普通の日記]今週のノルマ終了(したと思いたい...)

Twitter, 気付けば13 days ago...
いやいや、P3P廃人になっていたわけではありませんよ?決して。

さて、やらねばならぬことに一区切りつけたので、あと1週間くらいは通常運行モードのはず。
そういうわけで、やりたいことを列挙してみようか。
  1. Bioroidを弄る
  2. シリアルコンソールケーブル作成
  3. 壊れた(?)Chumbyの動作確認
  4. AVRマイコン入門の続き
大威張りで「今週中にBioroidで何か組み立てますよ」
とか言っちゃったもんだからとりあえず何か組み立てねば...。
金曜までには3番まで終わらせる勢いでやっていきたいですね。

さて、それではこれからBioroidの説明書を読みますよ。

2009/11/04

[電子工作]Chumbyが壊れた

...と断言できないのがもどかしい。
タッチスクリーンの映像が微妙に乱れ、ずっとタッチしっぱなしだと認識される。
たぶんタッチスクリーンがあれになったのだと思うけれど、
タッチスクリーンを外して電源をつけてもSSHが復活しない...。
そうなってくると、なんだか基盤が熱すぎるような気がしてくる...。

そもそもタッチスクリーンを外して電源をつけたときにどういう挙動とるのか、
そこから解ってないし、自分。

うわー、基盤かね?タッチスクリーンかね?
とりあえずタッチスクリーン、SSH以外の入出力で動作確認が必要。

ということで、とりあえず秋月にレベルコンバータを注文しました。
シリアルコンソールケーブルを作って、そちらで動作確認します。
その前にシリアルコンソールケーブルの動作確認を何かで行う必要があるのか...。
(初自作、シリアルコンソールケーブル)

壊れたChumbyの画面画像ではほとんどわからないけれど、マルやら文字やらが軒並み右側へひげを出している。(うまい言葉が見つからなかった...)

いろいろと微妙な時期に壊れてくれちゃったもので、Chumbyを買いなおすかどうするか悩みどころですわ。(いや、まだ復帰不可能だと決まったわけではないですが...)