玄箱X4/初期設定
出典: Fukudat.com
< 玄箱X4
玄箱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
で変更する.
