2013-07
2013-06 FM3 RX62N SH2A PIC32MX
7月†
- LEDディマーを作ってみた。
- 最初は2SCのPower TrでLEDをドライブする予定だった。
- が、2SK2161が転がっていたので、FETでドライブしてみた。
- ゲート電圧をATmega88で5Vに上げると思いっきりONになるのだけれど
- 0Vに落としても、10秒ぐらい掛けて次第にOFFになるこのFETは何なの?
- 2本ともそうなるし。
- FETの基礎からやり直し。
- マウスの修理
- マウスどっかいった。
今月の予定†
- 秋月のキャラクタ液晶SC1602の積みパーツは消化(ATmega88でドライブ)したけれど、
- まだ、SG12232が残っている。どうしよう。
- ヒマなので、PIC32MXでVGAやるかも。
- 7月
- 今月の予定
- KMZ-80miniにインスパイアされて。
- LINUX ubuntu : : メル鯖の設定が良く分からないので、備忘録φ
- dovecot(鳩小屋)の設定
- muttの設定
- bsd-mailx もしくはheirloom-mailx
- HIDBoot.Xを内蔵RC発振で動かす。
- Android: Rootless 軽量Unix環境 KBOX2
- ubuntu Linux: Intel ICH-xxRによる、RAID1運用やってみた。
- 一エンジニアの見た核なし核抑止力
KMZ-80miniにインスパイアされて。†
- 電子ブロック工房さんのKMZ-80miniに触発 されて、
- 自分もPIC32MXで何か作ろうかと思案中。
どんなもの?
- MZ-80Kエミュはノスタルジーに浸ることはできても、なんかこう、未来の夢みたいなものに欠けている気がするんだ。
- それに、32kBのファームにどうがんばっても100kBを越えるプログラムは入らない。
- とかエラソーに言ってるけど、ほんとのところはMZ-80K用のバイナリーを全く持って無いんだ。
- じゃあ、いっそのこと、MZ-80KみたいなMIPSベースの32bitグリーンコンピュータを作ってみては面白いかな?
- とりあえずVGA OUTにキャラクタ文字(ASCII)を出してみる。
- 入力はPS/2 キーボード
- BIOS(BOOT ROM)は要るなぁ・・・。
- いまどきBASIC言語でもないだろうしmrubyは大きすぎて入らないし(Luaも)。そうすると自作BASICか、Cインタプリタもどき。(トラ技付録のcoldfireでそんなC言語があった。中本さんが制作された。)
- あるいはForth系言語なのか・・・。
- なぜスタンドアローンなマイコンを目指すのか。Raspberry Piでいいじゃないか。安いしHDMI OUTまで付いてるし。
- という問いに対しては、あれはLinuxでラッピングされていて、裸のマイコンじゃないとだけ言っておこう。
- まあ、どっちにしてもROM 32kBとRAM 8kBでやれることは、たかが知れている
LINUX ubuntu : : メル鯖の設定が良く分からないので、備忘録φ†
なんだかんだで混乱していたのでメモ。
1)MTA (メール転送エージェント) を選ぶ。
- sendmail , Postfix , qmail , Exim のいずれかから選ぶ。
- sendmailは設定ファイルがわかりずらく、性能にも問題があるので、普通は敬遠する。
- Postfixが一番良いと思うけれど、qmailは軽いし、debianではEximがデフォらしい。
- ここで注意その1: PostfixなどのMTAは SMTPプロトコル(郵便ポストの受信箱のようなもの)を受け付けて メールボックス、もしくはMaildir/ に配送してくれるけれど、 POP3やIMAPを喋れるわけではないことに注意!。
- つまり、Postfixだけインストールしてもメル鯖としては機能完結しない。
2)POP3,IMAPサーバーを立てる。
- ubuntuでは、dovecot(鳩小屋)-pop3dとdovecot-imapdがデフォルトで使われているので、これを入れる。
3)コンソールから使う mailコマンド
- 動作テストなどで使うmailコマンドは bsd-mailx だ。 /usr/bin/mail は /etc/alternatives/mail にシンボリックリンクされていて、その先は /usr/bin/bsd-mailx となっている。
- さすがにmailコマンドは原始的過ぎるので、muttのような対話型の(もちろんmailコマンドも対話型ではあるが)メールクライアントを入れておいたほうが便利だ。
4)procmailも入れておく。
- ローカルに届いたメールをさらに振り分けたり転送したりするのを各ユーザーのhomeディレクトリで制御したいならprocmailも有用だ。
とりあえずこれだけなんだけれど、いくつか落とし穴がある。
- Postfixの設定。これは難しくはないだろうけれど、受信したメールの配送先をmailboxではなくて、各ユーザーのMaildir/ 形式にしておくべきだ。
- main.cfに記述する。
home_mailbox=Maildir/
- 最後に/を書くとMaildir形式であることを指定できる。
- そして、各ユーザーごとに ~/Maildir/new , ~/Maildir/cur , ~/Maildir/tmp という受信boxディレクトリをパーミッション700で作成しておく。
・・・続く
dovecot(鳩小屋)の設定†
- /etc/dovecot/dovecot.conf の最後に以下の行を追加する。
mail_location = maildir:~/Maildir
- そして再起動
# service dovecot restart
muttの設定†
/.muttrc を新規に作成
set mbox_type="Maildir" set folder="~/Maildir" set mbox="~/Maildir" set spoolfile="~/Maildir"
bsd-mailx もしくはheirloom-mailx†
- Maildir化する手順は、結局最後まで分からなかった。
- mailコマンドによる送信のほうは問題ない。
- もっとも、コマンドラインからmailコマンドでメール読む人なんて、もう居ないと思う。muttで十分だ。
HIDBoot.Xを内蔵RC発振で動かす。†
もっと読む: PIC32MX
戯言†
- ZK-80miniはレトロなエミュなんだけど、
- ガチで、MIPS32(mips16)コードを打ち込んで実行できるTK-32のようなトレーニングキットに需要はあるだろうか?<どう考えても、そんなもんはMIPS32 コードオタクマニアしか使わねえ。遅延スロットあるし。
Android: Rootless 軽量Unix環境 KBOX2†
- http://kevinboone.net/kbox2.html
- kevin booneさんが作ったやつ。
- Rootを取らなくてもunix環境が得られる。
- 皆が良く使っているAndroid Terminal Emulatorのディレクトリにインストールされる。例えば
/data/data/jackpal.androidterm/kbox2/
- の下に、unixのユーザーランドが作られて、
/data/data/jackpal.androidterm/kbox2/bin/kbox_shell
- を実行すると、まるでそこにchrootしたようなshellが立ち上がり、busyboxの(というか標準的なLinuxの)各種コマンドを使えるようになる。
- AndroidのRoot化は一切不要。
- chrootしてるから、Androidのroot(/直下や /data/ や/mnt/sdcard)にアクセス出来ないかといえば、さにあらず。
- chroot済みのルート直下にAndroidのrootへのリンクがちゃんとある。(本物のchrootだと、♪そんなこと。♪出来ません♪)
- OneBoxという(軽ワゴンアイコンの)インストーラーがMarketで入手できる。アイコンから連想するようなアプリを想像すると、つい見落としてしまいがち。
使い勝手は?†
- エディタはviしかない。
- sshは無いがtelnetはある。
- telnetでよそのLinuxにおじゃましたときの環境変数TERM=networkになっていて、手動でLinuxとかに書き換えないとそこでエディタが使えないとかそういうことを除けばおおむね快適。
- つまり、Android端末を単なるtelnet端末として使う用途にはこれで丁度良い。(自分は英語キーボードをタブレットに繋いでいるので、ネットブック感覚でLinuxテキスト端末として使っている)
- sshは使えないが、手近(LAN内)にLinuxサーバーを飼っているのであれば、そちらにtelnetdを入れておいて、そっからsshでどこへでも行ける。
- connectBotを使えばssh端末になれるのだが、(だが)外付けキーボードでFnキーやらCtrlキーが使えないsshは全く使い勝手が悪い。(これ、connectBotをうまく使いこなせてないのか?)connectBotではなくて、コマンドラインのsshコマンドが欲しい。
- ところで、画面内キーボードでコマンドラインを使おうなどと思わないほうが良い。無理ゲー
- そうでなくてもAndroidは画面狭いのに。
動作原理は?†
- そもそもRoot化していないので、本物のchrootは使えない。
- でもchrootしないと、Androidでは/etcや/libや/binを用意できない。
- libfakechrootというのがあって、仕組みはCygwinのそれと似ているそうだ。
利点は?†
- とにかく軽いこと。ユーザーランド(というかBusybox)のデータ容量はほんの数MBしか、ない。
- 最小構成のubuntuだと、軽く数百MB消費する。
- えせchrootしないBusybox環境だと、各種Linuxコマンドの移植が大変だけど、こちらは普通のLinuxのディレクトリ構成が再現出来るので、Root(特権操作)問題を除けば移植しやすい。
- ちなみに、Root化したAndroidに本物のubuntu Linuxを入れて運用する方法は、このへんにある。
ubuntu Linux: Intel ICH-xxRによる、RAID1運用やってみた。†
あまりに状況が酷いので、愚痴を書く。
はっきり言ってlinuxのdmraid*1は使いたくない代物。それから、純粋software RAIDはまだ試していない。
基本手順†
- 同容量のHDDを2台用意する。
- チップセットがICH-xxR のように、後ろにRが付いたマザーを選ぶ。
- SATAの設定をAHCIではなく「RAID」に設定する。
- Intel RAID BIOSの設定に入る場合は電源ON後にCtrl + 「I」 を押す。
- RAID BIOSに来たら、RAIDにしたいディスクペアを指定して、RAID1を選択。容量を指定する。
文句その1:RAIDパーティションは2TB未満でしか切れない。†
- 2TB以上のRAIDパーティションを作ると、BIOSでは容量は正しいのに、Linux内ではmodulo(2TB)のクソ容量になってしまう。RAIDパーティションを複数作ることで3TBや4TBのディスクを使用する。
ubuntu13.04のインストール時にgrubが書き込めず、起動しない件。†
- これは、LinuxインストーラーからRAIDパーティションを選択したときのデバイス名を覚えておき、grub導入時に
/dev/mapper
- と出たら、その後ろに/isw_Xxxxxx_Volume0 (Xxxxxxは自動生成されたパーティション名)と手動入力するしかない。
- TABキーでは補完してくれない。メモしわすれたら [ALT]+[2]とかで別コンソールを開いて自分で調べる。
- 尚、MBRではなくて普通GPTを選ぶだろうから、GPTの先頭にEFI BOOTのパーティション(0xEF00)を切るのを忘れないように(手動で切る人)
- インストールが終わったら、普通にubuntuが立ち上がる。
- ここまではOK。
RAID1実験環境†
- RAID1の再構築にはかなり時間が掛かるため、いろいろ実験したいなら、古い(小容量の)SATA HDDを3台用意する。
- 起動用の1台はRAIDグループに入れずに、単体でLinuxをインストール。
- パッケージ dmraidをapt-getで入れておく。
- RAID実験用の2台はsdb,sdc位置に挿して、RAID1ボリュームをBIOSで切る。このときのボリュームサイズは極力小さくする。(1GBとか)
- RAID1の片方をOfflineにして起動したり、リペアディスクと差し替えてどうなるか試したりいろいろやってみる。
自分で納得がいくまで、試したほうが良い。
問題点†
- RAID1のSATAの片方がたまたまBIOS起動に間に合わずOfflineとかになってしまうとdegrade状態になる。(ほんとうに死んだ場合も同じ)
- (注:degrade状態で運用しても、残り1台が壊れない限りは問題は無い。その間にちゃんとバックアップを取ればよいのだ。普通に1台で運用しているのと基本変わらない。ただ相棒が死んだならもう片方がそろそろいかれる時期というのは、ある。)
問題はここから。
- degradeになったあと、再度両方Onlineにして起動する。
- すると、BIOSのRAIDステータスが、NormalからRebuildに変わる。
- ubuntuが起動すると、どうやら自動で、ミラー処理が始まる
# dmsetup status
- とやると、ミラーの途中経過が表示され、100%に達すると、ディスクのアクセスランプが消える。
ここまでは、まるで問題ないように見える。ただし、ミラー中は起動も遅いし、OSのレスポンスは極端に悪い。
- しかし、おかしいのは、ミラー終了後に
# dmraid -s
- やBIOSで見たステータスがok(normal)に戻らないのだ
- 2TBとかだと半日くらい掛かるかも。(?)
- Linuxを一度シャットダウンして再起動した場合もBIOSはRebuildのままだ。
- そして、すべては振り出しに戻る。延々とミラーを続ける。
- 絶対バグってるだろ!
- 絶対バグってるだろ!
- この現象は、片方を取り外してdegradeにしたのち、新品HDDに交換してBIOSでリペア指定した場合でも同様に発生する。
修復:危険な綱渡り。†
- 一旦degradeになってしまった場合、
# dmraid --rebuild isw_Xxxxxx_Volume0
- すると、先頭からミラー処理が始まり、ミラー終了すると
# dmraid -s
- のステータスがok になることがある。(成功例)
おめでとう。これで何の問題も無い
ところが、
# dmraid --rebuild isw_Xxxxxx_Volume0
- とやってエラーが出てしまった場合、RAIDの片方はOffline Diskになり、もう片方はUnknownというBIOS表示 になってしまうことがある。(失敗例)
- そうすると、せっかくRAID1なのに、すべてを失う。データがゼロだ。
- 再現確率は、実は成功するほうが少ない。
- dmraid。絶対バグってるだろ!
- というわけで、ICH-xxRのFakeRAIDは怖くて使えない状態なのだ。
誰か、解決策、求む。
参考URL†
dmraid fails to handle status set by ICH10R Bios
dmraid on ICH10R controllers (Ubuntu bug 372170 call for testing)
TECHIE How to rebuild Intel Raid (isw) on Linux
危険操作†
- RAID BIOSでNon RaidなHDDペアを選んで Create RAIDボリュームをやると、その2台のパーティション情報は完全に初期化される。(当然その2台のディスク内容は消滅する)
- なので、この操作はRAID HDD初期化時以外には絶対やってはいけない。
- RAIDが片方なくなってdegradeになり、新品リペアディスクと交換したときにCtrl+Iで起動すると、BIOSがその新品ディスクと組んでRebuildするかどうか聞いてくる。そこでリペアディスクを選べばdefradeからRebuildにステータスが変わる。
一エンジニアの見た核なし核抑止力†
論文と随想集
憲法学者竹田恒泰氏の指摘の通り「原子炉は自国に向けた核兵器」
- これと直接の関係は無いが、現在進行形で現政権は原発を動かそうとしている。
- しかし、動かしたら動かしたで、廃棄燃料貯蔵場所が無いのだ。
- それ以上に1F由来の廃棄物が大量生成され続けていて、これも貯蔵場所が無いのだ。
はっきり言って詰んでいる。動かそうが動かすまいが詰んでいる。
動かさないほうが、タイムリミットをすこしだけ長く出来ることくらい。
*1 Intel(R) Rapid Storage Technology。BIOSで実現しているRAID。いわゆるFakeRAID