TinyCore linuxを試してみる(2)~ヘッドレス化とNASのマウント

取りあえず「Tiny Core」がインストールできて、SSHの接続も可能になったので、引き続きいくつかの設定をインストールに使用したPCを使って行います。
手順は基本的に「ミミズ工房」さんが紹介してくれた順番で行うのですが、いくつかの点で異なる部分もあるので、そのあたりは中心に報告していきます。

何はともあれ、開発用のPCに「Tiny Core」をインストールしたUSBメモリを差しこんで起動させ、WindowsPCからSSH接続をして設定を行います。
今回は「ヘッドレス化」「NASのマウント」「MPDのインストール」まで報告します。

ヘッドレス化

「Tiny Core」は「APU1C」で使うつもりなので「ヘッドレス化」しなければいけません。
「ヘッドレス」とはあまり聞き慣れない言葉なのですが、簡単にいってしまえばディスプレイ表示のためのハードウェアをもっていないということです。

言うまでもないことですが、普通のPCで「ヘッドレス」ならば何もできません。外部に情報を表示させる機能を持たないのですから、そんなPCはなんの役にも立ちません。
しかし、MPDは外部のクライアントPCから操作することを前提とした音楽再生ステムであり、それがインストールされたOSからではコマンドラインからの命令すらも受け付けません。ですから、インストールされたPCが「ヘッドレス」であってもなんの問題もありません。
さらに言えば、ディスプレイ接続のためのハードウェアは基本的に電磁波ノイズの塊ですから、そんなものは無い方が音質的には有利なのです。

一般的に「APU1C」が音がよいと言われるのですが、その一番の理由が「ヘッドレス」だからです。

しかし、問題もあります。
USBでブートするシステムが「ヘッドレス」に対応していないと起動しないのです。そして、当然のことですが、「Tiny Core」もデフォルトでは「ヘッドレス」に対応していません。
ですから、まずは「ヘッドレス」ではない通常のPCで「Tiny Core」を起動して、「ヘッドレス」に対応するように設定を変えることが「APU1C」で「Tiny Core」を起動させるための第一歩になるのです。

ただし、その手順は既に「ミミズ工房」さんの方で紹介してくれていますから、その通りにやれば簡単に実現できます。

やるべき作業は以下の3点です。

  1. 「securettyの編集」
  2. 「autologinの設定」
  3. 「inittabの設定」

考え方としては、Linuxの標準入出力となっている端末デバイスの「tty」には眠ってもらって、シリアルコンソールの「ttyS」に目覚めてもらうと言うことのようです。

(1)「/etc/securetty」を編集して「ttyS0」を有効にする。

tc@box:~$ sudo vi /etc/securetty
# For people with serial port consoles
#ttyS0

となっているので、「ttyS0」のコメントを外して有効化します。

# For people with serial port consoles
ttyS0

(2)「/sbin/autologin」を編集して「ttyS0」を有効にする。

ログインの時に「tty1」ではなくて「ttyS0」でログインするように変更します。

tc@box:~$ sudo vi /sbin/autologin
#!/bin/busybox ash
. /etc/init.d/tc-functions
useBusybox
if [ -f /var/log/autologin ] ; then
exec /sbin/getty 38400 tty1
else
touch /var/log/autologin
exec login -f root
fi

「exec /sbin/getty 38400 tty1」コメントアウトして、「exec /sbin/getty 115200 ttyS0」を追記します。

#!/bin/busybox ash
. /etc/init.d/tc-functions
useBusybox
if [ -f /var/log/autologin ] ; then
exec /sbin/getty 115200 ttyS0・・・追記する
#exec /sbin/getty 38400 tty1
else
touch /var/log/autologin
exec login -f root
fi

(3) 「/etc/inittab」を編集して「ttyS0」を有効にする。

ここも同様に、「tty1」を無効にし、「ttyS0」を有効にします。

tc@box:~$ sudo vi /etc/inittab
# /etc/inittab: init configuration for busybox init.
# Boot-time system configuration/initialization script.
#
::sysinit:/etc/init.d/rcS

# /sbin/getty respawn shell invocations for selected ttys.
tty1::respawn:/sbin/getty -nl /sbin/autologin 38400 tty1
#tty2::respawn:/sbin/getty 38400 tty2
#tty3::respawn:/sbin/getty 38400 tty3
#tty4::askfirst:/sbin/getty 38400 tty4
#tty5::askfirst:/sbin/getty 38400 tty5
#tty6::askfirst:/sbin/getty 38400 tty6

「tty1::respawn:/sbin/getty -nl /sbin/autologin 38400 tty1」コメントアウトして、「ttyS0::respawn:/sbin/getty -nl /sbin/autologin 115200 ttyS0」を追記します。

# /etc/inittab: init configuration for busybox init.
# Boot-time system configuration/initialization script.
#
::sysinit:/etc/init.d/rcS

# /sbin/getty respawn shell invocations for selected ttys.
ttyS0::respawn:/sbin/getty -nl /sbin/autologin 115200 ttyS0・・・追記する
#tty1::respawn:/sbin/getty -nl /sbin/autologin 38400 tty1
#tty2::respawn:/sbin/getty 38400 tty2
#tty3::respawn:/sbin/getty 38400 tty3
#tty4::askfirst:/sbin/getty 38400 tty4
#tty5::askfirst:/sbin/getty 38400 tty5
#tty6::askfirst:/sbin/getty 38400 tty6

なお、「ミミズ工房さん」によるとオートログインを停止しておかないと、ssh接続で操作するときには何の問題はないがシリアルコンソールで接続するときには困ったことになるので対応した方がよいと書かれています。
しかし、私の開発環境では、対応した方が不都合が起こるので何もしていません。
また、言うまでもないことですが、対応してもしなくても「SSH接続」では何の問題もありません。

とは言え不都合が起こる場合もあるでしょうから、取りあえず紹介しておきます。ケース・バイ。ケースなのかもしれません。

tc@box:~$ sudo vi /opt/bootsync.sh
echo “booting” > /etc/sysconfig/noautologin・・・追記する

(4)設定のバックアップ

最後に忘れていけないのは、こういう風に設定の変更をしたときにバックアップすることです。
繰り返しますが、「Tiny Core」のようにメモリ上で全てが動作しているOSでは、設定を変えたときにバックアップしておかないとシャットダウンや再起動すると全ての設定変更が消えてしまいます。

まずは、設定を変更したファイルやディレクトリを「/opt/.filetool.lst」に書き出します。

ついでに、この部分設定だけでなく将来的に必要と思われるものもこれを機会に書き出しておきます。
ついでながら「管理者権限」は不要なので頭に「sudo」は必要ありません。

tc@box:~$ vi /opt/.filetool.lst
opt
home
etc/shadow
etc/passwd
usr/local/etc/ssh/sshd_config
usr/local/etc/
etc/fstab
etc/securetty
etc/inittab
sbin/autologin
/opt/bootlocal.sh

必要な内容を追記して保存します。
そして、忘れずに「iletool.sh」コマンドでバックアップします。

tc@box:~$ filetool.sh -b
Backing up files to /mnt/sdb2/tce/mydata.tgztc@

これでめでたく「Tiny Core」はヘッドレス化されました。

NASのマウント

さあいよいよ、「MPDシステム」最大の鬼門(^^;であるNASのマウントです。
手順は、まずは「nfsのインストールと起動」、そして「NASのマウント」です。

(1)nfsのインストールと起動

NASのマウントは「nfs」でも「cifs」でも可能ですが、音質的にはNASの側でWindowsのファイルサーバー機能をオフにできる「nfs」の方が圧倒的に有利です。
ですから、ここでも「nfs」だけをインストールしてシステム起動時に立ち上がるようにします。

インストールは「tce」コマンドを使います。要領は前回に「openssh」をインストールしたときと同じです。

tc@box:~$tce
「s」として「nfs」と入力します。
ズラズラと説明が出るので、取りあえずは最後まで詠んで「q」として、それから「i」としればインストールされます。
最後に「q」とすればもとの画面に戻って完了です。

そして、「nfs」を起動させます。

tc@box:~$ sudo /usr/local/etc/init.d/nfs-client start

当然のことですが、システム起動時に「nfs」が立ち上がってくれないとNASを自動的にマウントできません。
ですから、「/opt/bootlocal.sh」に「nfs」が立ち上がってくれるように1行追記します。

tc@box:~$ vi /opt/bootlocal.sh
#!/bin/sh
# put other system startup commands here
/usr/local/etc/init.d/openssh start

pkill udhcpc
ifconfig eth0 192.168.0.40 netmask 255.255.255.0 broadcast 192.168.0.255 up
route add default gw 192.168.0.1
echo nameserver 192.168.0.1 > /etc/resolv.conf

/usr/local/etc/init.d/nfs-client start・・・追記する。

(2)NASをマウントする

ここから述べることは、NASの機種によって随分かわってくることが想定されます。ですから、以下の記述で上手くいかないときにあれこれ質問されても、その環境が手もとにないと答えようがない部分があると言うことは理解しておいてください。

まずは、普通は「/etc/fstab」に必要な情報を追記するというのが定石なのですが、どうも上手くいかないようです。
そこで、先ほどシステムの起動時に「nfs」が立ち上がるように情報を追記した「/opt/bootlocal.sh」にマウントに必要な情報を追記します。

考え方は、マウントポイントとなる「music」ディレクトリを作成し、そこにNAS(192.168.0.XX:/volume1/classic)をマウントします。
言うまでもないことですが、マウントするNASの情報は環境によって変わりますので、その環境に合わせて「192.168.0.XX:/volume/classic_music」は適切に変えてください。

tc@box:~$ vi /opt/bootlocal.sh
#!/bin/sh
# put other system startup commands here
/usr/local/etc/init.d/openssh start

pkill udhcpc
ifconfig eth0 192.168.0.40 netmask 255.255.255.0 broadcast 192.168.0.255 up
route add default gw 192.168.0.1
echo nameserver 192.168.0.1 > /etc/resolv.conf

/usr/local/etc/init.d/nfs-client start

mkdir /music・・・追記する。
mount -t nfs -o rsize=8192,wsize=4096 192.168.0.XX:/volume/classic_music /music・・・追記する。

なお、ミミズ工房さんの情報によると「/opt/bootlocal.sh」で書き込むやり方では上手くマウントできないと言うことでしたが、私の環境では問題なくマウントできています。
しかし、これもまた環境によって変わってくるかのしれませんので、ミミズ工房さんの設定も紹介しておきます。

tc@box:~$ vi /opt/bootlocal.sh
mkdir /music
/home/tc/start.sh

tc@box:~$ vi /home/tc/start.sh
sudo sleep 5
sudo mount -t nfs -o rsize=8192,wsize=4096 192.168.0.36:/mnt/sda/CD /music

保存して、終了

sudo chmod 777 /home/tc/start.sh

不思議ですが、このやり方では私は上手くマウントできませんでした。

(3)忘れずにバックアップ

tc@box:~$ filetool.sh -b
Backing up files to /mnt/sdb2/tce/mydata.tgztc@

ここで「filetool.sh」コマンドを使ってバックアップを忘れると全てが消えてしまいます。
実は、結果を早く見たくて何度かバックアップを忘れて再起動してしまい痛い目に遭ってしまいました。くれぐれも「filetool.sh -b」は忘れないようにしてください。

そして、これで再起動して「/music」にNASがマウントされていれば大成功です。

tc@box:~$ sudo reboot
・・・・・
tc@box:~$ ls /music
#recycle/ Callas/ Gliere/ Krumpholz/ Ravel/ Tartini/
Albeniz/ Canto_Gregoriano/ Glinka/ L_Mozart/ Respighi/ Tchaikovsky/

みたいな感じで、NASの中味が表示されれば成功です。
あとはMPDをインストールして設定ファイルを編集すれば取りあえずは再生ができますので、この時点で既に頂上直下といえます。