2013年5月16日木曜日

KURO-BOX/T4(Wheezy)にSSHサーバー

ずっとシリアルコンソールでやってたのでsshdが無いの気づかなかった...
ネットワーク越しに管理するには必要ですね。

1. sshdの設定
パッケージをインストールします。
KURO-NAS-T4:~# apt-get install ssh
rootのパスワードを設定します。
KURO-NAS-T4:~# passwd
Enter new UNIX password:新しいパスワード
Retype new UNIX password:もう一度新しいパスワード
設定が終わったら、クライアントからsshで接続してみます。

KURO-BOX/T4(Wheezy)にNTP

ファイルサーバーとして使えるようにしたKURO-BOX/T4に時間合わせ用のNTPを入れます。

1. NTPの設定
パッケージをインストールします。
KURO-NAS-T4:~# apt-get install ntp
設定ファイルを編集します。
KURO-NAS-T4:~# vi /etc/ntp.conf
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst
 ↓に変更
server -4 ntp.nict.jp
server -4 ntp.jst.mfeed.ad.jp

設定が終わったら再起動します。
KURO-NAS-T4:~# service ntp restart

KURO-BOX/T4(Wheezy)でファイルサーバー

3TBでも起動させることが出来たので、もうちょっとちゃんと使ってみることにします。
といっても、u-bootはRAID対応してないようですし、パーティションリサイズしたりするのも面倒なので、結局もともと付いていた250GBのHDD2台(sdaとsdb)と3TBのディスク2台(sdcとsdd)使うことにしました。

/dev/sda1 /boot
/dev/sda2 /root
/dev/sda3 Swap用
(/dev/sdbはsdaのバックアップ用) /dev/md0 (/dev/sdc1 /dev/sdd1) 共有フォルダ用

となるようにします。

1. システムのインストール

/dev/sdaにシステムのインストールをします(LennyからWheezyまであげます)。
2. システムの設定
日本語(UTF-8)が正しく見えるように設定します。
KURO-NAS-T4:~# vi /etc/locale.gen
#ja_JP.UTF-8 UTF-8
 ↓に変更
ja_JP.UTF-8 UTF-8
KURO-NAS-T4:~# locale-gen
KURO-NAS-T4:~# update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
KURO-NAS-T4:~# source /etc/default/locale
IPv6を無効にして、IPアドレスをDHCPから固定に設定します。
KURO-NAS-T4:~# vi /etc/network/interfaces
# The primary network interface
auto eth0
iface eth0 inet dhcp
 ↓に変更
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.233
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

KURO-NAS-T4:~# echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
KURO-NAS-T4:~# sysctl -p
KURO-NAS-T4:~# ifdown eth0
KURO-NAS-T4:~# ifup eth0
ホスト名も変更しておきます。
KURO-NAS-T4:~# vi /etc/hostname
KURO-NAS-T4
 ↓新しいホスト名に変更
snoopy
KURO-NAS-T4:~# vi /etc/hosts
127.0.1.1 KURO-NAS-T4
 ↓新しいホスト名に変更
127.0.1.1 snoopy
KURO-NAS-T4:~# service networking restart
3. バックアップディスクの準備
2台目のHDD(sdb)にパーティションを作成します。各パーティションのサイズは1台目に合わせます。
KURO-NAS-T4:~# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) mklabel gpt
(parted) mkpart /boot 34 1000000
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) mkpart / 1000001 11000000
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) mkpart swap linux-swap 11000001 15000000
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) quit
パーティションの設定が終わったら、ファイルシステムを作成します。
KURO-NAS-T4:~# mkfs.ext3 /dev/sdb1
KURO-NAS-T4:~# mkfs.ext3 /dev/sdb2
KURO-NAS-T4:~# mkswap /dev/sdb3
次にバックアップの設定をします。
KURO-NAS-T4:~# apt-get install rsync
KURO-NAS-T4:~# mkdir /mnt/sdb
KURO-NAS-T4:~# mount /dev/sdb2 /mnt/sdb
KURO-NAS-T4:~# mkdir /mnt/sdb/boot
KURO-NAS-T4:~# mkdir /mnt/sdb/proc
KURO-NAS-T4:~# mkdir /mnt/sdb/sys
KURO-NAS-T4:~# mount /dev/sdb1 /mnt/sdb/boot
KURO-NAS-T4:~# rsync -a --delete --exclude=/proc/ --exclude=/mnt/ --exclude=/sys/ / /mnt/sdb/
問題なく終わったら毎日実行するようにします。
KURO-NAS-T4:~# crontab -e
0 5 * * * /usr/bin/rsync -a --delete --exclude=/dev/ --exclude=/proc/ --exclude=/mnt/ --exclude=/proc/ --exclude=/mnt/ --exclude=/sys/ / /mnt/sdb/ > /dev/null 2>&1
KURO-NAS-T4:~# vi /etc/fstab
 ↓最後に追加
/dev/sdb2 /mnt/sdb ext3 defaults 0 2
/dev/sdb1 /mnt/sdb/boot ext3 defaults 0 2
KURO-NAS-T4:~# mount /dev/sdb2 /mnt/sdb
KURO-NAS-T4:~# mkdir /mnt/sdb/boot
KURO-NAS-T4:~# mkdir /mnt/sdb/proc
KURO-NAS-T4:~# mkdir /mnt/sdb/sys
KURO-NAS-T4:~# mount /dev/sdb1 /mnt/sdb/boot
KURO-NAS-T4:~# rsync -a --delete --exclude=/proc/ --exclude=/mnt/ --exclude=/sys/ / /mnt/sdb/
4. 共有フォルダの設定
共有フォルダ用のディスク(sdcとsdd)のパーティションの設定をします。
KURO-NAS-T4:~# parted /dev/sdc
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdc will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
(parted) unit s
(parted) mkpart share 2048 -1
Warning: You requested a partition from 2048s to 5860533167s.
The closest location we can manage is 2048s to 5860533134s.
Is this still acceptable to you?
Yes/No? y
(parted) set 1 raid on
(parted) select /dev/sdd
Using /dev/sdd
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdd will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y
(parted) mkpart share 2048 -1
Warning: You requested a partition from 2048s to 5860533167s.
The closest location we can manage is 2048s to 5860533134s.
Is this still acceptable to you?
Yes/No? y
(parted) set 1 raid on
(parted) quit
KURO-NAS-T4:~# apt-get install mdadm
KURO-NAS-T4:~# mdadm -C /dev/md0 -l1 -n2 /dev/sdc1 /dev/sdd1
KURO-NAS-T4:~# mkfs.ext4 /dev/md0
KURO-NAS-T4:~# vi /etc/fstab
 ↓最後に追加
/dev/md0 /mnt/share ext4 defaults 0 2
KURO-NAS-T4:~# mkdir /mnt/share
KURO-NAS-T4:~# chown nobody:nogroup /mnt/share
KURO-NAS-T4:~# chmod 777 /mnt/share
KURO-NAS-T4:~# mount /dev/md0 /mnt/share
ディスクの設定が終わったらSambaの設定をします。
KURO-NAS-T4:~# vi /etc/samba/smb.conf
[global]の下に追加。
[global]
dos charset = CP932
unix charset = utf-8
display charset = utf-8
map to guest = Bad User


####### Authentication ####### 辺りに下記を追加
security = share
[homes][printers][print$]関連はコメント化。
最後に下記を追加

[share]
path=/mnt/share
writeable = yes
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes
編集し終わったらSambaを再起動します。
KURO-NAS-T4:~# service samba restart

2013年5月10日金曜日

KURO-BOX/T4に3TBのディスクを使ってみる

もともと付いていたディスクは250GBx4でした。
どうせなら容量の大きい物をと思ったのですが...

そのままでは使えなかったので、u-bootを更新してみました。

使ったディスクは、WESTERN DIGITAL WD30EZRXと手元にあったHitachi Deskstar 5K3000(HDS5C3030ALA630)です。

※起動できれば良いと思ってるので、u-boot上での動作は見てません
1. u-bootイメージの作成
コンパイルの環境は前にカーネルを作った時と同じでamd64環境でクロスコンパイルします。
u-bootのFTPからファイルを取ってきます。
debian# cd /usr/src ←作業用のディレクトリに移動
debian# wget ftp://ftp.denx.de/pub/u-boot/u-boot-2013.04.tar.bz2
debian# tar xjvf u-boot-2013.04.tar.bz2
こちらのサイトにあるパッチを2013.04用にしたものを取ってきます。
debian# wget https://sites.google.com/site/iroirofiles/u-boot-2013.04.diff
落としたら、パッチあて
debian# cd u-boot-2013.04
debian# patch -p 1 < ../u-boot-2013.04.diff
コンパイルします。
debian# make CROSS_COMPILE=powerpc-linux-gnu- kuro_nas_t4_config
debian# make CROSS_COMPILE=powerpc-linux-gnu-
問題なく終われば、u-boot.binが出来ているはずです。
2. u-bootイメージの書き込み
(ここからはKURO-NAS/T4上で作業します) ここでやったようにTFTPブートします。(既にLinuxが起動する環境であればそれでも良いと思います)
BUFFALO>> setenv ipaddr 192.168.1.233 ←KURO-BOX/T4のIPアドレス
BUFFALO>> tftpboot ${ldaddr} 192.168.1.222:kuro_nas_t4.itb ←IPはTFTPサーバーのIPアドレス
 ~ ・・・ ~ ・・・ ~
読み込みが終わったら
BUFFALO>> bootm
 ~ ・・・ ~ ・・・ ~
起動したら
KURO-NAS-T4 login: root
起動したら、1で作ったu-boot.bin(ここではu-boot.2013.04.binにファイル名変えてあります)を取ってきます。
KURO-NAS-T4:~# wget https://sites.google.com/site/iroirofiles/u-boot.2013.04.bin
KURO-NAS-T4:~# ls -l u-boot.2013.04.bin
-rw-r--r-- 1 root root 238940 May 10 18:29 u-boot.2013.04.bin
書き込みます。
KURO-NAS-T4:~# dd if=u-boot.2013.04.bin of=/dev/mtdblock1
466+1 records in
466+1 records out
問題なさそうなら再起動して確認して下さい。
起動しない時はJTAGとかでしょうか...

起動後はここでやったようにTFTPブートしてシステムのインストールをすれば一応動きます。
参考: LinkStation/TeraStation/玄箱/PPC/KURO-BOX/T4/U-Boot/FIT - PukiWiki
参考: LinkStation/TeraStation/玄箱/PPC/TS-TGL - PukiWiki

2013年5月9日木曜日

KURO-BOX/T4をSqueezeからWheezyに更新してみる

先日Debianの新しいバージョンWheezyが出たらしいので、KURO-BOX/T4もSqueezeからWheezyにあげてみます。
KURO-BOX/T4環境はセットアップ後のLennyからSqueezeに上げてあるだけのものです。
細かい動作検証等はせず起動させてるだけなのでどこか不具合があるかもです...

1. apt設定ファイルの編集
/etc/apt/sources.list を編集してWheezy用のファイルを取ってくるようにします。
KURO-NAS-T4:~# vi /etc/apt/sources.list
deb http://ftp.debian.org/debian/ squeeze main
deb-src http://ftp.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

#deb http://volatile.debian.org/debian-volatile lenny/volatile main
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

 ↓以下に変更

deb http://ftp.jp.debian.org/debian/ wheezy main
deb-src http://ftp.jp.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

#deb http://volatile.debian.org/debian-volatile lenny/volatile main
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ wheezy-updates main
deb-src http://ftp.jp.debian.org/debian/ wheezy-updates main
2. パッケージの更新
編集が終わったらパッケージを更新します。
KURO-NAS-T4:~# apt-get update
KURO-NAS-T4:~# apt-get upgrade
3. カーネルの更新
あらかじめ作っておいたカーネル(3.2.41)も落として入れておきます。
KURO-NAS-T4:~# cd /boot
KURO-NAS-T4:~# wget --no-check-certificate https://sites.google.com/site/iroirofiles/uImage-3.2.41-wheezy-2 -O uImage-3.2.41-wheezy-2
KURO-NAS-T4:~# rm uImage.buffalo
KURO-NAS-T4:~# ln -s uImage-3.2.41-wheezy-2 uImage.buffalo
KURO-NAS-T4:~# cd /
KURO-NAS-T4:~# wget --no-check-certificate https://sites.google.com/site/iroirofiles/modules-3.2.41.tgz -O modules-3.2.41.tgz
KURO-NAS-T4:~# tar zxvf modules-3.2.41.tgz
ここで一度再起動します。
4. システムのアップグレード
再起動が問題なく終わったらシステムのアップグレードをします。
KURO-NAS-T4:~# apt-get dist-upgrade
KURO-NAS-T4:~# apt-get --purge autoremove

参考:第4章 Debian 6.0 (squeeze) からのアップグレード

Wheezy用カーネルをクロスコンパイル環境で作ってみる

KURO-BOX/T4をWheezyにあげる前にカーネルを作っておきます。

PCはAMD FX6100(AMD880G+SB710)/8G/64GBSSDにWheezy(64bit版)入れてます。

1. 開発ツールをいれる
まずEmdebianの鍵を登録します。
debian# apt-get install emdebian-archive-keyring
次にパッケージのダウンロード元にEmdebianを追加します。
debian# vi /etc/apt/sources.list
↓以下を最後に追加
#
# -- Emdebian cross toolchains
#
deb http://www.emdebian.org/debian wheezy main
編集が終わったら更新します。
debian# apt-get update
更新できたらパッケージを追加します。
debian# apt-get install build-essential fakeroot
debian# apt-get build-dep linux
debian# apt-get install ncurses-dev ← menuconfig用にいれました
debian# apt-get install gcc-4.7-powerpc-linux-gnu
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-gcc powerpc-linux-gnu-gcc /usr/bin/powerpc-linux-gnu-gcc-4.7 47
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-gcc-ar powerpc-linux-gnu-gcc-ar /usr/bin/powerpc-linux-gnu-gcc-ar-4.7 47
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-gcc-nm powerpc-linux-gnu-gcc-nm /usr/bin/powerpc-linux-gnu-gcc-nm-4.7 47
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-gcc-ranlib powerpc-linux-gnu-gcc-ranlib /usr/bin/powerpc-linux-gnu-gcc-ranlib-4.7 47
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-cpp powerpc-linux-gnu-cpp /usr/bin/powerpc-linux-gnu-cpp-4.7 47
debian# update-alternatives --install /usr/bin/powerpc-linux-gnu-gcov powerpc-linux-gnu-gcov /usr/bin/powerpc-linux-gnu-gcov-4.7 47
カーネルソースも取ってきます。
debian# cd /usr/src ← ソースを展開するディレクトリに移動
debian# apt-get install debian-keyring
debian# apt-get source linux
2. mkimageの作成
あらかじめmkimageを作っておきます。
u-bootのソースを拾ってきます。 こちらからとってきました。
debian# wget ftp://ftp.denx.de/pub/u-boot/u-boot-2013.04.tar.bz2
解凍してコンパイルします。
debian# tar xjvf u-boot-2013.04.tar.bz2
debian# cd u-boot-2013.04
debian# make linkstation_HGLAN_config
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make tools
適当なディレクトリにコピーしておきます。
debian# cp tools/mkimage /usr/local/bin/
debian# ln -s /usr/local/bin/mkimage /usr/bin/
3. dtcの作成
カーネルソースに入ってる物ではうまくFITイメージが作れなかったので古いもの(v1.2)でやることにします。
gitでdtcソースを取得します。 こちらからとってきました。
debian# cd /usr/src
debian# apt-get install git flex bison
debian# git clone http://git.jdl.com/software/dtc.git
debian# cd dtc
debian# git checkout v1.2.0
debian# make
適当なディレクトリにコピーしておきます。
debian# cp dtc /usr/local/bin/
debian# ln -s /usr/local/bin/dtc /usr/bin/
4. パッチあて
まずKURO-BOX/T4用のファイルをダウンロードしておきます。 こちらののページから必要なファイルを使わせてもらいます。
debian# cd /usr/src
debian# wget http://hiro7216.dyndns.org/blognplus/files/initrd.img
debian# wget http://hiro7216.dyndns.org/blognplus/files/kuro_nas_t4.its
同じページにある2.26.32用のパッチを3.2.41用に変えたもの(kuro-nas-t4-3.2.41-wheezy-2.diff)も入れておきます。
debian# wget https://sites.google.com/site/iroirofiles/kuro-nas-t4-3.2.41-wheezy-2.diff
debian# cd linux-3.2.41
debian# patch -p 1 < ../kuro-nas-t4-3.2.41-wheezy-2.diff
5. カーネルのコンパイルとか
T4用のコンフィグをコピーします。oldconfigでいろいろ聞かれてもそのままEnterで良いと思います。
debian# cp arch/powerpc/configs/kuro_nas_t4_defconfig .config
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make oldconfig
設定を変更する場合は、menuconfigとかで。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make menuconfig
カーネルをコンパイルします。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make
マルチコアの環境であれば、-j(コア数)で速くなります。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make -j6 ← 6コアの場合
dtbファイルを作成します。
debian# scripts/dtc/dtc -I dts -O dtb -p 1024 -o ../kuro_nas_t4.dtb arch/powerpc/boot/dts/kuro_nas_t4.dts
モジュールをコンパイルし、移行用にアーカイブしておきます。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make modules
debian# mkdir ../modules ← モジュール用のディレクトリ作成
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- INSTALL_MOD_PATH=../modules make modules_install
debian# cd ../modules
debian# tar zcvf /usr/src/modules-3.2.41.tgz lib ← 圧縮するファイル名(modules-3.2.41.tgz)は何でも
FITイメージを作成します。
debian# cd /usr/src
debian# cp linux-3.2.41/vmlinux.bin.gz vmlinuz
debian# mkimage -f kuro_nas_t4.its uImage-3.2.41-wheezy-2
できたuImage-3.2.41-wheezy-2とmodules-3.2.41.tgzをKURO-BOX/T4に移して使います。 (tftpとかで正しく起動するか試してから移すと良いと思います。)

参考: EmdebianToolchain - Debian Wiki
参考: Debian Linux Kernel Handbook - Common kernel-related tasks
参考: Hiroaki’s blog::Kernel 2.6.32をコンパイル