2015-8-15[土] WinCE機で NetBSD6.5

MIPS系(x86系以外)CPUでの linux/unix環境ほしくて 中古でWinCE 機の Movile Gear II (MC-R730 と sigmarion初代)を入手してのを、やっとこさOS入れてみた。MC-R730 は CF と PCMCIA スロットあり、sigmarion は CF 一つなので基本的に MC-R730 を対象。

ググってみると WinCE 機の場合 linuxはかなり古いモノしかなさそうで、ただし NetBSD は今でも一応サポートされているようなので、これをお試し。

ググって見つかる各種サイトを参考に... 本家サイトでは

今となってはかなりメモリ少ないし(32MB)、GUIはハナッから あきらめ(そもそもインストーラで X 関係は None 扱いになってた)。

正直、linux以上に 知らないosなんで苦労多そう…てか躓きまくってる。WinCE側の事情がよくわかってないせいもあるけれど。


WinCE機では、WinCE環境で アプリ hpcboot.exe (かpbsdboot.exe) を実行し、そこから WinCEのRAM状態ぶっ壊して NetBSD を boot するようになっている。 (元dosモバ・ユーザー的には覚えのある手順)

WinCE環境をぶっ壊すので起動のたびにWinCE初期セッティングを要求される… が、公式をみれば SHIFT+Powerで初期セッティング飛ばせるとのことで そんなにひどくはなかった(多少煩わしいけれど)。

※ SHIFT+Powerてより 初期設定開始前からSHIFTが押されてないと駄目な感じ

また、すべての機種ではないけれど、CFから自動実行する仕組みがある場合もあるようで、運がよければ手間は省けるよう... だが、このへんは、ヒントにある方法で設定を幾つか試しても自動起動ならず...うまくいってません (公式の 対応機種表の boot の欄で *3 ついてるヤツが use hpcboot.exe となってるので、逆に他のYになってるのは自動起動可能なのかなと思ったのだけど…そうではないのか…)

iso ダウンロード

7.0はrc2とかrc3のようなので とりあえず 6.1.5 を試す。

ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-6.1.5/iso/

より取ってくるWinCE機用のisoファイルは、netbsd-?.?.?-hpc???.iso なヤツ。
WinCE機は ハンドヘルド・パーソナル・コンピュータってことで hpc が略称らしく、それに cpuアーキテクチャ名(arm,sh,mips)が付く

Mips機なので NetBSD-6.1.5-hpcmips.iso を取ってくる.

インストーラでインストール

配布されている iso イメージは、他機種と共通だったり移植当初の状況もあってか、CD(SCSI)から ディスク(CF)へのinstallを想定されている感じ。CDでなくても、2ドライブ構成が前提のよう。

ただWinCE機の場合は Boot セクタ不要(利用できず)で逆に DOS(FAT)パーティション必須なので、予めCF上に DOS(FAT)パーティションを切っておき、そこに install 元イメージを配置すれば 1ドライブ構成でも install できそう... てか出来た。

※ MC-R730 は2ドライブなので当初それでインストールしてたのだけど、手持ちのCF PCMCIAアダプタのせいか PCMCIA 側が不調でデカいtgzの展開でエラー多発だったので、1ドライブ・インストールに切り替えた

Windows機で作業する場合、win標準の"ディスクの管理"では CF(フラッシュメモリ)に対しパーティションを切れないので

  1. リムーバブルメディアにパーティションを切れるサードパーティ製のツールを使う
  2. Linux機があれば そちらの環境で gparted か何かでパーティションをきる
  3. NetBSD インストーラを用いて、初回はパーティションを切るためだけに使い、2回目に本体のインストールを行う

いづれかの方法を取る必要がある。

ここでは 3番目の方法でパーティションをきってみる。

なお今回 16GBのCFを用い、 MSDOS(FAT)領域 1GB、NetBSD 残り全部、のように割り当ててる。

※mc-r730 基準で書いたけど、結局不安定で実際は sigmarion でほぼinstall, lan関係からをmc-r730で作業した... というふうにインストールしたCFは、MIPS で kern-GENERIC 使うなら他の機種でも動く模様。WinCE側の hpcboot(pbsdboot)で適切に機種を設定する必要はあるけれど、netBsd環境自体に機種固有の設定は(あまり)なさげにみえる。といっても MC-R730 と Sigmarion初代 というどちらも Mobile Gear II な機種でしか試してないので他は未確認。

パーティション分けのためのインストーラ実行

(他の方法でパーティション分済ならこの作業は不要)

Win機で install 先 CF (16GB) を FAT フォーマット、unetbootin でダンロードした isoイメージ書込む。

※ isoイメージ書込めるならツールはなんなり。Win8 以降なら 標準でisoイメージ・マウントしてファイルとりだせるので初回パーティション切だけならこの方法で installationフォルダをCFにコピーするのも可。ただし、マウントしてファイル取り出すとファイル名が 大文字化されてしまうようで、本番のinstallでは不都合(ファイル見つからないエラー)なため、なんらかのiso書込ツールは必要。

WinCE機にそのCFを挿して、
ハンドヘルドPC アイコンを開けて
"メモリ カード 2" (1ドライブ機だと "メモリ カード") を開けて
"installation" フォルダ開けて
hpcboot.exe を実行。

入力欄にインストーラのディレクトリとファイル名を設定。

ディレクトリは

  • \メモリ カード2\installation\
    最後の \ は必須(ないとファイル見つからない).
  • ファイル名は
    netbsd.gz (デフォルトまま)
  • 機種名として
    NEC MC-R730 選択(今使ってるWinCE機の名前)

とりあえず他は変更せず、boot ボタンを押す。
プログレスバーが伸びていって途中で

Data in memory well be lost.Are you sure?
オンメモリなWinCE環境ぶっ壊すぞと聞かれるので Yes

No symbol and/or string table in binary.(no fatal)
気にせずOK

Push YES to boot.
"はい(Y)" 選んで コンソールなboot画面に突入。

テキストなメニューが出るので、

Installation messages in English を選択.(英語以上に他の言語わからんので)

install NetBSD to hard disk を選択.

minimam install を選択.(どうせ途中抜けなのでどれでもいいはず)

※ここで exit して sh に降りて fdisk でパーティション切るほうが実は早い...が自信なかったので そのまま続行.

hdd なパラメータ2つ(63,255)聞かれるけど、Enter 2回押してデフォルトですます。

MBR ・・・を選択。
WinCE機はDOSパーティション必須のはずだけど、このへん、WinCE機用にデフォルト設定が用意されてるようでないので(PC用と共通動作?)、 自分でDOSパーティションの指定をする。

2ドライブ構成だと、DOSパーティションは hpcboot.exe(pbsdboot.exe)を置くための少量でいいけれど、今回は install元cdイメージを書き込めるサイズは必要だし、ファイルやりとりに使うかもで、16GBあるからざっくり1GBほどを設定。

a: start 1MB: size 1024MB MSDOS
b: start 1025MB: size 残り全部 NetBSD
c: unused
d: unused

NetBSD のパーティションは設定しないとインストール継続できないのでそれも指定。
(この段階で、セクタ単位による DOS側の開始位置&サイズを控えても吉)。
x: 行でenterして次へ。

今回はパーティション分だけなんで、b: のデフォルト選び、その次も x:のデフォルト選んで

Please enter aname for your NetBSD disk[CF Card ]:
あとで付け直すことにして、ここではデフォルトのままenter.

yes or no で yes を選ぶと、パーティション分け&フォーマット開始。数回 continue待ちキー入力あり。

※ 正直、この段階での NetBSD側フォーマットは無駄だけど...自力fdisk回避したツケなんであきらめ。

インストール元の指定のメニューが出てきたら、ここで初回は終了、WinCE機電源off&CF抜く.

Win機にCFを指す。
一見正常そうにフォルダ開くかもしれないけれど、実際はぶっ壊れているので とっとと(quick)フォーマット、1GBになってたらOK。
(ええ試して駄目でした. DOSパーティションを縮小させるような器用なことはやってくれてません。ちなみに、NetBSD側で start位置をデフォルト以外のサイズ(2MBとか)にしていると開始位置も壊れてるので とっととフォーマットを即される状態)

本番インストール

CFのパーティション分が出来たら、本番インストール。

CFのフォーマット済のMSDOS領域に isoイメージを unetbootinで書き込み。

※ ツールは何でもいいけど、Win8のisoマウント経由だとファイル名が大文字化されてしまって不都合あるので、そのへんが大丈夫なツールを使う。

WinCE機にそのCFを挿して、
ハンドヘルドPC アイコンを開けて
"メモリ カード 2" を開けて
"installation" フォルダ開けて
hpcboot.exe を実行。
※ 1ドライブの Sigmarion だと 2なしの "メモリ カード"。以後も同様に機種によって読み替えて。

入力欄にインストーラのディレクトリとファイル名を設定。

ディレクトリは

  • \メモリ カード2\installation\
    最後の \ は必須. ないとファイル見つからない.
  • ファイル名は
    netbsd.gz (デフォルトまま)
  • 機種名として
    NEC MC-R730 選択(今使ってるWinCE機の名前)

とりあえず他は変更せず、boot ボタンを押す。
プログレスバーが伸びていって途中で

Data in memory well be lost.Are you sure?
オンメモリなWinCE環境ぶっ壊すぞと聞かれるので Yes
(Optionで "Safety Message" をoffにすればでなくなる)

No symbol and/or string table in binary.(no fatal)
気にせずOK
(Optionで "Safety Message" をoffにすればでなくなる)

Push YES to boot.
"はい(Y)" 選んで コンソールなboot画面に突入。 (Optionで "Pause Before Boot" をoffにすればでなくなる)

テキストなメニューが出るので、

Installation messages in English を選択.(英語以上に他の言語わからんので)

install NetBSD to hard disk を選択.

yes or no は yes を選択.

対象CFに間違いなけりゃ Hit enter to continue でキー入力.

minimam install か custom install を選択. custom の時は必要な物をマーク

※どうも うちのMC-R730はが不調なのかうまく展開できないことが多く... sigmarion だとそこそこ正常に展開できるけど comp.tgzなんかだとエラーでることもあるので、この段階では minimam install してひと通りすんだ後、後で手動で tgz 展開する手を使った。

hdd なパラメータ2つ(sectors[63],heads[255])聞かれるけど、Enter 2回押してデフォルトですます。

Edit the MBR partition table を選択。

a: start 1MB: size 1024MB MSDOS
b: start 1025MB: size 残り全部 NetBSD
c: unused
d: unused

b: の NetBSD を選んで active と install を Yes にする。

e:でセクター表示に切り替えて、MSDOS領域の開始セクタとサイズをメモする。( 開始2048セクタ 、サイズ 2097152セクタ)。

x: 欄でenterして次へ。

a: Set size of NetBSD partitions
b: Use existing partition sizes

は b (かaでデフォルトのままか、わかってる人なら都合で変更で)

で、その次の一覧では

a: ... FFSv1
b: ... swap
c: ... NetBSD partition
d: ... Whole disk
e: 空欄

となってる. NetBSD側でFAT領域アクセス出来るように e: の空欄を

MSDOS
start 2048セクタ    (4MB)
size  2097152セクタ (1023MB)

な感じに 先のMSDOSパーティション設定と同じセクタ数を記入する.
シリンダ境界が考慮されてるのかMB単位で指定するとfdisk側と同じ値にならなかったりするので注意... ええ、やってしまった。後でsh上で fdisk でサイズ表示確認して、その値を disklabel -e /dev/wd0 で編集して修正も可(viは苦手だ)

Please enter aname for your NetBSD disk[CF Card ]: MyNetBSD
ディスクに名前をつける。自分のだとわかるようにつけたほうがいいらしいけど、ここでは適当に MyNetBSD.

これで準備okなら yes or no 確認で yes 後、partition きったり format したりが行われる。途中 Hit enter to continue で確認待ちになるので 入力して継続。

Install from メニュー

Install from メニューに来たら、
 f: Unmounted fs
を選択。

Device: wd0e
File system   msdos
Base directory  (空欄)
Binary set directory  /binary/sets
Source set directory  /source/sets (元のまま)

に書き換える。(デフォルト設定は全然 WinCE実機向けじゃないわな)

※ ちなみにインストール元 pcmcia、インストール先 CF の2ドライブ構成でインストール試した時は、Device として wd1e を指定した。

※ 正直 Device 名がなかなかわからず困った。NetBSD(てかunix由来?)のお作法しらないので...インストール中のメッセージ等から wd とか rwd とかなんだろうけど(wd?とrwd?の関係がよくわかんね)、wd0,wd1がlinuxでのhda(sda),hdb(sdb),wd0aがhda1みたいだけど末のa,bが連番じゃなさそう... FreeBSDのだけどこのへんみると a,b,はルールがあるようで...

x:で続けると tgzファイルの展開や MAKEDEV all が行われ途中continue待ち入力有)、うまくいくと 次の Configure Menu が出る。

※ ここでエラーで Configure Menu まで辿りつけない場合は 手動でのファイルinstall を試みる(後述)

Install from メニューから先に進めない時の手動インストール

Install from メニューから先に進めない場合は、Exit Install System で抜けて sh に降りて手動で tgz 展開をしてみることにする. (うまく行ってたらここ不要)

こちら(hpcmipsみたいな環境でインストーラを使わずにNetBSDをインストールする)を大いに参考... てか 最初からこれに従ったほうがよいかも。

マウント&カレント変更

mount -t ffs /dev/wd0a /targetroot
mount -t msdos /dev/wd0e /mnt2
cd /targetroot

この段階のshは 人の入力考慮してくれてないので 上下キーによる履歴はおろか左右キーによるカーソル移動も出来ないので慎重に入力.

tgz 展開

tar xzfp /mnt2/binary/sets/kern-GENERIC.tgz
tar xzfp /mnt2/binary/sets/modules.tgz
tar xzfp /mnt2/binary/sets/base.tgz
tar xzfp /mnt2/binary/sets/etc.tgz
tar xzfp /mnt2/binary/sets/misc.tgz
tar xzfp /mnt2/binary/sets/text.tgz
tar xzfp /mnt2/binary/sets/man.tgz
tar xzfp /mnt2/binary/sets/comp.tgz

ログ出力無のほうがよいという話もありそ?だけど どちらでもエラーなる時は頻繁になった。一つのtar実行でファイル出力が終了するまで(hddアクセスランプが無明になるまで) 次のtarを実行しないほうがよさげ?なのかな。あと tar する都度 exit してメニュー戻って すぐ終了(Exit Install System)で sh に戻って、をしてたらマシな気がする...が exitした時点でおかしくなることもあり日によって状況違うので単にハード不安定が濃厚.

※ segmentation fault 等で進行不能なって再起動した場合は fsck -y /dev/wd0a でディスクチェック。


tgz 展開できたら

cd /targetroot/dev
./MAKEDEV all

する.

(この段階で fstab, rc.conf も編集しとくのも手かも)

umount /targetroot
umount /mnt2
exit

してインストーラのメニューに戻り、Configure Menu を選択。

Configure Menu

Configure Menu では

  • a: は network 関係.
    • PCMCIAのLanカードを挿す。己が使ったのは 古い10baseTな ne2000 互換のモノ。
    • 認識ログが出終わったところで、a:を選択
    • [ne0] デフォルトのまま
    • [manual] まま
    • DHCP  用途・環境次第。今回のは DHCP noで。
    • Domain  環境次第。わかんなかったらとりあえず空欄。
    • host name  環境に合わせて名付ける。(maba2 とか)
    • IPv4 number  環境に合わせて決める( 192.168.0.100 とか )
    • IPv4 Netmask  環境次第(0xffffff00 デフォルトまま)
    • IPv4 gateway  環境次第(192.168.0.1 とか)
    • IPv4 name server  環境次第(192.168.0.1 とか)
    • IPv6  環境次第(no で)
    • OKでよけりゃ Yes
    • continue待ちは入力して
    • /etc への設定は yesで
  • b: の timezone関係は asia 選んで asia/Tokyo 選んで enter 押して。
  • c: の シェルは好みで.( /bin/sh )
  • d: で root パスワードを設定。
  • g: で sshd を有効にするなら yes ... あとまわしするなら no.
  • ntpdに時間合わせ任せるなら h: で ntpd 有効(yes)にして、i: で boot 時に ntpd 開始するよう yes に ...
    だけど起動時にそもそも lanカードさせてるか怪しいので NO で.
  • (他も必要に応じて設定した後) x: Finished configuring で終了.

戻ってきたメニューで 終了を選択して sh に降りる。

対象パーティションをマウントする

mount -t ffs /dev/wd0a /targetroot
mount -t msdos /dev/wd0e /mnt2

この段階のshは 人の入力考慮してくれてないのでタブキー補完や上下キーによる履歴はおろか左右キーによるカーソル移動も出来ないので慎重に入力.

カレント移動して

cd /targetroot/etc

fstab を編集. (vi しかないのか...)
msdos(/wd0e)の行頭の#を外して有効にし、
CDドライブ(/cd0a)はないので 行頭に#を入れてコメントアウト.

rc.conf を編集.

rc_configured=YES

に変更して、

postfix=NO
sendmail=NO

追加.(このへんは こちら とか見よう見まね)

minimam install してて、他に入れたい tgz があれば このタイミングで展開.

tar xzfp /mnt2/binary/sets/misc.tgz
tar xzfp /mnt2/binary/sets/text.tgz
tar xzfp /mnt2/binary/sets/man.tgz
tar xzfp /mnt2/binary/sets/comp.tgz

等.
※展開中に segmentation fault 等で進行不能になって再起動した場合は
  fsck -y /dev/wd0a
でディスクチェック。

終わったら exit を実行し shから メニューに戻り、適当に電源offして WinCE再起動。

インストールしたての環境での設定

適当に電源終了して、WinCE再起動。
"メモリ カード2\instation\"の
  hpcboot.exe, pbsdboot.exe pbsdboot1.exe
を "メモリ カード2" 直下にコピー。

hpcboot.exe あるいは pbsdboot.exe を実行し、今度は ディレクトリ /, ファイル netbsd にして 自分の機種(NEC MC-R730)を選んで boot。

※本来は hpcboot.exe でいいはずなのだけど、うちのmc-r730では進行不能になった。PCMCIA側にCFさしてbootすると起動できたので、hcpbootでは "メモリ カード"を前提にしてるのかも。pbsdbootだと "メモリ カード2"でもちゃんとboot できたので MC-R730 ではこれを使った。

login: に来たら、root で入り、Configure Menu で設定した password を入力.

普段使うrootになれるユーザーを作成.

useradd -s /bin/sh -m -g users -G wheel ユーザ名
passwd ユーザ名
(新しいパスワードを入力)

まだまだ pkgsrc の install とか諸々していかないと駄目なんだろうけど...( pkgsrc の tar.gz 展開でsegmentation fault出まくりとかで)...くたびれたので一旦終了


mc-r730よりマシとはいえ やっぱり 不具合が出ないわけでもない sigmarion での作業時間を思うと、pc に NetBSD いれてそちらで CFにファイル展開とか極力 済ませてしまうのが無難かもしれない。 (ほんと こちらの言われるとおりにやってればこんな手間食わずにすんだかもしれない...)