Linux 設定日記

設定したことを忘れないように書いてあります。

2008.01.08
IDEケーブルの交換

IDEケーブルを交換する前に、まずはディスクの状態を確認してみる。

smartctl -aでディスクの状態を見てみるが、どちらも問題なさそう。 ただ、/dev/hdaでS.M.A.R.Tが動作していなかったので、smartctl -s on /dev/hdaでイネーブルにした。

ケーブルを交換するついでに、プライマリとセカンダリのディスクを入れ換える。 入れ替え前は、

Primary Master HDS728080PLAT20
Slave -
Secandary Master SAMSUNG SP2514N
Slave FX320S
という構成。容量の大きいSAMSUNGのほうを、プライマリにした方がチャネルも安定するのではと思ったのだ。
ちなみに、このSAMSUNGはポップにWestenDigitalと書かれていたのでそれを信じてかったら、開けてびっくりだったもの。 WDがSAMSUNGに買収されたのか?と驚きましたよ。

入れ換えて接続すると、ケーブルが硬くてファンに干渉するのでCDドライブのベゼルが少し飛び出した形でしか組み込めない、 という問題が発生したが、とりあえず完了。

smartctl -t short /dev/hd{a,c}を行い、結果をsmartctl -a /dev/hd{a,c}と確認してみたが特にに問題なさそう。 デバイスが入れ代わったので、lilo.confの入れ換えも忘れずに行って終了とした。

しばらく様子をみているが、問題はなくなったようだ。

2008.01.07
Vine 4.2にしたら、sambaがおかしくなった

Vine Linuxも4.2がリリースされたため、環境をアップデートしてみた。 アップデート自体は、/etc/apt/sources.listを4.2と変更し、apt-get update、apt-get dist-upgradeで問題なく完了したが、 sambaがおかしくなってしまった。

症状としては、Linuxサーバ上で保管している撮影写真を、クライアントのエクスプローラから縮小版で参照すると、 一度に大量なファイルを表示させようとした場合、サーバが固まってしまう。

Jan  6 13:37:18 XXXXX kernel: hdc: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jan  6 13:37:18 XXXXX kernel: hdc: dma_intr: error=0x84 { DriveStatusError BadCRC }

カーネルのドライバあたりが変わってDMAでエラーになるのかとも思ったが、 ネットで調べた限りでは、IDEのパス周りにに異常がありそうとのこと。 IDEのバス回りということであれば、チャネルのコンデンサの可能性も予想されるが、まずはケーブルIDE交換で様子をみることにした。

2007.03.28
アップグレードの弊害

以前に書いた変更点意外にも問題があることが判明。 popでメールがとれなくなっていた。

spoolを見るとメールはちゃんと残っているが、popではメールがないといわれる。

結果的には、inet.confのpopが生き返ってしまってたためと判明。pop3をコメントアウトしてinetdとimpadを再起動した所、問題は解消。

2007.03.21
NICの認識順

Vine 4.1へアップグレート。TIPSにしたがってアップグレードは問題なく終了。 カーネルが書き換わってしまうことを心配したが(RAID-1でブートしているため)、initrdが付いたのでliloにinitrdを記載しておけば問題なくbootできた。

image=/boot/vmlinuz
        label=linux
        read-only
        initrd = /boot/initrd.img
        vga=791
        root=/dev/md0

起動は問題なく、インストール完了かと思いきや、二枚差ししているNICの認識順がブートのたびに入れ替わってしまう。 何とかする方法はないのかと探したら、/etc/sysconfig/network-script中の設定ファイルで何とかなることが判明。

DEVICE=eth0
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:10:4B:XX:XX:XX

こんな感じで、HWADDRにMACを書いてあげれば、deviceを指定できる。MACアドレスはifconfig -aで表示可能。

その他気がついたこととしては、

といったところか。

2006.08.23
RAIDのエラー

会社のサーバーから以下のメールが飛んできた。

This is an automatically generated mail message from mdadm
running on aXXXXs.XXXXX.XXXX.co.jp

A Fail event had been detected on md device /dev/md4.

It could be related to component device /dev/sdc7.

Faithfully yours, etc.

どうやら、/dev/sdcが壊れたよう。詳細をみたらこんな感じだった。

# mdadm --detail /dev/md4
/dev/md4:
        Version : 00.90.00
  Creation Time : Tue Feb 14 17:07:39 2006
     Raid Level : raid5
     Array Size : 7807360 (7.45 GiB 7.99 GB)
    Device Size : 3903680 (3.72 GiB 4.00 GB)
   Raid Devices : 3
  Total Devices : 3
Preferred Minor : 4
    Persistence : Superblock is persistent

    Update Time : Tue Aug 22 00:45:08 2006
          State : active, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 7c9d1ebd:2d322ef4:5f08f6b7:66809036
         Events : 0.232074

    Number   Major   Minor   RaidDevice State
       0       8       23        0      active sync   /dev/sdb7
       1       8       39        1      faulty   /dev/sdc7
       2       8        7        2      active sync   /dev/sda7

ホットスワップ可能な機器なので、とりあえず、ディスクのためにRAIDを停止。

#mdadm --remove /dev/sdc7

順番に、ディスクを取り外し、準備した新しいディスクと認識しない。 リブートを実施後、認識するようになったが、それじゃホットスワップの意味ないじゃん。

おもいだしたが、swapはRAIDではなくそのまま使っているので、swapoffしなきゃいけなかった。 その影響か。

その後はfdiskでまったく同じようにパーテーションを割り振り、パーテーション種別をfdに設定。

#mdadm /dev/md0 --add /dev/sdc1

と順に割り当てて行くと勝手に再構築されて完了。ただしスワップは作成されないので、# mkswap /dev/sdc3 && swaponが必要。

2006.06.21
phpgroupwareのインストール-2

どうにも環境設定が完了しないので、PostgreSQLから使い慣れたMySQLに変更する。

rpm -e postgresql postgresql-server
rpm -e postgresql-libs pgperl php5-pgsql
apt-get install php5-mysql MySQL-server MySQL-client MySQL-shared

phpgroupwareのルートにあるheader.inc.phpを削除、再セットアップ。だが変わらず。環境設定が完了しない。 調べるとなんとなく、config.php中のin_docroot関数の判定とそれに引き渡す引数が怪しそう。 引数の方は、register_globalをonにすれば直るのかもしれないが、register_globalの対策はされているという事なので、それを信じてみる。 とりあえず、以下のように修正したら設定はできるようになった。

diff -c config.php /var/www/phpgroupware/setup/config.php
*** config.php  2004-04-07 08:24:44.000000000 +0900
--- /home/jp-oota/phpgroupware/setup/config.php 2006-06-21 23:34:42.000000000 +0900
***************
*** 38,50 ****
        function in_docroot($path)
        {
                $docroots = array(PHPGW_SERVER_ROOT,$GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT']);
                
                foreach ($docroots as $docroot)
                {
                        $len = strlen($docroot);
  
!                       if ($docroot == substr($path,0,$len))
                        {
                                $rest = substr($path,$len);
  
--- 38,50 ----
        function in_docroot($path)
        {
                $docroots = array(PHPGW_SERVER_ROOT,$GLOBALS['HTTP_SERVER_VARS']['DOCUMENT_ROOT']);
                
                foreach ($docroots as $docroot)
                {
                        $len = strlen($docroot);
  
!                       if ($len > 0 && $docroot == substr($path,0,$len))
                        {
                                $rest = substr($path,$len);
  
***************
*** 108,114 ****
        }
  
        $newsettings = get_var('newsettings',Array('POST'));
!       $files_in_docroot = in_docroot($GLOBALS['HTTP_POST_VARS']['newsettings']['files_dir']);
  
        if(@get_var('submit',Array('POST')) && @$newsettings && !$files_in_docroot)
        {
--- 108,114 ----
        }
  
        $newsettings = get_var('newsettings',Array('POST'));
!       $files_in_docroot = in_docroot($newsettings['files_dir']);
  
        if(@get_var('submit',Array('POST')) && @$newsettings && !$files_in_docroot)
        {

次に言語環境のセットアップ。なぜか知らないが、最初はbertonしか選択できない。 「現在の言語をすべて削除して、選択した言語をインストール」をチェックした状態でボタンを押し、 再度言語環境のセットアップを選択する事を繰り返すたびに選択できる言語が増える。 三回目にjapaneseが選べるので選択。

アカウントも作成し、これでOKと思ったのだが、ログオンしてもメニューが表示されない。 というか、homeとabout homeとlogoutしか表示されない。englishなら問題ないのだが。

と、ここまでやって気がついたがphp5なのがいけないのではないか?。 ということで、php5をアンインストールしてphp4に。 さっきのパッチもいらないかも。

# rpm -e php5 php5-apache2 php5-mysql php5-pdo php5-pear
# apt-get install php php-apache2 php-mysql php-pear

ということで、上記のようにphp4に変更後、ソースの展開からやり直したら問題なくインストール完了し、動作するようになった。 ほんとうにありがとうございました。