SheevaPlug の紹介記事 ~ 日経Linux 7月号 ~

posted by brdofprds on 2009.06.20, under uncategorized
20th

題名の通りですが、日経Linux7月号にはSheevaPlugの紹介がされていました。

サインはVGAでデスクトップPC化やカーネルコンパイルなど、どこかで見たことがあるような内容ですがこの手の製品が初めての方にはちょうどよい内容だと思います。(同じことがLS-XHLでも可能です。)

LS-XHLも今日値段を確認したところ、九十九で13,800円(ポイント分を引いて)でした。
海外から発送を待つより、週末HackでLS-XHLも有りかな?

Ubuntu DNS&DHCP設定

posted by brdofprds on 2009.05.19, under Ubuntu
19th

CG-HDC4EU3500用にWD10EADS-M2Bを4つ購入しました。
5400回転ですが静かで低消費電力なのでRAIDを組むのにはちょうどいいと思います。

今回は、UbuntuをインストールしたLS-XHLに対してDNSサーバとDHCPサーバを構築しました。少数のマシンしかないLANを導入するのは高コストですが、このBlogのように外向けのサービスを行っている場合には外側と内側で同じドメインを利用できるので便利です。設定も覚えてしまえば簡単なのでぜひ試してみてください。

1. DNSサーバ

参考 https://help.ubuntu.com/9.04/serverguide/C/dns.html

まずは、DNSサーバであるbind9をインストールします。

$ sudo aptitude install bind9

/etc/bind以下に設定ファイルができるので、ここを編集します。以下の例では設定するドメイン名はchimaki.infoです。適宜変更してください。また192.168.1.0/24のネットワークについて設定をしています。

A. ゾーンの設定

/etc/bind/named.conf.local

zone "chimaki.info" {
     type master;
     file "/etc/bind/db.chimaki.info";
};

zone "1.168.192.in-addr.arpa" {
     type master;
     file "/etc/bind/db.192.168.1";
};

B. 正引き(Name => IP)の設定

db.localhostをコピーして編集します。
設定ファイルのSerialは変更の度に増やす必要があります。そのため日時を入力することが推奨されています。下記の例では、dns.chimaki.info. => 192.168.1.254という対応を作り、www.chimaki.info. = dns.chimaki.info.という別名を設定しています。

/etc/bind/db.chimaki.info

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     dns.chimaki.info. root.chimaki.info. (
                          5171400     ; Serial <= mmddHHMMの形式とした。
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      dns.chimaki.info.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1

; 名前 => アドレスを定義する。
;  IN A
dns IN A 192.168.1.254 linux IN A 192.168.1.10 ; 名前の別名を定義する。 ; IN CNAME www IN CNAME dns

C. 逆引き(IP => Name)の設定

db.127をコピーして作成します。
下記の例では、192.168.1.254 => dns.chimaki.info.という対応を設定しています。
同様に他の固定IPのマシンの名前を付けることができます。(例ではlinux.chimaki.infoを定義している。)

/etc/bind/db.192.168.1

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     dns.chimaki.info. root.chimaki.info. (
                         5171401     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.

; アドレス => 名前を定義する。
;
IN PTR 254 IN PTR dns.chimaki.info. 10 IN PTR linux.chimaki.info.

D. オプション

192.168.1.0/24に限定するように設定します。
また名前を引けなかったときに、プロバイダのDNSにforwardすることでLANのDNSの記述を一つにできます。

/etc/bind/named.conf.options

options {
        directory "/var/cache/bind";

    allow-query {
        192.168.1.0/24;
        localhost;
    };

    allow-recursion {
        192.168.1.0/24;
        localhost;
    };

    allow-transfer {
        none;
    };

    forwarders {
        # プロバイダのDNSを書く
    };

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

E. サービスの起動

サービスを再起動します。

$ sudo /etc/init.d/bind9 restart

F. テスト

digコマンドで引けるようになっているか確認します。
ANSWER SECTIONがあれば動作しています。
動かない場合は、/var/log/daemon.logなどのログを便りに修正します。

$ dig @192.168.1.254 dns.chimaki.info

; <<>> DiG 9.5.1-P2 <<>> @192.168.1.254 dns.chimaki.info
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50716
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;dns.chimaki.info.              IN      A

;; ANSWER SECTION:
dns.chimaki.info.       604800  IN      A       192.168.1.254

;; AUTHORITY SECTION:
chimaki.info.           604800  IN      NS      dns.chimaki.info.

;; Query time: 19 msec
;; SERVER: 192.168.1.254#53(192.168.1.254)
;; WHEN: Tue May 19 00:35:16 2009
;; MSG SIZE  rcvd: 64

2. DHCPサーバ

DHCPサーバを次のようにしてインストールします。

$ sudo aptitude install dhcp3-server

/etc/dhcp3/dhcpd.confを以下のように編集します。
例では192.168.1.50から192.168.1.60をDHCPアドレスとして配布します。

#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#

ddns-update-style none;
# DNSサーバを作成したらauthoritativeを有効にする。
authoritative;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.50 192.168.1.60;
       option domain-name "chimaki.info";
       option domain-name-servers 192.168.1.254;
       option routers 192.168.1.1;
       option broadcast-address 192.168.1.255;
       default-lease-time 21600;
       max-lease-time 43200;
}

サービスを再起動します。

$ sudo /etc/init.d/dhcp3-server restart

ルータなど他の機器でDHCPを起動していないことを確認して、DHCPでIPアドレスを取得してみます。
DHCPの更新などを行うとうまくとれるはずです。

次のようにしてサーバのログを監視すると動作状況が分かります。

$ sudo tail -f /var/log/messages

3. DNSとDHCPの連携

固定IPならば/etc/bind/db.chimaki.infoなどに記述すれば名前を登録することができます。
DHCPでIPを取得したマシンについても名前を登録することができます。(しかも動的にです。)

上記のDNSの設定と、DHCPの設定が完了し動作していると仮定します。
allow-updateを追加します。

/etc/bind/named.conf.local

zone "chimaki.info" {
    type master;
    file "/etc/bind/db.chimaki.info";
    allow-update {
        127.0.0.1;
        192.168.1.0/24;
    };
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.1";
    allow-update {
        127.0.0.1;
        192.168.1.0/24;
    };
};
/etc/dhcp3/dhcpd.conf

# noneからinterimに変更
ddns-update-style interim;

また/etc/bindにbindユーザが書き込めるように権限を変更します。

$ sudo chown bind:bind /etc/bind

最後にサービスをそれぞれ再起動して設定は終了です。

$ sudo /etc/init.d/bind9 restart
$ sudo /etc/init.d/dhcp3-server restart

ログを見ながらDHCPでアドレスを取得させると登録される状況が分かります。
登録されると設定ファイル(例では/etc/bind/db.chimaki.info)に名前が追加されます。

LANのマシンには/etc/resolv.confを

search chimaki.info
nameserver 192.168.1.254

のようにドメインサーチとDNSサーバを追加します。
searchはxxx.chimaki.infoのようにすべて入力しないでもxxxで引けるようにするためのものです。

Ubuntu Localeの設定

posted by brdofprds on 2009.05.09, under Ubuntu
09th

以前紹介したlocaleの設定では、Ubuntuの場合不完全でしたので修正方法を紹介します。

aptitudeやemacsで日本語が表示されてなかったので、exportで環境変数を表示させてみたところLANGの設定がありませんでした。

簡単な修正としては

$ export LANG=ja_JP.UTF-8

とすれば、LANGが設定されて日本語が期待通り表示されます。

.bashrcに書くのはスマートではないので調べたところ、Ubuntuでは/etc/default/localeにLANGとLANGUAGEを設定するようです。(/etc/init.d/以下のスクリプトを見て発見しました。)

# vi /etc/default/locale
LANG="ja_JP.UTF-8"
LANGUAGE="ja_JP:ja:en_US:en"

設定後、再度ログインするとLANGが設定されていました。(再起動は必要ありません。)

LS-XHL + CG-HDC4EU3500

posted by brdofprds on 2009.05.07, under LS-XHL
20th

LS-XHL単体では、SATAのディスクを一台しか接続できません。

やはりファイルサーバとしてRAIDができないので運用が難しいところがあります。

少し前になりますが、コレガからCG-HDC4EU3500という最大4台までのHDDのハードウェアRAIDが可能なケースが販売されました。RAID 0, 1, 0+1, 3, 5が可能で、eSATAをサポートしています。

LS-XHLとの接続では、ジェンダーが違うのでLS-XHL(SATA) -> SATA延長ケーブル -> ジェンダーチェンジ -> SATA-eSATA変換 -> CG-HDC4EU3500としました。

このように変換ケーブルを通せば、一般的なeSATAのHDDケースが利用できます。

左がCG-HDC4EU3500、右がLS-XHL

接続して認識するまでは良かったのですが、LS-XHLがブートしないという問題が起こりました。

CG-HDC4EU3500は、PC連動機能がありLS-XHLも例外なく連動して動作します。しかし、連動により立ち上がってからHDDのRAIDのチェックが行われるため、LS-XHLのデータ要求がタイムアウトしてしまい、u-bootで落ちてしまいました。

LS-XHLは赤LED点滅時に前面のFuncキーを押すとTFTPブートを行うので、/bootにあるinitrd.buffaloとuImage.buffaloをtftpサーバに設置し、TFTPブートさせると無事(?)RAIDディスクでブートしました。

単独でブートできない(つまり、rebootできない)のが残念ですが、ファイルサーバなので運用でカバーできる範囲だと思います。

LS-XHL de Debian 八日目 〜Kernel〜

posted by brdofprds on 2009.05.03, under Kirkwood, LS-XHL
03th

やはり、Debianが動くといってもKernelがオリジナルのままでは利用できないアプリケーションも多いです。

例えば私の場合OpenVPNが利用したかったのですが、当然不要なmoduleはkernelから外されているため利用できませんでした。

Kernelのソースコード自体は公開されており、Cross-Complie用の環境もあるのですが、シリアルがないのとconfigがないのとで起動しない場合にDebugができないため困難ですが、運良く動作する手順を発見したので紹介します。

1. 必要なもの

以下に必要なものを列挙します。

  • 32bit Ubuntu
  • Kernelソース
  • Cross Complie Tool Chain

セルフコンパイルもできなくはないのですが、やはり時間がかかるのでクロスコンパイルを推奨します。

64bit用のツールチェインを取得すれば、64bitマシンでも動くとは思いますが簡単のために32bit Ubuntuとしています。

KernelソースはGPL/LGPL Resource – Buffaloから入手します。

# wget http://buffalo.jp/php/los.php?to=gpl/storage/ls-xhl/100/linux-2.6.22.18.tar.bz2

Cross Complie Tool ChainはSheevaPlugのものを利用しました。

# wget http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_Host_SWsupportPackageLinuxHost.zip
# wget http://www.marvell.com/files/products/embedded_processors/developer/kirkwood/SheevaPlug_U-Boot.zip

2. クロス環境の整備

取得したファイルを展開して、クロスコンパイルが出来るようにします。

# unzip SheevaPlug_Host_SWsupportPackageLinuxHost.zip
# cd LinuxHost
# tar xfj gcc.tar.bz2 -C /home
# cd ..
# unzip SheevaPlug_U-Boot.zip
# cd SheevaPlug_U-Boot/Tools
# cp mkimage /usr/bin
# cd -
# tar xfj linux-2.6.22.18.tar.bz2

最後にクロス用のgccのパスを通します。

# export PATH=/home/gcc/bin:$PATH

これで準備が整いました。

3. Kernelのconfig

configはないので、SheevaPlugの手順を参考に行います。

# cd linux-2.6.22.18
# make mv88f6281_defconfig
# make menuconfig
System Type -> BUFFALO Features ->
* BUFFALO_PLATFORM
* BUFFALO_ERRCNT
* USE interrupt driver
* USE gpio driver
* support board info from kernel
の5つにマークしてから、configを保存して終了

Buffaloの設定項目は多いですが、実質コンパイルが通った上で起動するものは以上の設定のみです。

4. uImageの作成

# make uImage

以上の操作でuImageがarch/arm/boot以下に作成されます。

出来上がったuImageをuImage.buffaloにリネームしてLS-XHLの/bootにコピーします。

5. Reboot

うまくいけば、上記の設定で起動するはずです。

dmesgを見て、エラーが出ているものを削ったり、足りない設定を追加などしてconfigを完成させます。

納得いくKernelが完成したら、Kernelモジュールを作成してインストールします。

PC # make modules
PC # make modules_install
PC # cd binaries/lib/modules
PC # scp -r 2.6.22.18 root@<LS-XHLのIPアドレス>:/lib/modules/
LS-XHL # chown -R root:root /lib/modules/2.6.22.18
LS-XHL # depmod -a

再起動して動作すれば、Kernelの入れ替えは終了です。

モジュールはmodprobeにより読み込むことが出来ます。

# modprobe bridge (module name)

よく使うものは/etc/modulesにモジュール名を書いておくと、起動時に読み込まれます。

6. USB

USBを使うためには、一手間必要です。
起動直後はUSBに電源が入っていないために、利用できません。miconaplを使ってUSBの電源を入れる必要があります。

# /usr/locsl/sbin/miconapl -a usb_set_power all_on

利用の度に設定するのは面倒なので、/etc/rc.localに書いておくとよいかと思います。

LS-XHL de Debian 七日目 〜boot〜

posted by brdofprds on 2009.05.03, under Kirkwood, LS-XHL
03th

いよいよBootのときがやってきました。

1. BOOT !

HDDをLS-XHLに組戻して電源を入れます。しばらく待ってpingが期待通りに通ったらSSHをしてみます。

# ssh root@<LS-XHLのIPアドレス>
Linux ls-xhl01 2.6.22.18 #1 Sat May 2 17:44:39 JST 2009 armv5tejl

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:

http://help.ubuntu.com/

Last login: Sat May  2 20:34:37 2009 from macbook.local
#

Congratiration!

ブートしない場合の対処法

A. 青LEDが点滅して自動的に電源が落ちる

initrdで失敗しています。linuxrcが適切に編集されていることを確認します。それでもダメなようであれば、パーティションの設定などが間違っている可能性や、ファイルが足りないなど考えられます。

B. pingが通らない

ネットワークの設定や、IPを確認してください。

MACアドレスをルータに設定して、DHCPとするのが確実です。

C. pingは通るがログインできない

ssh-serverが立ち上がっていない可能性があります。

もしくは設定したパスワードが間違っているかもしれません。

2. miconapl

最後にハード制御について設定をすることで完成となります。

/initrd以下にinitrd.buffaloが展開されて置かれますが、ここからmiconaplというハード制御コマンドをコピーします。

# cp -a /initrd/usr/local/sbin/miconapl /usr/local/sbin/
# cp -a /initrd/usr/local/lib/libbuffalo_bin.so* /usr/local/lib/
# ldconfig

起動時にLEDの点滅が止まるように/etc/rc.localに記述を加えます。

# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# boot complete
/usr/local/sbin/miconapl -a boot_end

# booting flag change.
echo 0 > /proc/buffalo/booting

if [ -f /proc/buffalo/gpio/switch/sw_control ] ; then
        echo on > /proc/buffalo/gpio/switch/sw_control
fi

# stop fan (option)
# /usr/local/sbin/miconapl -a fan_set_speed stop

exit 0

上記ではFanを止める設定ですが、slowやfastなど設定をできます。(参考)

3. Kernelモジュール

必要であれば、Kernelモジュールを/initrd/lib/moduleからコピーして利用することができます。

usbなどを利用するためには必要ですが、それ以外の設定が必要など面倒が多いのでKernelに組み込む形で再構築を行った方が便利です。Kernelの再構築を行わないならば、/initrd/etc/init.d/usb.shなど関連するスクリプトを読み、必要な設定を行います。

次回よりKernelの再構築について説明するため、既存のmoduleの利用についてはこれ以上言及しません。

これで高速で、低消費電力なLinuxサーバが出来上がりました。

自由な世界を楽しみましょう。

LS-XHL de Debian 六日目 〜initrd〜

posted by brdofprds on 2009.05.02, under Kirkwood, LS-XHL
02th

前回までで、基本的なDebian/Ubuntuのシステムが完成しました。

後はこれらのシステムが起動できるように細かい設定を行います。

HDDのパーティションを変更し、initrdを改変して作成したシステムがブートするようにします。

1. HDDのマウント、バックアップ

LS-XHLを停止して、作成したファイルと現在の状態をすべてバックアップします。

# mkdir /mnt/boot /mnt/root /mnt/disk1
# mount /dev/sdb1 /mnt/boot
# tar cfz /mnt/boot-original.tar.gz /mnt/boot
# umount /mnt/boot
# mount /dev/sdb2 /mnt/root
# tar cfz /mnt/root-original.tar.gz /mnt/root
# umount /mnt/root
# mount /dev/sdb6 /mnt/disk1
# tar cfz /mnt/(debian|ubuntu)-root.tar.gz /mnt/disk1/(debian|ubuntu)-root
# umount /mnt/disk1

2. initrdの改変

/bootに含まれていたinitrd.buffaloを展開して、中にあるlinuxrcを書き換えます。

ここでアップデートや、システムのチェックなどを行っていますが、それらを無効にして、システムがマウント出来るようにします。

# cp /mnt/boot_original.tar.gz .
# tar xfz boot_original.tar.gz
# cd boot
# ls
hddrootfs.buffalo initrd.buffalo u-boot.buffalo uImage.buffalo

このinitrd.buffaloを編集するのですが、手順が多いのでスクリプトを作成しました。

# cat unpack.sh
#!/bin/sh

dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
gunzip initrd.gz
mount -o loop initrd /mnt/initrd

# cat pack.sh
#!/bin/sh

umount /mnt/initrd
gzip initrd
mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo
rm initrd.gz

注意事項としては、あらかじめマウントポイント(/mnt/initrd)を作成することと、uboot-mkimageパッケージをインストールしておくことです。

unpack.shでinitrd.buffaloを展開し、pack.shでintird.buffaloに圧縮します。いずれもルートで行ってください。

# ./unpack.sh
# cd /mnt/initrd
# vi linuxrc
(下記のようにする)
# cat linuxrc
==========================================================================
#!/bin/sh                                                                                                                                                  

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

echo "---- in linuxrc ---"
echo "Version 1.00 2008/ 7/ 1"

mount proc /proc -t proc
mount sysfs /sys -t sysfs

. /usr/local/lib/libsys
. /usr/local/bin/libbuffalo
. /usr/local/lib/libmsg    

reset_date()
{
        TMP=`date "+%s"`
        if [ ${TMP} -lt 1133362800 ] || [ ${TMP} -ge 1606748400 ] ; then
                date ${INITIAL_DATE}
                if [ -L "${HW_CLOCK}" ] ; then
                        hwclock --systohc --localtime
                else
                        hwclock -w
                fi
        fi
}

# set the system time from the hardware clock
HW_CLOCK=`which hwclock`
if [ -L "${HW_CLOCK}" ] ; then
        # not busybox hwclock version
        hwclock --hctosys --localtime
else
        # busybox hwclock version
        hwclock -s
fi
reset_date
date

# reload /etc/nas_feature
# if failed to copy, anyway go on bootup process with empty setting.
[ -f /etc/nas_feature ] && . /etc/nas_feature

ldconfig
depmod

## Setup Micon communication port and send flash-boot complete message.
miconapl -b -a boot_flash_ok > /dev/null

ln -sf /dev/sde /dev/usbdisk1
ln -sf /dev/sdf /dev/usbdisk2
create_devlink

echo "0x802" > /proc/sys/kernel/real-root-dev

umount /sys
umount /proc
umount -a
exit 0
==========================================================================
# cd -
# ./pack.sh

以上でinitrdの編集は終わりです。変更点はHDDのチェックを飛ばす部分が中心です。

3. パーティションの変更

以前/etc/fstabに記載したようにパーティションを変更します。

LS-XHLは/dev/sdb1がboot、/dev/sdb2が/である必要があります。オリジナルの状態では、ダミーパーティション/dev/sdb3,4がある上、xfsフォーマットが使われているので他で扱いやすいようにext3に変更します。

GpartedなどGUIを使った方が簡単で、間違えません。次のようにフォーマットします。

/dev/sdb1 /boot 512MB
/dev/sdb2 / (好きなだけ)
/dev/sdb3 linux-swap 512MB

これだけではu-bootが/bootを読めないので、次のようにフォーマットします。(参考)

# mkfs.ext3 -j -m 0 -I 128 /dev/sdb1

4. ファイルの書き戻し

準備が整ったので、ファイルを書き戻します。

# mount /dev/sdb1 /mnt/boot
# cp -a initrd.buffalo(改変したもの) u-boot.buffalo uImage.buffalo /mnt/boot/
# umount /mnt/boot
# mount /dev/sdb2 /mnt/root
# tar xfz (debian|ubuntu)-root.tar.gz -C /mnt
(最後に/mnt/rootで設定に誤りがないか確認します。)
# umount /mnt/root

以上で(Debian|Ubuntu)のシステムが起動する準備ができました。
次回はいよいよ起動して、残りの設定について解説します。

LS-XHL de Debian 五日目 〜debootstrap〜

posted by brdofprds on 2009.05.02, under Kirkwood, LS-XHL
03th

Debian Lennyから、armel(kirkwood)が正式にサポートされています。

また、最新のUbuntu 9.04 jauntyでもlennyの成果を利用してarmelのサポートが行われています。
今回は、deboostrapから最小のLinuxシステムを構築する方法を説明します。

1. debootstrapの情報

Lennyはhttp://www.jp.debian.org/releases/stable/arm/

Ubuntu(9.04)はhttps://help.ubuntu.com/9.04/installation-guide/i386/linux-upgrade.html

にdebootstrapの詳細な手順が記載されています。

付加的な情報として、Ubuntuでのarmelについてhttp://www.mail-archive.com/ubuntu-mobile@lists.ubuntu.com/msg01860.htmlがあります。

2. debootstrapのインストール

debootstrapというのは、既存のUNIX/Linux環境からDebian/Ubuntuをインストールする方法です。debootstrapを利用するためにはwgetとarが必要となります。これらはBuffaloのLS-XHLの中にすでに入ってるのでこれを利用します。

Debianの場合

# pwd
/root
# mkdir work
# cd work
# wget http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.10lenny1_all.deb
# ar -x debootstrap_1.0.10lenny1_all.deb
# cd /
# zcat /root/work/data.tar.gz | tar xv

Ubuntuの場合

# pwd
/root
# mkdir work
# cd work
# wget http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.13~jaunty1_all.deb
# ar -x debootstrap_1.0.13~jaunty1_all.deb
# cd /
# zcat /root/work/data.tar.gz | tar xv

3. debootstrapの作成

debootstrapを作成するためのツールの準備ができたので、作成に入ります。

Debianの場合

# mkdir -p /mnt/disk1/debian-root
# /usr/sbin/debootstrap --arch armel lenny /mnt/disk1/debian http://ftp.us.debian.org/debian
...(しばらく待つ)

Ubuntuの場合

# mkdir -p /mnt/disk1/ubuntu-root
# /usr/sbin/debootstrap --arch armel jaunty /ubuntu-root/ http://ports.ubuntu.com/ubuntu-ports
...(しばらく待つ)

4. 最小のLinuxへchroot

最小のLinuxの準備ができたので、chrootしてLinuxのセットアップを行います。

以下の手順はDebian、Ubuntuで共通です。異なる部分についてはその時に述べます。

A. chrootの実行

# LANG=C chroot /mnt/disk1/(debian|ubuntu)-root /bin/bash

B. procのマウント

# mount -t proc proc /proc

C. deviceの作成

# cd /dev
# MAKEDEV -v generic

D. fstabの作成

# vi /etc/fstab
==============================================================================
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump>
<pass>
proc            /proc           proc    defaults                        0 0
sys             /sys            sysfs    defaults                        0 0
/dev/sda1       /boot           ext3    defaults,noatime                0 1
/dev/sda2       /               ext3    defaults,noatime                0 0
/dev/sda3       swap            swap    defaults                        0 0
==============================================================================

E. タイムゾーンの設定

# dpkg-reconfigure tzdata
(Asia / Tokyoを選択)

F. ネットワークの設定

eth1がキーポイントです。

# vi /etc/network/interface
================================================================================
# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.

# We always want the loopback interface.
#
auto lo
iface lo inet loopback

# To use dhcp:
#
auto eth1
iface eth1 inet dhcp
================================================================================

# vi resolv.conf
================================================================================
nameserver <Add Your Name Server>
================================================================================

G. ホスト名の設定

好きなホスト名を付けます。以下ではls-xhlとしています。

# vi /etc/hosts
================================================================================
127.0.0.1 ls-xhl
127.0.0.1 localhost
================================================================================

# vi /etc/hostname
================================================================================
ls-xhl
================================================================================

H. ロケールの設定

Debianの場合
# aptitude update
# aptitude install locales
# dpkg-reconfigure locales
================================================================================
ja_JP.ECU-JP ECU-JP
ja_JP.UTF-8 UTF-8

default ja_JP.UTF-8 UTF-8
================================================================================

Ubuntuの場合
# aptitude update
# aptitude install language-pack-ja

I. SSHサーバのインストール

これが無いとログインができません。

# aptitude install openssh-server
# /etc/init.d/ssh start

J. その他

/initrdディレクトリを起動後にinitrdが展開されて置かれるので、用意しておきます。

# mkdir /initrd

使いそうなソフトをインストールしておきます。(後でインストールしても構いません。)

# aptitude install psmisc less ntpdate unzip bzip2

最後にパスワードを設定します。ユーザーを追加するもの良いと思います。

# passwd

これで準備が整いました。次回は、パーティションを切り直して、initrdを編集してdebian/ubuntuからブートできるようにします。

LS-XHL de Debian 四日目 〜telnet〜

posted by brdofprds on 2009.05.02, under Kirkwood, LS-XHL
02th

作業用のHDDが壊れてしまい、物理的な復旧とやる気の回復に時間がかかってしまいました。

しかし、LS-XHLのカーネルの再構築に成功したため、より多くの人にHackしてもらうために続きを書きたいと思います。

前回のTFTPにより出荷状態にHDDが戻ります。大容量のHDDに交換したり、Hackに飽きて戻す必要があれば前回までの手順でできます。

今回はtelnetを有効にして、出荷状態のLinuxへログインしたいと思います。

次の手順に進む前に、Web管理画面にアクセスできるかなど出荷状態に戻っていることを確認しましょう。

  1. IPアドレスの確認、変更
  2. Telnet有効化

1. IPアドレスの確認、変更

まずIPアドレスを確認します。デフォルトではDHCPでアドレスが決定するので、どのIPアドレスが割り振られたかは簡単には分かりません。Windowsであれば、付属のツールを使えばIPアドレスの確認、変更ができます。

それが面倒であれば、DHCPサーバにMACアドレスを登録して固定IPを払い出す方法があります。

一般家庭であれば、ルータにDHCP固定IPアドレス設定などあると思いますのでLS-XHLのMACアドレスを登録しておくと後々便利となります。

2. Telnet有効化

動作確認を終えたら、HDDを取り出してLinuxマシンに接続します。

何度か抜き差しすることになるので、eSATAケーブルか何かで接続してホットスワップできるようにしておくとよいでしょう。

以下、/dev/sdbにLS-XHLのHDDが接続されていると仮定します。(適宜読み替えてください。)

まず、ルートファイルシステムをマウントします。

# mkdir /mnt/root
# mount /dev/sdb2 /mnt/root

次に起動スクリプトrcSを編集して、telnetdを起動するように追記します。

# vi /mnt/root/etc/init.d/rcS
(最終行に以下を追記します)
/usr/sbin/telnetd

rootパスワードを消去します。

# vi /mnt/root/etc/shadow
root:(ここの文字列を削除):11009:0:99999:7:::

これでtelnetdが起動し、rootでログインできるようになります。

HDDをLS-XHLに接続して、起動します。

$ telnet <LS-XHLのIPアドレス>

これでLS-XHLへとTelnetが出来るはずです。

次回は、Telnetが出来たマシン上でDebianもしくはUbuntuのシステムをゼロから作成する手順を紹介します。

LS-XHL de Debian 三日目 〜TFTP〜

posted by brdofprds on 2009.03.29, under Kirkwood, LS-XHL
03th

まずは、空のHDDを使って製品出荷時の状態に戻します。
その状態でTelnetを有効化し、ログインしてLS-XHL上で操作できるようにします。

今回の手順は以下となります。

  1. 最新のファームウェアの取得
  2. TFTPサーバの設定
  3. LS-XHLのTFTPブート

1. 最新のファームウェアの取得

まずはBuffaloの製品ページから最新のファームをダウンロードします。
今回はversion 1.04βでした。

ダウンロード後にWindows上で解凍します。
解凍してできたファイルのinitrd.imgとuImage.buffaloを別のところへコピーしておきます。
コピーしたinitrd.imgをinitrd.zipと拡張子を変更して、zipを解凍します。
解凍する場合にパスワードを求められますが、「linkstation + password」でググればすぐ分かります。
解凍してできたinitrd.buffaloとuImage.buffaloをTFTPサーバのフォルダーにコピーします。

2. TFTPサーバの設定

LS-XHLを工場出荷状態に戻すために、TFTPブートを行います。
今回はtftp32を使用しました。ノートPCとクロスケーブルで簡単に行えます。

tftp32の設定は以下のとおりです。
Current Directory C:\LS-XHL (ここにinitrd.buffaloとuImage.buffaloをコピーする)
DHCP server
IP pool starting address 192.168.11.10
Mask 255.255.255.0
と設定します。

PCのIPを192.168.11.1(Mask 255.255.255.0)に設定します。
(Windowsのファイアーウォールは無効にしておくこと。)

3. LS-XHLのTFTPブート

PCとLS-XHLをクロスケーブルで接続して、電源を入れます。
LEDが赤点滅になったら、LS-XHLのFuncボタン(小さいプッシュスイッチ)を押すことで、TFTPブートに移行できます。青点滅から青点灯になったら起動完了です。

その後、LSUpdaterを起動するとLS-XHLがEMモードで見つかるのでファームウェア更新を実行します。

下記のような警告が出ますが、構わず続行します。
===========================================================
HDDのパーティション情報が確認できませんでした
HDDをフォーマットし、ファームウェアのアップデートを行います
*HDDの内容は完全に消えてしまいます

HDDのフォーマットをおこなってもよろしいですか?
===========================================================

再起動後は工場出荷状態になっているはずです。
Webの管理画面にアクセスできるか確かめましょう。

次は、Telnetを有効にしてログインした後にDebianをインストールする準備をします。

pagetop