不要なネットワークデバイスを黙らせる

PCオーディオというのは「細部の改善」の積み重ねこそが肝要だと感じています。
もちろん、時には「MPD(Music Player Daemon)」のような(再生側とクライアント側を分離する)、また「lightmpd」のような(OSそのものをメモリ上で動作させる)画期的な提案があらわれて、音質改善が飛躍的に前進するときもありますが、そう言うことは稀です。
基本的には、システムにおける細部の見直しと改善の積み重ねこそが肝要で、そして、そう言う積み重ねがある一定のレベルをこえると誰の耳にもはっきりと分かる改善となってあらわれるものです。

「○○に変えれば」といって、そう言う細部の改善を絶対視するムキも一部には存在しますが、そう言う改善に繋がるような「○○」は、私が知る限りでは「MPD」と「lightmpd」の登場くらいです。
ですから、基本的には「lightmpd」が提案した世界の延長線上にある「Tiny Core」もRTカーネルを積み込んだ64ビット版までたどり着いたので、ここからは細部の見直しを行っていきたいと思います。

不要なネットワークデバイスを黙らせる

まずは、やったことを最初に書いておきます。

「/opt/bootlocal.sh 」に以下の内容を追記して、「eth1」と「eth2」を眠らせる。


tc@box:~$ vi /opt/bootlocal.sh 

//以下を追記  
pkill udhcpc       
sudo ifconfig eth1 down
                       
pkill udhcpc        
sudo ifconfig eth2 down

 

音質改善の効果はありそうなので、基本的にはやっておくべき対策かと思われます。

少しばかり詳しく説明

「Tiny Core」を「APU」の上で動作させると、デフォルトの状態では3つあるLAN端子は全て生きています。
ですから、私が一番最初に「固定IPアドレス」でイメージファイルを配布したときも「eth1」や「eth2」が生きていてDHCPサーバーも動いていたので、そのネットワーク環境に適合しなくてもSSH接続が可能でした。
つまりは、こういう環境になっているのです。


tc@box:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0D:B9:35:87:98  
          inet addr:192.168.0.25  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46 errors:0 dropped:19 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3649 (3.5 KiB)  TX bytes:4031 (3.9 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0D:B9:35:87:99  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth2      Link encap:Ethernet  HWaddr 00:0D:B9:35:87:9A  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

PCオーディオの原則として、不要なものは動かさない、と言うものがあります。
もちろん、そのプロセスを止めることでシステム全体が不安定になるようでは本末転倒ですが、システムの安定性を損なわないのであれば、不要なプロセスやジョブ、または使用していないデバイスなどは眠らせておくべきです。
ですから、こういう感じで使ってもいないLAN端子が二つも「生きている」状態というのはどう考えても好ましくありません。
ちなみに、「lightmpd」はデフォルトで「eth0」だけが動作するようになっています。当然の判断だと思われます。

ですから、「Tiny Core」でもこの不要な二つのネットワークデバイスを眠らせたいのですが、起動時に起きてこないようにする方法が今ひとつはっきりしません。

おそらく、「/etc/init.d/dhcp.sh 」を読み込むことで起動時にネットワーク設定がされるものかと思われます。


#!/bin/sh
# The DHCP portion is now separated out, in order to not slow the boot down
# only to wait for slow network cards
. /etc/init.d/tc-functions

# This waits until all devices have registered
/sbin/udevadm settle --timeout=5

NETDEVICES="$(awk -F: '/eth.:|tr.:/{print $1}' /proc/net/dev 2>/dev/null)"
for DEVICE in $NETDEVICES; do
  ifconfig $DEVICE | grep -q "inet addr"
  if [ "$?" != 0 ]; then
#   echo -e "\n${GREEN}Network device ${MAGENTA}$DEVICE${GREEN} detected, DHCP broadcasting for IP.$
{NORMAL}"
    trap 2 3 11
    /sbin/udhcpc -b -i $DEVICE -x hostname:$(/bin/hostname) -p /var/run/udhcpc.$DEVICE.pid >/dev/nul
l 2>&1 &
    trap "" 2 3 11
    sleep 1
  fi
done

 

ただし、これをどう読んでいいのかが今ひとつ分かりませんし、ここに手を出す勇気はないので、いささか不細工なのですが、「/opt/bootlocal.sh」に追記をして起動してからもう一度眠ってもらうことにしました。


tc@box:~$ vi /opt/bootlocal.sh 

sudo ifconfig eth1 down //追記
sudo ifconfig eth2 down //追記

 

「filetool.sh -b」でバックアップしてから再起動すると以下のようになって、「lightmpd」と同様に「eth0」だけが生きている状態になりました。


tc@box:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0D:B9:35:87:98  
          inet addr:192.168.0.25  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:440 errors:0 dropped:341 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:27671 (27.0 KiB)  TX bytes:4139 (4.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

しかし、「ps」コマンドでシステム全体のプロセスの状態を調べてみると、以下のように眠ったはずの「eth1」と「eth2」に対してDHCPが動いているように見ます。


・・・・・・・・
2538 root     /usr/local/sbin/sshd
2544 root     [irq/24-eth0]
2574 root     mpd /home/tc/mpd.conf
2583 root     /sbin/udhcpc -b -i eth1 -x hostname box -p /var/run/udhcpc.eth1.pid
2585 root     /sbin/udhcpc -b -i eth2 -x hostname box -p /var/run/udhcpc.eth2.pid
2546 root     sshd: tc [priv]
2549 tc       sshd: tc@pts/0
・・・・・・・・

 

これもまた、何とも気分が悪いので、さらに「/opt/bootlocal.sh 」に以下の内容を追記します。


tc@box:~$ vi /opt/bootlocal.sh 

pkill udhcpc //追記        
sudo ifconfig eth1 down
                       
pkill udhcpc //追記         
sudo ifconfig eth2 down

 

これでバックアップをとってから再起動すれば以下のように綺麗になっています。


2497 root     /usr/local/sbin/sshd
2503 root     [irq/24-eth0]
2533 root     mpd /home/tc/mpd.conf
2546 root     sshd: tc [priv]
2549 tc       sshd: tc@pts/0

 

最初に述べたように、音質改善の効果はあるようなので、対策として追記しておいて損はないと思われます。