2015/10/15 (木)

2015-10-15:OpenBlocks AX3 with SSD

OpenBlocks AX3 に 16G の SSD を搭載したのを入手。
ruby 環境を rbenv で入れようとして、いきなりはまった。/tmp の容量不足!
SSD 搭載の場合、/etc とか /usr とかもろもろは /dev/sda1 な SSD を ext4 フォーマットで /.rw とマウントされたとこの下に aufs でマウントされているんだけど、それでも /tmp は本体 RAM 上なのね。

$ mount
/dev/root on / type ext2 (rw,relatime,errors=continue,user_xattr,acl)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=103444k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=10240k,mode=755)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=206880k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/sda1 on /.rw type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered,discard)
aufs on /etc type aufs (rw,relatime,si=8baef055)
aufs on /bin type aufs (rw,relatime,si=88e78055)
aufs on /home type aufs (rw,relatime,si=976ea055)
aufs on /lib type aufs (rw,relatime,si=82ec9855)
aufs on /sbin type aufs (rw,relatime,si=b8e83855)
aufs on /usr type aufs (rw,relatime,si=82ec9055)
aufs on /var type aufs (rw,relatime,si=b8e83055)
aufs on /root type aufs (rw,relatime,si=86e5a855)
aufs on /opt type aufs (rw,relatime,si=86e5a055)
aufs on /srv type aufs (rw,relatime,si=82ebd855)
aufs on /media type aufs (rw,relatime,si=82ebd055)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)

ここらのマウントは /etc/init.d/openblocks-setup の中でやっているみたいで、

        # if using DEBIAN storage, /tmp directory mount under storage.
        #if [ -n "$rwdev" ] ; then
        #        UNIONFS_DIRS="$UNIONFS_DIRS tmp"
        #fi

という部分があったので、この下三行のコメントを外して再起動。。。してみたが、うまくいかない。残念。
いいや、手動でやっちゃえ、と

mount -n -t aufs -o xino=/.aufs.xino.tmp,dirs=/.rw:/tmp=ro aufs /tmp

を実行。これで /tmp が SSD 上になった。

で、rbenv install 2.2.1 みたいにビルドができるようになったけど、、、さすがに1時間コースだな。けっこう重い。^^;
ちなみに、ruby 環境を作った後、rails 入れて、Gemfile 書いて bundle install しようとしたら、therubyracer でこける。
ググッたら github の作者のとこにスレを発見。

unable to build therubyracer/libv8 on arm A10 #255
https://github.com/cowboyd/therubyracer/issues/255

ここの2013年8月24日の投稿のやり方で therubyracer のインストールに自分も成功。
事前に sudo gem uninstall libv8 しておいて、git clone してから、の手順。

bundle install で必要な gem が一通り入り、手製の rails アプリが動くことまで確認。
ちょっと重いけど、使えなくはなさそうだ。

comment

2014/07/07 (月)

2014-07-07:Debian squeeze で簡易ルータ&オレオレDNS

とある端末をネットにつなぎたいんだけど、特定のサイトにだけはDNS詐称して別サーバに誘導したい、というニーズがあって、ちょうど OpenBlockS600D が余ってたので、現実逃避でセットアップしたお話。
Debian での流儀もいろいろ忘れてたので、備忘に。

  • OpenBlockS の eth0, eth1 は固定。eth0 を上流(外部インターネット)へ、eth1 を今回の目的の端末向けに。
  • 目的の端末向けに DHCP でアドレスを配る。

ネットワーク設定は /etc/network/interfaces。

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
     address 192.168.0.2
     network 192.168.0.0
     netmask 255.255.255.0
     broadcast 192.168.0.255
     gateway 192.168.0.1

auto eth1
iface eth1 inet static
     address 192.168.254.254
     network 192.168.254.0
     netmask 255.255.255.0
     broadcast 192.168.254.255

eth1 から eth0 に抜けてルーティングする設定。
/etc/sysctl.conf での ip_forward 設定と、/etc/network/if-up.d/ 以下にネットワーク有効化後の iptables のコマンド。

 
# cat /etc/sysctl.conf
...
net.ipv4.ip_forward=1
...

# cat /etc/network/if-up.d/ipmasquerade 
#!/bin/sh
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# chmod +x /etc/network/if-up.d/ipmasquerade

続けて、オレオレDNSの設定。
debian の bind9 は /etc/bind/ ディレクトリ以下の named.conf はいじらず、named.conf.local や named.conf.options をいじる。
なお、配布される /etc/bind/named.conf.options には /var/cache/bind/ がディレクトリ指定されているけど、自分は無視して zone ファイルもフルパス指定で /etc/bind/ 以下に置いちゃう。

# apt-get install bind9
# cat /etc/bind/named.conf.options
...
        forwarders {
                192.168.20.1;
        };
...
# cat /etc/bind/named.conf.local
zone "example.com" {
        type master;
        file "/etc/bind/example.com.zone";
};
# cat /etc/bind/example.com.zone
$TTL    1800
@       IN      SOA     dns.example.com.     root.example.com. (
                        14070701        ;serial
                            3600        ;refresh
                            1800        ;retry
                          172800        ;expire
                           86400 )      ;negative cache ttl

                IN      NS      test01.example.com.
test01          IN      A       192.168.0.5

最後に dhcpd の設定。
ターゲットの NIC のベンダーコードを見て、ターゲットの機器以外はアドレスあげないように。

# apt-get install isc-dhcp-server
# cat /etc/dhcp/dhcpd.conf
max-lease-time infinite;
default-lease-time infinite;
shared-network testnetwork {
    subnet 192.168.254.0 netmask 255.255.255.0 {
        option routers 192.168.254.254;
        option broadcast-address 192.168.254.255;
        option domain-name-servers 192.168.254.254;
    }

    class "target" {
        match if substring (hardware,1,3) = 00:11:22;
    }
    pool {
        allow members of "target";
        range 192.168.254.101 192.168.254.150;
    }
}

余らせてた OpenBlockS が有効利用できてよかった。

comment

2008/03/03 (月)

2008-03-03:OpenBlockS266 に Debian をインストール

眠っていた OpenBlockS266 を引っ張りだして、120G の HDD を買ってきて、我が家のルータ兼ファイル置場にしようという計画。
作業手順は別ページで。

OpenBlockS266 に Debian をインストール

comment

2003/08/20 (水)

2003-08-20:OpenBlockS 266 セットアップ

こっちは長いので別ページ。
OpenBlockS 266 セットアップ

comment

2003-08-20:OpenBlockS 266 セットアップ

ぷらっとホームが販売している PowerPC の載ったマイクロサーバ、OpenBlockS の設定についてのメモ書き。
家で corega の無線LANなADSLルータ + PC(debian) という環境から、OpenBlockS にADSLルータと PC で行っていたサービスをまかせ、PC を一台空けようという計画。

OpenBlockS に HDD を載せ、PPC 版の Vine をインストールする、という話題です。
ごたくはいーからさっさとインストールメモを見せろ、という方はお先にこちらをどうぞ。

お役立ちリンク

おうちの環境

ADSL1.5M の線に固定IPをひとつでのサーバ運用。
外向きに開けているポートは 21(ftp),22(ssh),25(SMTP),53(DNS),80(http),443(https)。
ADSL 線との接続は corega のルータが行い、外向きに開けているポートは debian woody な PC(PenIII 1GHz, Mem 1GByte) にフォワードしている。
ネットワークの内側には debian マシン以外にクライアントマシン(WinXP, Win2000)など。
debian マシンは内側向けサービスとして、内ネットDNS・samba によるファイルサーバ・SMTPサーバを行っている。

これらのサービスのうち、ftp,SMTP,http は別のマシンにサービスを移し、OpenBlockS では ssh,DNS,ファイルサーバ をやらせる。

ちなみに購入した OpenBlockS のスペックは以下の様。
くわしくはぷらっとホームのサイトを参照のこと。HDD は Hitachi の流体軸受な 40G を用意した。

CPU IBM PowerPC 405GPr 266MHz
MEMORY 64MB SDRAM
FLASH ROM 8MB
LAN 10/100Base-TX x2
電源 5V 3.0A
サイズ 114.5mm(D) x 81mm(W) x 38mm(H)

分解と組み立て

とりあえず箱を開けてみよう。

右の写真、真ん中の白いのがフタ。左側が本体。
見えている白いスロットのある緑色のボードが拡張CFカード用のボードで、こいつをはずして HDD を載せる。
右上にあるのが買ってきた HDD で、右下は HDD を載せる際に HDD の下に入れる絶縁シート。


CFカード用のボードをはずす。

本体左右側面のプレートがそのままヒートシンクになっている。
運用中は50度くらいまであがるらしい。ケースに穴を開けて、ファンを取りつけている人もいるみたい。
常時稼働させたいし、HDD的に熱は心配のタネではある。
右上にイーサの口2つとシリアルポートが見える。
ボードは非常にコンパクトにまとまっている感じだ。


HDD をマウント。
ぎっちり詰まっている、という感じが出てきた。
本体サイズを 2.5inch HDD のサイズをもとに設計してるんだろうかしら。HDD のネジ止め穴の位置にあわせて、側面のプレートにネジ穴が開いている。

フタを締めて組み立ては完了。

起動・HDD にイメージを展開

作業母艦マシンとハブ、ネットワークケーブルなどを用意。
とりあえずは付属マニュアル通り(プラスアルファ)な作業をしてみる。

OpenBlockS(以下、適宜OBSと略す)の Ether1 にケーブルを差し、母艦と同じネットワークにして電源を入れる(電源ケーブルを接続する)。
Ether1 は工場出荷時で 192.168.253.254 がついている。

[母艦] sudo ifconfig eth0 192.168.253.10 netmask 255.255.255.0
[母艦] telnet 192.168.253.254 (user1 でログイン)
[OBS] su -
[OBS] fdisk /dev/hda
[OBS] mke2fs /dev/hda1
[OBS] mkswap /dev/hda2
[OBS] swapon -a
[OBS] mount /dev/hda1 /mnt

HDD のパーティションを切り、ファイルシステムを作ってマウントしている。

[OBS] vi /etc/ftpusers (root での ftp ログインを許可する)
[母艦] lftp -u root 192.168.253.254 (ハードディスクイメージを put)
[OBS] cd /mnt
[OBS] tar xzf base.tgz
[OBS] tar xzf etc.tgz
[OBS] tar xzf contrib.tgz
[OBS] cd /mnt/dev/
[OBS] ./MAKEDEV generic
[OBS] vi /mnt/etc/fstab
[OBS] vi /mnt/etc/ifconfig.eth0
[OBS] vi /mnt/etc/inetd.conf (telnetd, ftpd を通す)
[OBS] vi /mnt/etc/hosts.allow (telnetd, ftpd を通す)
[OBS] vi /mnt/etc/passwd (アカウントを作っておく)
[OBS] vi /mnt/etc/shadow (アカウントを作っておく)
[OBS] flashcfg -c harddisk

/etc/ftpusers をいじることにあんまり意味はないんだけど、なんとなく root で入りたい気分だったので。(^^;

ディスクイメージの展開のあとの /etc/fstab の編集までは付属マニュアルに書かれているが、以降のファイル編集は書かれていない作業。
/etc/ifconfig.eth0 はもともと存在しないので新規作成。
実はこのファイルがないと起動時に Ether1 ポートが機能しない。おいおい。。。
中身は

inet 192.168.253.354
netmask 255.255.255.0
broadcast 192.168.253.255

と、ifconfig に渡すパラメータを書いておけばよい。
また telnet がデフォルトで無効になっているので、使えるようにしておく。
あとアカウントも作っておかないとね。

最後に HDD から起動するように設定して、reboot。

# ハードディスクで起動してから OBS に入る手段を確保するための
# 設定を書いてないなんて、どういう了見なんだろう。。。< 付属マニュアル ちなみに本体裏面の INIT ボタンを押しながら電源を入れると工場出荷時な設定で起動するので、設定作業にミスった場合は適宜これをやって、HDD を /mnt にマウントして vi のやりなおしをする。

Vine 2.6r1 (PPC) のインストール

試行錯誤の末(実は上の作業に3時間くらいかかった)、なんとか HDD から起動して、外からもいじれるようになった。
が、必要なものをそれぞれ手で make しないといけないのはメンテが面倒だなぁ、やっぱり apt-get 使いたいよね、ということで、HDD をばっさり消して Vine をインストールすることにする。

とりあえずなにはなくともこちらのページを参照しよう。

行った作業はほとんどここのページの説明通り。
ppc-ramdiskimage-patch26r1.txt と chroot の2つのファイルをここから感謝しつつ取得。
Vine の iso イメージは [vinelinux.org]からてきとーなミラーを選んでゲット。

[母艦] sudo ifconfig eth0 192.168.253.18 netmask 255.255.255.0
[母艦] xhost 192.168.253.254

上記のパッチでは母艦が 192.168.253.18 であることを仮定している。
以下しばらくは参照ページの通り。

[母艦] mkdir ppc
[母艦] mount -t iso9660 Vine26r1-ppc.iso ppc -o loop
[母艦] cp ppc/ramdisk.image.gz ./
[母艦] umount ppc
[母艦] gzip -d ramdisk.image.gz
[母艦] mkdir rd
[母艦] mount -t ext2 ramdisk.image rd -o loop
[母艦] tar cf rd.tar rd
[母艦] umount rd
[母艦] rm -f ramdisk.image
[母艦] tar xf rd.tar
[母艦] cd rd
[母艦] patch -p1 <../ppc-ramdiskimage-patch26r1.txt

rd ディレクトリの下の root/bin/boot_live.pl の43行目と47行目の system 文の "2>/dev/\$ENV{'OBSTTY'}" を削除する。
わたしが作業した時はインストーラーがここで止まっていたので。

-        system( "ln -s /live/sbin/* . 2>/dev/\$ENV{'OBSTTY'}" );
+        system( "ln -s /live/sbin/* ." );

-        system( "ln -s /live/sbin/* . 2>/dev/\$ENV{'OBSTTY'}" );
+        system( "ln -s /live/sbin/* ." );

てきとーに書くとこんな感じの修正。
ふたたび作業を続けて、

[母艦] cd ..
[母艦] rm -f rd.tar
[母艦] rmdir ppc
[母艦] tar czvf rdimg.tgz rd
[母艦] lftp -u root 192.168.253.254 (rdimg.tgz, chroot, Vineのisoイメージを put)

ファイルの準備ができたので、いよいよインストール作業。

[母艦] telnet 192.168.253.254 (user1 でログイン)
[OBS] su -
[OBS] cd /mnt
[OBS] tar xzvf rdimg.tgz
[OBS] mknod /dev/loop0 b 7 0
[OBS] mount -t iso9660 Vine26r1-ppc.iso rd/mnt/cdrom -o loop
[OBS] chmod +x chroot
[OBS] ./chroot rd /etc/rc.sysinit

Vine のインストーラーが立ち上がり、母艦の X 上にインストーラーのウィンドウが現れる。
てきとーに手順を進めてインストールする。
パッケージ選択で X まわりもインストールしておくこと。
インストール後の設定動作で、インストーラーが GTK を要求するのだ (--;

インストーラーが終了したら後処理。
Vine をインストールしたのは /mnt/rd/ に chroot した中での /mnt/install/ 以下なので、こいつを HDD のルートにもってくる。
また必要なものを適宜コピー。
ネットワークの設定やアカウントを作っておくことも忘れずに。

[OBS] mv rd/mnt/install/* ./
[OBS] cp -pr /lib/modules/* ./lib/modules
[OBS] cp -p /etc/modules.conf ./etc
[OBS] cp -p /usr/sbin/pshd ./usr/sbin
[OBS] cp -p /usr/sbin/runled ./usr/sbin
[OBS] cp -p /usr/sbin/flashcfg ./usr/sbin
[OBS] vi /mnt/etc/sysconfig/network
[OBS] vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0
[OBS] vi /mnt/etc/passwd (アカウントを作っておく)
[OBS] vi /mnt/etc/shadow (アカウントを作っておく)
[OBS] flashcfg -c harddisk

再起動すると、HDD の Vine が立ち上がる。すばらしい!

comment