Linux Zaurus SL-3100をWebサーバにする(途中まで)
持ち歩くこともなくなったSL-3100を、自宅内でのWebサーバ(+α)にしていこうと思う。
まずは、基本的な環境設定。
2009-11-17 Linux Zaurusのパーティションの変更で、/hdd2をext3ファイルシステムかつ大容量にしておいたので、ここでいろいろ作業ができる。
とりあえずQt上でのターミナルが必要なので、いとしのlizaさんところから、qpe-embedded-konsole-xのうち、好みのものをいただいてくる。
以下、しばらくはこれで作業する。起動する前に、アイコンを長押しして、「QVGAにほにゃらら」のチェックを外しておく。デフォルトではフォントが小さい(好みの問題もあるかも)。「Fn」と「q」を同時に押すとメニューがでるので、好きなものを選ぶ。私は18か20辺りが好み。
初期設定
Linux Zaurusは、デフォルトではパスワード設定されていない。気持ちだけの問題かもしれないが、root(スーパーユーザ)とzaurusユーザにパスワードをつけておく。
タコさんのアイコンをクリックしてqpe-embedded-konsoleを起動する。
$ su -
# passwd root
# passwd zaurus
# exit
ホスト名も設定しておく(お好み)。デフォルトはzaurusなので、変えたい場合は/etc/HOSTNAMEを変更する。変更したら、再起動すると反映される。
ネットワーク接続
今は、かなり少なくなってしまったが、NE2000互換のCFタイプのLANカードが一番無難。
以前は、PLANEXのCF-10Tとか、BUFFALOのLPC-CF-CLTなどがあったのだが、最近はAmazon.co.jpにもない。
PLANEXのCF-100TX2が、今日の時点でAmazon(マーケットプレイスだけど)にあった。これはデフォルトではzaurusで認識しないのだが、りなざう事始さんのところにあるドライバを使用すれば認識するようだ。ただ、ヒトとしてちゃんとしていない人たちに迷惑をかけられて痛い目にあったらしいので、使用するときは自己責任、かつそこのサイトにご迷惑をかけない範囲で使用すべきだと思った。
ちなみに、zaurusをルーターなどでDHCP設定すると、ssh接続先アドレスがころころ変わって困ることになるので、固定アドレスにする。普通の設定では、ルーターのDHCPリースアドレス範囲以外のアドレスにzaurusのアドレスを設定し、ゲートウェイとDNSサーバーはルーターにすればよいと思われる。
dnsmasqなどでDynamicDNSとDHCPのアドレスをゴニョゴニョできる人は、DHCPで設定し、/etc/pcmcia/network.optsのDHCP_HOSTNAMEにホスト名を記述すると、その名前でログインできるようになるケド…。
OpenSSHのインストール
OpenSSHをZaurus Software Indexからもらってくる。古いバージョンなのでインターネットで使用するには危険だが、自宅内で使用する分にはよしとする。
inetd経由でサーバが起動するので、基本的な設定は不要。/etc/ssh/sshd_configは、(OpenSSH設定できるのであれば)好きなようにいじればよいかと。
$ su -
Password:
# gzip -dc openssh-3.6.1p1_arm.tar.gz | tar xvf -
三つipkgが出てくるんで、そのままipkg installでインストール(Qtopiaでインストールしてもいいのだけれど)する。clientもインストールしないと、scpができないので、注意。
Solaris10 10/09のsambaサービス
Solaris10 10/09には、ZFSのsharesmb、つまりカーネルレベルのCIFS共有機能と、通常のsambaが入っている。
ZFSのCIFSについては、いろいろと調べて設定する必要があるので、今回はとりあえず通常のsambaを使った。
ZFSによるファイルシステムの作成
sharesmbは使わないけれど、システムボリュームをせっかくZFSにしているので、共有用のファイルシステムを作成
/etc/sfw/smb.conf-exampleに例があるので、これを基にsmb.confを作成する。
行ったのは、charsetの追加、WINSサポートの追加、共有ディレクトリの設定くらい。ユーザfooからしかアクセスできないようにしているのは、うちにあるWindowsマシンが全て同じユーザfooとパスワードを使用しているから。
[global]
dos charset = CP932
unix charset = UTF-8
display charset = UTF-8:
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
wins support = yes:
[share]
path = /share
valid users = foo
browseable = yes
public = no
writable = yes
create mask = 0755
directory mask = 0755
これを/etc/sfw/smb.confに保存し、svcadm enable sambaを実行。ところが、なぜかWindosからホスト名によるアクセス\\hoge\shareができない。直接IPアドレスを指定して\\192.168.0.x\shareだとアクセスできる。
調べてみたところ、nmbdが動作していない。sambaサービスのmanifest、/var/svc/manifest/samba.xmlを覗いて見たら、nmbdを起動していない(sambaサービスはmethodを使用していない)。
さらに調べたところ、winsサービスというものがあり、これをenableにすることでホスト名でアクセスできるようになった。
# svcadm enable samba
# svcadm enable wins
Linux Zaurusのパーティション変更
SL-3100(4GBマイクロドライブ)を16GBのCFカードに換装したので、パーティション設定を行った。
いろいろなブログに記載があるが、データなどのバックアップはきちんと行ってから作業すべきだと思った。特に、NANDのバックアップは重要。現在はWEB上に各機種用のものがあるが、いつなくなるかわからないし。。。
以下のような手順で行った。なお、私は必要なデータがなかったため、バックアップを全く取らずに作業を行った。
NANDのバックアップ
(実は、私は、この作業は行っていない。必要なデータがSL-3100に入っていなかったため)
Service Menuを利用する。Service Menuを起動するには、バッテリとAC電源を外す。
256MB以上の空きのあるSDカードまたはCFカードを差し込む。(今時、どこにでも転がってるかな?)
「D」と「M」を同時に押したまま、AC電源を接続する。
Service Menuが立ち上がる。
ページを切り替えて、「BACKUP RESTORE MENU」をタッチし、バックアップ作業を行う。バックアップ先はもちろん、差し込んでいるSDもしくはCF。
パーティション設定
メンテナンスカーネルで作業を行う。メンテナンスカーネルで起動すると、内蔵HDD(私の場合はCF)がマウントされないまま起動する。SDやCFを差し込んだ状態で起動すると、それらはマウントされる。
バッテリ蓋のロックを外し、リセットスイッチを押す。バッテリ蓋を元に戻し、「D」と「B」を同時に押したまま、電源を入れる。
login:
画面になるので、rootと入力する。rootにパスワードを設定している場合は恐らく、パスワードを入力する必要がある。
この時点で、シェルプロンプトになる。内蔵ディスクがマウントされておらず、かつfdiskコマンドが使用できるので、パーティションの設定ができる。内蔵ディスクは/dev/hdaとして認識されている。
fdiskは、Linuxの通常のものと使い方が変わらないので、ここでは記述を省略する。一旦全パーティションを削除し、好きなように作成しなおす。なお、/dev/hda1はシステムが入れられ、read onlyでマウントされるので、大きなパーティションとして作成しない方がよい。せいぜい200MBくらいか。また、/dev/hda3のパーティションタイプをFAT32にしておく必要がある。"t"コマンドで、パーティションタイプを"c"にすればよい。
Zaurusのシステム上、少なくともプライマリパーティションを3つ。/dev/hda1と/dev/hda2はext3でmkfsする必要がある。また、/dev/hda3はFAT32でmkfsする必要がある。具体的には、
# mkfs.ext2 -j /dev/hda1
# mkfs.ext2 -j /dev/hda2
# mkdosfs -F 32 /dev/hda3
これが終わったら電源を切る。次の作業のために、リセットスイッチを押しておく。
NANDバックアップの復旧
NANDバックアップで保存しておいたバックアップを使用して、復旧作業を行う。
なお、これがなくても、こんなところに各機種用のオリジナルNANDがあるので、私はこれを使用しておこなった。
手順は、バックアップの代わりにリストアする感じ。
アップデート
アップデートを行うことで、/hdd1の内容も復旧される。ただし、スペシャルカーネルを使用していた場合元に戻ってしまうので、再度インストールする必要がある。
ザウルスサポートステーションにアップデータがあるので、これを適用する。
Solaris10のパッチをチェック、インストールしてくれるスクリプトpca
これまたgoogleで発見したパッチ適用ツール「pca」の使い方の備忘録。
Solaris10 10/09(U8)で動作確認を行った。
前提
まず、パッチをダウンロードするために、SunSolveにアカウントを作っておく必要がある。無料なので、作っておくと良いかと思われる。
pcaを動作させるのにperlとwgetが必要。だが、Entire Distributionでインストールすれば自動的に入る。ただし、wgetは/usr/sfw/bin/wgetにあるので注意(デフォルトでスーパーユーザーはここにパスが通っていない)。
.profileなどに、
PATH=$PATH:/usr/sfw/bin
export PATH
などの行を追加しておく必要がある。
pcaの取得
pca webサイトにアクセスし、Installationメニューで行けるページからstableバージョンをダウンロードする。pcaの詳細は上記サイトを参照のこと。英語だけど…。
pcaの使い方
いたって簡単だった。
更新すべきパッチがあるかどうかは、
# pca --user=
--passwd= -V
で表示される。
実際に更新するには、
# pca --user=
--passwd= -si
で行われる。リブートが必要なパッチを適用した場合は、適用後にその旨表示される。
なお、2009/11/15に試したところ、なぜか更新に失敗した?パッチがpcaのあるディレクトリにzip形式ファイルとして落ちていた。失敗した理由はわからないが、unzipコマンドで展開し、patchaddコマンドで直接展開することにより、きちんと適用することができた。
以下、例:
# cd /var/tmp
# wget http://www.par.univie.ac.at/solaris/pca/stable/pca
# chmod +x pca
# ./pca --user=--passwd= -V
:
# ./pca --user=--passwd= -si
:
# init 6
Solaris10にUSB-HDDを接続し、ZFSで利用する方法
Solaris10マシンに、USB-HDDを接続し、ZFSで利用する方法を書いておく。
googleで調べたところ、いくつかブログに記載があった。自分があえて書く必要性はないのだが、備忘録、ということで。
環境は、、、
Solaris10 10/09 32bit(PentiumMマシンのため)
CD/DVDドライブ以外のリムーバブルメディアは使用しないため、smserverやvolfsサービスは停止。
基本的にはこのUSB-HDDを抜かない。(故障した時などを除く。)そして、ファイルサーバ用のファイルシステムとして使用。
セキュリティというよりはメモリ/CPUの負荷を低減するため、インストール時に不要なサービスは停止させている(netservices limited同等)。また、サーバ機としてしようするので、デスクトップ関連のサービスも停止させている。
なお、ZFSまわりは結構、リリース毎に機能向上や仕様変更などあるので、リリースによっては(10/09以外では)手順が異なるかもしれない。
USB-HDD接続
USB-HDDを物理的に接続する。以下のコマンドで、Solarisが認識しているか確認する。
# rmformat[ENTER]
デバイスを探しています...
1. Logical Node: /dev/rdsk/c2t0d0p0
Physical Node: /pci@0,0/pci10cf,11ab@1d,7/hub@3/storage@2/disk@0,0
Connected Device: BUFFALO USB-SATA Bridge 0100
Device Type: Removable
Logical Nodeに着目。/dev/rdsk/c2t0d0p0として認識されている。なぜか、c2t0d0ではなく、c2t0d0p0(パーティション0)?である理由はわからない。しかし、このデバイス名でないと以下の作業ができなかった。
パーティション設定
fdiskを使用する。全ディスクをZFSプールとして利用する。元々Linux ext3で全領域を使用していたので、これを削除し、Solarisで認識できるパーティションにする。
# fdisk /dev/rdsk/c2t0d0p0[ENTER]
Total disk size is 30401 cylinders
Cylinder size is 16065 (512 byte) blocksCylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Linux native 1 30400 30400 100
SELECT ONE OF THE FOLLOWING:
1. Create a partition
2. Specify the active partition
3. Delete a partition
4. Change between Solaris and Solaris2 Partition IDs
5. Exit (update disk configuration and exit)
6. Cancel (exit without updating disk configuration)
Enter Selection: 3[ENTER]
以下のようになるので、パーティション1を指定。
Specify the partition number to delete (or enter 0 to exit): 1[ENTER]
すると、確認されるので、yを入力する。
Are you sure you want to delete partition 1? This will make all files and
programs in this partition inaccessible (type "y" or "n").y[ENTER]
パーティションが削除されたことが表示される。
Partition 1 has been deleted.
Enter Selection: 1[ENTER]
パーティションタイプの選択を求められるので、SOLARIS2を選ぶ。
Select the partition type to create:
1=SOLARIS2 2=UNIX 3=PCIXOS 4=Other
5=DOS12 6=DOS16 7=DOSEXT 8=DOSBIG
9=DOS16LBA A=x86 Boot B=Diagnostic C=FAT32
D=FAT32LBA E=DOSEXTLBA F=EFI 0=Exit? 1[ENTER]
ディスクの容量のうち、どのくらいをこのパーティションで使用するか、%(パーセンテージ)で入力する。今回は全部使用するので、100でよい。(個人的には全部を使用しない時は、GBとかで指定できると嬉しいのだが、指定できるかどうか調べていない。。。)
Specify the percentage of disk to use for this partition
(or type "c" to specify the size in cylinders). 100[ENTER]
次に、そのパーティションをアクティブにするかどうか尋ねられる。まぁ、アクティブにしておく。
Should this become the active partition? If yes, it will be activated
each time the computer is reset or turned on.
Please type "y" or "n". y[ENTER]
作成できた。更新して終了するため、5を入力する。
Total disk size is 30401 cylinders
Cylinder size is 16065 (512 byte) blocksCylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active Solaris2 1 30400 30400 100
SELECT ONE OF THE FOLLOWING:
1. Create a partition
2. Specify the active partition
3. Delete a partition
4. Change between Solaris and Solaris2 Partition IDs
5. Exit (update disk configuration and exit)
6. Cancel (exit without updating disk configuration)
Enter Selection: 5[ENTER]
Partition 1 is now the active partition.
#
ZFSのファイルシステム作成
まずはpoolを作成する。なお、私はブートディスクもZFSにしているのだが、USB-HDDは独立して管理させたいため、プールも独立したものを作成した。
# zpool create spool c2t0d0p0[ENTER]
# zpool list[ENTER]
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
spool 232G 116K 232G 0% ONLINE -
rpool 111G 5.48G 106G 4% ONLINE -
spoolなるプールができた。このプール上に、ZFSのファイルシステムを作成する。マウントポイントは、/shareにする。(/exportはデフォルトでrpool上で使用されているため。)
# zfs create -o mountpoint=/share spool/share[ENTER]
# zfs list[ENTER]
NAME USED AVAIL REFER MOUNTPOINT
spool 111K 228G 21K /spool
spool/share 21K 228G 21K /share
rpool 6.22G 103G 33K /rpool
rpool/ROOT 4.29G 103G 21K legacy
rpool/ROOT/s10x_u8wos_08a 4.29G 103G 4.29G /
rpool/export 4.29G 103G 21K /export
rpool/export/home 4.29G 103G 21K /export/home
rpool/dump 1.00G 103G 1.00G -
rpool/swap 763M 104G 16K -
とりあえず、でけた。
nfsやsambaで共有するのに、zfsファイルシステムへのオプションで制御できそうなのだが、これについてはまた別途書くことにしよう。
Windows XP上にcoLinux導入を試みたが。。。
ThinkPad X40のWindows XP上の仮想マシンでDebian5を動作させ、emacs muse上で作成した内部WEBサイトをWindowsのブラウザで参照することにより、ブックマーク代わりとする運用をしていた。
これまではこれをVMware Workstation/VMware Playerで行ってきていたのだが、Windowsの再起動時に仮想マシンを電源断/オンさせても、サスペンド/レジュームさせても結構時間がかかっていた。
それで、coLinuxを試してみた。
自宅ではLANからルータ経由でインターネットに接続している。外ではEMOBILEにてインターネットに接続している。このため、ブリッジ接続は利用できない。VMwareでは、NATを使用して仮想マシンを動作させていた。
coLinuxでは、TAP接続を利用したWindows XPのインターネット接続共有(ICS)ないしは、レジストリ、サービスなどのセットアップによるNAT環境設定のいづれかで利用できそうに思えた。のだが、実際にセットアップしたところ、うまくいかなかった。
理由はわからないが、ICS、独自NAT環境いずれも、自宅のLAN環境では、自宅のファイヤーウォール兼ルータの外のネットワークにアクセスできなかった。ルータ内にはping、sshアクセスなど可能だったので、TAPを利用した設定ではなんらかの理由により、ゲートウェイが超えられないのだろうと推測される。
結局VMwareを再インストールすることになってしまった。。。