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";
}
Apr 302007
 

Cobaltマシンを、2007-04-08リリースのDebian etchにアップグレードしました。
詳しい手順はこちら。

私がおこなった手順はこちら。
/etc/apt/sources.listからbackports.orgを外して実施しています。
apt-getでやってしまいましたが、aptitudeのほうが正解です。

# apt-get update

まずは最小アップグレードを実行。

# apt-get upgrade

うまくいったら次に完全なアップグレードを実行。

# apt-get dist-upgrade

いくつかのphp関係のパッケージがアップグレードされませんでしたが、php4からphp5へのアップデート関係のようなので、とりあえず無視。

次にカーネル2.6を入れますパッケージ名がkernel-imageからlinux-imageに変更されているので、どのバージョンが入れられるか試してみてから、cobalt用イメージを直接指定しています。

# apt-get install linux-image
Reading package lists... Done
Building dependency tree... Done
Package linux-image is a virtual package provided by:
  linux-image-2.6.18-4-sb1a-bcm91480b 2.6.18.dfsg.1-12
  linux-image-2.6.18-4-sb1-bcm91250a 2.6.18.dfsg.1-12
  linux-image-2.6.18-4-r5k-cobalt 2.6.18.dfsg.1-12
  linux-image-2.6.18-4-r4k-kn04 2.6.18.dfsg.1-12
  linux-image-2.6.18-4-r3k-kn02 2.6.18.dfsg.1-12
  linux-image-2.6.18-4-qemu 2.6.18.dfsg.1-12
You should explicitly select one to install.
E: Package linux-image has no installation candidate
# apt-get install linux-image-2.6.18-4-r5k-cobalt

リブートしてとりあえず完了。

May 212006
 

暑くなってきて日中Ultra 10を動かし続けることに引け目を感じるようになってきました。何しろ白熱電球6個相当の発熱量?らしいですから。
そこでDebian/mipsel on Cobalt Qube再びです。
参考サイトは前回同様Debian on Cobaltです。以前にくらべて大分様変りしています。

環境

  • Cobalt Qube本体
    Cobalt Qubeに割り当てるIPアドレスは192.168.0.254で、MACアドレスは00:10:e0:00:56:d5です。
  • サーバ
    nfsやdhcpサーバはAlpha XP1000のGentoo Linuxになります。
    こちらのマシンでminicomを使いシリアルコンソール操作もおこないます。
    IPアドレスは192.168.0.253です。
  • インターネット接続ルータ
    インターネットアクセスのためのルータは192.168.0.1になります。
  • nfsサーバの用意

    nfsはカーネル組み込み済みですので、nfs-utilsをインストールします。

    # emerge -v nfs-utils
    

    /etc/exportsに以下のエントリを追加します。

    /nfsroot        192.168.0.0/24(ro)
    

    nfsサービスを起動します。

    # /etc/init.d/nfs start
    

    dhcpサーバの用意

    dhcpパッケージをインストールします。

    # emerge -v dhcp
    

    /etc/dhcp/dhcpd.confファイルを用意します。/etc/dhcp/dhcpd.conf.sampleをコピーして、以下のsubnetエントリを追加しています。

    subnet 192.168.0.0 netmask 255.255.255.0 {
      host cobalt {
        hardware ethernet 00:10:e0:00:56:d5;
        fixed-address 192.168.0.254;
        option routers 192.168.0.1;
        next-server 192.168.0.253;
        option root-path "/nfsroot";
        filename "default.colo";
        option host-name "cobalt";
      }
    }
    

    dhcpサービスを起動します。

    # /etc/init.d/dhcpd start
    

    nfsrootへのインストーラ配置

    nfsroot.tar.gzを入手し、/nfsrootに展開します。

    # wget -N http://ftp.debian.org/debian/dists/stable/main/installer-mipsel/current/images/cobalt/nfsroot.tar.gz
    # tar xzvf ~/nfsroot.tar.gz -C /
    

    シリアルコンソール準備

    シリアルコンソール接続用にminicomパッケージをインストールします。

    # emerge -v minicom
    

    シリアルケーブルを接続してminicomを起動し、ポート設定を115200 8N1にして準備完了です。

    インストール開始

    サーバ側の準備が準備できたのでいよいよインストール開始。
    Cobalt Qube本体の右ボタンと左ボタンを同時押ししたまま電源を投入すると、LCDに”Net booting”と表示され、その後ブートメニューが表示されるはずなのですがFAILEDとなってしまいます。
    シリアルコンソールを見ると、どうやらハードディスクをmountしようとして失敗しているようです。

    Decompressing \ done.
    
    [ "CoLo" v1.16 ]
    stage2: 8ffa0000-90000000
    cpu: clock 250.000MHz
    pci: unit type <Qube2>
    tulip: #0 device 21143
    tulip: #1 device 21143
    tulip: {00:10:e0:00:56:d5}
    ide: resetting
    boot: running boot menu
    1> lcd 'Booting...'
    1> mount
    ide: {ST3160023A}
    ide: LBA48 66055248
    ide: supports PIO mode 4
    ide: mode 4 timing
    invalid partition table
    script aborted <1>
    >
    

    ディスクはまっさらの状態ですのでパーティションテーブルなんてありません。
    「こりゃ、NetBSDでDiskless bootでもして、パーティション切らないとダメか?」と思いましたが…
    >プロンプトでhelpしてみるとbootといったコマンドがあるようです。更にboot listとしてみるとNFSブートできそうな雰囲気。だめもとで入力してみたところ、無事インストーラまでたどり着きました。

    > help
    :
    boot             [list | default] [option]
    :
    > boot list
    1: . Disk    (hda)
    2: . Network (NFS)
    3: . Network (TFTP)
    4: . Boot shell
    > boot 2
    

    最後までうまくいくかまだわかりません。
    Cobalt Qubeのパーテション1番めはext2 (revision 0)でないといけないので、それを作れればまず大丈夫だと思うのですが。

    しかし夏が近付くたびにこんなことをやってます。
    去年の夏はiBook(Debian)、その前はOpenBlockSS(Debian)、それより更に前はCobalt Qube(NetBSD)で、涼しくなったらAlphaかSPARC。
    省電力系のIAサーバでも自作したいですね。

    ■2006-05-22追記
    パーティションも設定できて無事インストールできました 😀

Aug 262005
 

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

Aug 012005
 

Cobalt Cubeのメモリは72Pin 3.3V EDO SIMM(72pinといっても5Vのものが多い)というもので、現在では入手困難。
そんなメモリを入手可能なサイトをいろいろ探してみると…

私はこれらとは別の海外サイトで購入したのですが、どこだったか思い出せない。

Oct 142004
 

Debian sargeではCobalt Qube用のカーネルがkernel-image-2.4.27-r5k-cobaltパッケージで提供されています。
機能的には十分なのですが、pppをカーネルに組み込んでカーネルモードで動かそうと、再構築をおこなってみました。
2.4.26の頃は

  • kernel-source
  • kernel-patch-2.4.26-mips

のパッケージを入れてmake-kpkgをおこなえばよかったのですが、2.4.27のmips用パッチはsourceでしか提供されていません。

どうするんだろうと思いながら、とりあえずdpkg-buildpackageコマンドでdebパッケージをビルドしてみました。

# apt-get install kernel-source-2.4.27
# mkdir -p /usr/src/kernerl-patch-2.4.27-mips
# cd /usr/src/kernerl-patch-2.4.27-mips
# apt-get source kernel-patch-2.4.27-mips
# cd kernel-patch-2.4.27-mips-2.4.27-5.040815
# vi config/mipsel/r5k-cobalt … (PPP、ReiserFS関連をスタティック組み込みに変更)
# dpkg-buildpackage

で、私が欲するr5k-cobaltカーネル以外にもたくさん作ってくれるので、Cobalt Qubeでは大層な時間がかかります。
r5k-cobaltだけを作るにはどうしたらいいのでしょうかね?
それから、この方法ではパッケージのバージョンが正規のものと同じになってしまいます。そのせいかapt-get upgradeする場合に、毎回kernel-imageがアップデート対象になります。
まずは

  • 特定のカーネルだけを作る
  • make-kpkgのようにCustomなバージョンを付与したい

を解決したいのですが…いかんせん知識がまだまだです。

Jun 202004
 

apt-get install slapdがエラーでうまくいきませんでした。

# apt-get install slapd
:
Unpacking slapd (from .../slapd_2.1.23-1_mipsel.deb) ...
Setting up slapd (2.1.23-1) ...
Creating initial slapd configuration... done
Creating initial LDAP directory... slapadd: could not add entry dn="dc=nodomain" (line=7): txn_begin failed: Invalid argument (22)
dpkg: error processing slapd (--configure):
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 slapd
E: Sub-process /usr/bin/dpkg returned an error code (1)

となってしまいます。
詳しく調べてませんが、どうもmipselではバックエンドbdbがうまく動作しないようです。
上記エラー後、/etc/ldap/slapd.confを編集してバックエンドldbmに変更し、

# dpkg --pending --configure

したら、とりあえず動くようになりました。

May 292004
 

今までNetBSD/cobaltを動かしていましたが、Debianのメーリングリストに投稿されたメッセージをきっかけにDebianに入れ替えました。
pkgsrcやsecurity対策のためのコンパイルがつらかったことが一番の理由です。

NetBSDのときはかなり安定して動いていた印象があったのですが、Debianはどうでしょうか?