MENU of NetBSD

私のメモです。参考になればいいですが、間違っていたらごめんなさい。

NetBSD 1.5.2

戯れ言

上はおもいっきり間違いが多いです。下を参考にしてください!

戯れ言2

日本語環境の構築

NetBSD 1.6E(Snapshot 20020804)

NetBSD-CURRENTへのアップデート

  1. supによるソースの取得
  2. 配布物の構築
  3. 既存システムのアップデート
  4. etcupdateによる/etcの更新
  5. pkglintによるパッケージの更新
----------------------------------------------





































NetBSD

コピー機やルーターなど、組み込み用途に使用されることの多い NetBSD。 最近、Debianのパッケージ管理システム 「apt」を採用することを表明し、ports collectionよりも楽にパッケージ管理が出来るかも知れないと、 最近はちょっと注目されている。空きスペースを見つけたので、 早速NetBSD-1.5.2をインストールしてみることにした。

NetBSD 1.5.2

まずはインストール前の下準備

まず、ftpサイトからisoイメージをゲットしてきてCDに焼いた。 これを使ってインストールしようとしたが、拡張領域からBSD OSは起動できないことから、 次のような移動を行った(Debianの移動方法はLinuxの備忘録を参照)。

   パーティション            移動前                         移動後 
            1                FreeBSD(/ )                  同左 
            2                FreeBSD(/home)                 OpenBSD(予約) 
            3                Debian                           NetBSD
            4                拡張(Kondara)                拡張(Kondara、Debian)

第2のパーティションにFreeBSDの/homeディレクトリがあった。 これを第1のパーティションに移動させる方法は下の通りである。

  1. FreeBSDの/etc/fstabで/homeをマウントしないようにして起動。勝手に/homeディレクトリが第1パーティションに作成される。
  2. 適当なディレクトリ(ex./mnt/homeなど)に手動で第2パーティションをマウントしてユーザーのフォルダをコピー

Back to MENU

ようやくインストール

XOSLに付属する SBMを使ってCD-ROMから起動する。 FreeBSDのように/stand/sysinstallのような画面が出る。 そこの一番上にある「Installなんたらかんたら」を選択してインストール開始した。
まず、パーティションを選択するところが出てくるが、すでにDebianのfdiskで NetBSDパーティション(a9)を作成したため、ここは適当に流す。 ちなみにKondara(Asumi)のfdiskではNetBSDのパーティションがまだサポートされていないようだ。
次に第3のパーティションにスライスを切る。 インストーラのおすすめのスライスのサイズと僕が選択したスライスのサイズは下の通りである。

    スライス    おすすめ     僕の選択   マウントポイント
       a       1024MB      1024MB      / 
       b       2024MB       512MB      swap
       c       ここは第3パーティション全体を示すため編集しない
       d       使われていない   ←
       e       1432MB      2500MB      /usr
       f       使用しない     344MB      /home

ここでビックリしたのは、NetBSDのパーティション操作は全てバイト(又はMB)単位で行うことである。 あらかじめfdiskでシリンダー番号などを控えておいたのだが、 シリンダーで入力するところはパーティション作成のところだけであった。
次にインストールするパッケージの選択へ行くのだが、その前にマスターブートレコードに ブートセレクタを入れろとか、起動するシリンダが1024を越えているとか言われるが、 ブートマネージャーを使っているので全てNoを選択した。 すると今度は「もう一度MBRとスライスを編集する」or「スライスを編集する」or 「どうしてもインストールする」のどれかを選択することになる。 ここで「どうしてもインストールする(Install it anway)」を選択してようやくパッケージの選択になった。
パッケージの選択肢は4つしかないので、Xを含むものをインストールした。 そして無事インストールは終了し、再起動後にNetBSDが立ち上がった

Back to MENU

パッケージのインストール

さて、インストールも終わったのでパッケージをインストールしようと思ったが、 インストールCDには ホントにbaseシステムしか入っていない。そこでWebで調べてみると、FreeBSDのports collectionと同じものがあり、 名前がpkgsrcというらしいことが分かった。 まずはpkgsrc.tar.gzをダウンロード。 しかし、この時点でNetBSDでの拡張領域のマウント方法を知らないため、 いったんFreeBSDで拡張領域とNetBSDをマウントして/etcにコピーした。再びNetBSDで立ち上げて、
 #  cd /etc
 # mv pkgsrc.tar.gz /usr
 # cd /usr
 # tar zxvf pkgsrc.tar.gz
で/usrディレクトリ以下にpkgsrcが展開された。
まずは慣れないcshをやめてbashをインストールする。 (参考:NetBSDパッケージコレクションの使用

 # cd /usr/pkgsrc/shells/bash2
 # make fetch-list | sh           ----依存のあるファイルのダウンロード
 # make                           ----パッケージのmake
 # make install                   ----makeしたパッケージのインストール
 # make clean CLEANDEPENDS=YES    ----依存するものも含めて作業ファイルの削除

とりあえず、bashの他にlynxも入れた。

Back to MENU

Xの導入

NetBSD-1.5.2のアナウンスに よると、1.5.2ではXFree86バージョン3.36と4.1.0の両方がサポートされているらしい。 アナウンスページを頼りに、をダウンロードしてくる。 このインストール方法は、同じディレクトリにある READMEファイルに 書かれていて、以下の通りである。

# tar plzxvCf / xfree410.tgz

うーん、これって単に/以下に展開しているだけなんだが。。。

Back to MENU

NetBSD 1.5.3_ALPHAへ

上記のようにXをインストールした気になっていたが、 どうみてもagpデバイスが見付からない。そこでネットで検索すると、 やはりカーネルにagpの使用を明記する必要があるようだ。 そこで次の1行をカーネルコンフィグレーションファイルに追加してコンパイルした。

 # agp* at pchb?

しかし、エラーを吐いて終ってしまう。。。どうもNetBSDは新規機能の採り入れが遅いらしく、 agpを使えるようになったのも去年の秋くらいのことらしい。 そこで、もしかするとcurrentバージョンなら問題ないのでは?と思い、 早速アップグレードしてみることにした。2002年2月1日現在のcurrentは 1.5.3_ALPHAのようである。 (ちなみに、currentのsnapshotは必ず ftp://ftp.netbsd.org/pub/NetBSD/arch/i386/snapshot/に おかれるらしい)

アップグレードの方法は下の通り。

  1. NetBSD 1.5.2のインストールCDで起動
  2. インストーラで「upgrade or reinstall」を選択
  3. インストール方法はftpを選択
  4. ネットワーク関係の設定を行う
  5. ftpサイトの指定。下記のURLを指定した。注意:setsの後に/を付けない事。
  6. ftp://ftp.netbsd.org/pub/NetBSD/arch/i386/snapshot/20020125-1.5.3_ALPHA/binary/sets
  7. パッケージを選択してインストール終了
  8. インストール後、次の2つの警告が出る。
  9. a. /etc/rc.confでrc_configured=NOをYESにすること
    b. /etc/passwdのバックアップを取ること
  10. 「exit install」を選択後、シェルに戻るので上記2つを実行
  11. 再起動

僕は間違えてa,bを放置したまま再起動してしまったので、見事マルチユーザモードに入れなかった。 仕方無いのでFreeBSDの方からrc.confを編集して何とか無事に再インストール完了した。

Back to MENU

supによるソースの更新

agpデバイスの組み込み方を調べていると、どうやらpkgsrcやカーネルソース (/usr/src/sys)とは別にXのソースツリーがあることが分かった(恐らくXFree86-4のためのツリー)。 そこでそれらのソースを一挙にアップデートするsupを用いることにした。 これはFreeBSDのCVSupに対応するもののようだ。

supの設定ファイルは、/usr/share/example/supfiles以下に各supサーバーごとのサンプルがある。 もちろん日本語のsupファイルサンプルもあったので、それをコピーしてsupを実行した。

# cp /usr/share/example/supfiles/sup.jp.netbsd.org /etc/supfile
  # sup -v /etc/supfile

-vは詳細な出力をするためのオプションである。 で、これを実行したんだけど、延々とsupを続けていてなかなか終わらない(^^;;;;
(初めては変更点が多いから)

戯れ言2

supで更新までしたのだが、1.5.2のagpのロード方法を調べていたら、 loadable kernel moduleを使うとデフォルトでagpがロードできることが分かった。 そうとも知らず、いろいろ余計なものをインストールしてしまったので、 もう一度クリーンインストールしようとして、パーティションを壊してしまった。 と言うわけで、もう一度振出に戻る。 パーティションを壊す前にXの起動手順は分かったので、まぁ、良としましょう。

Back to MENU

インストールの下準備

今回は、NetBSDのパーティションをセカンダリの第二パーティションにした。 fdiskの結果は下のとおりである。

result of fdisk on wd1

上記のa9がNetBSDのパーティションである。

Back to MENU

インストール

今回のスライスは下の通り。 前回、MB単位でしか指定できないと思っていたが、実はちゃんとシリンダでも入力できた。 (どの単位でパーティションを切るかを聞かれるところで指定すれば良い)
NetBSDではスライスを切る際には、注意が必要である。(そしてこれがパーティションを破壊した原因である) FreeBSDやOpenBSDでは、そのOS用に指定したパーティション内でしかスライスを切れないようになっているが、 NetBSDはNetBSD用のパーティションを越えてスライスを切れてしまう。 このようにして切ったスライスにインストールしても、パーティションテーブルを破壊するのか、 起動はできないのだが。。。

具体的に今回作成したスライスを例に説明する。
スライスcがNetBSDパーティションを表し、これはセカンダリディスクのオフセットが 9767520位置から始まり、1861640(=始点9767520+サイズ9767520)で終っているを示す。 この範囲内でスライスを切らなくてならないため、スライスaのオフセットは0ではなく9767520である。 スライスaのサイズを2048256にしたならば、swap(スライスb)を作成する際のオフセットは、 スライスaの終点11815776(=aのオフセット9767520+サイズ2048256)を始点にする必要がある。 スライスe,fに関しても同様である(スライスdはセカンダリディスク全体を示す)。 要するに、NetBSDでのスライス作成は、必ずディスク全体でのオフセットをいれなくてはならないということである。

#        size   offset     fstype   [fsize bsize cpg/sgs]
  a:  2048256  9767520     4.2BSD     1024  8192    16   # (Cyl. 9690 - 11721)
  b:  1228752 11815776       swap                        # (Cyl. 11722 - 12940)
  c:  9767520  9767520     unused        0     0         # (Cyl. 9690 - 19379)
  d: 90069840        0     unused        0     0         # (Cyl.    0 - 89354)
  e:  5119632 13044528     4.2BSD     1024  8192    16   # (Cyl. 12941 - 18019)
  f:  1370880 18164160     4.2BSD     1024  8192    16   # (Cyl. 18020 - 19379)

Back to MENU

パッケージのインストール

これは前回と同じなので割愛。

Back to MENU

Xの準備

前回のインストール時にはxfree-4を入れたが、それは大きな間違いであった。 i815でXを起動するには、次の手順を踏めば良い。

  1. i815用agpgarti815-x11.tgzを入手
  2. i815-x11を# tar plzxvCf i815-x11.tgzで展開する。
  3. /デバイスノードapg0を作成し、/dev/agpgartをそのシンボリックリンクにする。
  4. # cd /dev
    # mknod /dev/agp0 c 82 0
    # ln -s /dev/agp0 /dev/agpgart
  5. /etc/lkm.confに下の1行を追加
  6. # path          options         entry           postinstall     output          when
    /lkm/agpgart.o  -               -               /lkm/agpgart_install    -      -
  7. /etc/rc.confに「lkm=YES」を追加
  8. i815-x11.tgz作者のXF86Configが/etc/XF86Configに入っているので、mvなどでこれを一旦退避して再起動する。
  9. agp0の認識に成功していれば、起動時のメッセージで次のメッセージが確認できる。
  10. NetBSD AGP GART interface v0.03 (c) Jeff Hartmann
     -- Experimental distribution, only i810 enabled
     Got pages for a 64 megabyte mapping for the agp aperature.
     i810_configure
  11. XF86SetupなどでXの設定を行う

XF86Setupがインストールされていないなら、pkgsrcを入れて /usr/pkgsrc/x11/XF86Setupでmake installすれば良い。

Back to MENU

Xのホイールマウスの設定

Xの設定は、XF86Setupで普通に行えば良いのだが、ホイールマウスを有効にするには Pointer Sectionを次のようにはする。

Section "Pointer"
   Protocol        "wsmouse"
   Device          "/dev/wsmouse0"
   ZAxisMapping    4 5
ちなみにNetBSDでの僕の設定は、次のリンク先の通りである。
参考:XF86Configファイル

Back to MENU

日本語環境の構築

ハードディスクが戻ってきても、日本語環境の構築が面倒なので 暫くはNetBSD、OpenBSDともインストールする気にならなかった。でも、他のOSが 一段落付いたら”退屈の虫”がうずきだし、再びNetBSDを入れてしまった。

どこまで出来るかは不明だが、Xで日本語環境を整えてみようと言う 初心者には壮大な計画を進行することにした。

日本語キー配列(jp106)

これはWebで検索したら一発で見つかった。 tackさんのウェブページキーボードが変 によると、次のコマンドでjp106キーボードに変更できる。

# wsconsctl -w encoding=jp

これを/etc/rc.localに記述すると、起動時に日本語キー配列になる。

Back to MENU


NetBSD 1.6E(Snapshot 20020804)

NetBSD1.6Eのインストール

インストールして放置されていたNetBSD1.5.2は、 USBデバイスを動かそうとした際に、 VineLinuxをインストールするために削除してしまった。「日本語環境を構築するぜ!」と 大見得を切ってみたが、かなり面倒そうであったのでいっそのことmultilingauge 対応の1.6のスナップショットを入れてみることにした。しかも、1.6ではagpgartに対応にもagcデバイス が対応しているのでXをi815で使うのにも苦労はなさそうだ。


  1. Snapshotがある場所
  2. NetBSD1.6はまだリリースされていないので、NetBSD-Currentのスナップ ショットとして入手する。Currentのスナップショットは、一般的には次の場所にある。

    {ftpサーバ}/pub/NetBSD/arch/{CPU名}/snapshot

    僕のPCはPentiumIIIで1.6のスナップショットが欲しいので具体的には 次の場所になる。

    {ftpサーバ}/pub/NetBSD/arch/i386/snapshot/20020807-1.6E


  3. どれをダウンロードするのか
  4. 上記のftpディレクトリに行くと、binary、installation、sourceという 3つのサブディレクトリが見える。インストールに必要なものは、installation/floppyに あるboot*.fsというファイル(bootイメージ)である。 PC環境によってどれを落とすかが決まるのだが、普通のデスクトップPCなので 僕はboot1.fs、boot2.fsを落とした。

    落としたbootイメージをフロッピーに書き込むには、Windowsならば installation/miscにあるRawrite32(rawr32.zip)を使うと楽である。rawr32.zipを ダウンロード後、解凍して出来るRawrite32.exeをダブルクリックするとRawrite32が 起動する。起動したRawrite32のウィンドウに、boot1.fsをドラッグ&ドロップし、 フロッピードライブにフロッピーを入れて「Write to Disk」ボタンを押すとインストール フロッピーができあがる(もちろんboot2.fsも同様)。


  5. インストール
  6. bootフロッピーができたので、次にインストールである。領域の作成は 1.5.2とほぼ同様である(参照:前々回前回)。インストールCDを使ったインストールは、パッケージ をCDから読みとるので楽だが、bootフロッピーを使った場合はネットワークを介して インストールすることになる
    ※ハードディスクなどの記録メディアにbinary/sets以下のファイルをコピーしておけば、 その記録メディアをマウントしてそこからインストールすることも出来ると思われる。

    1.6Eのインストーラでは、ブートセレクタをインストールするかと聞かれるが、 マルチブートにしているのでどちらも”No”を選択した。また、normalとserialどちらの ブートローダを使うかと聞かれたが、意味は知らないけどnormalを選択した。

    パッケージの選択では、全てを選択した。1.5.2ではXFree86が3.3.6だったり、 agpgartをカーネルがサポートしていなかったりでi815では苦労したが、 1.6ではagpgartが標準でサポートされ、XFree86は4.2.0なので僕のi815でもすぐにXが 使えるからである。

    さて、次のネットワークの設定→ネットワークインストールになる (設定の詳細は割愛)。NetBSDのインストールで特徴があるのは、ネットワークの設定の 確認を、設定されたDNSサーバにpingを打って確認することである。 僕はYahoo!BBのADSLなのだが、 このDNSサーバはpingに応答しないため、前記の確認では必ずエラーになる。そのような DNSサーバを使っている人は、他のOSなどでネットワークが正常に動いているようなら 無視して進めば良い。

    ネットワークの設定が終わると、ftpサーバの設定になる。 今回はDTIの ftpサーバを使ったので、次のように設定した。

    Host: ftp.dti.ad.jp
    Directory: pub/NetBSD/arch/i386/snapshot/20020807-1.6E/binary/sets

    これでネットワークからインストールが開始する。

  7. 時間の修正
  8. インストール中にタイムゾーンを設定するのだが、カーネルが PCのCMOSの時間をUTCと認識しているため、JSTを選択すると+9時間になってしまう。 これは次の方法で修正可能である。

    COMSの時間をJSTとする方法
    # cp /netbsd /netbsd.bak
    # gdb --write /netbsd
    (gdb) set rtc_offset=-540
    (gdb) quit

    また、カーネルの再構築を行うなら、次のオプションを付ければ良い。
    options RTC_OFFSET=-540

  9. Xの設定
  10. NetBSD 1.6系ではagpgartに対応しているので、パッケージでXを入れて しまえば、i815でもXの設定をするだけでXが起動する。僕は面倒なので設定が終わっている FreeBSDのXF86Configを持って来た。NetBSD固有の設定として、wsmouseを使って いるならばPointerセクションを下のようにする必要がある。

    XF86ConfigのPointerセクション
    Section "InputDevice"

    # Identifier and driver

        Identifier     "Mouse1"
        Driver   "mouse"
        Option "Protocol"    "wsmouse"
        Option "Device"      "/dev/wsmouse"
        Option "ZAxisMapping" "4 5"
    EndSection

  11. パッケージのインストール
  12. これは前々回に書いたとおり、pkgsrc.tar.gzを 用いた(別の方法では、pkg_addコマンドにURLという方法もある)。pkgsrc.tar.gzを /usrディレクトリで展開すればインストールされる。

    # mv pkgsrc.tar.gz /usr
    # tar zxvf pkgsrc.tar.gz

    また、カーネルソースsyssrc.tgzはルートディレクトリ/でインストールする。

    # mv syssrc.tgz /
    # tar zxvf syssrc.tgz

    ※とは言っても、先にpkgsrc.tar.gzをダウンロードしなくてはならない。 そのため、まずpkg_addコマンドでwgetをインストールした後、wgetでpkgsrc.tar.gz、syssrc.tgzを 落とすことになる。
    # pkg_add {ftpサーバ}/pub/NetBSD/packages/1.6/i386/net/wget-1.7.tgz
    # wget {ftpサーバ}/pub/NetBSD/packages/pkgsrc.tar.gz
    # wget {ftpサーバ}/pub/NetBSD/arch/i386/snapshot/20020807-1.6E/source/sets/syssrc.tgz

    pkgsrcをインストール後、bash、xfce、mozilla、sylpheed、kinput2、 canna-serverをインストールした。cannaserverをOS起動時に起動するため、/etc/rc.localに 次の行を書き加えた。

    if [ -f /usr/pkg/sbin/cannaserver ]; then
        /usr/pkg/sbin/cannaserver
    fi

    もし、cannaserverの起動で「Initialize failed」というメッセージが でるようなら、pkgsrc/inputmethod/canna-dictをインストールすれば無事に起動する。


  13. 日本語環境の構築
  14. カーネルがmultilingualeをサポートしているので、後はLinuxやFreeBSDと 同じである。xfceの日本語化は、Gentoo Linuxの場合 と同様に.xinitrcに下の行を書き加えることで可能であった。

    .xinitrcへの追記内容
    # Setting locale
    export LANG=ja_JP.eucJP
    export LANGUAGE=ja

    # Setting kinput2 and Canna
    if [ -f /usr/X11R6/bin/kinput2 ]; then
        kinput2&
        export XMODIFIERS=@im=kinput2
    fi


  15. カーネルの再構築
  16. これは簡潔且つ必要十分なガイドがNetBSDにあるのでそれを 参考にしてやった。

    1. まず、カーネルコンフィグレーションファイルがあるディレクトリに 移動する(もちろんrootでの作業である)
    2. # cd /usr/src/sys/arch/i386/conf

    3. GENERICファイルをコピーし、再構築用のファイルにする。 ここではMYKERNELと名付けている。
    4. # cp GENERIC MYKERNEL

    5. MYKERNELを編集する
    6. # vi MYKERNEL
      もしGENERICカーネルで問題なく動いているようなら、MYKERNELの不要箇所 をコメントアウトすればいい。コメントアウトして良いかどうか分からなけ れば、
      # dmesg |grep 文字列
      でデバイスがカーネルに認識されているかどうか確認すれば良い。

      また、時間の修正で述べたように、rtc_offset=-540 を付けた方が日本の場合は良いと思われる。

      options RTC_OFFSET=-540

      PS/2キーボードで日本語106を使うなら、次のオプションを 付けておくと、コンソールでのキーボードが日本語キーボードになる

      options PCKBD_LAYOUT=JP

      但し、これはUSBキーボードではちゃんと働かないようだ。。。

    7. カーネルの再構築を次の手順で行う
    8. # config MYKERNEL
      # cd ../compile/MYKERNEL/
      # make depend
      # make
      # mv /netbsd /netbsd.bak
      # cp netbsd /netbsd
      # reboot


  17. USBの活線挿抜(hotplug)
  18. Xを上記のように設定していれば、マウスも問題なく 挿抜できる(SANWAの5つボタンマウス MA-5UPOSもOK)。

    但し、1.5.3のXの設定のようにwsmouse0とすると、 活線挿抜できなくなるので注意が必要である (最初これにはまった。。。たぶんPS/2マウスの場合に0が付くようだ)。

    さらに、Nikon coolpix E775の活線挿抜を行ったところ、 messegeでは”could not 〜”とか言っているが、/dev/sd1と認識しているようだ。 そこで、次のコマンドを実行したところ、無事にマウント出来た。

    # mount -t msdos /dev/sd1e /mnt/nikon

    マウントできたので、デジカメから画像ファイルを移動したところ、ちゃんと Gimpで画像が表示された。FreeBSDと違って活線挿抜まで出来るとは、NetBSD恐るべし!


  19. 【危険】マルチブートでのFAT領域のマウント
  20. マウントしたいFAT領域がNetBSDと同じハードディスクにあれば、 NetBSDのFAQ が参考になる。もし、同じハードディスクになかったら?僕はマウント出来なかった。 以下、やったことを参考までに書いておくことにした。

    ウェブを検索すると、 K's PageのNetBSDに関する記述 が見つかる。その中の、BSD パーティションの作成・変更 が、NetBSDが入っていないハードディスクのパーティションをマウントする方法である。

    結論から書くと、前記の方法でやるとdisklabelを編集したハードディスクの mbr(たぶんパーティションテーブル)が上書きされる。データしか入っていないディスクなら あまり問題無いが、マルチブート環境のプライマリディスクのマスタディスクの場合(=僕の場合) 、ブートセレクタも消えることになる。

    これはLinuxのfdiskなどでパーティションの情報を保存しておけば復旧は可能 だが、今度はせっかく作ったdisklabelが消えてしまう。結局、NetBSDがプライマリのマスタの ディスクにインストールされていなければ、マルチブートを保ったままハードディスクの FAT領域をマウントすることはできないと思われる。これはおもいっきり不便だなぁ。。。

    以下、作業内容

    まず、RamFloppyなど のLinuxでfdiskを実行し、復元用に各領域のシリンダなどを控えておく。 また、Windowsの起動ディスクも必要になるかも知れない。これらを準備した上で 実行する。

    # mbrlabel wd0 > wd0.mbrlabel
    # disklabel wd0 >original.disklabel
    # cp original.disklabel temp.label
    # vi temp.label (wd0.mbrlabelを参考に編集)
    # disklabel -R -r wd0 temp.label
    ここでYesと答えると書き込まれる。

    上記の設定が終われば、マウントしたい領域に対応するデバイスを mount -t msdosでマウントできるようになる。 そして、リブート後はブートセレクタが消えていて立ち上がらない。。。

    上の状態では、パーティションテーブルにdisklabelが書き込まれている。 そのため、BSDパーティションを有効にしたLinuxのfdiskでは、disklabelが見えてしまい 編集しようとするとエラーになってしまう。disklabelを無効にするには、Windowsの 起動ディスクのfdiskを使えばいいように思われるがそれは危険である。というのは、 Windows版のfdiskではパーティションが見つからない。この状態では、何かパーティションを 作成しない限りパーティションテーブルが上書きされることはない。 そこで、パーティションを作ればいいのだが、復元したいパーティションとパーティションの 位置、大きさ、タイプが合わないと、Linuxのfdiskで復元しても壊れている可能性がある からだ(Windowsのfdiskもパーティションテーブル以外をいじらないなら問題ないのだが、 僕にはどうなのかは不明である)。そこで、次のようにNetBSDで元のdisklabelを書き戻し て復元する。

    # disklabel -R wd0d original.disklabel
    # disklable wd0
    0: (unused)
    1: (unused)
    2: (unused)
    3: (unused)

    0から3がunusedになっていれば、後はLinuxのfdiskでメモっておいた 元々のパーティションになおして上げれば良い。

  21. 参考:各種設定ファイル

NetBSD-CURRENTへのアップデート

NetBSDドキュメントの NetBSD-currentの追跡を参考に、カーネルだけではなくシステム全体のアップデートを行った。 NetBSD-currentの追跡を見れば済むことだが、僕なりの解釈(誤解かも?)を交えて書いてある。

  1. supによるソースの取得
  2. まず、ソースファイルを取得しなくてはならない。CVSなどでCVSツリーに 変更を加えるのではなく、単にCVSツリーを自分のPCに取り込みたいだけなら、一緒にpkgsrc も更新できるsupが楽だと思う。 currentのソースを/usr/src以下に取り込むには、設定ファイル(supfile)を /usr/local/example/sup/以下にあるファイルを適当なディレクトリにコピーすれば良い。

    # cp /usr/share/examples/supfiles/sup.netbsd.org  /etc/supfile
    # sup -v /etc/supfile

    これで/usr/src以下に配布物のソースツリーがCVSサーバからコピーされる。

  3. 配布物の構築
  4. supが終了したら、 NetBSD-currentの追跡の通り、次のようにして配布物を構築する。

    # cd /usr/src
    # ./build.sh -d -D DESTDIR -R RELEASEDIR

    もし、以前に./build.sh〜を実行していると、途中でエラーになるようだ。 そんなときは、先に/usr/src/DESTDIRと/usr/src/RELEASEDIRを削除してから ./build.sh〜を実行すると良い。

  5. 既存システムのアップデート
  6. 新しいカーネルにしてから配布物をインストールするのだが、 新しいカーネルは”現在”のシステムではコンパイルできないかも知れない。 そのため、新しいカーネルをコンパイルするためのtoolを構築する。

    # cd /usr/src
    # ./build.sh -t

    この際にエラーが出てコンパイルが止まるようなら、/usr/obj/*を 削除してから上記を実行すると良い(/usr/src/objは/usr/objへのシンボリックリンク)。

    これで新しいカーネルのコンパイル準備が出来たので、次のようにして 新しいカーネルを作る。

    # cd /usr/src/sys/arch/i386
    # /usr/src/tools/tools.i386-NetBSD1.6J/bin/nbconfig GENERIC
    # cd ../compile/GENERIC
    # /usr/src/tools/tools.i386-NetBSD1.6J/bin/nbmake-i386
    # cp /netbsd /netbsd.back
    # cp netbsd /netbsd 
    # reboot

    再起動して新しいカーネルで立ち上がった後、次のようにして配布物を インストールし、システム全体をアップデートする。

    # cd /usr/src
    # ./build.sh

  7. etcupdateによる/etcの更新
  8. これまででシステム、カーネルはアップデート出来たのだが、 /etc、/devなどはアップデートされない。これをやってくれるのが、etcupdateである。 といっても、NetBSDの配布物に入っているのでは無いので pkgsrcからインストールする必要がある。

    # cd /usr/pkgsrc/sysutils/etcupdate
    # make install clean

    etcupdateのインストールが終了した、次のようにして/etc、/devなどを アップデートする。

    # cd /usr/src
    # etcupdate 

    etcupdateで、元ファイルと新規フィアルに差があると、元ファイルの 記述は”-”で、新しいファイルのは”+”で示される。単に+しか無いなら、”i”を選択 してインストールすればよい。やばいかな?と思ったら、何も入力せずにリターンキーを 押して、元ファイルをそのままにしておけば良い。新しいファイル群は/tmp/temproot以下 にあるので、後からじっくり見てどうするかを決めればいいからである。(但し、etcupdate を実行する前に再起動してしまうと/tmp以下が削除されてしまうので注意)

  9. pkglintによるパッケージの更新
  10. せっかくシステムを更新したのだから、pkgsrcでインストールした ものもアップデートしたくなる。そんなときに便利なのが、pkglintである。 これはpkgsrcから次のようにしてインストール出来る。(参考: NetBSDパッケージコレクション

    # cd /usr/pkgsrc/pkgtools/pkglint
    # make install clean

    pkglintがインストール出来たら、次のコマンドでバージョンアップ しているpkgsrcを知ることが出来る。

    # lintpkgsrc -i

    これで表示されたパッケージをアップデートしていけばよい。 例えば、gimp-baseが表示されたら、次のようにしてアップデートする。

    # cd /usr/pkgsrc/graphic/gimp-base
    # make update

    アップデートする数が多いとちょいと面倒だが、これでpkgsrcも アップデート出来る。ちなみに2002年10月26日現在ではNetBSD-1.6Jである。

Back to MENU