玄箱X4/初期設定

出典: Fukudat.com

玄箱X4の初期設定手順の覚え書き.一気にRAIDの構成も行ってしまった.

目次

1 必要な物

セットアップには,以下のものが必要.

玄箱X4
当然.
SATA HDD
1個以上4個まで.RAIDを組むならば同じものを2個以上.今回はHGSTの1TBを4個使用.
PC
普通のPC.ただしシリアルポートまたはUSBポートが必要(シリアルポートがあるなら,下のUSB-シリアル変換ケーブルは不要).
USBドライブ
1GB以上の容量のあるUSBメモリまたはUSB接続のHDDドライブ.ブートイメージを玄箱X4に送り込むのに使う.
TFTPサーバーソフト
玄箱X4が最初に起動する際に必要なファイルを供給するTFTP(RFC1350)サーバー.一時的に使用するだけなので,何でもよい.例えばPoor TFTP Server for Win32.FTPサーバーとは違うので注意
シリアルクロスケーブル(9pin)
シリアルポート(所謂 RS-232C)経由で接続するコンソールを使うために使用する.蛇足だが,シリアルケーブルにはストレートケーブルとクロスケーブルがあるので注意.モデムに使われているのはストレートケーブル.
USB-シリアル変換ケーブル
最近はPCにシリアルポートがないので変換ケーブルが必要.USB-シリアル変換ケーブルは、約3,000円で数社から発売されていてる.USB-シリアル変換ケーブルをgoogleで検索.USB-シリアル変換ケーブルがあってもクロスケーブルは必要.

2 準備

2.1 HDDの取り付け

製品に添付されているマニュアル通りに組み立てる.

特に難しいところはなし.要所に手回しネジが用いられており,メンテナンスしやすく考えられている模様.

2.2 USBドライブの準備

  • 用意したPCにUSBドライブをつなぎ,FAT32でフォーマットする.
  • USBドライブのルートディレクトリに,製品添付のCD-ROMの内容をすべてコピーする.
  • USBドライブをPCから取り外し,玄箱X4のUSBポートに接続しておく.

2.3 TFTPサーバーの準備

  • PCのIPアドレスを 192.0.11.1 に変更する(ネットワーク→プロパティ→ローカルエリア接続のプロパティ→インターネットプロトコル(TCPIP)のプロパティを開き,「次のIPアドレスを使う」を選んでこのアドレスを入力する).
  • PCと玄箱X4をetherケーブルで直結する.
  • 製品添付のCD-ROMの「firmware」フォルダ内の「initrd.buffalo」と「uImage.buffalo」の2つのファイルをPC上の任意のフォルダにコピーする.
  • TFTPサーバーでそのフォルダーを公開する.

2.4 シリアルコンソールの準備

  • PCのUSBポートにUSB-シリアル変換ケーブルを差し込み,シリアル側にクロスケーブルをつないで,その反対側を玄箱X4の背面のシリアルポートにつなぐ.つまり
    PC[USB port]→[USB-シリアル変換ケーブル]→[シリアルクロスケーブル]→[Serial Port]玄箱X4
  • 適当なシリアル通信ソフト(XPならスタート->アクセサリ->通信->ハイパーターミナルなど)をつかってシリアルポート(COM1 or COM3)に接続し,次のように設定する.これが玄箱X4のコンソールとなる.
転送速度 115,200bps
データビット 8bit
パリティ なし
ストップビット 1bit
フロー制御 なし

3 セットアップ

3.1 ブート

  • 玄箱X4の背面のスイッチをオンにし,前面の電源スイッチを押して電源を入れる.
  • 自動的にTFTPサーバーからブートイメージを取得して立ち上がり,しばらくすると,シリアル接続したコンソールに次のようなプロンプトが現れる.
init started: BusyBox v1.7.0 (2007-10-15 19:49:46 IST)
starting pid 390, tty '': '/etc/init.d/rcS'
starting pid 392, tty '': '/bin/sh'
# ech0: link up, full duplex, speed 1 Gbps
この状態でshのプロンプト(コマンド入力待ち)になっている.
  • fdiskを使ってディスクを認識しているかどうか確かめる.
# fdisk -l
今回は,HDDを4台接続していたのでそれが /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd として認識され,USBドライブが /dev/sde1 として認識されていた.

3.2 パーティション作成

  • 次に,partition.sh コマンドを使って,Linuxをインストールするパーティションを作成する.
# /partition.sh sda sdb sdc sdd
Do you really want to destroy existing data on /dev/sda:(y/n)
当然 y と答える.partition.shは続けて /dev/sdb, /dev/sdc, /dev/sddも同様にパーティションを切るか聞いてくるので,y と答える.
全てのディスクに次のようなパーティションが作成される.
# fdisk -l
   Device Boot      Start     End      Blocks  Id System
/dev/sda1               1     125     1004031  83 Linux
/dev/sda2             126     624     4008217+ 83 Linux
/dev/sda3             625     749     1004062+ 82 Linux swap / Solaris
/dev/sda4             750  121601   970743690  83 Linux

続いて,partition.shはRAIDを構成するか聞いてくる.

Continue creating array? (y/n)

y と答えるとRAID1の/dev/md0, /dev/md1が作成されて,それらが/bootと/になる. しかし,ここではRAID5を組みたいので,とりあえず n と答えと,/partition.sh はエラーで終了する.

次に手動でRAIDを構成する.

# mdadm -C /dev/md0 -l 1 -n 2 /dev/sd[ab]1                       # /boot disk (RAID-1)
# mdadm -C /dev/md1 -l 0 -n 2 /dev/sd[cd]1                       # /tmp  disk (RAID-0)
# mdadm -C /dev/md2 -l 5 -n 4 /dev/sd[abcd]2                     # /     disk (RAID-5)
# mkfs.ext3 /dev/md0
# mkfs.ext3 /dev/md1
# mkfs.ext3 /dev/md2
# mount /dev/md2 /mnt/disk1
# mkdir /mnt/disk1/boot
# mkdir /mnt/disk1/tmp
# mount /dev/md0 /mnt/disk1/boot
# mount /dev/md1 /mnt/disk1/tmp

これは partition.sh がRAID1を作ろうとしたのを n と答えてスキップした代わりに,手動で以下のようなRAIDを作成している.

  • /dev/md0 ... /boot にマウントする RAID1
  • /dev/md1 ... /tmp にマウントする RAID0
  • /dev/md2 ... / にマウントする RAID5

/bootをRAID1にしたのは理由がある.U-BOOTという玄箱X4のブートローダーがカーネルイメージを読み取ることができるのはext2と互換性のあるファイルシステムからだけであり,RAID0やRAID5にするとそれができないからである.もっとも/bootは通常頻繁にはアップデートしないので,バックアップコピーさえとっておけば,RAIDを組む必要はないような気もする.

mdadmがRAIDを再編成するのには数分かかるが,待たずに進めてよい. partition 4(/dev/sd[abcd]4)のRAID5は,次のコマンドでOSのインストールが終わった後に構成する(そうしないと,インストールにとても時間がかかる).

# mdadm -C /dev/md3 -l 5 -n 4 /dev/sd[abcd]4      # /home disk (RAID-5)

この後のインストール作業でメモリを使い果たしてもよいように,一応 swap を作っておく.

# mkswap /dev/sda3
# swapon /dev/sda3
# cat /proc/swaps

3.3 Debianのインストール

  • install.sh を実行して Debian をインストールする.このスクリプトは,
    • /mnt/disk1 に root partition (/dev/md1) が
    • /mnt/disk1/boot に boot partition (/dev/md0) が
それぞれマウントされていることが前提となっているので注意(↑でそのようにマウントしている).
# /install.sh -D /dev/sde1 -m /mnt/usbdisk1 -t vfat ./
ここでは,USBドライブのデバイスとして /dev/sde1 を指定した.接続したHDDの個数が1個なら /dev/sdb1 だし,2個なら /dev/sdc1 となるので注意する.fdisk -l でUSBドライブのデバイスがなんであるか確認しておく.
しばらく待ってインストールが完了すると,自動で rebootするのだが / ファイルシステムがマウントできないと言って panic して reboot する(ほっておくと無限に繰り返す).次の2点の修正する必要がある.
  • /etc/fstab
  • boot loaderのパラメータとしてroot filesystemのデバイスパラメータとなる環境変数 bootargs_root
  • そこで,reboot して "Hit any key to stop autoboot: " というプロンプトが出ている間にキーを押して TFTP bootさせ,install.shを起動したのと同じシェルに入って,以下のコマンドを実行する.
# mdadm -A /dev/md2 /dev/sd[abcd]2        ... このコマンドは本来不要だが/dev/md2デバイスが作るために実行.エラーが出るが無視.
# mount /dev/md2 /mnt/disk1
# vi /etc/fstab
... 以下のように編集 ...
/dev/md0   /boot ext3 defaults 1 2
/dev/md1   /tmp  ext3 defaults 1 2
/dev/md2   /     ext3 defaults 1 1
/dev/sda3  swap  swap defaults,pri=9 0 0
/dev/sdb3  swap  swap defaults,pri=9 0 0
/dev/sdc3  swap  swap defaults,pri=9 0 0
/dev/sdd3  swap  swap defaults,pri=9 0 0
#/dev/sda4 /mnt/disk1 xfs defaults 1 2      ... コメントアウト
... 残りはそのまま
完了したら,リブートする.
  • 再び "Hit any key to stop autoboot: " でキーを押して Marvell のシェルに入り,以下のコマンドを実行する.
Marvell>> setenv bootargs_root root=/dev/md2 rw panic=5
Marvell>> boot
ここで /dev/md2 はroot filesystemのデバイスである.
  • これでインストールしたDebianがブートするはずである.もしうまくいったら,次の login prompt が表示されているはずである.
Debian GNU/Linux lenny/sid KUROBOX-TERA ttyS0

KUROBOX-TERA login: root
rootでログインすると初期パスワードの設定を求められる.
  • 最後の仕上げにもう一度 Marvellのシェルに入って,次のコマンドを実行する.
Marvell>> saveenv
これで次回からのリブートでは勝手にDebianが立ち上がる.

4 その後の設定

4.1 ネットワーク設定

  • eth0 を落とす.
# ifdown eth0
  • PCと接続していたEtherケーブルを,普通のLAN Switchにつなぎかえる.ただし,LANではブロードバンドルーターなどでDHCPサーバーが動いていると仮定する.
  • 次のファイルを環境に合わせて編集する.
/etc/network/interfaces 
/etc/hosts 
/etc/hosts.allow 
/etc/resolv.conf
/etc/hostname
  • eth0 を上げる.
# ifup eth0
するとDHCPでアドレスを取得してネットワークにつながる.
  • デフォルトで次のサービスが起動している
ポート サービス名 サーバー
80 www Web Server (apache2)[1]
111 sunrpc RPC 4.0 portmapper
139 netbios-ssn NETBIOS session service
445 microsoft-ds Samba (CIFS)
901 swat Sambaの設定サービス
3260 iSCSI target iSCSI Enterprise Target daemon (ietd)[2]
10000 webmin webベースのUNIX用のシステム管理ツール[3]

4.2 アップデート

とりあえず,ソフトウェアの更新をしておく

  • aptデータベースの更新
# apt-get update
  • パッケージのアップデート
# apt-get upgrade

4.3 タイムゾーン

黙っているとUTCになっている.日本時間で表示して欲しければ,

# dpkg-reconfigure tzdata

で変更する.