玄箱X4/初期設定

提供: fukudat
移動: 案内検索

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

目次

必要な物

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

玄箱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-シリアル変換ケーブルがあってもクロスケーブルは必要.

準備

HDDの取り付け

製品に添付されているマニュアル通りに組み立てる.特に難しいところはなし.要所に手回しネジが用いられており,メンテナンスしやすく考えられている.

USBドライブの準備

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

TFTPサーバーの準備

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

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

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

セットアップ

ブート

  • 玄箱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 として認識されていた.

パーティション作成とRAIDの構成

  • 次に,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

さて,RAIDの構成が完了したときの /proc/mdstat の中身は以下の様になっているはず.

$ cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] 
md1 : active raid0 sdd1[1] sdc1[0]
      2007808 blocks 64k chunks
      
md2 : active raid5 sdd2[3] sdc2[2] sdb2[1] sda2[0]
      12024384 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      
md3 : active raid5 sdd4[3] sdc4[2] sdb4[1] sda4[0]
      2912230848 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      
md0 : active raid1 sdb1[1] sda1[0]
      1003904 blocks [2/2] [UU]
      
unused devices: <none>

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が立ち上がる.

その後の設定

ネットワーク設定

  • 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
13 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]

アップデート

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

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

タイムゾーン

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

# dpkg-reconfigure tzdata

で変更する.

個人用ツール
名前空間

変種
操作
案内
ツールボックス