4. インストレーションとアップグレード


Contents of this section

NetBSD/mac68k 1.5 install 文書をよく読むと、ここにある質問の多くはたずねる必要がなくなるでしょう。

アップグレードに関するトラブルやINSTALLノートが役に立たないと思うときは、Mark Andres (mark@giganet.net)のアップグレードHOWTOを見るのもよい考えです:

http://www2.giganet.net/~mark/NetBSD/howtos/upgrade-howto.html

4.1 どれくらいのRAMが必要ですか?

4MB RAMが絶対的下限値ですが、4MBではほとんど使いものにならないことが予想されます。推奨下限値は8MBです。RAMはいくらあってもあり過ぎということはありません。望ましいのは16MB以上です。

4.2 どれくらいのディスクスペースが必要ですか?

たぶん、ごく基本的なシステム(baseとetc配付セットのみ)を80MB以内に押し込めることができるでしょうが、以下はBill Studenmund (wrstuden@loki.stanford.edu)からのwords of wisdomです:

100メガあればルートパーティションには何とかなるでしょうが、(載せたい)おもちゃによってはもっと欲しくなるでしょう。私のセットアップでは約100メガをルートパーティションに、約350メガをUSRパーティションに当てています。実はルートパーティションにすべてインストールしてあって(NetBSDは学校のラボにあるような売り物のUN*Xよりもずっとスリムなんです :-) )、USRパーティションではカーネルのコンパイル、ghostscript関連の作業その他を行っています。
カーネルコンパイルに打ち込むつもりならもっとスペースが必要になるでしょう。

もっと詳しい推奨値や無圧縮状態でのNetBSD配付セットの大きさ等については、 NetBSD/mac68k 1.5 install 文書を参照してください。

4.3 スワップパーティションはどうしても必要ですか?

いいえ、ですがあった方がいいでしょう。メモリーが枯渇してしかもスワップパーティションがないとNetBSDは警告なしでハングしてしまいます。

スワップスペースの大きさを決めるためのよく利用される手法として、RAMサイズの2倍というのがあります。また、RAMとスワップの合計サイズが少くとも20MBはあることも推奨されています。David W. Rankin Jr. (rankin@ewl.uky.edu)は:

私が5メガのRAMと12メガのスワップを持ったIIsiで1.0を動かしていた時は、週毎のcronジョブでシステムが落ちてしまいました。もちろんそれは80メガのドライブだったので、ファイルシステムとスワップのトレードオフを取らなくちゃいけないとかいう話ではなかったんですが :)[訳註:意味がよくわからない…。まあ、あまり深く考えるようなことでもないと思います]
さらに、もし使っていない小さなSCSIディスクがそこいらにころがっていたら、他の目的には一切使われないディスクにスワップパーティションを作るのは絶対に損にはなりません。
とつけ加えてくれました。感謝します。

NetBSDがRAMの2倍のスワップを要求する訳ではありません(例えば、40MBのRAMがあったら恐らく80MBのスワップは必要ないでしょう[訳註:余談ですが訳者(中田)の構成はまさにその通り=40MB RAM+80MB swap、です])。NetBSDではスワップは加算的なので、合計仮想メモリーサイズはRAMとスワップの合計となります。したがって、スワップの方がRAMサイズより小さくても構わないのです(ただしカーネルの完全なクラッシュダンプは、主スワップパーティションが物理メモリーサイズよりも大きくないと取ることができませんが)。しかし、スワップが足りなくなったときのNetBSDの振舞いはあまり優雅なものではないので、必ずスワップには通常のロードをこなすのに十分な領域を与えましょう。

NetBSD 1.3からスワップデバイスはブート時に動的にコンフィギュアされるようになり、任意のパーティションをスワップとして指定できるようになりました。/etc/fstabファイルにスワップパーティションを登録するだけで次のブート時から使えるようになります。最低ひとつのスワップデバイスは必ず持つようにします。さもないとNetBSDはブート時にひとつもスワップデバイスをコンフィギュアしないでしょう。詳しくはswapctl(8)マニュアルページを参照してください。

4.4 Mac OSパーティションはどうしても必要ですか?

いいえ。もしパーティションソフトウェアが許せば全部のスペースをNetBSDパーティションに割り付けてしまっても構いません。注意:そのようにするとこのドライブはMac OSのデスクトップには現れません。したがってBooterをブート可能なフロッピーか別のドライブのMac OSパーティションに入れる必要はあります。[訳註:結局これって、ブートフロッピーを作る方法以外には、ひとつもMac OSを作らない、という訳ではないような気がしますが…]

4.5 Mkfs (Newfs)はスワップパーティションにもかけるのでしょうか?

いいえ。[訳註:スワップパーティションの管理の仕方は通常のファイルシステムの管理とは全く異っていて、i-nodeなどは使用しないので、ルートパーティションのようにMkfsでファイルシステムを初期化する必要は全くありません。以上でこの質問に対する回答は終了で、以下質問そのものとはあまり関係ない話が続くような気もするのですが、翻訳を続けます]Installerの"Build Devices"メニューによって適切なスワップパーティションのエントリーを持った/etc/fstabが作成されます。NetBSDをブートすると/etc/rcswapctlを実行してスワップパーティションの使用を開始します。

バージョン1.1aから1.1cまでのInstallerでは、スワップが常にsd0bになった、状況によっては間違っているかも知れない/etc/fstabを作ることに注意してください。これを解決するには1.1d以降のInstallerを使用します。

4.6 なぜInstallerは"Trap not implemented error"で何度もクラッシュしてしまうのでしょうか?

恐らくInstallerバージョン1.0を使っているのだと思います。Installerに十分大きなメモリーを与えると、つまり「情報を見る」で表示されるウィンドウの推奨メモリサイズを1500K程度まで増やしてやると、うまく動くようになるはずです。残念ながらこのバージョンのInstallerは小さすぎるメモリーサイズを使ってコンパイルされているのです。

バージョン1.1以降を使った方がいいかも知れません。Installer 1.1以降ではやや機能が豊富になっています。最新バージョンは以下の場所から入手できます:

ftp://ftp.NetBSD.org/pub/NetBSD/arch/mac68k/installation/misc/Installer.sea.hqx

こちらのバージョンのInstallerはSystem 6以前のMac OSでは動作しませんので注意してください。

Installerがクラッシュするとたまにファイルシステムが壊れることがあります。ですから再インストールの前に安全のためにMkfsを再度実行することをお薦めします。

Installerユーティリティーを保守・更新してくれている(また上の回答も寄せてくれた)Steve Brown (sbrown@shellx.best.com)に感謝したいと思います。

(注意: 最新版のInstallerでさえ、とても大きなアーカイブファイルに対してはクラッシュすることがあるようです。推奨メモリサイズを2倍にすれば問題を緩和するはずです。)

4.7 MacBSDパーティションを作成するのにどのソフトウェアを使うべきでしょうか?

もし Mkfs 1.2以降を使っているなら(現時点ではMkfs 1.45が最新バージョンです)ほとんどどんなフォーマッタ/パーティションユーティリティーでも使用できるはずです。たとえそのソフトウェアがA/UXパーティションの作成に対応していなかった場合でも、任意のパーティションのタイプをNetBSDが使用可能なものに変換してしまう機能が新しいMkfsにはあります。詳しくは Mkfs 1.2以降追加パーティションを作成するのQ&Aを参照してください。

Mkfsの古いバージョンを使っている場合は、A/UX 2.0用パーティションを作成できるフォーマッタ/パーティションソフトウェアならどれでも使えるはずです。A/UX 3.0用パーティションはNetBSD/mac68kでは使用できませんから注意してください。FWBハードディスクツールキットとLaCieのシルバーライニングは推奨されている商用パーティションソフトウェアのうちのふたつです。

メーリングリストに投稿された情報によれば、APSのAlliance Power Tools 2.x.xは商用の製品SCSI Directorを再パッケージしたものであることがわかりました。ですから、APT 2.x.xのftpサイト名はもはやここで公開することはしません。[訳註:APT 2.7.3は以前anonymous ftpで公開しているサイトがありました。というか現在でも日本のサイトではまだ公開していそうな気がします]

AppleのHDSC Setupを他社製ドライブに対して使用するためのパッチも出回っています。パッチ済みバージョンはここから入手できます(今このバージョンは手に入らないようです—nigel@ind.tansu.com.au)。

さらに、もうひとつのパッチ済みバージョンでHDSC Setup 3.0.1 (A/UX)と呼ばれるものが、 http://www.euronet.nl/users/ernstoud/hdsetup.htmlで入手できます。

自分でApple HDSC Setup 7.3.5にパッチを当てるための情報は http://www.euronet.nl/users/ernstoud/patch.htmlにあります。

HDSC SetupのA/UX自動設定では Eschatologyパーティションが作成されるでしょう。これは削除してしまって構いません。インストールされるAppleのドライバーは他の製品よりも高速であるということです。[訳註:ドライバーの性能はNetBSDにとっては無関係なことですが]

Apple HDSC Setupに関する情報は以下の方々の協力によります:

APS フォーマッタに関する情報はMonroe Williams (monroe@teleport.com)が提供してくれました。

また、パーティショニングソフトウェアに関する追加情報を寄せてくれたBen Cottrell (benco@ucsee.EECS.Berkeley.EDU)にも感謝します。

4.8 ルートとusr別々のパーティションが必要でしょうか?

Bill Studenmund (wrstuden@loki.stanford.edu)曰く:

これは趣味の問題です。別々のパーティションを使う理由は二重です。/var/tmp/homeなどのパーティションは他のファイルシステムから独立に保ちたい場合があります(それによって、どれかのパーティションが一杯になってもシステム全体としてはまだ空きがあるという状態でいられます)。
さて、上はスタイルの問題です。私のホームマシンは独立した/home/tmp/varパーティションは持っていません。大学のラボのワークステーションはどれも持っています。これらが分離していなくてもどうということはありません。特にあなたが唯一のユーザーである場合はそうです。
分離パーティションを持つもうひとつの理由は、それによって、停電などの時にダメージを受けるファイルシステムを制限することです。書き換えの発生しないファイルシステムでは、停電などで突然システムがダウンしてもファイルシステムが壊れることはありません。ちょうどMac OSで、(ほとんど書き換えの起こらない)アプリケーションだけあるパーティションへ、データだけ別のパーティションへ保存するのに似ています。こうするとマシンがクラッシュしたあともNortonが必要になるのはデータ用パーティションだけです。:-)
本当にこれはあなたが何をしたいかによります。私の場合単一のパーティションにシステムのほとんどが入っています(あ、これによってインストールも簡単になります—ルートパーティションだけで済みますから)。そしてコンパイルや遊びのスペースは別にとってあります。

4.9 追加のパーティションを使いたいのですが、パーティションの種類は何にすべきでしょうか?

最低ひとつの"A/UX root"または"Root slice 0"(または"root&usr")タイプのパーティションが必要ですが、残りのファイルシステム(つまりスワップ以外)は"A/UX Root"と"A/UX root&usr"以外にも"A/UX User"(かまたは"A/UX Usr slice 2")タイプにもできます。これは/usr階層に使うためのパーティションかどうかには全く無関係です。明らかに、"root"と名のつくパーティションが、"usr"だけのもの(gとh)より先に(eとf)認識されるようです。"Free Unix slice"パーティションやその他のパーティションはNetBSD/mac68kでは使えません。

もうひとつの重要なポイントとして、A/UX 3.0のファイルシステムも使えないことです。代わりにA/UX 2.0パーティションを使用する必要があります。

上の情報を寄せてくれたBen Hockenhull (benh@inlink.com)とSteve Ihde (sihde@cs.stanford.edu)に感謝します。

しかし、Mkfsの最新版によって上の情報はほとんど旧式にされてしまいました。Bob Nestor (rnestor@metronet.com)によれば:

パーティションマップとドライバーパーティションを除けばどんなタイプのパー
ティションでもNetBSD Root & Usr、NetBSD Swap、Mac OS HFS、またはApple_
Freeタイプのパーティションに変換するためのコードが追加されました。これ
によってたとえA/UXパーティションの作成に対応していないディスクフォーマッ
タでもNetBSDボリュームを準備するために使うことができるはずです。Apple_
Freeパーティションとは割り付けはされていても使用はされないパーティショ
ンです。Mac OSでも認識されないので将来必要になるかも知れないディスクス
ペースを取っておくにはちょうどいいタイプです。

実際にはパーティションタイプを変更せずに、いかなるタイプでもBSDパーティ
ション(A/UX、NetBSD、RootまたはSwap)をタイプ変更のために選択するとパー
ティション名がNetBSDのパーティション名に書き換えられます。Apple_HFSの
パーティションには、ユーザーがApple_HFS以外のパーティションタイプを選
択しない限り一切の変更は行われません。

NetBSD用パーティションへ変換する際、マウントされているMac OS HFSパーティ
ションの不適切な使用はチェックされません。ユーザーはマウントされたHFS
パーティションの変換について警告を受けますが、この警告に従わないとファ
イルシステム破壊、システムクラッシュ、またはそれよりも悪い事態に陥るこ
ともあり得ます。

ディスクやパーティションが正常にフォーマットできずにハングすることもあ
ります。これはパーティションのブロック数がシリンダーあたりブロック数で割
り切れないことと関係があるかも知れません。どういうわけかデバッグ用ステー
トメントをイネーブルして実行すると、この問題も発生せず、問題のパーティ
ションのフォーマットも可能なようです。

Mac OSディスクパーティション名をパーティションに記録されている情報から
引き出すようになっています。ディスクパーティションに関連するパーティショ
ンマップブロックはMac OSパーティション名を常に含むわけではありません。
これはマップブロックのオプショナルなエントリーで、すべてのパーティショニ
ングソフトウェアがこのフィールドを初期化する手間をかけてはいません。
Mac OSパーティションのディスクパーティション名はファインダで変更するこ
とができますが、この変更はマップブロックには反映されません。

ある種のディスクフォーマッタは、それらがフォーマット時に使用する「標準」
パーティション名以外の名前を認識すると文句を言います。これは大した問題
ではないはずですが、Mkfsで変更を行ったディスクを同じフォーマッタで再パー
ティションする時に欝陶しいのは確かです(ぎょっとします)。
    
マウントして利用できるはずと思うような、しかし正しく初期化されていない
パーティションに出喰わした時のNetBSDはとても反社会的な振舞いをすること
があります。ですから、Mkfsを実行しないNetBSD Root&Usrパーティションを
作らないのは非常に良い習慣です。こういう時こそApple_Freeパーティション
が活きるときでしょう。というのはNetBSDはApple_FreeパーティションはFFS
ディスクとして認識しないからです。[訳註:恐らくここはまるで意味不
明だと思いますが、訳者としても意味不明なのです。原文でもちょっと論理が
飛躍気味で…。恐らく、使わないディスクスペースをA/UX Root&Usrなど
NetBSDがFFSとして認識するようなパーティションタイプでとっておくのは良
くない。そのようなことをするならApple_Freeを使うべきだ、といった意味だ
と思うのですが…]

最近のMkfs(つまり1.4以降)の更新によって、以前からの"Root"パーティションに加え、正しくNetBSD "Root&Usr"と"Usr"パーティションも作れるようになりました。Installerも今はMkfsによって作られたこれらのタイプのパーティションすべてを認識するはずです。

Mkfsの最新版は: ftp://ftp.NetBSD.org/pub/NetBSD/arch/mac68k/ から入手可能です。

NetBSDはドライブあたり最大8個までのパーティションしか扱えないことに注意してください。しかも、実際にファイルシステムをマウントするために使えるのはそのうち6個までです(すなわちa、d、e、f、g、およびhです。bはスワップ用として、またcはディスク全体を表すパーティションです)。

4.10 currentのバイナリースナップショットをインストールする一番の方法はなんですか?

Mac OSで動作するInstallerユーティリティーを使ってもgzip圧縮tarファイルのインストールはできますが、もっと高速にインストールできる方法が他にあります。

まず、スナップショットを入手してNetBSDからアクセス可能な場所に置く必要があります。これには色々なやり方があります。ftp(またはzmodemなど)で直接NetBSDファイルシステムへスナップショットを転送することができますし、Mac OSファイルシステムへ転送したあと(どのような方法でも構いませんが、バイナリーモードで転送するのを忘れないように。さもないとファイルが壊れてしまいます)hfsユーティリティーかhfsutilsパッケージを使ってNetBSDパーティションへコピーすることもできます。また、InstallerユーティリティーのミニシェルcpinコマンドでNetBSDパーティションへコピーすることも可能ですが、hfsプログラムの方が高速だと思います(そして、よりNetBSDの精神にかなっているとも言えるでしょう)。Mac OSパーティションをアクセスするには、hfsユーティリティーはrootの権限で実行することを忘れないでください。

第二に、スナップショットをインストールするにはシングルユーザーモードで行うのが最良です。[訳註:正式リリースをアップグレードする場合にも、NetBSDから行うのであればシングルユーザーモードでやるのが良いです]ですから、シングルユーザーモードでブートするか、shutdown nowコマンドでマルチユーザーからシングルユーザーにモードを切り替えます。もしこの時点でファイルシステムが読み書き両用でマウントされていなければ、mount -aコマンドを実行して/etc/fstabに指定されたすべてのファイルシステムをマウントします。

いよいよ実際にスナップショットをインストールします。ルートディレクトリーにいることを確認し、etc.tar.gz以外のスナップショットファイルそれぞれに対し、次のコマンドを実行します:

tar --unlink -xvzpf file.tar.gz
この--unlinkオプションによって、現在既に実行中のプログラムファイル(例えばシェル、tarそれ自身、initなどです)が安全に上書きできるようになります。zオプションはgzip圧縮されたtarファイルを扱うときのオプションで、pによってアーカイブに保存された元ファイルのパーミッションすべてが復元されます。

etc.tar.gzについては、恐らく/tmp/usr/tmpに一旦展開した方が良いでしょう。そこで内容を吟味し、更新が必要なファイルを確かめます。そして更新が必要なファイルだけを/etcに手動でコピーしてください。他のスナップショットファイルと同様にインストールしてしまうと、ローカルに行われた設定のほとんどが失われてしまいます。

ところで、currentカーネルを使っているのでない限り、とくにcurrentバイナリースナップショットをインストールする理由はありません。currentカーネルを正式リリース版バイナリーと併用していると、psnetstatなどのプログラムが正常に動作しない問題が起きることがあります。[訳註:この問題については カーネルアップグレード時の障害の項を参照してください]

この回答に関して協力してくれた以下の人々に感謝します:

4.11 どうやって新しいカーネルをインストールするのでしょうか?

カーネルとはNetBSDの本体ですから、正しいやり方でカーネルをインストールするのは極めて重要なことです。カーネルファイルは通常、以下の3つの方法で配付されます:

  1. 生カーネルファイルとして
  2. gzip圧縮されたバイナリーファイルとして
  3. gzip圧縮されたtarアーカイブファイルとして
上の形式のいずれもバイナリーモードで、できればUNIX->Mac変換などまったくなしで転送しないとファイル内容が壊れてしまいます。[訳註:もちろんBinHex形式のテキストファイルとして配付する人がいても構わない訳で、その場合はテキスト(ASCII)転送でもOKのですが、1.0以前の古い話を除けば、今のところそういう話は聞いたことがありません]

新しいカーネルをブートする時は、Mac OSボリュームからカーネルをロードして、シングルユーザーモードで起動してみて、ハードウェアを正常に認識するかどうか試してみることを考慮すべきかも知れません。いきなり飛び込むのは時に恐しいものです。

NetBSD上で以下の手順を踏む際には、rootの権限で行うべきでしょう。

(新しいカーネルファイルを転送したあとで)まず最初に行うことは、現在使用中のカーネルのバックアップを作ることです。どのカーネルであってもあなたのマシンで動作するという保証はないので、新しいカーネルでうまくいくことがわかるまで、古い方もとっておくのが正解です。

次に、(もし必要なら)アーカイブファイルを展開してカーネルファイルを取り出し、ルートディレクトリーへコピーします。Mac OS側Installerユーティリティーはgzip圧縮tarファイルを直接取り扱うことができます(実際、Installerがインストールできるのはtarファイルかgzip圧縮tarファイルだけです)。他のフォーマットの場合はNetBSDパーティションへコピーしてください。InstallerユーティリティーではなくNetBSD側でtar.gzファイルを展開する場合は次のコマンドを使用します:

tar xvzpf filname.tar.gz

さて、新しいカーネルを/netbsdとリネームした方がたぶん良いでしょう(まだしていなければ)。その理由はいくつかのプログラムは現在実行中のカーネルファイルをオープンするのですが、その時/netbsdというファイル名を仮定するからです。[訳註:その場合でもカーネルファイル名のデフォルトをオーバーライドするオプションが通常あるのですが、psnetstatなど実行するたびいちいちカーネルファイルを指定するのはいかにも面倒です]もし他の名前でインストールする選択を決めた場合は、Booterユーティリティーの「Booting...」ダイアログボックスでカーネルファイル名を指定し直すのを忘れないように。

NetBSD実行中であれば、新しいカーネルを使うにはマシンのリブートが必要です。Mac OS動作中なら、次のNetBSDブート時から新しいカーネルが使用されます。

この回答でヒントを与えてくれたScott Reynolds (scottr@og.org)に感謝します。

4.12 Installerプログラムを使うとError on SCSIRead(), #5というエラーになってしまうのですが

これはタイプ5エラー(フェーズエラー)が起きたことを示しています。過去にはInstallerの古いバージョンのバグがこのエラーを引き起こしたこともあります(とくにCD-ROMからディスクラベルを読み込もうとした結果)。Mkfsユーティリティーでも起こります。これが原因であれば無害ですからこのエラーメッセージは無視してしまって構いません。Installerの比較的新しいバージョンではこのバグは修正されていますが、Mkfsの最新版ではまだ残っているかも知れません。

しかし、最近の報告によれば、最新版のInstaller(現時点では1.1g)でさえ、大容量ディスク上のパーティション(1Gを超えるサイズ)を取り扱う際にこのトラブルが発生しているようです。この問題は他の製品よりもQuantum Fireballでより頻繁に発生するようです(Fireballだけに起こるものではないと思います)が、鍵となる要素は、大容量パーティションがディスクの後方(最初の1Gを越えた部分)にあることと、大きな配付セットをそうしたパーティションへ書き込むことにあるようです(小さなセットのインストールは正常に完了しますが大きなセットだと途中で異常終了してしまう)。似たようなInstallerのバグがしばらく前に修正されましたが、これはちょっとだけ違うようです。

Installerに与えるメモリーを増やしてもこの問題が続くようなら、いくつか回避策があります。一番いいのはNetBSDパーティションをディスクの先頭へ(またはできるだけ先頭近くへ)移動することです。もしこれでうまくいかなければ、以下のMark Andres (mark@giganet.net)の提案を試してみてください:

base.tgzをインストールするとき、恐らくInstallerが諦める前にファイルの大部分はインストールされているのではないでしょうか。もし私の記憶が正確なら、一番最近の儀牲者は/usr/share/man/あたりで止まっていたようです。これならtarは/usr/binですから既にインストールされていることでしょう。で、次のようにします:

1) できるところまでbase.tgzをインストールする

2) kern.tgz(またはSBCカーネル)、etc.tgz、そしてその他のファイルをできるところまでインストールします。

3) Installerのミニシェルcpinコマンドを使って、インストールできなかったファイルとbase.tgzをNetBSD側へコピーします。もしルートファイルシステムに十分空き領域がなければ別のファイルシステムへコピーする必要があります。

4) シングルユーザーモードでブートし、fsck -fを実行、そしてファイルシステムをmount -aコマンドでマウントします。

5) tarコマンドで残りのファイルをインストールします。ルートディレクトリーにいることを確認して次のコマンドを実行します:

  tar --unlink -zxvpf /path/to/base.tgz

同様に他のtgzファイルもインストールすれば、完全なNetBSDシステムができあがりです。

このバグを修正するには全面的に改造されたインストール手順が必要になるかも知れません。

この質問に回答するのに協力してくれたStephen Brown (sbrown@shellx.best.com)、Charles Sebold (pretender@macstore.com)、そしてStuart McLuckie (mcluckie@mailhost.abel.net.uk)に感謝します。

4.13 私のNetBSDパーティションがInstallerユーティリティーに認識されず、マウントできないのですが

古い版のInstaller(およびNetBSDカーネル)では、ディスク上のはじめの8パーティションしかNetBSDパーティションを探すためにチェックしなかったのです。もしたくさんのパーティションのあるドライブ(パーティションマップとドライバーパーティションも含む)だと、NetBSDパーティションが最初の8エントリーに入れないことがあり得ます。そうするとInstallerはそのパーティションを認識しません。パーティションの順番を入れ換えて症状が収まるか試してみてください。

より最近のカーネルでは最初の32パーティションをサーチするようになっていますから、必ず1.2リリース以降のカーネルにアップグレードするようにしてください。

もし大部分のパーティションの順序を入れ換えられない場合、Installerがアクセスできるよう先頭に近い場所にひとつだけNetBSDパーティションを作り、それ以外のパーティションにインストールしたいファイルを、そのパーティションにコピーします。それからNetBSDをブートし、目的のパーティションへファイルを展開すれば良いのです。

NetBSDはディスク一台あたり8個までのパーティションしか扱えないことに注意してください(そしてファイルシステムをマウントするのに使えるのはそのうち6個だけです)。

4.14 InstallerとMkfsがMac OSパーティションを壊してしまうのはなぜですか?

これは恐らく、あなたが大容量ハードドライブ(通常、1GB超)を持っており、Mkfsをとくに大きなパーティションに対して実行しようとしたからでしょう。Bob Nestor (rnestor@metronet.com)によるコメント:

Mkfsはあるポイントを超えたところにあるディスクブロックの指定で問題を抱えています。SCSIマネジャーと、6バイト長CMDだけを使ってやりとりを行うため、ブロックアドレス長は21ビットに制限されてしまいます。この制限を超えるブロックをアクセスしようとすると上位ビットが切り捨てられ、ブロックアドレスが0へラップアラウンドしてしまうのです。
ということで、Mkfsを大きなパーティションに対して実行することで他のパーティションを、パーティションマップやドライバーパーティションも含め、破壊してしまうことは十分考えられることです。これが起きるとドライブはほとんど使用不可能になってしまいます(再初期化が必要になるでしょう)。この問題はドライブの先頭1ギガバイトを超えたパーティションをアクセスする場合にもに起きるようです。

また、この問題はInstallerユーティリティーでも発生します。

幸いなことに、これは簡単に解決することができます。MkfsとInstallerの最新版を入手すれば良いのです:

ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-1.5/mac68k/installation/misc/

これに比べてやや複雑な解決策は、NetBSDパーティションが最初の1Gを超えた場所に置かれないように確認することです。

4.15 配付セットをインストールしようとするとInstallerがタイプ10のエラーでクラッシュしてしまいます

この問題は、Installerバージョン1.1cがFPU命令入りでコンパイルされたのが原因です。FPUを持たない機種でのみこの問題は現れます。この問題を取り除くため1.1cは再コンパイルされましたし、また1.1dではこの問題は生じないので、1.1d以降へバージョンアップすることが最も簡単な解決策です。別の解決策はSoftware FPUをインストールすることです。

この問題に気づいたSteven Campbell (scampbel@osha.igs.net)と修正したStephen C. Brown (sbrown@shellx.best.com)に感謝します。

4.16 NetBSD用に変換したいパーティションをMkfs 1.4が認識しないのですが

この問題(といくつかのフォーマッタソフトウェアに対する小さな非互換性)はMkfs 1.45で修正されました。最新版を入手して試してみてください。この問題の背後にある理由(ともう旧式の回避策)を以下に述べます。

Bob Nestor (rnestor@metronet.com)より:

Mkfs 1.2ではディスクパーティションマップは20エントリーの大きさという仮定のもので、有効エントリーのように見えるエントリーは何でも使うようなっていました。Mkfs 1.4ではパーティションマップそのものに記録されたパーティションマップサイズを使うように変更されています。不幸なことに、いくつかのディスクフォーマッタがパーティションマップを作る上で少し知られたバグがあるのです。フォーマッタの中にはパーティションマップサイズを、実際の大きさよりも1だけ小さい値としてディスク上に記録するものがあるのです。最新のApple HDSC Setupにもこのバグがあると記憶しています。特定のサードパーティーディスクフォーマッタはこれを検出してディスクに修正可能なダメージがあるとして報告します。パーティションマップに続くブロックがマップエントリーのように見える場合は、このブロックもエントリーとして扱うことでこのエラーを「修正」することもできなくはありませんが、パーティションマップ直後のブロックはMac OSのSCSIドライバーが使用していることが多いのでやや危険な方法に思えます。このパーティション[訳註:=ドライバー]が損われてしかもこのディスクがブートディスクだったら、MacのROMはエラー音を出し、フロッピーからのブートができる以前にブート処理を途中でアボートしてしまいます!Mkfsの開発中に自分でこれをやってしまったので、同じ辛い教訓を他人には味あわせないことにし、パーティションマップの「1ずれ」エラーはMkfsでは「修正」しないことにしました。もしかしたらこれは正しい決断ではなかったかも知れませんが、その時は正しく思えたのです。
たくさんの人が報告しているように、別の回避策は最小サイズのMac OSパーティションをディスクの最後に作ることです。これによって、たとえ「1ずれ」バグを持ったフォーマッタを使用していても、パーティションマップ直後のドライバーパーティションをマップエントリーであるかのように処理することがなくなります。このパーティションはBooterその他を置いておくにもちょうどいい場所です。
(1KB大のスクラッチパーティションをディスクの最後につくるのも、無駄になるディスク領域が少いのでよい手です—Colin)
Mkfs 1.2ではパーティションマップは読み込まれるだけで書き込まれることはなかったので、マップの最後を通り過ぎたとしても大した問題ではなかったのです。ところがMkfs 1.4ではMac OSパーティションをNetBSDタイプのパーティションに変えてしまうことができます。このためパーティションマップエントリーブロックはディスクに書き込まれなければならなくなりました。バグつきパーティションマップのせいでSCSIドライバーパーティションを上書きしてしまう可能性は十分あり、実際、Mkfsのテスト中、私に一度起きてもいます。パーティションマップエントリーでも有効とわかっているものに対してのみMkfsを動作させるようにするのは、このエラーから身を守る簡単な手段でした。

4.17 なぜシリアルコンソールの電源を切るとデバッガーに落ちてしまうのですか

原因はNetBSDがブレークシグナルを受信したと勘違いするからで、ブレークシグナルは慣習的なデバッガー起動法なのです。この機能を無効化する場合にはカーネルコンフィギュレーションファイルの以下の行をコメントアウトしてカーネルを再構築します:

options         ZS_CONSOLE_ABORT

4.18 newfsを使ってパーティションをフォーマットしたのですが、Installerからこのパーティションに何かインストールしようとするとクラッシュしてしまいます

Installerはレベル1 FFSファイルシステムのみを認識します。一方newfsはデフォルトでレベル2 FFSファイルシステムを作るのです。レベル2ファイルシステムはレベル1にはない機能がいくつかあります。詳しい違いについてはnewfs(8)マニュアルページを参照してください。

ふたつ解決策が考えられます。ひとつは問題のパーティションをMkfsユーティリティーで再フォーマットすること(パーティションの内容はすべて失われてしまいますが)、もうひとつはhfsまたはhfsutilsパッケージを使ってファイルをMac OSパーティションからNetBSDへコピーし、 前述したようにNetBSD側でインストールを行うことです。

4.19 アップグレード作業を楽にするため、NetBSDリリース毎の違いが知りたいのですが

比較的最新の全変更リストは(currentでの変更も含めて)、ここにあります:

ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-current/doc/CHANGES

各NetBSDリリースディレクトリーには同様のファイルがあり、前回のリリースからの変更点が列挙されているはずです。

4.20 NetBSD 1.3にアップグレードしたらfsckの使用法メッセージの後ブートがハングしてしまいます

ふたつの可能性が考えられます。ひとつには/etc/fstab中のufsをすべてffsに変更する必要があること。もうひとつは何らかの理由で/sbin/fsck/sbin/fsck_ffsの旧バージョンが新バージョンによって上書きされなかったことです。この問題を避けるため NetBSD/mac68k 1.5 install 文書ノートの手順を踏んでNetBSDの中でアップグレードしてください。

4.21 2GBディスクにインストールしようとするとInstallerがunimplemented trapエラーでクラッシュしてしまいます

大容量パーティションへの大量データ書き込みについてInstallerには問題があるようです。回避策としては、複数の小さなパーティションを使うか、またはInstallerでできるところまでインストールし、なんとかtar[訳註:それとgzipも必要でしょう]がインストールできたらアーカイブファイルをNetBSDファイルシステムにコピーして残りのインストールはNetBSDから行います。この問題への対処法としては前者の方がよいかも知れません。

回避策を寄せてくれたPaul Forgey (paulf@aphrodite.com)に感謝します。

4.22 フルアップグレードが完了したのですが、なぜ/etc/rc.conf is not configured. Multiuser boot aborted.というメッセージが出るのでしょうか?

INSTALLノートのアップグレードの項にもありますが、最低でも/etc/rc.confファイルだけは好みの設定に編集し、次の行を加える必要があります:

rc_configured=YES
これによってマルチユーザーブートが完了するようになります。NetBSD 1.2以前ではこのファイルは存在しませんが、この中には数々の有用な機能が含まれており、許可すると良いかも知れません。ファイルをよく読み、また様々なオプションについてはrc.conf(5)マニュアルページを参照してください。このファイルの編集に何か問題がある場合は NetBSD/mac68k 1.5 install 文書 ノートにある詳しい説明を参照してください。

4.23 1.5 をインストール/1.5 へアップグレードしたところですが、なぜマルチユーザーでブートできないのでしょうか?

NetBSD 1.5 に同梱されたバージョンの Installer プログラムは、 必要な新しいデバイスを作成するようにはなっていませんでした。 回避方法がいくつかあります。回避策のひとつは、最新バージョンの Installer をダウンロードして、これでもう一度 "Build Devices" することです。 最新バージョンの Installer は以下の場所で入手できます:

ftp://ftp.NetBSD.org/pub/NetBSD/arch/mac68k/installation/misc/Installer.sea.hqx
もうひとつの回避策は、シングルユーザーモードでブートして以下のようにすることです:
mount -rw /
cd /dev
sh ./MAKEDEV all
いずれの方法も、必要なデバイスファイルを作成して、うざかった /dev/ttyE0: No such file or directory. メッセージを出ないようにします。 console 行の /dev/ttys/dev/ttye0 に書き戻したりしないでください。 この /dev/ttye0 というデバイスは 1.5 にはもうありません。


Next Chapter | Previous Chapter

Table of contents of this chapter, General table of contents

Beginning of this Chapter


(連絡先 - 英語, 日本語: www@jp.NetBSD.org)
$NetBSD: faq-4.html,v 1.2 2007/06/09 20:18:04 dsieger Exp $
Copyright © 1994-2003 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.