Linux 設定日記

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

2010.05.04
写真の整理(Perl::Imager)

写真の整理をするために、perl scriptを組んでいるのだが、再インストールした際にライブラリがリセットされてうまく動かなくなった。 エラーが出るたびに、必要なモジュールをインストールしたが、ImagerがJpegサポートされない形でインストールされてしまった。 format 'jpeg' not supported - formats bmp, ico, pnm, raw, sgi, tga available for reading at ... 原因はライブラリ(とヘッダファイル)がインストールされていないため。
CPAN上で、install Imagerとした際に冒頭に


  CPAN.pm: Going to build T/TO/TONYC/Imager-0.73.tar.gz


done.
       gif: includes not found - libraries not found
     ungif: includes not found - libraries not found
      jpeg: includes not found - libraries found
       png: includes not found - libraries not found
      tiff: includes not found - libraries not found
 freetype2: includes not found - libraries found
 freetype2: not available
  T1-fonts: includes not found - libraries not found
  TT-fonts: includes not found - libraries not found
       w32: includes not found - libraries not found
EXIF support enabled
とチェックが走るので、includes found - libraries foundとなるように、 libjpeg-develをインストールし、cpanでclean Imagerをおこなった後、force install Imagerで再インストールすることで、jpegサポートされるようになった。

2009.12.27
RAIDからのboot

次にraidからのbootを設定。 まずは、起動時にraidが認識されるように、mintrdを作成。 ちゃんとraidが認識されている状態で行わないと正しくファイルイメージが作成されない。 昨日の段階でうまくいかなかったのはちゃんとraidが認識されていなかったから。 次回以降は、アップデート時にrpmスクリプトが自動的に行ってくれるので一度行えばよいはず。

mkinitrd -v /boot/initrd-2.6.27-raid-43vl5.img 2.6.27-43vl5
次にgrubの設定。/etc/grub.confを以下のように設定。
# menu.lst generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-version.img
default=0
timeout=5

title Vine Linux (Current kernel Raid)
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/md1 rhgb resume=swap:/dev/sdb3 vga=0x314 splash=silent 
        initrd /initrd-2.6.27-raid-46vl5.img
ずっとliloを使ってきてきていたため、grubにはなれておらず、ここでも結構、はまってしまった。
root (hd0,0)は、grubが起動して、ルートとしてマウントするパーテション。 (hd0,0)は一つ目のデバイスの一つ目のパーテションを指す。 うちの環境の場合は/dev/sda1で、最終的にマウントされるのは、/boot。 kernelやinitrdは/bootをルートと見立てたディレクトリで指定しなければならない。
rootは、initrdが起動した後の本来のrootデバイスであり、うちの環境では/dev/md1になる。

この関係がわからず、

mount: error mounting /dev/root on /sysroot as ext3:Imvalid argument
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys, mounting initernal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic -not syncing: Attempted to kill init!
を何度も見る羽目になった。

以上の設定をしたら、grubを起動ディスクに書き込む。 raidで起動する前であれば、grub-install /dev/sdaで書き込むことができるが、raid起動後は手動でgrubに書き込む必要がある。

[root@argus pc2m]# grub
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]
grub> device (hd0) /dev/sda
device (hd0) /dev/sda
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0xfd
grub> install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf
install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf
grub> quit
quit
ポイントはここもディレクトリの指定。(hd0,0)は/bootなので、/bootをrootとしたディレクト指定となる。 /dev/sdbに対しても同様に書き込みを行う。

2009.12.26
Vine 5.0 インストール

クリーンインストールなので、Western digital WD15EADS-00P8B0などを買ってみた。 旧ディスクの片割れと、新ディスクでRAIDを組んで、普通にvine 5.0のインストーラからインストールしようとするが、フルRAIDのせいかうまくいかない。 起動したあと

md: md1 stopped.
md: bind
と出たのち、/dev/rootが見つからないといってkernel panicになってしまう。

なので、以前のようににインストールすることにした。 以前のようにというものの、自宅サーバははるか昔、 会社のサーバでも結構前なのですっかり忘れている。

こちらに、まずはVine 5.0をインストール。 その後、以前のディスクにRAID-1を組んでから、再度このディスクをRAIDデバイスとして追加するため、パーテションのサイズは新しいディスクと合わせておく必要がある。 また、パーテションタイプはfdに変更しておく。

インストールが完了したら、旧ディスクをRAIDデバイスとして作成。新ディスクが/dev/sda, 旧ディスクが/dev/sdbであるため、

mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/sdb1 missing
mdadm --create /dev/md1 --level=1 --raid-device=2 /dev/sdb2 missing
mdadm --create /dev/md2 --level=1 --raid-device=2 /dev/sdb5 missing
mdadm --create /dev/md3 --level=1 --raid-device=2 /dev/sdb6 missing
mdadm --create /dev/md4 --level=1 --raid-device=2 /dev/sdb7 missing
こんな感じで作成。/dev/sdbだけでRAIDデバイスを作成したのち、/dev/sdbを/opt以下にマウントする。 その上で必要なファイルを/dev/sdaからコピーしてあげる。こんな感じ。
mkdir -p {/opt/bin,/opt/boot,/opt/dev,/opt/etc,/opt/home,/opt/initrd,/opt/lib,/opt/lib64,/opt/media,/opt/misc,/opt/mnt,/opt/net,/opt/opt,/opt/proc,/opt/root,/opt/sbin,/opt/selinux,/opt/srv,/opt/sys,/opt/tmp,/opt/usr,/opt/var}
\cp -ap {/bin,/boot,/dev,/etc,/home,/initrd,/lib,/lib64,/media,/misc,/net,/root,/sbin,/srv,/tmp,/usr,/var} /opt
で、次に、/opt/etc/fstabを修正。デフォルトではlabelになっているので、/dev/md に e2labelでラベルを設定しても動作するかもしれないが、 ややこしいので、デバイスを指定した。
/dev/md1                /                       ext3    defaults        1 1
/dev/md0                /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/md4                /home                   ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
/dev/md2                /usr                    ext3    defaults        1 2
/dev/md3                /var                    ext3    defaults        1 2
/dev/sda3               swap                    swap    defaults        0 0
/dev/sdb3               swap                    swap    defaults        0 0
以上完了したら、raidが正しく認識されているか再起動してみたが、さっきのように/dev/mdがstopしてしまう。 どうやら古いmdadm.confが残っていたためのようで mdadm.confを再作成したら問題なくなった。

2009.12.23
新サーバ購入

ということで、FX33P2-IONにサーバを再構築することに。 とりあえず、クレバリーのIDE/SATA変換アダプタ経由で、 旧サーバのディスクを取り付けてみたが、liloのメニューが出たあと無反応となってしまう。 おそらく、RAID DISKの構成が、PATA(/dev/hd)から、SATA(/dev/sd)に変わったあたりの問題だと思われるので、復旧させる努力をすれば何とかなったかもしれないが、 せっかくの64bit環境ということもあり、再構築することとした。

再構築にあたって、どのディストリビューションを選ぶか少し悩んだが、apt+rpmという管理になれたので、Vine 5.0にした。 だが、4.x系とは変わっている点が多いことと、64ビットシステムにしたために非常に苦労した。

2009.04.30
mod_deflateの設定

google earth apiを使って、遊んでいるとjavascriptをたくさん使ってしまう。 データ転送量も多くなってきているので、mod_deflateを設定。 設定自体は、リンク先の「せっかちな人向けの簡単な設定例」に AddOutputFilterByType として text/javasript application/x-javascript text/css等を追加したもの。

問題なく圧縮できるようになったが、レスポンスが非常に悪くなってしまった。 google chromeのjavascript consoleから見る限り、転送時間は特に問題ないみたいだがセッションの確立に時間がかかっているみたいだった。

いろいろ調べたが、昔リバースプロキシを組んでいたことを思い出した。 当初の目的は達しているので、リバースプロキシを解除したらレスポンスは改善した。