Oct 252008
 

NetBSD 4.0.1をiBook G3にインストールしたときのメモ。結構面倒でした。

  1. Command-Option-O-FでOpen Firmwareにする。
  2. Open Firmwareから以下のコマンドでインストーラCDからブート。
    0 > boot cd:,\ofwboot.xcf netbsd.macppc
    
  3. インストールではなくShellを起動し、pdiskでHFS含めたパーティションを作成。
    # pdisk /dev/wd0c
    
  4. sysinstを実行してインストールを開始。パーティションは作り直さない。
  5. インストール先のディスクをmountしchrootする。
    # mount /dev/wd0a /targetroot
    # chroot /targetroot
    
  6. hfsutilsパッケージをサイトから入手するためにN/W設定。
    # ifconfig gem0 192.168.0.51 netmask 0xffffff00
    # route add default 192.168.0.1
    # echo "nameserver 192.168.0.1" > /etc/resolv.conf
    

    インストール用カーネルではbpfが有効になっていないようで、dhclientは使えなかった。

  7. hfsutilsパッケージを入れる。
    # PKG_PATH=http://ftp.netbsd.org/pub/NetBSD/packages/4.0/macppc/All
    # export PKG_PATH
    # pkg_add hfsutils
    
  8. ofwbootをHFSパーティション(wd0d)にコピーする。
    # /usr/pkg/bin/hformat /dev/wd0d
    # /usr/pkg/bin/hmount /dev/wd0d
    # /usr/pkg/bin/hcopy /usr/mdec/ofwboot.xcf :
    # /usr/pkg/bin/humount
    
  9. リブートしてOpen Firmwareから以下のコマンドを実行。
    0 > boot hd:2,\ofwboot.xcf hd:3/netbsd
    

    wd0dからofwboot.xcfを読み込んで、wd0aからカーネルを読み込ませていることになります。

    基本的なことは
    October 5, 2008 INSTALL 8 NetBSD
    NetBSD/macppc Frequently Asked Questions
    に書かれているはずなのに、わかりにくかった(とくにofwbootを配置するHFSパーティションが必要だ、って部分)。

    あと、Open Firmwareのリファレンスはこちらでよいのかな。
    Open Firmware Quick Reference

    ■2008-10-27追記
    インストール後のブート時カーネルファイル指定はhd:3,/netbsdではなく、hd:3/netbsdが正解でした。”,”が余計だったようです。上のメモも直してあります。ofwbootのmanページをみて気がつきました。情けない。
    またpkg_addでhfsutilsをインストールする際の手順も若干変更しています。

Oct 182008
 

手元にBUFFALO製のUSB無線LANアダプタ「WLI-U2-KAMG54」があったので、Debian PowerPC(lenny)で使えないか調べましたが、ダメなようですね。

WLI-U2-KAMG54にはAtherosチップが使われています。
Atherosはmadwifi.org – Tracでサポートされるのですが、USBはサポートされていません。

About/MadWifi – madwifi.org – Tracより:

MadWifi supports PCI, MiniPCI and Cardbus devices, USB devices are not yet supported.

x86なマシンであればNdisWrapperを使ってWindows用のドライバで動かすことも可能かもしれませんが、PowerPC機には通用しません 🙁

USBで使いたい方は他にもいらっしゃるらしく、

といったチケットもかなり昔に発行されています。

で、こちらのチケットの最後の書き込みを見ていますと、なんとOpenBSDではuathドライバでサポートされているとの記述が!

usbdevsのリストをみると、ATHEROS AR5523というものだけが対象のようです。

はたしてWLI-U2-KAMG54は該当するのでしょうか 😕
久々にOpenBSDをさわってみたくなりました 🙂

Debian/CobaltのファイルシステムをNetBSDで修復

 article  Comments Off on Debian/CobaltのファイルシステムをNetBSDで修復
Oct 012007
 

Debian etchで動かしていたCobalt Qubeがブート不能に陥ってしまいました。
どうもファイルシステムがいかれてしまったようなので、fsckしてみようと思います。

nfsサーバのセットアップ

NFSサーバにネットワークブートやrootファイルシステムに必要なファイルを用意します。
NetBSDミラーサイトから最低限必要なkern-GENERIC.tgz, base.tgz, etc.tgz
をダウンロードしてnfsrootにするディレクトリ直下に展開します。

# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/cobalt/binary/sets/kern-GENERIC.tgz
# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/cobalt/binary/sets/base.tgz
# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.1/cobalt/binary/sets/etc.tgz
# for f in *.tgz; do tar xzpvf $f -C ${NFSROOT}; done

またext3ファイルシステムのfsckができるように、e2fsprogのバイナリパッケージを入手して展開しておきます。

# wget ftp://ftp.netbsd.org/pub/NetBSD/packages/3.0/cobalt/All/e2fsprogs-1.32.tgz
# mkdir -p ${NFSROOT}/usr/pkg
# tar xzpvf e2fsprogs-1.32.tgz -C ${NFSROOT}/usr/pkg --exclude +*

usr/pkg直下にパッケージ管理用のファイル(+BUILD_INFO等)が展開されないよう–exclude指定しています。

展開先のnfsrootを/etc/exportsに登録します。

/nfsroot        192.168.0.0/24(rw)

dhcpサーバのセットアップ

dhcpサーバにdhcpd.confを用意します。
192.168.0.1はデフォルトG/Wとネームサーバ、
192.168.0.252は、dhcpサーバ兼nfsサーバ、
192.168.0.100がCobalt Qubeに割り当てるIPアドレスになります。

option domain-name-servers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.100 192.168.0.100;
}

host cobalt {
  hardware ethernet 00:10:e0:00:56:d5;
  fixed-address 192.168.0.100;
  option routers 192.168.0.1;
  next-server 192.168.0.252;
  option root-path "/nfsroot";
  filename "netbsd.gz";
  option host-name "cobalt";
}
Nov 072006
 

coreファイルは、たいてい該当プロセスのカレントディレクトリにcoreといった名前で吐き出されますが、最近のPC-UNIXはカーネルパラメータで変更することができます。

NetBSDは結構前(おそらく1.5)からユーザ名やプロセス名をつけられたので、Linuxも当然できると思ってたのですが、kernrl 2.5で導入されたとのこと。

変更するとわかりやすくて便利な反面、たくさんcoreが吐き出されていつのまにかディスクが溢れるなんてこともありますから注意しましょう。

Jun 272006
 

自宅サーバの役目をCobalt Qubeに引き継げたので、Ultra 10にはNetBSDを入れてみようと思ってます。
ただNetBSDだけ入れてもつまらないので、Solarisもパーティションに残しておき、NetBSDからmountしてcompat_solaris(8)でJavaでも動かしてみようかと。
パーティション残すだけでは後々のパッチ当てとかできなくなりますから、デュアルブート環境も当然必要です。
どんな風にパーティション切ればいいいのか調べていたら、もろ「[netbsd,07241] デュアルブート」というスレッドが参考になりました。

とりあえず、

a: (Solaris 用のでっかいパーティション)  4.2BSD
b:                                     swap
e: (NetBSD 用のでっかいパーティション)   4.2BSD

でやってみましょうかね。あ、NetBSDとSolarisってswap共有できるんですね。

Jun 212006
 

会社の同僚にatacontrolというコマンドを教えてもらいました。
最初NetBSDなんかにもあるatactlコマンドのことかと思ったのですが、どうもレベルが違ってて、なんと「BIOSで認識しなくなったHDDを無理やり認識させる」といった使い方もできるようです。

FreeBSDのISOイメージ(disc1)でLiveCDのようにブートして使うこともできるので、困ったときに使ってみようと思います。
そうなる前にバックアップをちゃんと取るのが一番ですけどね 😛

ちなみにatacontrolのソースはFreeBSDのcvswebから
src/sbin/atacontrol/atacontrol.c
で見ることができます。

こちらのattach、detachで呼ばれるioctlのコードは、FreeBSD-current source code tour (kernel)から辿っていくと…kern/sys_generic.cかなぁ 😕
いや、dev/ata/ata-all.cのata_ioctlから、ata_attachata_detachなのかな。

May 162006
 

スラッシュドットのタレコミにびっくりしました。「FreeBSD/alphaは6.x限り」だとか。

まぁ、FreeBSDはx86系統が主力だと思ってましたので、自分がAlphaで動かすならやはりNetBSDやGentoo Linuxという選択にはなるものの、目の当たりにするとやはり残念なものですね。

消え去る前に一度インストールしてみましょうかね。

Feb 222006
 

ISOイメージファイルのマウント方法あれこれ。

Linux

loopbackデバイス(/dev/loop/*)を作成してmountする。
Linuxの場合、loopオプション指定で一気にmount可能。

# mount -o loop diskimage.iso /mnt

NetBSD

vnconfigを使って擬似デバイスノード(/dev/vnd*)を作成してmountする。

# vnconfig vnd0 diskimage.iso
# mount /dev/vnd0c /mnt

FreeBSDやOpenBSDもほぼ同じ。

Solaris

lofiadmを使ってlofiデバイス(/dev/lofi/*)を作成し、mountする。

# lofiadm -a diskimage.iso
/dev/lofi/1
# mount -F hsfs -o ro /dev/lofi/1 /mnt

Windows

DAEMON Toolsを使う。

Dec 062005
 

AlphaやSPARC、MIPSマシンなどを使っているせいか、
「でもLinuxだったらブートしちゃえば同じですよね」
と言われたことがあります。

私も最初の頃はそう思ってました。せいぜいディスクパーティションやブートローダが違うぐらいで、ブートしちゃえば同じだろうと。

そんなことありません。

私にとっては初の64bitマシンだったAlphaを使いはじめてまず驚いたのは、unaligned accessesやunaligned trapというメッセージがいっぱい出てきたこと。データ項目の境界あわせに起因する問題なのですがx86使ってる限り、普通の人はまず見ないメッセージでしょう(ググればいっぱい見れます)。
カーネルが処理してくれるので実害はないものの(パフォーマンスは落ちます)、素人が最初に見るとかなりびびります。
NetBSDだとメッセージ出力を抑止できるのですが、Linuxではどうやるんでしょう。
境界合せの問題ですから、厳密にはソースを直す(paddingする)かコンパイラが対応してくれるのが一番らしいのですが。

今流行のXenやSE Linuxなんか使えませんし、デスクトップではウェブブラウザのプラグインがことごとく動きません(バイナリ提供多すぎ)。

それからLinuxではなくNetBSDの話になりますが、NetBSD/cobaltを使いはじめたときMySQL serverがthreadライブラリの関係でインストールできず、悲しい思いをしたことがあります。NetBSD 2.0からはnative threadが実装されたので大丈夫です。

Aug 262005
 

以前Cobalt QubeをNetBSDからDebianに入れ替えたのですが、ちょっと不安定でした。ネットワーク負荷が高くなりすぎるとNICがハングしてしまうことがしばしばと。
都度シリアルコンソールログインしてifdown/ifupするのはつらかったので、結局Cobalt Cubeは現在隠居中です。
最近のDebian(というかLinuxカーネル)で解消している可能性もありますが、NetBSD 2.0も出て久しいことですので、いずれそちらに入れ替えるつもりです。