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

Kernel 2.6.32をコンパイル

※書いてあるカーネルより新しいカーネル用のdiffファイルは下の方にあります。
コマンド部分はカーネルのバージョンに合わせ、2.6.32.○のように書き換えて実行してください。

Kernelの2.6.32が正式にリリースされたので、T4のカーネルを2.6.32に上げてみることに。

まずは、適当なディレクトリを作成。
# mkdir kernel_complie
# cd kernel_complie

The Linux Kernel Archivesから2.6.32のカーネルソースをDL
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2

解凍
# tar jxvf linux-2.6.32.tar.bz2

作業ディレクトリに2.6.32用のパッチをDL
↓これがパッチです。
kuro-nas-t4-2.6.32.diff

解凍したカーネルソースのディレクトリに移動。
# cd linux-2.6.32

initrd.img、its、dtbファイルをソースディレクトリにDL
(これらはFitImage作成用のディレクトリにDLでも構いません)
initrd.img
kuro_nas_t4.its
kuro_nas_t4.dtb
※dtbファイルは時刻のズレ対応済みです。

2.6.32用のパッチを実行
# patch -p 1 < ..//kuro-nas-t4-2.6.32.diff T4デフォルトのconfigファイルをコピー # cp arch/powerpc/configs/kuro_nas_t4_defconfig .config ※既にオプション変更したconfigを利用する場合は、変更済みのconfigをコピーしてください。

oldconfig実行
# make oldconfig

※カーネルのコンパイルオプションを変更する場合は、ここでオプション変更してください。
デフォルトで選択されていない機能やデバイスを有効にするには
コンパイルオプションを必要に応じて変更する必要があります。

コンパイルオプションを変更する場合
# make menuconfig

カーネルのコンパイル
# make

カーネルのコンパイルがうまく行けばmoduleのインストール
# make modules_install

コンパイルされたカーネルバイナリを名前変更
# mv vmlinux.bin.gz vmlinuz

fitImageの作成
# mkimage -f kuro_nas_t4.its uImage-2.6.32.buffalo

作成したfitImageを/bootにコピー
# cp uImage-2.6.32.buffalo /boot

試しに正常起動できるかテスト。
再起動してu-bootからコマンドを実行。

BUFFALO>> setenv kernel uImage-2.6.32.buffalo
BUFFALO>> run hdboot

正常起動したら/bootのシンボリックリンクを書き換えて、通常起動カーネルを新しく作成したカーネルに変更。
# cd /boot
# rm uImage.buffalo
# ln -s uImage-2.6.32.buffalo uImage.buffalo
※もし正常起動しなかった場合、シンボリックリンクを書き換えてなければ
普通にリセットすることで、正常動作時のカーネルで起動します。

今のところエラーも無く正常に2.6.32が動作中です。

以下は参考にさせて頂いたサイトです、感謝。
FrontPage – PukiWiki
D Blog

2009/12/21 追記
Kernel2.6.32.2をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.bz2

Kernel2.6.32.2対応パッチファイル
kuro-nas-t4-2.6.32.2.diff

2010/01/09 追記
Kernel2.6.32.3をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.3.tar.bz2

Kernel2.6.32.3対応パッチファイル
kuro-nas-t4-2.6.32.3.diff

2010/01/20 追記
Kernel2.6.32.4をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.4のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.4.tar.bz2

Kernel2.6.32.4対応パッチファイル
kuro-nas-t4-2.6.32.4.diff

2010/01/24 追記
Kernel2.6.32.5をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.5のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.5.tar.bz2

Kernel2.6.32.5対応パッチファイル
kuro-nas-t4-2.6.32.5.diff

2010/01/29 追記
Kernel2.6.32.6をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.6のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.6.tar.bz2

Kernel2.6.32.6対応パッチファイル
kuro-nas-t4-2.6.32.6.diff

2010/01/30 追記
Kernel2.6.32.7をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.7のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.7.tar.bz2

Kernel2.6.32.7対応パッチファイル
kuro-nas-t4-2.6.32.7.diff

2010/02/11 追記
Kernel2.6.32.8をコンパイルして無事動作中です。

The Linux Kernel Archivesから2.6.32.8のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2

Kernel2.6.32.8対応パッチファイル
kuro-nas-t4-2.6.32.8.diff

2010/02/26 追記
Kernel2.6.33をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.tar.bz2

Kernel2.6.33対応パッチファイル
kuro-nas-t4-2.6.33.diff

2010/03/19 追記
Kernel2.6.33.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.bz2

Kernel2.6.33.1対応パッチファイル
kuro-nas-t4-2.6.33.1.diff

2010/04/03 追記
Kernel2.6.33.2をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2

Kernel2.6.33.2対応パッチファイル
kuro-nas-t4-2.6.33.2.diff

2010/04/28 追記
Kernel2.6.33.3をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.3.tar.bz2

Kernel2.6.33.3対応パッチファイル
kuro-nas-t4-2.6.33.3.diff

2010/05/14 追記
Kernel2.6.33.4をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.33.4のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.4.tar.bz2

Kernel2.6.33.4対応パッチファイル
kuro-nas-t4-2.6.33.4.diff

2010/05/19 追記
Kernel2.6.34をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.34のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2

Kernel2.6.34対応パッチファイル
kuro-nas-t4-2.6.34.diff

2010/07/06 追記
Kernel2.6.34.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.34.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.1.tar.bz2

Kernel2.6.34.1対応パッチファイル
kuro-nas-t4-2.6.34.1.diff

2010/08/12 追記
Kernel2.6.35.1をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.1のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.1.tar.bz2

Kernel2.6.35.1対応パッチファイル
kuro-nas-t4-2.6.35.1.diff

2010/08/16 追記
Kernel2.6.35.2をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.2のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.2.tar.bz2

Kernel2.6.35.2対応パッチファイル
kuro-nas-t4-2.6.35.2.diff

2010/08/24 追記
Kernel2.6.35.3をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.3のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.3.tar.bz2

Kernel2.6.35.3対応パッチファイル
kuro-nas-t4-2.6.35.3.diff

2010/09/30 追記
Kernel2.6.35.7をコンパイルしてテスト運用中です。

The Linux Kernel Archivesから2.6.35.7のカーネルソースをDL
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.7.tar.bz2

Kernel2.6.35.7対応パッチファイル
kuro-nas-t4-2.6.35.7.diff

SSHでのホスト制限

SSHで外から接続出来ると何かと便利です。
しかし、セキュリティ的にはあまり良くありません。
秘密鍵の利用や、SSHポート番号の変更は当然ですが
それでもアタックしてくる奴はいるものです。

私はアタックが多い国のIPをiptablesで規制しています。
(当然ながらその国のIPからは全く繋がりません)
この対応でアタック自体はかなり減らすことが出来ました。
※詳しくはblog内に書いてます。

それでも稀にアタックはあるかもしれません。
より安全にするためにSSHに接続出来るIPを規制します。
(会社などで固定IPがある場合で無いと有効には出来ませんが)

編集するファイルは以下となります。
/etc/hosts.allow

当然ながらローカルの接続は許可となります。
sshd : 192.168. : ALLOW

複数のIPを登録する場合は、スペースで区切って登録します。
(最後の: ALLOWは無くても構いません)
sshd : 192.168.  xxx.xxx.xxx.xxx: ALLOW

それ以外は拒否しなければならないので
/etc/hosts.denyにsshd: ALLと書き加える必要があります。

個人的には面倒臭がりなので
/etc/hosts.allowに拒否の行まで書き加えます(笑)
sshd: ALL : deny

許可・非許可のルールはファイル内では上から一致するまで
ファイルの優先順位は/etc/hosts.allowから/etc/hosts.denyへと解釈されます。
どちらにも一致しなかった場合は許可となりますので/etc/hosts.denyの最後に
次の一行を追加しておくことをお勧めします。
ALL : ALL : deny

またsshdにアクセスがあった場合にメールを送ることも可能です。
※メールを送信出来る環境の場合です。
下にサンプルを書いておきます。

# for sshd local access
sshd : 192.168. : ALLOW
# for sshd etc access with mail
sshd : xxx.xxx.xxx.xxx : spawn ( /usr/bin/mail -s “sshd connected from %h” yourname@yourmail.com) &

上の行が192.168から始まるアドレスを許可(メールは送られません)
下の行がxxx.xxx.xxx.xxxからアクセスがあった場合に許可しますが、同時にメールを送信します。
※ポートへの接続自体の許可であって、SSHの認証は当然必要です。
“sshd connected from %h”の部分がメールの件名として送られてきます。
%hは接続してきたホスト名(又はIP)に置き換えられて送信されます。
yourname@yourmail.comは送信先のメールアドレスとなります。
※標準の25番ポートを開けて使うのは、かなりの確率でアタックを受けるのでお勧めしません。

cronのログ出力先変更

MRTGを動かしていると5分に1回syslogにcronのログが出力され
syslogを見ても非常に見難くなります。

cronの-Lオプションでwarn以上しか出力しないように設定してみましたが
上手く動かずsyslogに出力されてしまいます。
そこでcronのログをsyslogではなく独立して出力するように変更します。

T4のlennyではrsyslogが使用されているので/etc/rsyslog.confを修正します。
以下の行があるので変更します。

#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
cron.* /var/log/cron.log  ←追加
*.*;auth,authpriv.none;cron.none -/var/log/syslog  ←cron.noneの追加
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log

変更後にrsyslogをリスタートするか、システムをリブートすれば適応されます。

続いてntpのログもsyslogから切り離します。
ntpのログ設定はntpdオプション用のファイルを修正します。

# vi default/ntp

NTPD_OPTSに以下の用に追加してください。
-l /var/log/ntp.log

ntpデーモンを再起動すれば/var/log/ntp.logが出来ているはずです。

未確認ですが、恐らくこのままではログは肥大化を続けるので
logrotateを使って、ログをローテーションさせてあげます。

新規にlogrotate用のファイルを作成して登録します。
# vi /etc/logrotate.d/ntp

内容はご自分でローテーションさせたい値に書き換えてください。

/var/log/ntp.log {
weekly
rotate 12
compress
missingok
}

これで/var/log/ntp.log がローテーションされます。

dhcp3-serverのログも結構頻繁に出るので独立させます。
基本的にはcronと同じ方法ですが、/etc/dhcp3/dhcpd.confの以下の行をまず確認します。

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

log-facility local7;が該当箇所です。
これはsyslogでlocal7というfacilityを使うという意味です。
もし他のデーモンがlocal7を使っていると、そのログまで一緒に別のファイルに書き込まれることになるので、local7の数字の部分を書き換える必要があります。
他で使われていなければそのままで構いません。

/etc/rsyslog.confを開いてcronと同様に追加、修正します。
追加、修正する文字はlocal7(書き換えていたら書き換えたもの)となります。
両サービスを再起動すれば、ログは別れて出力されます。

またlogrotateもcronと同じように設定する必要があります。

これらのログファイルを分けることでsyslogは大変見やすくなりました。
(ntpやdhcp-serverなどは、システムのログに比べて重要性は下がりますが、チェックはした方が良いと思います)

追記
smartmontoolsも同じようにsyslogのfacilityを指定可能です。

smartdのオプションを見ると以下のように書いています。

smartd version 5.38 [powerpc-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Usage: smartd [options]

-c NAME|-, –configfile=NAME|-
Read configuration file NAME or stdin [default is /etc/smartd.conf]

-d, –debug
Start smartd in debug mode

-D, –showdirectives
Print the configuration file Directives and exit

-h, –help, –usage
Display this help and exit

-i N, –interval=N
Set interval between disk checks to N seconds, where N >= 10

-l local[0-7], –logfacility=local[0-7]
Use syslog facility local0 – local7 or daemon [default]

-n, –no-fork
Do not fork into background

-p NAME, –pidfile=NAME
Write PID file NAME

-q WHEN, –quit=WHEN
Quit on one of: nodev, errors, nodevstartup, never, onecheck, showtests

-r, –report=TYPE
Report transactions for one of: ioctl[,N], ataioctl[,N], scsiioctl[,N]

-V, –version, –license, –copyright
Print License, Copyright, and version information

/etc/default/smartmontoolsのsmartd_optsに–logfacility=local6などと追加すればOKです。
後はsyslogの設定でlocal6(オプションで指定したlocal)のログを切り離せば別にログを吐き出せます。

snmpdのログレベル変更

snmpdにアクセスすると、その度にsyslogにログを吐いてかなりの量に・・・
ログの出力レベルを変更して、通常のレベルのログを出力しないようにします。

# vi /etc/default/snmpd

SNMPDOPTS=’-Lsd -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
この行を書き換えます。
※仕様が変わったのか、他と仕様が違うのか、よく書かれている方法ではうまく動きませんでした。

SNMPDOPTS=’-LS3d -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid

これでsyslogにログが出力されていないのを確認しました。
※ログレベルは3と書いてあるサイトや5と書いてあるサイトがあります。

kernel.hには以下のように書かれているのでerr以上の場合は3、notice以上の場合は5で良いとは思います。

#define KERN_EMERG “<0>” /* system is unusable */
#define KERN_ALERT “<1>” /* action must be taken immediately */
#define KERN_CRIT “<2>” /* critical conditions */
#define KERN_ERR “<3>” /* error conditions */
#define KERN_WARNING “<4>” /* warning conditions */
#define KERN_NOTICE “<5>” /* normal but significant condition */
#define KERN_INFO “<6>” /* informational */
#define KERN_DEBUG “<7>” /* debug-level messages */

USB-LANの交換

LinkStationの時から使用してたIOデータETG-US2があまり調子良くなかったので
BuffaloのLUA2-U2-KGTを購入。

チップはETG-US2と同じでカーネルのソースにはLUA-U2-GTとしてIDの登録もあり。
チップはAX88178です。

既にAsix.cはコンパイルしてmoduleとして入れてあるので差し替えるだけ。

eth1はETG-US2として記録されているのでeth2として認識。
設定を記録してる/etc/udev/rules.d/70-persistent-net.rulesを書き換え。

書き換え後に再起動で無事eth1として認識。

2009/11/08 追記
IOデータETG-US2、Buffalo LUA2-U2-KGT共に
/proc/net/devのパケット情報が全て0で取れていなかったのですが
カーネルのバージョンを2.6.31.5に上げることで、正常動作するようになりました。
(パケットカウントが取れないだけで動きは正常でした)
T4でUSB-LANを使用される方は、カーネルをバージョンアップした方が良いでしょう。

vimの色表示ON

T4のでエディターはvimを使用しているのですが
vi /etc/vim/vimrcでsyntax onにしてもエラーになりました。

Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on

バージョン的には問題ないと思うんですが。

ということでvimをフルでインストール(笑)
(パッケージが多くて結構時間掛かります)

#apt-get install vim-full

途中で設定画面が出て来ますが、変更なしで先へ進めば設定完了。
/etc/vim/vimrcのsyntax onを有効にしてvim起動!

ちゃんと色が付いて表示されました。
(vimに色なんて要らね~っていう方には、全く要らないですね)

ついでにlsコマンドでの表示も色表示をONにします。

ユーザー全員に色付けOKにするには/etc/skel/.bashrcの変更を。
と思ったら、こちらは既に色付けOKな設定でした。

という事は、rootが個別に色無しになっているのか確認。
# vi /root/.bashrc

以下の行が色付けの行なんですが、コメントアウトされていました。
# export LS_OPTIONS=’–color=auto’
# eval “`dircolors`”
# alias ls=’ls $LS_OPTIONS’

コメントを取って、上書きして、logout
export LS_OPTIONS=’–color=auto’
eval “`dircolors`”
alias ls=’ls $LS_OPTIONS’

再度ログインするとlsコマンドでちゃんと色付き表示されました。