メッセージ欄

分類 【NetBSD】 で検索

一覧で表示する

PC110でNetBSD(その2)
2007/01/26(金) 27:16 NetBSD はてブ情報 はてブに登録 はてブ数

PC110はCFから起動できるらしいので余っていた256MbytesのCFを使うことにしました。

手近にはMacBookしかないのでVMware FusionにNetBSD/i386を入れてUSB-CFアダプタを使って色々やることにしました。

ちなみにVMware FusionでVMを作る時にOtherを選ぶとUSBが認識されず、Windows (WindowsXP) を選択しないとUSBが使えないのですね。Otherで作ったVMでUSBが使えず焦りました。

CFにNetBSDを入れる、といってもいつものパターンです。
  1. fdiskでNetBSDパーティションを作る
  2. disklabelを書く
  3. newfsする
  4. installbootする
  5. kernel, base.tgz, etc.tgzを展開する
  6. ./MAKEDEV allする
これでsingle user modeぐらいは動くようになりました。わーい。

さて、ここで気づいたのですが、なぜかwd0とwd1が認識され、wd1がCFのようです。

dmesgによるとwd0はSanDisk SDP3B-4という名前のようです。そういえば、4Mbytesのフラッシュメモリが搭載されてるのでしたね。
wd0 at atabus0 drive 0: <SanDisk SDP3B-4>
wd0: drive supports 1-sector PIO transfers, LBA addressing
wd0: 3936 KB, 123 cyl, 2 head, 32 sec, 512 bytes/sect x 7872 sectors
ということは、fstabはwd1で書かなきゃってことですね。

つうことで、echoでfstabを書いて、edで/etc/rc.confのrc_configuredをYESにしてmulti user modeであります。

IBM PC110でNetBSD(その1)
2007/01/26(金) 27:10 NetBSD はてブ情報 はてブに登録 はてブ数

ある方から譲っていただいたIBM PC110 (いわゆるウルトラマンPC) をずいぶん寝かしていたので一念発起 (というほどでもないか) してNetBSDを入れることにしました。

とても古い計算機ですが、今見てもなんというか存在感のある計算機です。ずいぶん昔にT-ZONEのショウウィンドウの前で欲しいなぁ欲しいなぁ、あれとあれを売り飛ばして貯金をはたけば買えるなぁ、でも他の計算機なくなっちゃうなぁ無理だなぁ、などと自問自答していたのを思い出します。

さてインストールのその前に、何はなくても小さなkernelが必要です。GENERIC_TINYをベースに削ったconfigでkernelを作りました。

ちなみに2007-01-15の4.99.8で、kernelのファイルサイズは約1.25Mbytesでした。GENERICよりも相当小さいですが、そうはいっても1Mbytesを超えるのですね。

使用したconfigはこんな感じです。
include "arch/i386/conf/std.i386"
makeoptions     COPTS="-Os"
maxusers        8               # estimated number of users
options         I486_CPU
options         MATH_EMULATE    # floating point emulation
options         PIC_DELAY
options         NOREDZONE
options         INSECURE        # disable kernel security levels - X needs this
options         RTC_OFFSET=0    # hardware clock is this many mins. west of GMT
options         NMBCLUSTERS=256
options         PIPE_SOCKETPAIR # smaller, but slower pipe(2)
options         COMPAT_BSDPTY   # /dev/[pt]ty?? ptys.
file-system     FFS             # UFS
file-system     KERNFS          # /kern
options         FFS_NO_SNAPSHOT # No FF snapshot support
options         INET            # IP + ICMP + TCP + UDP
config          netbsd  root on ? type ?
options         WSEMUL_VT100            # VT100 / VT220 emulation
options         WS_KERNEL_FG=WSCOL_GREEN
options         WSDISPLAY_COMPAT_PCVT           # emulate some ioctls
options         WSDISPLAY_COMPAT_SYSCONS        # emulate some ioctls
options         WSDISPLAY_COMPAT_USL            # VT handling
options         WSDISPLAY_COMPAT_RAWKBD         # can get raw scancodes
options         PCDISPLAY_SOFTCURSOR
mainbus0 at root
cpu0 at mainbus0
isa0    at mainbus?
pcmcia* at pcic? controller ? socket ?
pcic0   at isa? port 0x3e0 iomem 0xd0000 iosiz 0x4000
pcic1   at isa? port 0x3e2 iomem 0xd4000 iosiz 0x4000
npx0    at isa? port 0xf0 irq 13        # x86 math coprocessor
pckbc0          at isa?                 # pc keyboard controller
pckbd*          at pckbc?               # PC keyboard
vga0            at isa?
pcdisplay0      at isa?                 # CGA, MDA, EGA, HGA
wsdisplay*      at vga? console ?
wsdisplay*      at pcdisplay? console ?
wskbd*          at pckbd? console ?
com*    at pcmcia? function ?           # Modems and serial cards
com0    at isa? port 0x3f8 irq 4        # Standard PC serial ports
com1    at isa? port 0x2f8 irq 3
com2    at isa? port 0x3e8 irq 5
lpt0    at isa? port 0x378 irq 7        # standard PC parallel ports
wdc*    at pcmcia? function ?
wdc0    at isa? port 0x1f0 irq 14       # ST506, ESDI, and IDE controllers
wdc1    at isa? port 0x170 irq 15
atabus* at ata?
wd*     at atabus? drive ?                      # the drives themselves
atapibus* at atapi?
sd*     at atapibus? drive ?            # ATAPI disk drives
ep*     at pcmcia? function ?           # 3Com 3c589 and 3c562 Ethernet
ne*     at pcmcia? function ?           # NE2000-compatible Ethernet
include "arch/i386/conf/GENERIC.local"
pseudo-device   fss             4       # file system snapshot device
pseudo-device   vnd                     # disk-like interface to files
pseudo-device   bpfilter                # Berkeley packet filter
pseudo-device   loop                    # network loopback
pseudo-device   tun                     # network tunneling over tty
pseudo-device   pty                     # pseudo-terminals
pseudo-device   rnd                     # /dev/random and in-kernel generator
pseudo-device   clockctl                # user control of clock subsystem

二台目のHDDもddが完了
2007/01/17(水) 26:56 NetBSD はてブ情報 はてブに登録 はてブ数

i386マシンを引っ張りだそうと考えていましたが、どうせ一日あたりはたいした作業ができないので、GLANTankでのんびりddしても大差ないという結論に達したのでGLANTankでddしました。
dd: /dev/rsd0c: short write on character device
dd: /dev/rsd0c: end of device
238476+0 records in
238475+1 records out
250059350016 bytes transferred in 44187.412 secs (5659063 bytes/sec)

という結果でした。

ddでディスク検査が一台終わりました
2007/01/16(火) 23:41 NetBSD はてブ情報 はてブに登録 はてブ数

やっと終わりましたよ。
dd: /dev/rsd0c: short write on character device
dd: /dev/rsd0c: end of device
238476+0 records in
238475+1 records out
250059350016 bytes transferred in 44268.624 secs (5648681 bytes/sec)
のべ12.5時間ですか。予定よりも少し早かったってことですね。ディスクの内周とか外周とかで速度が違うのかもしれません。そんなことないか。

ddでディスク検査のつづき
2007/01/15(月) 26:57 NetBSD はてブ情報 はてブに登録 はてブ数

サスペンドで接続が切れてた

朝起きたらMacBookがサスペンドしていて (あたりまえだけど)、嫌な予感とともに起こしてみたら案の定sshの接続が切れていました。

つまり、昨日のddは失敗したというわけ。

んで、dd if=/dev/zero of=/dev/sd0c bs=1mをするだけのshell scriptを書いて、バックグラウンドジョブで流して出かけました。

rawデバイスとblockデバイスの歴然とした違い

そんでもって、夜になっても終わらず。13時間ぐらい流したところでおかしいなぁとIRCでぼやくと、「sd0cじゃなくてrsd0cじゃないの?」というアドバイスを頂戴しました。

おー、rawデバイスとblockデバイスですね。newfsのときも教えてもらったのに応用の利かないやつです。

なんかUSBメモリだとスピードが一桁ちがうとのこと。

ということでddコマンドにcount=10をつけて10Mbytesだけ書く試験をやってみました。
glantank# dd if=/dev/zero of=/dev/sd0c bs=1m count=10
10+0 records in
10+0 records out
10485760 bytes transferred in 8.168 secs (1283761 bytes/sec)
glantank# dd if=/dev/zero of=/dev/rsd0c bs=1m count=10
10+0 records in
10+0 records out
10485760 bytes transferred in 1.893 secs (5539228 bytes/sec)
4.3倍ほど差が出ました。これは歴然とした差ですね。5Mbyes/secなので計算すると250Gbytesの場合、やっぱり14時間弱ほどかかりそうです。

ehciのumass接続なのでUSBとしてはがんばっているはずですが遅いですねぇ。結局のところPATAで接続しないと全然駄目だろうという話になりました。やれやれ、眠っているCeleron400MHzのマシンを引っ張りだしてくるしかなさそうですねぇ。出すのも分解するのも面倒だなぁ。

SIGINFOでddの進行状況を表示させる

ところで、ddの進行状況は普通に実行していると表示されませんが、SIGINFOのsignalを送ってやると進行状況(というかddの結果出力そのまま)を表示してくれると教えてもらいました。

kill -INFO プロセスIDでも良いですが、フォアグラウンドで実行している場合にはCtrl-Tで簡単に出力が得られます。こりゃ便利。