共用PCの言語

debian gnomeの言語設定
共用のPCとしてdebian lennyのgnomeを立ち上げた。とりあえず日本語を選択していたが、よく考えると外国人も使うことがある。言語を英語に変更しようとしたが、gnomeではどこで設定するのか分からない。いろいろと調べたら、gdmから選ぶことができるようだ。しかし、選択肢に英語が無い。 gnomeの設定ではやり方が分からなかったので、いつものようにターミナルからやることにした。dpkg-reconfigure localesとして、en-USを選択する。日本語もutf8になっていたので、英語もutf8にすることにする。そうすると、gdmでは英語が選択できるようになった。しかし、gdmの表示が日本語のままだし、gnomeが起動するときに少しエラーがでる。困ったので再起動してみたら、今度はうまく行った。gdmを再起動すれば良かったのかな。

Read more...

ubuntuを試す

wubiを使ってubuntuをインストール
windowsユーザーである知り合いが、linuxを試しに使ってみたいということだったので、wubiを勧めてみた。読み方が難しいくて、「うぅび」とでも言えば良いのだろうか。通常、windowsとlinuxをデュアルブートにするためには、windowsのパーティションを縮めて、空いた領域にlinuxをインストールする。しかし、パーティションをいじるときに、データを失う危険性があるので、なかなか勇気がいる。しかし、wubiではwindowsのpartitionの中にファイルを作って、それをHDDのイメージとして扱う。起動はwindowsのboot.iniの中で選択出きるようになっており、そこでubuntuを選ぶとlinuxが立ち上がる。 現在のバージョンは10.04のようなので、それをdownloadして実行してみると、途中でエラーが起こる。どうやらtorrentでインストールCDのイメージを取ろうとして失敗しているようである。同じフォルダにCDイメージを置いておけば良いということだったので、最新の10.10のイメージを置いたがダメだった。実はwubiのバージョンと同じubuntuを取ってこないといけないようだったが、それに気がつくまで、いろいろなイメージを落としてしまった。 インストールはあっさり終わってubuntuを起動すると、実際にそれからHDDイメージへのインストールが始まった。これも終わると、今度は実際にubuntuが立ち上がる。少し使用した感じだと、通常のインストールとほとんど変わらないように使える。ただ、windowsのpartitionを見にいけないようなので、linuxとwindowsの間でのデータ転送が面倒そうだ。 しかし、windowsユーザーにとっては、ubuntuを試してみる敷居を下げるという効果は十分に期待で切るのではないだろうか。

Read more...

MAL_OTORUN対策

データ移送用PC
測定用のPCから、USBメモリを用いてデータを取り出すときに、ウイルスに感染する危険性がある。この対策として測定用Windowsと通信用Linuxで外につながっていないネットワークを作ることにした。今日、通信用にするPCが届いたので、早速ネットワークを組んでみることにした。 PCのスペックはCore i3 550でメモリが2GとHDDが500Gである。ウイルス対策としては過大な性能な気もするが、そんなに高くなかったので良いだろう。これに、Debian Lennyのamd64をインストールした。少し古いインストールCDでインストールしようとしたら、CDROMがうまく認識されなかったので、netinst用を新たに焼いてインストールした。amd64だと、問題が生じるかも知れないと思っていたが、やはりxorgの部分で引っかかった。いろいろと試した結果、HorizSync, VertRefreshとModesを適切に設定したらうまくいった。amd64のxorgはまだ設定が素人向けではないようだ。 そして、ネットワークを固定IPにするために、ifdown eth0で一旦ネットワークを停止した後に、/etc/network/interfacesを編集してdhcpからstaticにして、ifup eth0でもう一度ネットワークを開始した。 最後がsambaの設定である。まずwindows側で共有を許可する。このやり方がversionによって、少し違っていたので苦しんだが、結局network wizardを使って、共有を許可するようにすると、簡単に共有ができるようになった。そして、linux側は、smbfsをインストールして、/etc/fstabにwindowsマシンの特定のフォルダーを自動でマウントするように書いておく。 これで、一応のセットアップが終わったが、CDRでデータを持ち運ぶ人も居るかもしれないので、CDRが焼けるようにbraseroでもaptitude install braseroでインストールしておいた方が良いだろう。FDDも誰か使う可能性があるかなと思って、マザーボードを見ると、FDD用のコネクタが無い。ついでにIDEも無くなっている。外には出ていなかったが、COMとprinterポートのピンはあったのは、少し安心感を誘う。もう、FDDも過去のものになりつつあるのだろう。FDDはUSBで外付けするか、今回は見送ることにしよう。

Read more...

実験中の簡単な計算

スクリプト言語を用いた計算
UNIXマシンを使って測定をしていたが、arctanを計算する必要が出てきた。手元に適切な計算機が無かったので、スクリプト言語を使って計算することにした。perl,ruby,pythonを調べると、予想通りrubyは無かった。perlとpythonで実行を試みたが、うまくいかなかった。しかたが無いので、別のマシンにloginしてrubyで実行した。

puts Math::atan(1.0/20)/3.141592*180
puts Math::atan2(1.0,20)/3.141592*180

折角なので、perlやpythonでどうやるのか復習してみた。perlではatanは無いようなので、atan2を使って次のようにする。

print atan2(1.0,20)/3.141592*180,"\n";

pythonでは、mathモジュールを組み込む必要があるようだ。

import math
print math.atan(1.0/20)/3.141592*180
print math.atan2(1.0,20)/3.141592*180

しかし、よく考えると、xcalcを使えば良かったということに気がついた。

Read more...

virus発見

二台のPCがvirusに感染
身の回りのPCのいずれかに、autorunを利用したvirusが居るようだとは思っていたが、ようやく発見した。研究室内では、測定用のPCの一台に感染していた。 測定用のWindows PCは、不用意にupdateすると、測定が動かなくなってしまう可能性があるし、networkからvirusを吸い込むことがあるので、networkから切り離して使用している。数年前までは、これでvirusに感染することはほとんど無かったのだろうが、近年はUSBメモリを介してデータを移動するので、MAL_OTORUNには感染しやすい情況にあった。 今回感染したvirusは、それほど悪質なものではなかったので、safe modeから立ち上げて、virus本体を消去して、レジストリも適宜消したら、除去が終了した。 しかし、今後も似たようなvirusで、さらに悪質なものが感染する可能性もあるので、USBメモリを使ったデータの移動をどうするか考える必要があるだろう。

Read more...

ipod nanoを分解

ipod nanoの液晶
知り合いから壊れたipod nano(第二世代)をもらったので、分解してみた。コネクタの部分から徐々に爪を外していったら無事に開いた。液晶部分とスイッチ部分へはコネクタを介してリボンケーブルでつながっている。そのコネクタの爪を立てると、ケーブルははずれて、粘着テープで固定されている部分を外すと、うまく分解できた。 部品を眺めてみて使えそうなものとしては、フラッシュと液晶に目が止まった。フラッシュの石は何かのときに使えるかもしれないが、はがすのは大変そうだ。一方、液晶はうまく外せると、いろいろと楽しそうだ。しかし、世の中そんなに甘くはなかった。液晶ユニットは粘着テープで固定されているのだが、前面のガラスが外れて壊れてしまった。 液晶は24pinのコネクタにつながっており、信号線の数が少ないので、どのように制御しているのだろう。バックライトは横からLEDで光を出して、それを適宜拡散させていた。陰極管を使わなくてよいので、マイコンなどで使うのにはうってつけに思われるのだが、壊してしまったのでは諦めるしかない。 修理用の部品としては、液晶だけが売られているようだが、数千円するようなので、少し高価である。ipodの原価は四千円ぐらいという噂もあるので、液晶の原価は千円もしないのだろう。いつか安価で入手できたら、制御を試みてみよう。

Read more...

CDROM boot ubuntu

ubuntuのsamba
立ち上がらなくなったLinuxからdataを吸い出すために、knoppixで立ち上げようとしたが、なぜか途中で止まってしまう。CDが壊れたのかなと思って、次はubuntuを試してみることにした。ubuntuのinstall diskを使うと、installしないで使ってみることができる。こっちは無事に立ち上がった。 さて、問題はHDDの中身をどうやって取り出すかだ。HDDは物理的には壊れていないようで、データ領域は問題無く読める。次は、それを別のPCに移すために、sambaで共有する。しかし、ubuntuのsambaの使い方はいまいちよく理解できていない。GUIで共有することはできたようだが、CDROM bootなのでパスワードがどうなっているのか分からない。ユーザー名はubuntuになっているようなので、いろいろと試したが、うまくいかない。 仕方がないのでターミナルから行うことにした。smbpasswd -a ubuntuとしてsambaにユーザーを登録する。そして、sambaを再起動する。しかし、ubuntu 10.04はこれまでとはやり方が違うようだ。これまでは、sudo /etc/init.d/samba restartとしていたが、sudo service smbd restartとする。しかし、これでもうまく共有ができない。最終的には、/etc/samba/smb.confの設定がhome directoryを共有するようになっていたので、その部分のコメントアウトをはずすと、やっと共有ができた。defaultの設定がdebianとは違っているようだ。 無事、データを取り出すことができたので、時間ができたときに再インストールしよう。

Read more...

磁気センサーの改良

C言語の整数
AVRを使った磁気センサーのプログラムをいろいろと改良していたのだが、ときどき変な挙動をする。この原因を調べていたが、いくつか原因があったが、絶対値を計算するときにうまくいっていなかったのが、一番大きな原因だった。例えば、絶対値を求めるには次のような関数を書いたとする。

char abs(char v){
  if(v<0){v=-v;}
  return v;
}

しばらく機械語から遠ざかっていたので、気がつくのが遅れたが、これではうまくいかない場合がある。charでは、-128から127までの整数を表現することができる。そして、マイナスをつけるときには、0x100-vという計算がされる。-128は0b10000000と表現されるが、これにマイナスをつけると、0b10000000となり、128ではなく-128となってしまう。つまり、-128以外はうまく働くが、-128だけはダメなのだ。まあ、少しずつCを思い出していこう。

Read more...

液晶の活用

ワンチップ磁気センサー この間、デジットで買ったOPTREXのPWB842Bという液晶をようやく動かすことができた。いろいろとバグがあって発見に手間取ってしまった。まずwaitをかなり入れないとuPD7225がうまく応答しない。ICの説明書は一応読んだが、数マイクロ秒待てば良いような感じだったと思うが、100マイクロ秒ぐらいのwaitをいろいろなところに入れた。次に発見に手間取ったのが、i++のようなつもりで、i>>1としていたが、当然のことながらi>>=1としなければいけなかった。 さて、この液晶を何に使うかを考えていたのだが、磁気センサーを作ることにした。ホール素子の電圧をattiny261のADコンバーターを使って読んで、さらに液晶と通信して表示すれば、ワンチップの磁気センサーができあがるはずである。というわけで、プログラムを書いてみた。そのままだと精度が出ないようだったので、256回測定してその平均を取ったが、数値が安定して良い感じになった。磁場の絶対値に関しては、換算がまだ間違っているかも知れないが、1-1000ガウスぐらいは測定できるようになった。100以上では増幅をしないようにプログラムすれば、3Tぐらいまでは測れるようになつはずだろうが、面倒なので組み込んでいない。本当は、超伝導磁石の漏れ磁場を測定したかったのだが、どうやら感度の問題で難しいようだ。 #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 1000000 /* 1MHz */ #include <util/delay.h> #include <avr/pgmspace.h> /* lcd controller for OPTREX PWB842B */ /* 7seg 10digit */ // pin connection // 1 /RESET // 2 /SCK // 3 SI // 4 /BUSY // 5 C,/D // 6 /CS // 7 Vdd 5V // 8 Vss GND #define LCD_PORT PORTB #define LCD_PIN PINB #define LCD_DDR DDRB #define LCD_RESET 6 #define LCD_SCK 5 #define LCD_SI 4 #define LCD_BUSY 3 #define LCD_CD 2 #define LCD_CS 1 #define setbit(PORT,BIT) PORT|=_BV(BIT) #define clearbit(PORT,BIT) PORT&=~_BV(BIT) #define checkbit(PORT,BIT) (PORT&_BV(BIT)) #define SIZE_BUF 10 #define SIZE_CHAR 10 volatile uint8_t buf[SIZE_BUF]; // data to send LCD static volatile uint8_t chars[SIZE_CHAR]; // charactor data static volatile int32_t ave=0; static volatile uint16_t cnt=0; #define SIZE_AVE 256 #define ZERO_ADJ 6 const prog_uint8_t number[0x40]={ // 76543210 0b000000000, // 0x20 0b0, //!
Read more...

linux死亡

計測用のPCの不調
Linuxのwineをいじっていて、なんだか挙動がおかしい。初めはwineとの相性の問題かと思っていたが、ファイルシステムが変な気がしたので、再起動した。すると、起動できない。grubとかは動いているのだが、fsckが起動して、途中で沢山エラーが出る。おそらく、HDDの一部がクラッシュしたらしい。まだ、多少は必要なデータが入っているので、後でknoppixでCDROMブートして、取り出せるか試してみよう。 これまでに、Linuxで不調になったことがあるが、その大部分がHDDの不調によるものだった気がする。HDDが壊れたのでは仕方がない。

Read more...