「Linux」カテゴリーアーカイブ

Raspberry PiのNFS起動

/mnt/server/hogeのetc/fstabの/dev/mmcblk0p2エントリをコメントアウト

/boot/cmdline.txtをNFS起動に設定
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.0.xxx:/mnt/server/hoge,udp,vers=3 ip=192.168.0.yyy:192.168.0.xxx:192.168.0.1:255.255.255.0:rpi:eth0:off rootfstype=nfs smsc95xx.turbo_mode=N elevator=deadline rootwait

ip=::::::::

Howto: Raspberry Pi Root NFS share – boot your System over NFS share and definitively deal with Flash data corruption
Boot Raspberry Pi over NFS

Sendmail送信制限設定

/etc/mail/sendmail.mc

sendmail.mc は /etc/mail ディレクトリに入っています。このファイルを root で編集します。その後、次のように m4 コマンドで sendmail.cf ファイルを生成します。
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

例えば50通に制限したい場合は、
define(`confMAX_RCPTS_PER_MESSAGE’, `10′)dnl
と追加記述してください。

relay_mail_from
送信者のメールアドレスがアクセスマップ内でRELAYと記述されていれば、中継を許可する。 もし、引数にdomainが指定されていれば、ドメインもチェックする。 なお、アクセスマップに関しては、access_dbを参照のこと。
FEATURE(`relay_mail_from’)dnl
FEATURE(`relay_mail_from’, `domain’)

/etc/mail/trusted-users

accessマップ
From:bob@your.domain RELAY ← this sender can relay
From:watanet.com RELAY ← ドメインごと中継許可
makemap hash /etc/mail/access < /etc/mail/access sendmailの再起動 /etc/init.d/sendmail stop /etc/init.d/sendmail start sendmail再起動時のメッセージ Makefile:365: 警告: ターゲット `/etc/aliases.db' へのコマンドを置き換えます Makefile:362: 警告: ターゲット `/etc/aliases.db' への古いコマンドは無視されます Makefile:421: 警告: ターゲット `/etc/aliases' へのコマンドを置き換えます Makefile:362: 警告: ターゲット `/etc/aliases' への古いコマンドは無視されます 554 5.0.0 No local mailer defined 554 5.0.0 QueueDirectory (Q) option must be set

Raspberry Piサーバ設定

Raspbianイメージからインストール
・NOOBSは面倒

固定IP化
・/etc/network/interfaces

iface eth0 inet static
address 192.168.0.xxx
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 220.220.248.1

・/etc/hosts

192.168.0.yyy hoge

・/etc/resolv.conf

dnsmasqインストール
DHCPリースログ:/var/lib/misc/dnsmasq.leases

rootをHDDに移動する
https://melgrubb.wordpress.com/2014/08/01/raspberry-pi-home-server-part-6-adding-a-hard-drive/
gpartedもついでに入れる

/dev/sda1 → root 16GB
/dev/sda2 → Webサーバ用 84GB
/dev/sda3 → データ用(NTFS) 1900GB

/dev/sda1のPartition unique GUID
2E2853B9-8117-4635-B2B0-A0E887728FDC

/dev/sda1: UUID=”89b4f982-2aee-4393-b536-77cc639c435a” TYPE=”ext4″
/dev/sda3: LABEL=”Data” UUID=”2066C9B136993504″ TYPE=”ntfs”

minidlnaのインストール
http://www.instructables.com/id/Raspberry-Pi-Media-Server-MiniDLNA/?lang=ja

nfsサーバのインストール
sudo apt-get install -y nfs-common nfs-kernel-server
(-y は全ての問いに yes)

webサーバ用パーティションの用意
フォーマット:sudo mkfs.ext4 /dev/sda2
UUIDの確認:sudo blkid /dev/sda2
/dev/sda2: UUID=”e5faec66-6af8-4ed4-bb17-798c607281c3″ TYPE=”ext4″
mountポイントの作成:sudo mkdir /mnt/server
sudo chmod 777 /mnt/server
fstabの編集
/dev/disk/by-uuid/e5faec66-6af8-4ed4-bb17-798c607281c3 /mnt/server ext4 defaults,noatime 0 2

nfsの設定
/etc/exports
/mnt/server/hoge *(rw,wdelay,no_root_squash,no_subtree_check)
NFS起動時にrpc.nfsdやrpc.mountdでエラーが発生する→IPv6を有効にする
/etc/modulesにipv6を追記する
snd-bcm2835
ipv6

nfs自動起動設定
$ sudo update-rc.d rpcbind enable
$ sudo update-rc.d nfs-common- enable
$ sudo update-rc.d nfs-kernel-server enable

Buffalo LS-GLでLinuxbox(7)

NTPがさっくりと入ったような気がしたんだけど、どうも安定して動かない。起動してしばらくするとNTPサーバに同期するんだけど、小一時間して様子を伺うとntpdが落ちている。psしてもプロセスが存在しない。どうもシステムクロックの精度が悪くて落ちてるっぽい。こういうところは不親切だよな~、ntpdは。

と、嘆いているだけでは埒があかないので、玄箱時代に同じようなことがあったことを思い出してゴソゴソと調べてみた。どうもntpdは±8.64秒/日以下の精度がないとちゃんと動かなさそうなことが書いてあった。そして、玄箱時代もシステムクロックの精度の悪さに対応するためにadjtimexを使ったっけ、と昔を懐かしながらipkgにadjtimexを探したけどなかった。もう少し探してみたら ntpclient に含まれているようだ。# ipkg install ntpclientでさくっと adjtimexは入ったけど、使い方が分からない。。。 ウェブにあるadjtimexのmanページを見てもあるはずのオプションがないから、普通のものよりもちょっと特殊なものが入っているよう。

以前は確かこの方法でadjtimexを使ったと思うけどこのスクリプトはLinkStation+Optwareには使えなさそう。そこで、# adjtimexを実行すると表示される情報を元に試行錯誤をしてみた。方法はSlashdotの記事を参考に、# adjtimex -t x -f 0のx(tickと呼ばれる値で、デフォルトは10000)をntpq -pで表示されるoffsetの値を元に増減させる。offsetがプラスに大きくなってきたら10001、10002と大きくしていく。逆にマイナスに大きくなってきたらtickを少なくする。

Linuxがどのようにシステムクロックを管理しているか深く理解していないけど、10000 tickを基準に±1000 tickの範囲で粗く調整し、1 tick=6553600 frequencyでさらに細かく調整できるよう。で、ntpdはfrequencyは調整してくれるみたいだけど、tickは手動で設定するみたい。# ntpq -p
# adjtimex
を繰り返してntpqのoffsetとadjtimexのfrequencyに注目する。adjtimexのfrequencyの絶対値が6553600を超えたら、tickを調整する。6553600以上になったらtickを1増やして# adjtimex -t tick+1 -f 0とfrequencyをリセットする。

いまのところtick=10007、frequency=5651930あたりで落ち着いてる。これで様子を見よう。

ユーザをadminグループのメンバーにする

WordPressの管理者アカウントでいろいろと作業を行おうと思うと、コンソールにて$ su -でsuになるのはいいんだけど、GUIで作業をしたいときはgksuを使いたくなる。あと、普通にsudoコマンドも使いたい。けど、普通のアカウントだとsudoersファイルに設定(/etc/sudoersをvisudoで編集)してもだめで、adminグループに属しないといけないよう。

なので、kiyoeriさんの記事を参考に# usermod -G admin ユーザIDとするとsudoersに何もしなくてもsudoおよびgksuが使えるようになる。

Ubuntuのリフレッシュレート変更

そう言えばなんか画面がチラチラすると思ったら、リフレッシュレートが60Hzだった。そう、まだ我が家のモニタはブラウン管でSony GDM-20SE3Tなのである。運良くソニータイマーが発動することもなく、もう12年目に突入しようとしている。もうこうなったら壊れるまで使い倒すつもり。

まあそれはいいんだけど、Ubuntuでのリフレッシュレートの変更のしかた。Windowsではわけなくできることだけど、Ubuntuではひとひねり必要だったりする。まず、[システム]ー[設定]ー[画面の解像度]では「リフレッシュレート」なる項目はあるものの、60Hzしか選択肢がなく変更できない。

ググってみると、そのものズバリUbuntuをインストールした直後に行う設定(Ubuntu 8.04編)があって、この「解像度とリフレッシュレートの設定」に見習ってコンソールにて、$ sudo displayconfig-gtkを実行すると[モニタとグラフィックスカードの設定]なるウィンドウが開く。ここでモニタの設定を選ぶと複数のリフレッシュレートが選択できるようになるので、控えめに70Hzを選択してとりあえずリブート。

するとログイン画面が大きくてスクリーンをはみ出している。辛うじてログインはできるけど、画面下に表示されるはずのメニューが一切見えない。これは頂けない。ただ、ログインしてしまえば画面のチラつきはなくなっていて、逆に75Hzのパキパキな画面になっている。ん? 75Hz? まあ、安定しているからいいけど。

さて肝心のログイン画面なんだけど、これは何回か遭遇している不具合で、毎回なんかする拍子に直ってしまうので「これ」っていう対処方法が分かってない。これもググってみると、take shortさんのところにヒントがあった。/etc/X11/xorg.confの必要のない解像度を削除する、というのが正解らしい。1600 x 1200より高い解像度設定をSection “Screen”
SubSection “Display”
Modes
から削除してリブートしたら綺麗に1600 x 1200 @ 75Hzでログイン画面、デスクトップとも起動できた。めでたし、めでたし + ありがとうございます、先人の皆様。

Ubuntuでファンを制御する

静音化に取り組んでるサブ機だけど、静かなるほど他の音が気になる。静音化のジレンマだねぇ。と、感慨にふけっている場合ではなく、かすかに聞こえるCPUファンの音が気になり始めた。これはひとつファン静音化抵抗をはさむか、と思ったら4ピンのファンだった。どうせPWM制御だったらソフトウェアでできるはず・・・

って、もうCool’n’Quietで行われているんだけど、ファンの回転数がちょっと高くて、1400rpmあたりを前後している。これで33℃くらい。もうちょっと温かくていいから、ファン回転数を下げられないか・・・ それより、そもそもUbuntuでファンの回転数をもっと詳細に見られるようにすべきなんじゃないか。

ということで、KsensorsというGUIでPCの諸々の情報を監視できるパッケージをSynapticで入れてみた。これを入れるとlm-sensorsというコマンドラインのPC情報監視ツールおよびそれに関連する諸々のライブラリ等がインストールされる。でも、インストールするだけではなぜかKsensorsはメニューに現れない(再起動したとしても)。

そこでググって見たところ、Ubuntu Forumにファンのソフトウェア制御も含めた親切な解説があった。この説明をベースにいろいろとやってみて、うまく行った(と思われる)ものを書きとめておく。

まず、$ sudo sensors-detectを実行して、PC情報を取得するセンサーデバイスを特定する。と言ってもただひたすら「y」と答えていくだけ。最後の「/etc/modprobe.d/local に設定を追加する」と聞いてくるので、ここも「y」。ここで再起動すると良さそう。

再起動した後たぶんここで$ sudo sensorsとすると、各センサー情報が表示されるはず。うまく行かないマザーボードもあるらしく、ここで何も表示されないとかなりはまると思う。幸いここは直にファン回転数、温度等正常に表示されたのでひと安心。

安心したのもつかの間、/etc/sensors.conf が無い。/etc/sensors3.conf ならある。なんだか分からないけどとりあえずコピーする。$ sudo cp /etc/sensors3.conf /etc/sensors.conf

次はいよいよファン回転数のソフトウェア制御。$ sudo pwmconfigを実行して、sensorsコマンドで表示されたファンセンサーデバイスとCPU温度の紐付けを行う。ちなみに、このツールはなぜかファンの回転停止を半自動的に求めようとするんだけど失敗する。これはマザーボード上でもファン回転数を制御しようとしていてそれが影響しているのか、PWMのファンには相性が悪いのか分からない。まあ、とりあえず/etc/fancontrol が作られているはずなので、これを調整していく。

その前に、$ sudo fancontrolを実行してソフトウェア制御が可能か試してみる。うまくいったんだけど、回転数はまだ若干高い。CPU温度が35℃あたりで1200rpm。CPU温度がもっと上がれば回転数もそれなりに上がってくれるので動作はちゃんとしているっぽい。そこでconfigファイルの調整。

ここは色々と試行錯誤したけど、/etc/fancontrolの調整後の内容がこちら。INTERVAL=5
FCTEMPS=hwmon1/device/pwm3=hwmon1/device/temp2_input hwmon1/device/pwm1=hwmon1/device/temp2_input
FCFANS=hwmon1/device/pwm3=hwmon1/device/fan1_input hwmon1/device/pwm1=hwmon1/device/fan1_input
MINTEMP=hwmon1/device/pwm3=30 hwmon1/device/pwm1=30
MAXTEMP=hwmon1/device/pwm3=50 hwmon1/device/pwm1=50
MINSTART=hwmon1/device/pwm3=50 hwmon1/device/pwm1=50
MINSTOP=hwmon1/device/pwm3=120 hwmon1/device/pwm1=120
MINPWM=hwmon1/device/pwm3=0 hwmon1/device/pwm1=0
MAXPWM=hwmon1/device/pwm3=255 hwmon1/device/pwm1=255
INTERVALを 5 に設定して5秒間隔で制御を行うようにして、MINSTARTを 50、MINSTOPを 120 に設定。これでアイドル時は大体CPU温度は35℃でファン回転数は1100rpm。これくらいだとファンの音は全く聞こえない。CPU温度が37℃になって1200rpmを超えるとわずかながら音が聞こえるけど、それはCPUに負荷が掛かっているのが感じられて逆にいいかも。ちなみに36℃あたりを閾値に設定したのは体温と同じくらいだからという、ただそれだけ。全くもって根拠レス。Athlon X2 4050eってどのくらいの温度で皆さん使ってるのでしょう?

さて、これで無事ファン回転数のソフトウェア制御に成功したわけだけど、これだけ調子良く設定できたらやっぱり自動起動させたい。そこで解説に戻って、etc/init.d/fancontrolファイルをroot権限で作って、#!/bin/sh
#
# Fancontrol start script.
#

set -e

# Defaults
DAEMON=/usr/sbin/fancontrol
PIDFILE=/var/run/fancontrol.pid
PATH=/sbin:/bin:/usr/sbin:/usr/bin

test -f $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
start)
log_begin_msg "Starting fancontrol daemon..."
start-stop-daemon --start -o -q -m -b -p $PIDFILE -x $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping fancontrol daemon..."
start-stop-daemon --stop -o -q -p $PIDFILE
log_end_msg $?
;;
force-reload|restart)
sh $0 stop
sh $0 start
;;
*)
log_success_msg "Usage: /etc/init.d/fancontrol {start|stop|restart|force-reload}"
log_success_msg " start - starts system-wide fancontrol service"
log_success_msg " stop - stops system-wide fancontrol service"
log_success_msg " restart, force-reload - starts a new system-wide fancontrol service"
exit 1
;;
esac

exit 0
をコピペする。その後は$ sudo update-rc.d fancontrol defaults 99 01とスタートアップスクリプトを設定する。あ、そういえば、$ sudo chmod 0755 /etc/init.d/fancontrolこんなことや、$ sudo ln -s /etc/init.d/fancontrol /etc/rc3.d/S99fancontrolこんなこともしたかも。

ちなみに、Ksensorsは以前メニューには現れず、仕方ないのでメニューエディタで「アプリケーション」-「システムツール」にKsensorsを追加した。ちなみに追加したコマンドはgksu ksensors確かこれだけだと起動してくれなかったから /etc/sudoers に%admin ALL=(ALL) NOPASSWD: /usr/bin/ksensorsを追加した。そしてこれを自動起動させるには「システム」-「設定」-「セッション」の「追加」でgksu ksensorsコマンドを追加する。

これで完了。

PHPでメールが送れない

PHPでメールを送るのには大変苦労していたけど、pearのMail.phpモジュールを使うことでなんとか形になっていた。はずなんだけど、最近になってメールが送られない不具合が発生!

新しいサーバになってから、perl系のメールは確認したけどPHPは。。。 もしかしたら、モジュール毎にインストールが必要だったり。。。 ログを確認したら、Mail.phpがない、と。Pathは/usr/share/php, /usr/share/pearだっていうけど、どちらのディレクトリもない。どうもMail.phpはphp-mailにあるらしい。php-mail-mimeも関連しそうだからこれらをsynapticでインストールするとついでにphp5-cliとphp-pearもインストールされる。

しかし、それでもメールは送られない。またログを見ると、今度はphp-net-smtpがない、と。じゃ、synapticでいれましょ(いいのか、こんな行き当たりばったりで。。。)。php-net-smtpとついでにlibphp-phpmailerにも関係ありそうなのでチェック(いいのか、こんないいかげんなことで。。。)。すると、php-net-socketもついでにインストールされ無事にメール送信成功。