トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

マイティーサーバのCentOS5をNetBSDに置き換える方法

がんばって、マイティーサーバのCentOS5をNetBSD 5に置き換えたよー。

※下記の試行をやるのはやることの可否も含めて自己責任で。マイティーサーバのサポートに泣きつかないように。

※新規契約のひとは、お試し期間があるので、まずは契約前にお試しを申し込んで、よく確認。

前書き

マイティーサーバはシリアルコンソールがついている大変ありがたいレンタルサーバです。だたし、私はLinux or CentOSは好きじゃない。好き嫌いはイケナイことなので、がまんしてつかっていましたが、yum updateするだけで謎のエラーが出たりします。

困ったもんだと思っていましたが、google大明神にOSを置き換えたいとお願いしてみたら、OS入れ替えをやった人がいるよーって、お告げをいただいたので、根性で(?)やってみることにしました。

はじめに

まずは、ネットワークの情報を得ておきます。どっちのインターフェースが外側なのか(MACアドレスとIPアドレスの関係をメモっておく)、とか。あと、ルーティングテーブルやデフォルトルートと、DNSの情報(/etc/resolv.conf)をメモっておきます。

バックアップNASがある契約(エントリープラン;今は無くなった)だったので、その情報(NASのIPアドレスや、exportの情報、/etc/fstab)もメモっておきます。(開始時にメールでも来ているはずなので、それを探し出しておいてもよいです。)

次に、どうやっておきかえるかを考えます。NetBSD風にいうと、MBRパーティションは、

  • 0: Linux native: /boot (100M)
  • 1: Linux native: / (16G)
  • 2: Linux native: /home (残り)
  • 3: Linux swap : swap (1G)

でした。(Linux風にいうと、MBRパーティションの0 = /dev/hda1 です。)

最初は、INSTALLカーネルを用いてbootしてインストールしようと考えていましたが、シリアルコンソールに出てくれません。何か方法があるのかもしれませんが、あまり時間をかけたくなかったので、2段階のインストールを考えました。

  • 第0パーティション(/boot)はそのまま残す。
  • grubもそのまま。(NetBSDは、grubから起動。)
  • 最初に第3パーティション(Linux swap)をつかって、NetBSDを仮インストール。
  • 仮インストールしたNetBSDを起動し、第2パーティション(/home)にNetBSDをインストール。
  • 第3パーティション(Linux swap)は、そのままNetBSDでもswapとして利用。
  • 第1パーティションは、とりあえずおいておく。

第一段階:仮インストール

NetBSD5は、ext2ファイルシステムをデフォルトで扱えます。よって、ext2上にインストールします。まず、CentOS上で不必要なプロセスを停止し、実メモリだけで動くようにします。(Apache等、明らかにいらないものを停止するだけで大丈夫です。)、次に、swapをoffにします。/etc/fstabの該当行をコメントアウトして、再起動しましょう。次に、fdisk or cfdiskをつかって、swapパーティションを、ext2パーティションに、パーティションIDを変更します。変更できたら、mkfs して、ext2パーティションにします。この時注意することは、inode sizeを128 bytesにすることです。(NetBSD 5系は、ext2のinode sizeを128bytesであると仮定しています。mkfs.ext2 -I 128 /dev/hda4 でよいはずですが、manをちゃんと見て下さい。)

ext2になったら、てきとうなところにmount pointをつくってmountします(例:/mnt/hda4)。mountできたら、次は、NetBSDのインストールです。NetBSD/i386 5.0系の最新(netbsd-5枝のdaily snapshot)をとってきて、/var/tmpとかに用意しましょう。"x"で始まるものは必要ありません。"kern-"で始まるものは、kern-GENERIC.tgzをとってきて下さい。とってきたら、さっきmountしたパーティションに展開しましょう。展開するときに、pオプションをつけ忘れないように。つまり、

   tar xzfp base.tgz -C /mnt/hda4

する、ということです。展開するのは、base.tgzとetc.tgzだけでよいですが、全部展開しても、とくに問題ありません。

次に起動してくるのは、この仮インストールです。動くようにしましょう。とりあえず、/mnt/hda4/etc/rc.conf を書き換えて、

 rc_configured=YES

にしましょう。あとは、swapを使わないことを指定するため、

 no_swap=YES

を書いておきましょう。

次に、/mnt/hda4/etc/fstabを書きます。disklabelをLinuxから書くのはこわいので、デフォルトで与えられるものを使います。NetBSDでは、mbrパーティションの順番に、e,f,g,hとふられますので、hパーティションにみえるはずです。ゆえに、

 /dev/wd0h / ext2fs rw 1 1
 kernfs /kern kernfs rw
 procfs /proc procfs rw

としましょう。mkdir /mnt/hda4/proc /mnt/hda4/kern もしておきます。

シリアルコンソールからログインできるようにしておきましょう。/mnt/hda4/etc/ttysのconsole行を

 console "/usr/libexec/getty std.115200" vt100   on secure

としておきます。

あとは、grubからbootできるようにします。

 title NetBSD
 	root (hd0,3)
 	kernel /netbsd console=com console_speed=115200

と /boot/grub/grub.conf に追記します。

最後に、本番のインストールのために、第2パーティションの中身(つまり、/dev/hda3 = /home)を退避して、unmountしておきます。unmountできないひとは、rootでloginしてunmountして下さい。シリアルコンソール経由でもよいですし、リモートからrootログインできるようにしてもよいです。(/etc/securettyにpts/0を加えて、/etc/ssh/sshd_configのPermitRootLoginをyesにして、sshdをrestart。)unmountできたら、(第0パーティションの)/homeに中身を戻しておきましょう。そして、/etc/fstabの/homeの行をコメントアウトしておきます。

第二段階:インストール

 ログイン

シリアルコンソールを接続しておいて、サーバを再起動します。ここからは、シリアルコンソールの作業です。

grubの画面が出ました。NetBSDを選択します。

起動の途中でいろいろ訊かれます。

  • root device (default wd0a): wd0h
  • dump device (default wd0b): none
  • file system (default generic): ext2fs
  • init path (default /sbin/init):

と答えればよいです。

login: まで到達すれば、rootでパスワードなしでログインできます。

loginできました。

 fdisk & disklabel & newfs

fdiskして、第2パーティションのidをNetBSD(169)に変えます。重要なことは、それ以外のことをしないことです。

 The bootselect code is not installed, do you want to install it now? [n]

 Update the bootcode from /usr/mdec/mbr? [n]

などと訊かれますが、n としておくというわけです。

次に、disklabelを書きます。ここで書くdisklabelは、インストールのためのラベルです。

 8 partitions:
 #        size    offset     fstype [fsize bsize cpg/sgs]
  d: 156301488         0     unused      0     0        # (Cyl.      0 - 155060)
  e:    208782        63 Linux Ext2      0     0        # (Cyl.      0*-    207*)
  f:  33559785    208845 Linux Ext2      0     0        # (Cyl.    207*-  33500*)
  g: 120423240  33768630     4.2BSD      0     0     0  # (Cyl.  33500*- 152968*)
  h:   2104515 154191870 Linux Ext2      0     0        # (Cyl. 152968*- 155055*)

gだけを4.2BSDにします。

パーティションを複数にわけてもいいのですが、ここでは面倒なので、1パーティションにしています。

あとは、newfsします。

 # newfs /dev/rwd0g

 setsの展開

次に、インストールです。仮インストールのところで、インストールすべきファイルをとってきてあると思うので、それを使います。

 # mount -t ext2fs /dev/wd0f /mnt
 # mount -t ext2fs /dev/wd0e /mnt/boot
 # cd /mnt/var/tmp
 # mkdir /mnt2
 # mount /dev/wd0g /mnt2
 # tar xzfp base.tgz -C /mnt2
 # tar xzfp comp.tgz -C /mnt2
 ...

 最小限の設定

インストールができたら、必要最小限の設定です。仮インストールとほぼ同じになりますが、再掲します。

まず、/mnt2/etc/rc.confを書きます。rc_configured=YES です。

次に、/mnt2/etc/fstabを書きます。NetBSDでは、やっぱり / はaパーティションにしたいですし、swapはbパーティションにしたいので、そのようにします。

 /dev/wd0a       /       ffs     rw,log,noatime,nodevmtime       1 1
 /dev/wd0b       none    swap    sw                      0 0
 tmpfs           /tmp    tmpfs   rw
 kernfs          /kern   kernfs  rw
 procfs          /proc   procfs  rw

としました。

シリアルコンソールからログインできるようにしておきます。/etc/ttysのconsole行を

 console "/usr/libexec/getty std.115200" vt100   on secure

としておきます。

ネットワークの設定等は、NetBSD化が終わったあとに行います。

 grubの設定

あとは、grubからbootできるようにします。

 title NetBSD/i386
 	root (hd0,2,a)
 	kernel /netbsd console=com console_speed=115200

と/mnt/boot/grub/grub.confを書き変えます。

 fdisk & disklabel

まず、swapは、現在仮インストールしているMBR第3パーティションにします。(万が一、Linuxを起動してもよいように、swapを共用化するため、先頭の8セクタを使わないようにします。つまり、offsetを8大きくし、サイズを8小さくします。)

あと、現在インストール作業をしているgパーティションをaパーティションに、swapをbパーティションにするように、します。

下記のようになりました。(余談ですが、diskをすべて使っていないことがわかります。)

 # fdisk wd0
 <snip>
 Partition table:
 0: Linux native (sysid 131)
     start 63, size 208782 (102 MB, Cyls 0-12), Active
         PBR is not bootable: All bytes are identical (0x00)
 1: Linux native (sysid 131)
     start 208845, size 33559785 (16387 MB, Cyls 13-2101)
  PBR is not bootable: All bytes are identical (0x00)
 2: NetBSD (sysid 169)
     start 33768630, size 120423240 (58800 MB, Cyls 2102-9597)
         PBR is not bootable: All bytes are identical (0x00)
 3: Linux swap or Prime or Solaris (sysid 130)
     start 154191870, size 2104515 (1028 MB, Cyls 9598-9728)
  PBR is not bootable: All bytes are identical (0x00)
 <snip>
 # disklabel wd0
 <snip>
 8 partitions:
 #        size    offset     fstype [fsize bsize cpg/sgs]
  a: 120423240  33768630     4.2BSD      0     0     0  # (Cyl.  33500*- 152968*)
  b:   2104507 154191878       swap                     # (Cyl. 152968*- 155055*)
  c: 120423240  33768630     unused      0     0        # (Cyl.  33500*- 152968*)
  d: 156301488         0     unused      0     0        # (Cyl.      0 - 155060)
  e:    208782        63 Linux Ext2      0     0        # (Cyl.      0*-    207*)
  f:  33559785    208845 Linux Ext2      0     0        # (Cyl.    207*-  33500*)
 <snip>

仕上げ

 いったんLinux側を上げる

いったんLinux側を上げて、mkswapしておきます。

 # mkswap -L SWAP-hda4 /dev/hda4

 NetBSDを起動する

あとは、再起動すればいよいよNetBSD化も終わりです。

grubの画面が出ました。NetBSD/i386を選択します。

login: まで到達すれば、rootでパスワードなしでログインできます。

loginできました。

その他

 残作業など

  • rootのパスワードをつける。
  • /dev/wd0e をmountして、grub.conf を default=2 にして、NetBSDをデフォルト起動とする。
  • ネットワーク設定。わからなくなったら、/dev/wd0f を mount して、その中のetcの下をのぞく。
  • sshdを立ち上げれば、あとは、シリアルコンソールはいらないyo。
  • etc etc....

 参考

  • dmesg.txt
  • 主に海外から、ssh/ftpに対する辞書攻撃がそのうち来ます。アクセス制限をかけるか、何かした方がよいです。
  • NFSによるバックアップは、NFSサーバまでのネットワークを、他人サーバと共用しているのでちうい。
    • cgdを使って、暗号化ディスクイメージをつくって、それをNFSサーバへおいておく、という方法がつかえるかな。NetBSD Guideに参考情報があります。
  • ぼくに泣きつかれても困ります。自分でがんばりましょう。手元でシミュレーションしておくのも手です。

間違いの指摘や、ご意見などは、FrontPageにある連絡先にメールを下さるとうれしいです。

最終更新時間:2010年07月12日 08時51分36秒