Linuxの最近のブログ記事

昔ほんの少し遊びがてら勉強してみたLinuxを最近、再び少しずつ勉強するようになった。
2週間ほど前になると思うが、「Debian 30r2 i386 binary 1」を長いこと押入れにしまいこんでいたDynabook Satellite 2510(東芝製ノートパソコン)にインストールしてみた。最初、xの設定を間違っていたらしく、xの起動時に、xがクラッシュしました・・・のようなエラーメッセージが出てしまって2日ほど悩んでしまった。現在、音声の再生はできないが、xの起動も問題ないし、インターネットの接続もできる。Pentium MMX 266MHzでメモリ64MBの旧式PCのため、ブラウザの起動に大変時間がかかってしまうが、Linuxで色々と遊んでみるぶんには十分かな。

私が大学2年頃(1998年頃)から使用しているノートPC。1998年頃〜2002年頃まではこのPCしかなかったため、まさに「愛用」していた。当時の4年間ほどは「モバイル」が大変好きだったため、色々なところにノートPCを持ち運んでH''(エッジ)、AirH''(エアーエッジ)でダイヤルアップ接続、あるいは、大学のLANに接続してインターネットを楽しんでいた。また、起動した状態のノートPCをカバンに入れ、ヘッドフォンを取り付けてmp3化した音楽を屋外で聴いていた。現在流行中のハードディスクプレーヤーとは違って大変重いしデカイのだが、ファイルサイズの小さいmp3のおかげで色々な曲をたくさんどこでも簡単に聴けるのがとても便利だった。・・・こんな使い方をしていて、よくPCが壊れなかったものだ。当時から、良い製品に出会ったと感謝していた。(私は運が良かっただけかもしれず、他の方は真似したら壊れるかもしれないのでご注意を。)
だが、2002年に自作PCを作り、モバイルもやめてしまってからは、まったく無用になり、押入れの中に長期間放置されたりして、大変可愛そうな扱いを受けていた。永久に押入れの中で眠るのか・・・と思われたのだが、Linuxの勉強を再開するにあたって、再び寵愛するようになる。ちょっとしたお勉強用のLinuxマシンとして復活!

◆関連サイト
DynaBook Satellite 2510ハードウェア仕様(東芝PCギャラリー):
http://dynabook.com/pc/catalog/oldpc/satellit/s2510ap.htm
DynaBook Satellite 2510 ハードウェア仕様(東芝Linuxページ):
http://linux.toshiba-dme.co.jp/linux/jpn/spec.php3?model=PAS251
→fsck 「問題が起きているディレクトリを指定」で、問題が起きているディレクトリのファイルシステムを修復する。

・・・1週間以上Linuxマシンの電源を入れずに放置していたら、起動が正常にできなくなっていた。dev/hda1に問題が生じているので、rootパスワードを入力した後、fsckを手動で実行してほしい、というメッセージがでていた。Linux初心者の私はこのコマンドを今回初めて知ったのだが、状況から、Linuxのファイルシステムを修復するコマンドのようだ、ということは分かった。他にどうすればいいかなどの知識は全く持っていなかったため、とりあえず、画面に表示されている指示に従うことにした。これでいいかな、と思って下記を入力し、Enterキーを押してみる。

fsck /dev/hda1

色々とチェックが始まり、修正したいのなら、「y」をEnterしてほしい、とメッセージが出てきた。よく分からないが、「y」を選択。その後も似たようなメッセージが表示され、常に「y」の選択を求められた。とりあえず、どんどん「y」をEnterしていった。10回(実際はもっと少なかったかも)程度繰り返した後、exitで再起動。

治った!起動に成功。ふぅ〜。助かった。本当に助かった。こうやって、少しずつ、コマンドを覚えていこう、と思う。
→root権限でshutdown -h nowを実行しているかどうかを確認する。

・・・2日ほど前の深夜、Linuxを久しぶりに起動した。うとうとしながらKDEのGUIでログインし、ブラウザを起動したあたりで眠りに落ちた。しばらくして意識が戻った時、まだ眠気が続いていたので、さっさとシャットダウンして布団で寝ようと思った。しかし・・・そこで、シャットダウンの方法が分からなくなっていた。そういえば前回、GUI画面でのシャットダウン方法が分からず、コンソール画面を出して、shutdown -h nowを実行したっけ・・・と思い出して、早速試してみる。
command not found
・・・。スペルミスだろうか、と思って何度試しても同じ結果だった。眠くてイライラしてきた時、ふと思った。rootで試したらどうなるだろう・・・。イライラしていた気分が消えていった。シャットダウンに成功したのだ。
今日インターネットで調べていたら、shutdownコマンドは電源を切るという重要なコマンドなので、やはり、rootでないと使用できないようだった。Linuxは電源を切るのにも一苦労。しかし、それがまた面白いかも・・・と思うのであった。
Dynabook Satellite 2510にDebian 3.1をインストールした時のインストールメモを以下に記載する。
  1. debianのサイトよりdebian-31r2-i386-binary-1.isoをダウンロードし、CD-Rに焼く。
  2. Dynabook Satellite 2510のCDトレイにCD-Rを挿入してCDブートする(デフォルトではDynabook Satellite 2510の場合は、キーボードの「C」を押しながら電源を投入すればCDブートとなるようだ)。
  3. Linuxのインストーラーが表示された際に標準インストールを選択すると、「CD-ROMドライブを見つけるためにハードウェアを検出しています」というメッセージに続いて「'Toshiba America InfoSystem ToPIC97'用のモジュール'yenta_socket'をロードしています...」と表示された後にフリーズしてしまう(進行度のメモリは2%の状態・・・)。仕方なく、このCDが提案する標準インストールは諦めて2.6シリーズのカーネルでのインストールを試してみたところ、あっさりとインストールできてしまった。なお、Dynabook Satellite 2510はLANコネクタが標準搭載されていないため、PCカード経由でLANを利用することになる。すごく昔にTurbo Linuxをインストールした時にはインターネット環境がAirH''しかなかったのでどうやってインターネットに接続していいのかさっぱり分からなくてインターネット接続は挫折したことがあるが、今回は簡単だった。HUBとパソコンをLANで繋げば接続できてしまった(ブロードバンドは楽でいいなぁ)。
《備考1:インターネット環境》
現在のインターネット環境は以下の通り。
ADSLモデムSVIII(ルータ機能・DHCPサーバ機能利用)



HUB(ハブ)



パソコン(Windows XP 2台、Linux 1台)

※ADSLモデム、HUB、パソコン間はそれぞれLANケーブルで接続。

《備考2:動作速度について》
DynaBook Satellite 2510(CDTAモデル PAS251JC)でのCPUはMMX Pentium 266MHz、標準メモリは64MB、ハードディスクは4.3GBとなる。Windows 98プレインストールのかなり旧世代のノートパソコンとなるのでこのようにスペックとしては低く、Debian 3.1(sarge)のインストール後の動作速度はあまり期待できない。私の個人的な感覚としては、ブラウザでのホームページ閲覧でも動作が大変遅く感じてしまう。しかし、個人的に楽しむという意味では、何とか使えないことはない・・・。

◆関連サイト
DynaBook Satellite 2510ハードウェア仕様(東芝PCギャラリー):
http://dynabook.com/pc/catalog/oldpc/satellit/s2510ap.htm
DynaBook Satellite 2510 ハードウェア仕様(東芝Linuxページ):
http://linux.toshiba-dme.co.jp/linux/jpn/spec.php3?model=PAS251
Dynabook Satellite 2510にメモリを増設することにした。
(撮影:18時20分)
パソコン本体から電源ケーブル、バッテリパックを取り外した後、パソコン本体裏側の中央部の蓋を外した(ネジ止めされているのでドライバが必要)。
(撮影:18時29分)
今回増設するメモリは、先日Yahoo!オークションで1,000円(送料は別途140円)で落札した64MBの中古メモリ。このメモリは、I-O DATA(株式会社アイ・オー・データ機器)の「TO-DBB-64M」で、東芝製PA2044UJ(タイプH)互換(標準価格:80,000円)となるようだ。I-O DATAのホームページに掲載されている価格表を見ると、26,000円となっていた。この価格だったら、絶対買えなかった・・・。さて、本当は、128MBの「TO-DBB-128M」が欲しかったのだが、私がメモリを探していた時期のオークションでは出品されていなかった。今後出品されたのを見つけた時に価格が1,000円ぐらいなら買うかもしれない。しかし、このTO-DBB-128Mは64,000円の価格で売られていたようだし、128MBの東芝製PA2054UJ(タイプH)は、標準価格が160,000円もしていたものだから、オークションに出品されても高値になるのだろうか・・・。
(撮影:18時31分)
メモリスロットを斜め上に起こしてから、慎重にメモリを取り付ける。
(撮影:18時34分)
メモリを装着して元の位置にメモリスロットを倒してやると、パチッと気持ちよい音がしてしっかりと固定された。デスクトップパソコンのメモリ増設作業と比べるとなんて簡単なんだとちょっと感動してしまった。
(撮影:18時36分)


さて、今回、64MBのメモリを増設したことで、私のDynabook Satellite 2510は128MBのメモリを持つことになった。Debian 3.1(sarge)の動作速度は、気のせいかもしれないがちょっとだけ軽くなったような気がしたので良かった。ハードディスクをもう少し容量の大きなディスクと交換できればWindows 98を入れる予定なので、その時には動作速度向上を体感できるかもしれない。
  1. 「mysql -u ユーザ名 -p」と入力。
  2. パスワードを入力。

MySQLへのログインが成功した場合

bash-2.05a$ mysql -u ユーザ名 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10840656 to server version: 4.0.26-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

「mysql」とだけ入力してEnterキーを押すと以下のようなエラーとなるので注意。

bash-2.05a$ mysql
ERROR 1045: Access denied for user: 'ユーザ名@localhost' (Using password: NO)

Linuxのコマンドラインでファイルを検索する方法として、findコマンドでファイル名に含まれる言葉を元に検索する方法を以下にメモとして記載する。

find . -name "*ファイル名*"

《例》
ファイル名に「neko」が含まれるファイルを検索する。
find . -name "*neko*"

《検索結果》
./neko/mike/test200905.html
./neko/mike/test200906.html
./neko/kiji/test200904.html
./neko/kiji/test200905.html
./neko/kiji/test200906.html
./inu/shiba/test200906.html

lsコマンドと組み合わせて使用すると検索結果が分かりやすいかもしれない。
cd  neko/kiji
find . -name "*neko*" | xargs ls -ahl

-rwxrwxrwx 1 root rnobu 8.1K  7月 31 13:00 ./test200904.html
-rwxrwxrwx 1 root rnobu  17K  7月 31 13:00 ./test200905.html
-rwxrwxrwx 1 root rnobu  27K  7月 31 13:00 ./test200906.html

カレントディレクトリ内の合計10GBほどのファイルを一気に消したくて

rm -rf *

としたが、以下のエラーが返ってしまった。

-bash: /bin/rm: 引数リストが長すぎます

いつもはこの方法で削除できているのに、今回削除できなかったのは、どうも削除対象のファイル数が多すぎることが原因らしい。
このような場合は、xargsを使えば削除できることが分かったので、以下のようにしてみたらうまくいった。

ls | xargs rm

※lsで表示されるもの全てを削除するので、一部だけ削除したい場合には使えないけれど・・・。

シェルを実行しようとすると、以下のようなエラーが返る場合がある。

/bin/bash^M: bad interpreter: No such file or directory

これは、Windowsマシンでシェルスクリプトを書いて、特に何も意識せずにLinuxサーバにそのままアップロードして利用しようとすると発生して
しまう。原因は、Windowsの改行コードとLinuxの改行コードが異なることにあり、Windowsの改行コードがあるために正しくシェルが動作しないこ
とになる。

Windowsの改行コードを削除する方法はいくつかありそうだが、Linuxサーバのviエディタでシェルスクリプトを書いてそのままファイルをLinux上で保存して利用する方法が一番確実だと思う。

だが、それだとLinuxを自前で用意しないといけない面倒さもあるので、Windowsユーザにとって一番簡単なのは、改行コードをテキストエディタで変更して保存する方法。
秀丸エディタ等であれば、改行コードを変更して保存することができるので、「CR+LF」というWindowsの改行コードをLinuxの改行コード「LF」に変更して保存し、それをアップロードしてやればよい。

root権限でLinuxにログインしてコンソールで作業をしていると、以下のようなメッセージが表示されることがある。

You have mail in /var/spool/mail/root

現在ログイン中のLinuxのcronで実行しているプログラムにエラーがある時などにroot宛にメールが届く仕組みがあるのだが、そのメールが「/var/spool/mail/root」に届いたよ、と知らせてくれているのが上記のメッセージ。
メールは、
vi /var/spool/mail/root
のようにviエディタでテキストファイルとして閲覧することもできるし、
mail
のようにmailコマンドで閲覧することができる。
このroot宛に届くメールは、トラブル発生有無、トラブル状況確認などに使えるが、Linuxをインストールした初期状態ではLinuxにログインしないとメールを閲覧することができない。これでは、トラブルにすぐに気づきたい場合には不便だ。
そこで、外部のメールアドレス宛にメールを転送する設定を行えば、Linuxサーバにログインしなくてもroot宛のメールを気軽に確認できるようになるので便利。メールソフトを常に起動しておき、1分間隔でメールを受信するような設定にでもしていれば、1分以内に異常に気づく。24時間監視とか、外出先でもすぐにでも異常に気づきたい、という場合は、携帯メールアドレス宛にメールが届くようにすればよいと思う(苦笑)。

以下は、root宛に届くメールをプロバイダ等の外部のメールアドレス宛に転送する設定メモ。

(1)Linuxにログインし、/etcディレクトリに移動する。
cd /etc

(2)/etc/aliasesが存在することを確認
ls -ahl | grep aliases
-rw-r--r--  1 root root  1.5K  4月 26  2005 aliases
-rw-r-----  1 root smmsp  12K  5月 01 05:01 aliases.db

(3)/etc/aliasesを修正する。
vi aliases

/etc/aliasesの中身(例)
-----------------------------------------------------------------------
##  Aliases in this file will NOT be expanded in the header from
#  Mail, but WILL be visible over networks or from /bin/mail.
##       >>>>>>>>>>      The program "newaliases" must be run after
#       >> NOTE >>      this file is updated for any changes to
#       >>>>>>>>>>      show through to sendmail.
## Basic system aliases -- these MUST be present.
mailer-daemon:  postmaster
postmaster:     root
# General redirections for pseudo accounts.
bin:            root
daemon:         root
adm:            root
lp:             root
sync:           root
shutdown:       root
halt:           root
mail:           root
news:           root
uucp:           root
operator:       root
games:          root
gopher:         root
ftp:            root
nobody:         root
radiusd:        root
nut:            root
dbus:           root
vcsa:           root
canna:          root
wnn:            root
rpm:            root
nscd:           root
pcap:           root
apache:         root
webalizer:      root
dovecot:        root
fax:            root
quagga:         root
radvd:          root
pvm:            root
amanda:         root
privoxy:        root
ident:          root
named:          root
xfs:            root
gdm:            root
mailnull:       root
postgres:       root
sshd:           root
smmsp:          root
postfix:        root
netdump:        root
ldap:           root
squid:          root
ntp:            root
mysql:          root
desktop:        root
rpcuser:        root
rpc:            root
nfsnobody:      root

ingres:         root
system:         root
toor:           root
manager:        root
dumper:         root
abuse:          root

newsadm:        news
newsadmin:      news
usenet:         news
ftpadm:         ftp
ftpadmin:       ftp
ftp-adm:        ftp
ftp-admin:      ftp
www:            webmaster
webmaster:      root
noc:            root
security:       root
hostmaster:     root
info:           postmaster
marketing:      postmaster
sales:          postmaster
support:        postmaster


# trap decode to catch security attacks
decode:         root

# Person who should get root's mail
#root:          marc
-----------------------------------------------------------------------
 ※以下のように最後の1行を変更する

<修正前>
# Person who should get root's mail
#root:          marc

<修正後>
# Person who should get root's mail
#root:          marc
root: 転送先のメールアドレス

※例えば、r_nobu@h8.dion.ne.jpにメールを転送する設定をしたいのであれば、
root: r_nobu@h8.dion.ne.jp
となる。

なお、root宛以外のメールを転送することも可能。
もし、nekoというユーザがいるのであれば、
neko: r_nobu@h8.dion.ne.jp
とすることで、neko宛に届くメールをr_nobu@h8.dion.ne.jp宛に転送することができる。

(4)設定を反映する。
「/etc/aliases」をviエディタで修正して上書き保存が終了したら、以下を実行して設定を反映する。

newaliases

(5)転送先のメールアドレス宛にメールが届くようになったことを確認。

以上。

Linux(CentOS 5.x)、PHP 5.1.6の環境において、PHP 拡張モジュールImagickをインストールする時にエラーとなってインストールが失敗することがある。その1つの例がPECLのバグだ。(今のところ、2つ目の例はまだ知らない・・・。)

まずは、「ImageMagick」、「ImageMagick-devel」をyumでインストールする。

[root@nobuneko lib]# yum install ImageMagick
[root@nobuneko lib]# yum install ImageMagick-devel

ここまでは順調。しかし、次で失敗。

[root@nobuneko lib]# pecl install imagick
downloading imagick-3.0.0.tgz ...
Starting to download imagick-3.0.0.tgz (93,488 bytes)
.....................done: 93,488 bytes
13 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025
Please provide the prefix of Imagemagick installation [autodetect] :
building in /var/tmp/pear-build-root/imagick-3.0.0
running: /tmp/tmp1SodBd/imagick-3.0.0/configure --with-imagick
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking whether gcc and cc understand -c and -o together... yes
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-redhat-linux-gnu
checking host system type... x86_64-redhat-linux-gnu
checking target system type... x86_64-redhat-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext
checking for PHP extension directory... /usr/lib64/php/modules
checking for PHP installed headers prefix... /usr/include/php
checking for re2c... no
configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking whether to enable the imagick extension... yes, shared
checking whether to enable the imagick GraphicsMagick backend... no
checking ImageMagick MagickWand API configuration program... found in /usr/bin/Wand-config
checking if ImageMagick version is at least 6.2.4... found version 6.2.8
checking for magick-wand.h header file... found in /usr/include/wand/magick-wand.h
checking PHP version is at least 5.1.3... /tmp/tmp1SodBd/imagick-3.0.0/configure: line 3339: test: Usage: /usr/bin/php-config [--prefix|--includes|--ldflags|--libs|--extension-dir|--include-dir|--php-binary|--version]: integer expression expected
configure: error: no. found 5.1.6
ERROR: `/tmp/tmp1SodBd/imagick-3.0.0/configure --with-imagick' failed
You have mail in /var/spool/mail/root

さて、どうしようかなぁ、と思ってWebで探していたら、以下のページを発見。

http://pecl.php.net/bugs/bug.php?id=18057
[2010-08-12 14:46 UTC] mkoppanen at php dot net
This bug has been fixed in SVN.

In case this was a documentation problem, the fix will show up at the
end of next Sunday (CET) on pecl.php.net.

In case this was a pecl.php.net website problem, the change will show
up on the website in short time.
 
Thank you for the report, and for helping us make PECL better.

This bug has been fixed in svn already. There hasn't been a release yet
but there will be one soonish.

どうやらPECLのバグのようだ。・・・そうですか。
とりあえず、上記のページの続きを読んでみる。

[2010-08-31 00:55 UTC] tharmor at gmail dot com
Any idea when CentOS 5.5 will see this bug fix in stable?
[2010-09-16 14:09 UTC] joris at timdm dot nl
Thank you for fixing the bug, but is there a workaround for?

r_nobu適当訳「バグを直してくれてありがとう、ところで、回避策ってない?」

《略》
The simplest workaround is to edit /usr/bin/php-config, find the
following lines:

--version)
        echo $version;;


And add two more lines after them:

--vernum)
        echo "50106";;

If that doesn't work, increase the "version number" of PHP until it does
:)

《r_nobu適当訳》
一番簡単な回避策は、/usr/bin/php-config(というファイル)を編集することだよ。

--version)
        echo $version;;

って書いている行を見つけて、この行のすぐ下に次の2行を追記する。

--vernum)
        echo "50106";;

もし、これでうまく動かない場合は、うまく動くようになるまで、PHPの「version number」(vernumのことだろう)の値を大きくしていけばよい(この何かいい加減な感じのアドバイスにちょっと笑ってしまった)。

私は、この「回避策」を使わせてもらうことにした。
おかげさまで、うまくいった!

[root@nobuneko bin]# pecl install imagick
downloading imagick-3.0.0.tgz ...
Starting to download imagick-3.0.0.tgz (93,488 bytes)
.....................done: 93,488 bytes
13 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025
Please provide the prefix of Imagemagick installation [autodetect] :
building in /var/tmp/pear-build-root/imagick-3.0.0
running: /tmp/tmpoIotjA/imagick-3.0.0/configure --with-imagick
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking whether gcc and cc understand -c and -o together... yes
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-redhat-linux-gnu
checking host system type... x86_64-redhat-linux-gnu
checking target system type... x86_64-redhat-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext
checking for PHP extension directory... /usr/lib64/php/modules
checking for PHP installed headers prefix... /usr/include/php
checking for re2c... no
configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking whether to enable the imagick extension... yes, shared
checking whether to enable the imagick GraphicsMagick backend... no
checking ImageMagick MagickWand API configuration program... found in /usr/bin/Wand-config
checking if ImageMagick version is at least 6.2.4... found version 6.2.8
checking for magick-wand.h header file... found in /usr/include/wand/magick-wand.h
checking PHP version is at least 5.1.3... yes. found 5.1.6
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for gfortran... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether  accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_class.c -o imagick_class.lo
mkdir .libs
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_class.c  -fPIC -DPIC -o .libs/imagick_class.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagickdraw_class.c -o imagickdraw_class.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagickdraw_class.c  -fPIC -DPIC -o .libs/imagickdraw_class.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagickpixel_class.c -o imagickpixel_class.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagickpixel_class.c  -fPIC -DPIC -o .libs/imagickpixel_class.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagickpixeliterator_class.c -o imagickpixeliterator_class.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagickpixeliterator_class.c  -fPIC -DPIC -o .libs/imagickpixeliterator_class.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_helpers.c -o imagick_helpers.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_helpers.c  -fPIC -DPIC -o .libs/imagick_helpers.o
/tmp/tmpoIotjA/imagick-3.0.0/imagick_helpers.c: In function 'php_imagick_validate_map':
/tmp/tmpoIotjA/imagick-3.0.0/imagick_helpers.c:227: warning: initialization discards qualifiers from pointer target type
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_read.c -o imagick_read.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagick_read.c  -fPIC -DPIC -o .libs/imagick_read.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=compile gcc  -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -c /tmp/tmpoIotjA/imagick-3.0.0/imagick.c -o imagick.lo
 gcc -I. -I/tmp/tmpoIotjA/imagick-3.0.0 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpoIotjA/imagick-3.0.0/imagick.c  -fPIC -DPIC -o .libs/imagick.o
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=link gcc -DPHP_ATOM_INC -I/var/tmp/pear-build-root/imagick-3.0.0/include -I/var/tmp/pear-build-root/imagick-3.0.0/main -I/tmp/tmpoIotjA/imagick-3.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2   -o imagick.la -export-dynamic -avoid-version -prefer-pic -module -rpath /var/tmp/pear-build-root/imagick-3.0.0/modules  imagick_class.lo imagickdraw_class.lo imagickpixel_class.lo imagickpixeliterator_class.lo imagick_helpers.lo imagick_read.lo imagick.lo -lWand -lMagick
gcc -shared  .libs/imagick_class.o .libs/imagickdraw_class.o .libs/imagickpixel_class.o .libs/imagickpixeliterator_class.o .libs/imagick_helpers.o .libs/imagick_read.o .libs/imagick.o  -lWand -lMagick  -Wl,-soname -Wl,imagick.so -o .libs/imagick.so
creating imagick.la
(cd .libs && rm -f imagick.la && ln -s ../imagick.la imagick.la)
/bin/sh /var/tmp/pear-build-root/imagick-3.0.0/libtool --mode=install cp ./imagick.la /var/tmp/pear-build-root/imagick-3.0.0/modules
cp ./.libs/imagick.so /var/tmp/pear-build-root/imagick-3.0.0/modules/imagick.so
cp ./.libs/imagick.lai /var/tmp/pear-build-root/imagick-3.0.0/modules/imagick.la
PATH="$PATH:/sbin" ldconfig -n /var/tmp/pear-build-root/imagick-3.0.0/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /var/tmp/pear-build-root/imagick-3.0.0/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

running: make INSTALL_ROOT="/var/tmp/pear-build-root/install-imagick-3.0.0" install
Installing shared extensions:     /var/tmp/pear-build-root/install-imagick-3.0.0/usr/lib64/php/modules/
Installing header files:          /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/
running: find "/var/tmp/pear-build-root/install-imagick-3.0.0" -ls
112427559    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0
112427592    4 drwxr-xr-x   4 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr
112427593    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/lib64
112427594    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/lib64/php
112427595    4 drwxr-xr-x   2 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/lib64/php/modules
112427591  920 -rwxr-xr-x   1 root     root       934261 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/lib64/php/modules/imagick.so
112427596    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include
112427597    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php
112427598    4 drwxr-xr-x   3 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/ext
112427599    4 drwxr-xr-x   2 root     root         4096 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/ext/imagick
112427601   28 -rw-r--r--   1 root     root        26690 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/ext/imagick/php_imagick_defs.h
112427600    4 -rw-r--r--   1 root     root         2476 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/ext/imagick/php_imagick.h
112427602    4 -rw-r--r--   1 root     root         1828 10月  8 23:29 /var/tmp/pear-build-root/install-imagick-3.0.0/usr/include/php/ext/imagick/php_imagick_shared.h

Build process completed successfully
Installing '/var/tmp/pear-build-root/install-imagick-3.0.0//usr/lib64/php/modules/imagick.so'
Installing '/var/tmp/pear-build-root/install-imagick-3.0.0//usr/include/php/ext/imagick/php_imagick_defs.h'
Installing '/var/tmp/pear-build-root/install-imagick-3.0.0//usr/include/php/ext/imagick/php_imagick.h'
Installing '/var/tmp/pear-build-root/install-imagick-3.0.0//usr/include/php/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.0.0
You should add "extension=imagick.so" to php.ini

php.iniに「extension=imagick.so」を追記しなさい、と指示されたので、そうしておく。

[root@nobuneko bin]# ls -ahl /usr/lib64/php/modules/
合計 3.6M
drwxr-xr-x 2 root root 4.0K 10月  8 23:29 .
drwxr-xr-x 5 root root 4.0K  3月 31  2010 ..
-rwxr-xr-x 1 root root  32K  3月 31  2010 dbase.so
-rwxr-xr-x 1 root root 151K  3月 31  2010 dom.so
-rwxr-xr-x 1 root root 330K  3月 31  2010 gd.so
-rwxr-xr-x 1 root root 913K 10月  8 23:54 imagick.so
-rwxr-xr-x 1 root root 1.8M  3月 31  2010 mbstring.so
-rwxr-xr-x 1 root root  91K  3月 31  2010 pdo.so
-rwxr-xr-x 1 root root  28K  3月 31  2010 pdo_pgsql.so
-rwxr-xr-x 1 root root  24K  3月 31  2010 pdo_sqlite.so
-rwxr-xr-x 1 root root 100K  3月 31  2010 pgsql.so
-rwxr-xr-x 1 root root  16K  1月 20  2010 phpcups.so
-rwxr-xr-x 1 root root  26K  3月 31  2010 xmlreader.so
-rwxr-xr-x 1 root root  38K  3月 31  2010 xmlwriter.so
-rwxr-xr-x 1 root root  28K  3月 31  2010 xsl.so

/usr/lib64/php/modules/配下に「imagick.so」というファイルが作成されたことを確認。

[root@nobuneko bin]# /etc/rc.d/init.d/httpd restart
Apacheを再起動。

phpinfoを見ると「imagick」が追記されていることを確認。(以下はphpinfoで確認した設定。)
imagick
imagick module enabled
imagick module version  3.0.0 
imagick classes  Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator 
ImageMagick version  ImageMagick 6.2.8 08/25/10 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html 
ImageMagick copyright  Copyright (C) 1999-2006 ImageMagick Studio LLC 
ImageMagick release date  08/25/10 
ImageMagick number of supported formats:  153 
ImageMagick supported formats  A, ART, AVI, AVS, B, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FRACTAL, G, G3, GIF, GIF87, GRADIENT, GRAY, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, INFO, JNG, JPEG, JPG, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MTV, MVG, NULL, O, OTB, OTF, P7, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV 

Directive Local Value Master Value
imagick.locale_fix 0 0
imagick.progress_monitor 0 0

今後も同様のことが起きたら、きっと今回の回避策を使うのだろうなぁ。

PCにCentOS等のLinux OSをインストールする場合、CD(またはDVD)をCD/DVDドライブに入れてインストールする方法が一般的かと思うが、CD/DVDドライブがないPCにLinuxをインストールしたい場合は、CD/DVDの代わりにUSBメモリを使用してインストールすることがある。

以下は、CentOS 5.5をUSBメモリでインストールする時のメモ。

(1)LinuxをインストールしようとしているPCのBIOSがUSBでの起動(ブート)に対応しているかを確認する
BIOSの設定画面を開き、USBメモリでの起動(ブート)に対応していることを確認する。
※BIOSの設定画面の開き方はPCによって異なる。よくあるパターンが、電源を入れた直後に(キーボードの)F2キーとかDeleteキーを押してBIOSの設定画面を開くというもの。

BIOSの設定画面が開いたら、ブートデバイスの項目を確認する。
ブートデバイスでCD-ROM、ハードディスクの設定しかない場合は、その他のデバイス・・・USBが選択できるかを確認する。
もし、LinuxをインストールしようとしているPCでUSBブートができそうもない場合は、別のPCでチャレンジするか、他の何らかの方法を探しまくるかどうか・・・。

(2)CentOS-5.5のネットワークインストール用CDイメージを入手。
http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/
などで入手可能。
私はここでCentOS-5.5-x86_64-netinstall.isoを入手した。

(3)USBメモリにCDイメージを書き込む
Windows XP等のPCにUSBメモリを接続する。
※USBメモリのファイルシステムはFAT32でOK(というか、それ以外では試していない・・・)。

「UNetbootin」というフリーソフトを入手し、USBメモリを接続したPCで起動する。
私は、unetbootin-windows-494.exeを入手し、Windows XPで起動した。
UNetbootinはEXEファイル単体のソフトで、ダブルクリックで起動する。
PCへのインストールは不要だった。

「UNetbootin」(unetbootin-windows-494.exe)を起動した時の初期画面。

UNetbootin起動時の画面

「Distribution」の「==Select Distribution ==」(ディストリビューションの選択)で、USBメモリに書き込むOSを指定する。
私はCentOSを書き込みたいので、「CentOS」を選択する。
「==Select Version ==」(バージョンの選択)では、(私はCentOS 5.5を書き込むので)「5」を選択する。
「DiskImage」では「ISO」を選択し、右隣の入力欄でインストール用のCDイメージ(ISOファイル)を指定する。
「Type」で「USB ドライブ」を選択し、「Drive」でUSBメモリのドライブ(私の場合はHドライブ)を指定する。

「UNetbootin」(unetbootin-windows-494.exe)で上記の設定を行った画面。

UNetbootin設定後の画面

[OK]ボタンをクリックし、USBメモリにLinuxのCDイメージを書き込む。

(4)USBメモリでPCを起動
LinuxをインストールしたいPCにUSBメモリを接続し、PCの電源を入れる。
「Default」などいくつかの選択肢が表示されるので、「Default」を選択し、[Enter]キーを押す。
やがてLinuxのインストール画面が表示されるので、後は、Linuxのインストール画面の指示に従って設定を行っていく。

(5)ネットワークインストール開始
「HTTP Setup」の画面に進み、HTTP経由でネットワークインストールするLinux(CentOS 5.5)のイメージを指定する。

「Web site name」には「ftp.riken.jp」を入力する。
「CentOS directory」には「Linux/centos/5.5/os/x86_64/images/」(64ビット版)を入力する。

《参考》アドレスが間違っているといったエラーが出た場合は、別のインターネットに繋がっているPCでURLを叩いて以下のような表示がされるかを確認する。

Index of /Linux/centos/5.5/os/x86_64/images
 Name                         Last modified      Size  Description-------------------------------------------------------------------------------- Parent Directory                                  -  
 pxeboot/                     11-May-2010 07:42    -  
 xen/                         27-Apr-2010 09:03    -  
 boot.iso                     27-Apr-2010 09:02   10M 
 diskboot.img                 27-Apr-2010 09:02   12M 
 minstg2.img                  27-Apr-2010 09:04   40M 
 stage2.img                   27-Apr-2010 09:05  108M 

※上記は、http://ftp.riken.jp/Linux/centos/5.5/os/x86_64/images/を叩いた時の例。

(6)ブートローダの設定。
CentOSのインストール画面で何も考えずに[次へ]ボタンを適当に押していってインストールを完了した場合、インストール完了後もインストールに使用したUSBメモリがないと起動できなくなってしまうので、要注意。

インストール先のハードウェアの選択画面でハードディスクとUSBメモリが表示されたら、USBメモリに入っているチェックを外し、ハードディスクのチェックだけにする。

「パーティションレイアウトの再確認と変更」にチェックを入れる。
「高度なブートローダーオプションの設定」の項目が表示されたら、チェックを入れる。

《注意》「dev/sdbマスターブートレコード(MBR)」などにチェックが自動的に入っている場合、要注意。
「dev/sdb」がUSBメモリだった場合、このままインストールを進めていくと、Linuxの起動(ブート)に必要な情報がUSBメモリに記録されてしまい、USBメモリがないとLinuxが起動できない設定になってしまう。ハードディスクにインストールしたいのであれば、例えば、「dev/sda1」がハードディスクの場合、「dev/sda1ブートパーティションの最初のセクタ」という項目にチェックを変更する、といった作業が必要。

「ドライブの順序を変更」ボタンで、ドライブの順序を変更する。
(USBメモリが上に位置しているので、ハードディスクを上に位置させる。)

あとは、centosのインストール画面の指示に従ってインストールを行っていけばOK。

CentOS 5.5のLive CDのISOイメージをUNetbootinを使用してUSBメモリに保存していると、以下のエラーダイアログが表示されることがあった。

---------------------------
sevnz.exe - デバイス タイムアウト
---------------------------
タイムアウト期間内に、指定した \Device\Harddisk3\DR16 での I/O 操作が完了しませんでした。
---------------------------
キャンセル   再実行(T)   続行(C)  
---------------------------

上記エラーメッセージは、「Harddisk3」のI/O(入出力)操作が完了しない→ファイルの保存処理が完了しない→USBメモリに何かトラブルが起きている…と思ったのだが、具体的にどうしたらよいのかが分からなかった。できることといえば、USBメモリ内のデータを全て削除し、フォーマットすることぐらいだった。

そこで、USBメモリをFAT32でフォーマットして再度UNetbootinを実行。しかし、同じエラー。

念のため、FAT16でフォーマットをやり直してUNetbootinを再実行。…なんとエラーがでなかった!

そこで、うきうきしながら、USBメモリをPCに指して再起動!

しばらく待っていると、無事にLinuxが立ちあがってくるはず…あれ?

期待は裏切られ、Linuxは立ち上がってこなかった。

代わりに以下のエラーが表示されていた。

WARNING: Cannot find root file system!
----------------------------------------------
Create symlink /dev/root and then exit this shell to continue the boot sequence.

bash: no job control in this shell
bash-3.2#

「root file systemが見つからない」という警告が出ているが、何のことだろう…。

このエラーメッセージを見ても、どうすればよいのかが分からなかった。そこで、新しい未使用のUSBメモリを持っていたので、そのUSBで試してみると…うまくいった。

ということは、USBメモリが壊れていたということか。

フォーマットしてもダメだった、ということは、ファイルシステムとして論理的に壊れているのではなく、物理的に壊れているのだろうか。

USBメモリが壊れている可能性はあるが、完全に壊れているようではなく、細々としたファイルは保存できる。そういった使い方もあるが、データが突然消える事故などがあると怖いので、たぶん、壊れた疑いのあるこのUSBメモリはもう使わないのだろうなぁ…。

さて、掲題の件だが、『UNetbootin使用中に「sevnz.exe - デバイス タイムアウト」になる原因の1つ』は、ISOイメージを保存する対象のUSBメモリ等の外部記憶媒体が壊れている、ということになるだろうか。

Linuxコンソール画面でシンボリックリンクを設定(作成)する場合の構文は、

ln -s 「リンク先(参照先)のパス ※ファイルの実体があるパス」 「リンク元(参照元)のパス」

となる。

《例》
/var/www/html/
/var/www/neko/nobuneko.html

上記において、/var/www/neko/配下に「nobuneko.html」というファイルが存在し、かつ、
/var/www/html/配下に「nobuneko.html」というファイルが存在していないが、
/var/www/html/nobuneko.htmlでアクセスされた場合に、/var/www/neko/nobuneko.htmlの
ファイルを参照させるには、以下のコマンドでシンボリックリンクを設定する。

ln -s /var/www/neko/nobuneko.html /var/www/html/nobuneko.html

ls -ahl /var/www/html/で確認すると、上記コマンドを実行した後は、以下のように表示される。
lrwxrwxrwx   1 root  root    23 11月 14 23:07 nobuneko.html -> /var/www/neko/nobuneko.html

※lsコマンドで閲覧した時は、「リンク元(参照元)のパス -> リンク先(参照先)のパス ※ファイルの実体があるパス」となっており、シンボリック設定時のコマンドとパスを指定する位置が左右逆にになるので注意。

ファイル名の先頭に「-(ハイフン)」があるファイルをLinuxコマンド「rm」で削除する場合、注意が必要。

普通に「rm 削除対象のファイル名」としたのでは、削除できない。

[root@nobuneko 10]# ls -ahl |more
合計 14M
-rw-r--r-- 1 root  root  1.3K  3月 22 20:41 -38.html
-rw-r--r-- 1 root  root  1.3K  3月 22 20:41 -384.html

上記の「-384.html」を削除しようと思って、「rm -f -384.html」とすると、以下のようにエラーとなり、削除できない。

[root@nobuneko 10]# rm -f -384.html
rm: オプションが違います -- 3
Try `rm ./-384.html' to remove the file `-384.html'.
詳しくは `rm --help' を実行して下さい.

エラーメッセージにヘルプを参照してください、といったことが記述されていたので、ヘルプを見てみる。

[root@nobuneko 10]# rm --help
Usage: rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

  -f, --force           ignore nonexistent files, never prompt
  -i, --interactive     prompt before any removal
      --no-preserve-root do not treat `/' specially (the default)
      --preserve-root   fail to operate recursively on `/'
  -r, -R, --recursive   remove directories and their contents recursively
  -v, --verbose         explain what is being done
      --help     この使い方を表示して終了
      --version  バージョン情報を表示して終了

By default, rm does not remove directories.  Use the --recursive (-r or -R)
option to remove each listed directory, too, along with all of its contents.

`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
  rm -- -foo

  rm ./-foo

ファイルの削除に rm を使った場合、通常はそのファイル内容を復元できてしまう、
ということには留意しておいてください。もしその内容を本当に復元不可能にする
保証を得たければ、shred の利用を考えてみてください。

バグを発見したら <bug-coreutils@gnu.org> 宛に報告して下さい.

ヘルプに思いっきり答えが書かれていた。

`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
  rm -- -foo

  rm ./-foo

つまり、ファイル名の先頭に「-(ハイフン)」があるファイルを削除したい場合は、ファイル名の前に「-(ハイフン)」を2つ連続して書いておけばよい、ということが分かった。

今回の例では、

[root@nobuneko 10]# rm -f -- -384.html

とすることで削除できた。

例えば、Solarisでwgetを使用しようとすると、

wget: command not found

というエラーになり、wgetに失敗する場合がある。

-bash-3.00# wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.17.tar.gz
-bash: wget: command not found

wgetがインストールされていないのかと思ってpkginfoで確認すると、インストールはされている。


-bash-3.00# pkginfo | grep wget
system      SUNWwgetr                        GNU wget - utility to retrieve files from the World Wide Web (root)
system      SUNWwgetu                        wget - GNU wget

インストールされているのに、「wget: command not found」となるのは、wgetへのパスが通っていないからだ。(もちろん、インストールされていない場合はインストールをしないといけない。)

Solarisでは、wgetのフルパスは/usr/sfw/bin/wgetになるので、このフルパスで実行できるかどうかを試してみる。(下記のようになれば、OK)

-bash-3.00# /usr/sfw/bin/wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.17.tar.gz
--18:14:30--  http://ftp.riken.jp/net/apache/httpd/httpd-2.2.17.tar.gz
           => `httpd-2.2.17.tar.gz'
Resolving ftp.riken.jp... 134.160.38.1
Connecting to ftp.riken.jp|134.160.38.1|:80... connected.
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6,597,991 (6.3M) [application/x-gzip]

100%[====================================>] 6,597,991    770.75K/s    ETA 00:00

18:14:39 (714.23 KB/s) - `httpd-2.2.17.tar.gz' saved [6597991/6597991]

crontab -e
でcron設定を編集し、
:wq
で編集内容を保存して終了しようとした際に、以下の
ようなエラーメッセージが表示される場合がある。

"/tmp/crontab.XXXXfQbyGc" 36L, 1956C written
crontab: installing new crontab
"/tmp/crontab.XXXXfQbyGc":1: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit?
(「Do you want to retry the same edit?」(r_nobu適当訳「もう一度編集画面を開いてやり直しますか?」ということなので、「y」を入力し、[Enter]キーを押すと、crontabの編集画面が再度表示される。)

「bad minute errors in crontab file, can't install.」の意味は、「crontabファイル内の『分』の指定が間違っていてエラーになっているため、このcronは実行できない。」ということだと思われるので、「分」を指定する場所を確認すればよい。

「分」を指定する場所は、crontab -eでcronの編集画面を開いた時には、常に一番左端になる。
その部分を確認すればよい。

《例》crontab -eで以下の画面を開く

nobuneko test.sh
20 0 * * * /home/nobuneko/test.sh 1>/dev/null

深夜0時20分に/home/nobuneko/test.shを実行するcronの書き方としては問題ないが、「nobuneko test.sh」の左端に「#」(シャープ)が付いていない。
このままだと、「n」が「分」の指定として扱われてしまい、「bad minute errors in crontab file, can't install.」になってしまう。

crontabでは、コメントには、「#」をつけないといけない。
以下のようにすれば、問題が解決する。

#nobuneko test.sh
20 0 * * * /home/nobuneko/test.sh 1>/dev/null

cronや手動でシェルを実行した際に、そのシェルが何時何分何秒に始まり、何時何分何秒に終了したかを知りたい時がある。そのような場合、シェルの前後でdateコマンドを実行すればよいが、dateコマンドだけだと、少し物足りないと思うかもしれない。

《例》
date
/var/www/sh/nobuneko_shell_test.sh
date

※手動で実行する場合は、以下のようにセミコロン(;)でコマンドを区切ると、左から順番にコマンドを実行してくれるので、上記の例のようにdateコマンドを手動で実行し、タイムラグが極力出ないように急いでシェルコマンドを実行する(でも、必ずタイムラグは出る)といった苦労をしなくてもよい。

date;/var/www/sh/nobuneko_shell_test.sh;date

《実行結果》
2011年 9月 29日 木曜日 07:56:57 JST
2011年 9月 29日 木曜日 07:57:22 JST

手動で実行した場合は、上記のように年月日、曜日、時分秒のみの表記でも十分分かるのだが、cronでログを残す場合は、何の実行結果なのかが分からなくなるので、dateコマンドの実行結果の次に例えばシェルファイル名などを表示するようにすると分かりやすくなる。

《例》
date
echo "nobuneko_shell_test.sh start"
/var/www/sh/nobuneko_shell_test.sh
date
echo "nobuneko_shell_test.sh end"

《実行結果》
2011年 9月 29日 木曜日 07:56:57 JST
nobuneko_shell_test.sh start
2011年 9月 29日 木曜日 07:57:22 JST
nobuneko_shell_test.sh end

単純にdateコマンドを書く場合は、echoで出力したシェルのファイル名は、上記のようにdateコマンドの実行結果の右隣ではなく、改行されて下に表示される。これでもいいかもしれないが、dateコマンドの実行結果の右隣にシェルファイル名を表示させたい場合は、echoの中でdateコマンドをグレイヴ・アクセント(`)で囲んでを記述し、その右隣にシェルファイル名を書くとよい。
※グレイヴ・アクセント(`)は、キーボードのShiftキーを押しながら、@(アットマーク)のキーを押すと入力できる記号。

《例》
echo `date` "nobuneko_shell_test.sh start"
/var/www/sh/nobuneko_shell_test.sh
echo `date` "nobuneko_shell_test.sh end"

《実行結果》
2011年 9月 29日 木曜日 07:56:57 JST nobuneko_shell_test.sh start
2011年 9月 29日 木曜日 07:57:22 JST nobuneko_shell_test.sh end

CentOS 5でlsコマンドのヘルプを見るためのコマンドは、

ls --help

となる。

ls --helpの実行結果は、以下の通り。

使用法: ls [オプション]... [ファイル]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.

長いオプションに必須の引数は短いオプションにも必須です.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print octal escapes for nongraphic characters
      --block-size=SIZE      ブロックサイズを SIZE とする
  -B, --ignore-backups       末尾に '~' がつくファイルをリスト表示しない
  -c                          -lt 付き: ctime(最終更新時刻) でソートして表示
                              -l 付き:  ctime を表示する。名前でソートする
                              その他:   ctime でソートする
  -C                         list entries by columns
      --color[=WHEN]         control whether color is used to distinguish file
                               types.  WHEN may be `never', `always', or `auto'
  -d, --directory            list directory entries instead of contents,
                               and do not dereference symbolic links
  -D, --dired                generate output designed for Emacs' dired mode
  -f                         do not sort, enable -aU, disable -lst
  -F, --classify             append indicator (one of */=>@|) to entries
      --file-type            likewise, except do not append `*'
      --format=WORD          across -x, commas -m, horizontal -x, long -l,
                               single-column -1, verbose -l, vertical -C
      --full-time            like -l --time-style=full-iso
  -g                         like -l, but do not list owner
  -G, --no-group             like -l, but do not list group
  -h, --human-readable       with -l, print sizes in human readable format
                               (e.g., 1K 234M 2G)
      --si                   likewise, but use powers of 1000 not 1024
  -H, --dereference-command-line
                             follow symbolic links listed on the command line
      --dereference-command-line-symlink-to-dir
                             follow each command line symbolic link
                             that points to a directory
      --hide=PATTERN         do not list implied entries matching shell PATTERN
                               (overridden by -a or -A)
      --indicator-style=WORD append indicator with style WORD to entry names:
                               none (default), slash (-p),
                               file-type (--file-type), classify (-F)
  -i, --inode                with -l, print the index number of each file
  -I, --ignore=PATTERN       do not list implied entries matching shell PATTERN
  -k                         like --block-size=1K
  -l                         詳細リスト形式を表示する
  -L, --dereference          シンボリックリンクのファイル情報を表示するときは
                               リンクそのものではなくリンク参照先のファイル
                               情報を表示する
  -m                         項目のリストをカンマで区切り、一行に詰め込む
  -n, --numeric-uid-gid      like -l, but list numeric user and group IDs
  -N, --literal              print raw entry names (don't treat e.g. control
                               characters specially)
  -o                         like -l, but do not list group information
  -p, --indicator-style=slash
                             append / indicator to directories
  -q, --hide-control-chars   表示不可能な文字を ? に置き換える
      --show-control-chars   表示不可能な文字をそのまま表示 (プログラムが
                             `ls' でなかったり出力が端末でない場合の初期状態)
  -Q, --quote-name           ファイル名をダブルクォート(")で囲む
      --quoting-style=WORD   項目名のクォートに WORD 文字を使う:
                               literal, locale, shell, shell-always, c, escape
  -r, --reverse              reverse order while sorting
  -R, --recursive            list subdirectories recursively
  -s, --size                 with -l, print size of each file, in blocks
  -S                         sort by file size
      --sort=WORD            extension -X, none -U, size -S, time -t,
                             version -v, status -c, time -t, atime -u,
                             access -u, use -u
      --time=WORD            with -l, show time as WORD instead of modification
                             time: atime, access, use, ctime or status; use
                             specified time as sort key if --sort=time
      --time-style=STYLE     with -l, show times using style STYLE:
                             full-iso, long-iso, iso, locale, +FORMAT.
                             FORMAT is interpreted like `date'; if FORMAT is
                             FORMAT1<newline>FORMAT2, FORMAT1 applies to
                             non-recent files and FORMAT2 to recent files;
                             if STYLE is prefixed with `posix-', STYLE
                             takes effect only outside the POSIX locale
  -t                         sort by modification time
  -T, --tabsize=COLS         assume tab stops at each COLS instead of 8
  -u                         with -lt: sort by, and show, access time
                               with -l: show access time and sort by name
                               otherwise: sort by access time
  -U                         do not sort; list entries in directory order.
                             In combination with one_per_line format `-1',
                             it will show files immediately and it has no
                             memory limitations.
  -v                         sort by version
  -w, --width=COLS           assume screen width instead of current value
  -x                         list entries by lines instead of by columns
  -X                         sort alphabetically by entry extension
  -1                         list one file per line

SELinux options:

      --lcontext             Display security context.   Enable -l. Lines
                               will probably be too wide for most displays.
      -Z, --context          Display security context so it fits on most
                               displays.  Displays only mode, user, group,
                               security context and file name.
      --scontext             Display only security context and file name.


      --help     この使い方を表示して終了
      --version  バージョン情報を表示して終了

SIZE may be (or may be an integer optionally followed by) one of following:
kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

By default, color is not used to distinguish types of files.  That is
equivalent to using --color=none.  Using the --color option without the
optional WHEN argument is equivalent to using --color=always.  With
--color=auto, color codes are output only if standard output is connected
to a terminal (tty).  The environment variable LS_COLORS can influence the
colors, and can be set easily by the dircolors command.

Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.

バグを発見したら <bug-coreutils@gnu.org> 宛に報告して下さい.

処理完了までに長時間を要するコマンドを何も考えずに短時間で何回も実行したり、あるいは、プログラムの不具合等(無限ループ)で処理を終了できないコマンドを(何度か)実行したりすると、マシンレスポンスが大変遅くなる時がある。

例えば、PHPをコマンドを(何度か)実行して、マシンレスポンスが平常時よりも明らかに悪いな、と気づいた時に、topコマンドで確認すると、以下のようにPHPプロセスで埋め尽くされる場合がある。

top - 17:02:59 up 7 days,  3:27,  1 user,  load average: 170.59, 169.89, 169.52
Tasks: 575 total, 169 running, 397 sleeping,   0 stopped,   9 zombie
Cpu(s): 21.6% us, 78.4% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    125004k total,   104492k used,    20512k free,     8168k buffers
Swap:  1052248k total,   475156k used,   577092k free,    18448k cached

  PID USER      PR  NI %CPU    TIME+  %MEM  VIRT  RES  SHR S COMMAND
 5628 root      25   0  0.7   6:39.34  0.0 16716   60   40 R php
 5641 root      25   0  0.7   6:46.84  0.0 16332   60   40 R php
 5702 root      25   0  0.7   6:38.05  0.1 17656   64   40 R php
 5738 root      25   0  0.7   6:41.04  0.0 16832   60   40 R php
 5769 root      25   0  0.7   6:44.95  0.0 17544   60   40 R php
 6017 root      25   0  0.7   6:04.96  0.0 16076   60   40 R php
 6047 root      25   0  0.7   5:46.14  0.0 16324   60   40 R php
 6127 root      25   0  0.7   5:43.95  0.0 17348   60   40 R php
 6166 root      25   0  0.7   5:45.65  0.0 17192   60   40 R php
 6211 root      25   0  0.7   5:40.16  0.0 17352   60   40 R php
 6263 root      25   0  0.7   5:35.56  0.0 17516   60   40 R php
 6417 root      25   0  0.7   5:15.69  0.0 17196   60   40 R php
 6526 root      25   0  0.7   5:11.16  0.1 17324   64   40 R php
 6548 root      25   0  0.7   5:10.15  0.0 17136   60   40 R php
 6600 root      25   0  0.7   5:04.20  0.0 17344   60   40 R php
 6618 root      25   0  0.7   5:07.56  0.0 16988   60   40 R php
 7016 root      25   0  0.7   4:39.77  0.0 17320   60   40 R php
 7022 root      25   0  0.7   4:37.17  0.0 17136   60   40 R php
 7040 root      25   0  0.7   4:49.47  0.0 17848   60   40 R php
 7080 root      25   0  0.7   4:34.80  0.0 16624   60   40 R php
 7084 root      25   0  0.7   4:36.57  0.0 17296   60   40 R php
 7091 root      25   0  0.7   4:33.77  0.1 16320   64   40 R php
 7140 root      25   0  0.7   4:22.07  0.0 17352   60   40 R php
 7143 root      25   0  0.7   4:34.96  0.0 17840   60   40 R php
 7146 root      25   0  0.7   4:22.20  0.0 16320   60   40 R php
 5599 root      25   0  0.6   6:41.58  0.0 16996   60   40 R php
 5640 root      25   0  0.6   6:42.57  0.0 17296   60   40 R php
 5703 root      25   0  0.6   6:47.25  0.1 16964   64   40 R php
 5739 root      25   0  0.6   6:43.13  0.0 17056   60   40 R php
 5742 root      25   0  0.6   6:54.77  0.0 16712   60   40 R php

さらに、psコマンドでPHPをgrepすると、以下のようにPHPプロセスが大量に実行中であることが分かる。

[root@nobuneko ~]# ps -ef | grep php
root      5599  5551  0 Oct05 ?        00:06:42 /usr/bin/php -q /var/www/html/nobuneko.php
root      5628  5564  0 Oct05 ?        00:06:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      5640  5618  0 Oct05 ?        00:06:43 /usr/bin/php -q /var/www/html/nobuneko.php
root      5641  5620  0 Oct05 ?        00:06:47 /usr/bin/php -q /var/www/html/nobuneko.php
root      5702  5638  0 Oct05 ?        00:06:38 /usr/bin/php -q /var/www/html/nobuneko.php
root      5703  5649  0 Oct05 ?        00:06:48 /usr/bin/php -q /var/www/html/nobuneko.php
root      5738  5681  0 Oct05 ?        00:06:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      5739  5708  0 Oct05 ?        00:06:44 /usr/bin/php -q /var/www/html/nobuneko.php
root      5740  5705  0 Oct05 ?        00:06:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      5741  5665  0 Oct05 ?        00:06:39 /usr/bin/php -q /var/www/html/nobuneko.php
root      5742  5666  0 Oct05 ?        00:06:55 /usr/bin/php -q /var/www/html/nobuneko.php
root      5743  5709  0 Oct05 ?        00:06:52 /usr/bin/php -q /var/www/html/nobuneko.php
root      5759  5713  0 Oct05 ?        00:06:50 /usr/bin/php -q /var/www/html/nobuneko.php
root      5760  5714  0 Oct05 ?        00:06:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      5768  5722  0 Oct05 ?        00:06:39 /usr/bin/php -q /var/www/html/nobuneko.php
root      5769  5724  0 Oct05 ?        00:06:45 /usr/bin/php -q /var/www/html/nobuneko.php
root      5846  5761  0 Oct05 ?        00:06:12 /usr/bin/php -q /var/www/html/nobuneko.php
root      5926  5828  0 Oct05 ?        00:06:07 /usr/bin/php -q /var/www/html/nobuneko.php
root      5927  5790  0 Oct05 ?        00:06:18 /usr/bin/php -q /var/www/html/nobuneko.php
root      5928  5827  0 Oct05 ?        00:06:19 /usr/bin/php -q /var/www/html/nobuneko.php
root      5929  5789  0 Oct05 ?        00:06:09 /usr/bin/php -q /var/www/html/nobuneko.php
root      5930  5826  0 Oct05 ?        00:06:21 /usr/bin/php -q /var/www/html/nobuneko.php
root      5931  5792  0 Oct05 ?        00:06:01 /usr/bin/php -q /var/www/html/nobuneko.php
root      5932  5829  0 Oct05 ?        00:06:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      5960  5859  0 Oct05 ?        00:06:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      5965  5872  0 Oct05 ?        00:06:07 /usr/bin/php -q /var/www/html/nobuneko.php
root      5966  5871  0 Oct05 ?        00:06:08 /usr/bin/php -q /var/www/html/nobuneko.php
root      5967  5870  0 Oct05 ?        00:06:19 /usr/bin/php -q /var/www/html/nobuneko.php
root      5971  5916  0 Oct05 ?        00:06:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      5973  5940  0 Oct05 ?        00:06:16 /usr/bin/php -q /var/www/html/nobuneko.php
root      5975  5968  0 Oct05 ?        00:06:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      5995  5983  0 Oct05 ?        00:06:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      5997  5993  0 Oct05 ?        00:06:07 /usr/bin/php -q /var/www/html/nobuneko.php
root      6012  6009  0 Oct05 ?        00:06:03 /usr/bin/php -q /var/www/html/nobuneko.php
root      6017  6013  0 Oct05 ?        00:06:05 /usr/bin/php -q /var/www/html/nobuneko.php
root      6047  6040  0 Oct05 ?        00:05:47 /usr/bin/php -q /var/www/html/nobuneko.php
root      6060  6055  0 Oct05 ?        00:06:00 /usr/bin/php -q /var/www/html/nobuneko.php
root      6063  6058  0 Oct05 ?        00:05:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      6076  6074  0 Oct05 ?        00:05:51 /usr/bin/php -q /var/www/html/nobuneko.php
root      6086  6081  0 Oct05 ?        00:05:53 /usr/bin/php -q /var/www/html/nobuneko.php
root      6092  6090  0 Oct05 ?        00:05:53 /usr/bin/php -q /var/www/html/nobuneko.php
root      6103  6101  0 Oct05 ?        00:05:47 /usr/bin/php -q /var/www/html/nobuneko.php
root      6112  6109  0 Oct05 ?        00:05:49 /usr/bin/php -q /var/www/html/nobuneko.php
root      6127  6125  0 Oct05 ?        00:05:44 /usr/bin/php -q /var/www/html/nobuneko.php
root      6135  6133  0 Oct05 ?        00:05:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      6148  6143  0 Oct05 ?        00:05:44 /usr/bin/php -q /var/www/html/nobuneko.php
root      6158  6157  0 Oct05 ?        00:05:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      6166  6165  0 Oct05 ?        00:05:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      6181  6176  0 Oct05 ?        00:05:31 /usr/bin/php -q /var/www/html/nobuneko.php
root      6189  6188  0 Oct05 ?        00:05:28 /usr/bin/php -q /var/www/html/nobuneko.php
root      6199  6196  0 Oct05 ?        00:05:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      6211  6208  0 Oct05 ?        00:05:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      6222  6221  0 Oct05 ?        00:05:31 /usr/bin/php -q /var/www/html/nobuneko.php
root      6235  6232  0 Oct05 ?        00:05:34 /usr/bin/php -q /var/www/html/nobuneko.php
root      6245  6244  0 Oct05 ?        00:05:32 /usr/bin/php -q /var/www/html/nobuneko.php
root      6263  6260  0 Oct05 ?        00:05:36 /usr/bin/php -q /var/www/html/nobuneko.php
root      6286  6283  0 Oct05 ?        00:05:29 /usr/bin/php -q /var/www/html/nobuneko.php
root      6304  6303  0 Oct05 ?        00:05:14 /usr/bin/php -q /var/www/html/nobuneko.php
root      6310  6309  0 Oct05 ?        00:05:28 /usr/bin/php -q /var/www/html/nobuneko.php
root      6333  6329  0 00:01 ?        00:05:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      6354  6353  0 00:02 ?        00:05:19 /usr/bin/php -q /var/www/html/nobuneko.php
root      6361  6357  0 00:03 ?        00:05:22 /usr/bin/php -q /var/www/html/nobuneko.php
root      6371  6370  0 00:04 ?        00:05:30 /usr/bin/php -q /var/www/html/nobuneko.php
root      6385  6383  0 00:05 ?        00:05:19 /usr/bin/php -q /var/www/html/nobuneko.php
root      6401  6400  0 00:06 ?        00:05:22 /usr/bin/php -q /var/www/html/nobuneko.php
root      6417  6413  0 00:07 ?        00:05:16 /usr/bin/php -q /var/www/html/nobuneko.php
root      6421  6420  0 00:08 ?        00:05:20 /usr/bin/php -q /var/www/html/nobuneko.php
root      6444  6433  0 00:10 ?        00:05:13 /usr/bin/php -q /var/www/html/nobuneko.php
root      6451  6446  0 00:11 ?        00:05:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      6452  6450  0 00:11 ?        00:05:13 /usr/bin/php -q /var/www/html/nobuneko.php
root      6468  6467  0 00:12 ?        00:05:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      6503  6502  0 00:13 ?        00:05:19 /usr/bin/php -q /var/www/html/nobuneko.php
root      6526  6524  0 00:15 ?        00:05:12 /usr/bin/php -q /var/www/html/nobuneko.php
root      6539  6536  0 00:16 ?        00:05:02 /usr/bin/php -q /var/www/html/nobuneko.php
root      6548  6545  0 00:17 ?        00:05:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      6572  6571  0 00:20 ?        00:05:02 /usr/bin/php -q /var/www/html/nobuneko.php
root      6580  6579  0 00:21 ?        00:05:17 /usr/bin/php -q /var/www/html/nobuneko.php
root      6600  6597  0 00:23 ?        00:05:05 /usr/bin/php -q /var/www/html/nobuneko.php
root      6613  6611  0 00:24 ?        00:05:06 /usr/bin/php -q /var/www/html/nobuneko.php
root      6618  6617  0 00:25 ?        00:05:08 /usr/bin/php -q /var/www/html/nobuneko.php
root      6634  6632  0 00:27 ?        00:05:01 /usr/bin/php -q /var/www/html/nobuneko.php
root      6641  6638  0 00:28 ?        00:05:02 /usr/bin/php -q /var/www/html/nobuneko.php
root      6650  6649  0 00:29 ?        00:05:03 /usr/bin/php -q /var/www/html/nobuneko.php
root      6668  6665  0 00:31 ?        00:04:55 /usr/bin/php -q /var/www/html/nobuneko.php
root      6695  6692  0 00:34 ?        00:05:07 /usr/bin/php -q /var/www/html/nobuneko.php
root      6709  6708  0 00:35 ?        00:04:57 /usr/bin/php -q /var/www/html/nobuneko.php
root      6717  6716  0 00:36 ?        00:04:58 /usr/bin/php -q /var/www/html/nobuneko.php
root      6726  6724  0 00:37 ?        00:04:59 /usr/bin/php -q /var/www/html/nobuneko.php
root      6755  6751  0 00:40 ?        00:04:54 /usr/bin/php -q /var/www/html/nobuneko.php
root      6758  6757  0 00:40 ?        00:04:52 /usr/bin/php -q /var/www/html/nobuneko.php
root      6771  6769  0 00:41 ?        00:04:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      6820  6819  0 00:45 ?        00:04:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      6832  6831  0 00:46 ?        00:04:53 /usr/bin/php -q /var/www/html/nobuneko.php
root      6848  6847  0 00:47 ?        00:04:56 /usr/bin/php -q /var/www/html/nobuneko.php
root      6854  6852  0 00:48 ?        00:04:36 /usr/bin/php -q /var/www/html/nobuneko.php
root      6870  6869  0 00:49 ?        00:04:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      6895  6892  0 00:50 ?        00:04:44 /usr/bin/php -q /var/www/html/nobuneko.php
root      6906  6905  0 00:51 ?        00:04:45 /usr/bin/php -q /var/www/html/nobuneko.php
root      6949  6946  0 00:52 ?        00:04:52 /usr/bin/php -q /var/www/html/nobuneko.php
root      6986  6985  0 00:53 ?        00:04:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      7013  7012  0 00:54 ?        00:04:52 /usr/bin/php -q /var/www/html/nobuneko.php
root      7016  7015  0 00:55 ?        00:04:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      7019  7018  0 00:56 ?        00:04:48 /usr/bin/php -q /var/www/html/nobuneko.php
root      7022  7021  0 00:57 ?        00:04:38 /usr/bin/php -q /var/www/html/nobuneko.php
root      7027  7026  0 00:58 ?        00:04:39 /usr/bin/php -q /var/www/html/nobuneko.php
root      7030  7029  0 00:59 ?        00:04:46 /usr/bin/php -q /var/www/html/nobuneko.php
root      7033  7032  0 01:00 ?        00:04:38 /usr/bin/php -q /var/www/html/nobuneko.php
root      7040  7037  0 01:01 ?        00:04:50 /usr/bin/php -q /var/www/html/nobuneko.php
root      7044  7043  0 01:02 ?        00:04:35 /usr/bin/php -q /var/www/html/nobuneko.php
root      7049  7048  0 01:03 ?        00:04:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      7052  7051  0 01:04 ?        00:04:49 /usr/bin/php -q /var/www/html/nobuneko.php
root      7060  7058  0 01:05 ?        00:04:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      7064  7063  0 01:06 ?        00:04:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      7067  7066  0 01:07 ?        00:04:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      7071  7070  0 01:08 ?        00:04:43 /usr/bin/php -q /var/www/html/nobuneko.php
root      7074  7073  0 01:09 ?        00:04:41 /usr/bin/php -q /var/www/html/nobuneko.php
root      7077  7076  0 01:10 ?        00:04:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      7080  7079  0 01:11 ?        00:04:35 /usr/bin/php -q /var/www/html/nobuneko.php
root      7084  7083  0 01:12 ?        00:04:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      7088  7087  0 01:13 ?        00:04:36 /usr/bin/php -q /var/www/html/nobuneko.php
root      7091  7090  0 01:14 ?        00:04:34 /usr/bin/php -q /var/www/html/nobuneko.php
root      7094  7093  0 01:15 ?        00:04:40 /usr/bin/php -q /var/www/html/nobuneko.php
root      7097  7096  0 01:16 ?        00:04:33 /usr/bin/php -q /var/www/html/nobuneko.php
root      7100  7099  0 01:17 ?        00:04:37 /usr/bin/php -q /var/www/html/nobuneko.php
root      7105  7104  0 01:18 ?        00:04:31 /usr/bin/php -q /var/www/html/nobuneko.php
root      7108  7107  0 01:19 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7112  7111  0 01:20 ?        00:04:39 /usr/bin/php -q /var/www/html/nobuneko.php
root      7115  7114  0 01:21 ?        00:04:36 /usr/bin/php -q /var/www/html/nobuneko.php
root      7119  7118  0 01:22 ?        00:04:31 /usr/bin/php -q /var/www/html/nobuneko.php
root      7123  7122  0 01:23 ?        00:04:38 /usr/bin/php -q /var/www/html/nobuneko.php
root      7126  7125  0 01:24 ?        00:04:33 /usr/bin/php -q /var/www/html/nobuneko.php
root      7129  7128  0 01:25 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7132  7131  0 01:26 ?        00:04:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      7136  7135  0 01:27 ?        00:04:36 /usr/bin/php -q /var/www/html/nobuneko.php
root      7140  7139  0 01:28 ?        00:04:23 /usr/bin/php -q /var/www/html/nobuneko.php
root      7143  7142  0 01:29 ?        00:04:35 /usr/bin/php -q /var/www/html/nobuneko.php
root      7146  7145  0 01:30 ?        00:04:23 /usr/bin/php -q /var/www/html/nobuneko.php
root      7150  7149  0 01:31 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7154  7152  0 01:32 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7158  7157  0 01:33 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7161  7160  0 01:34 ?        00:04:29 /usr/bin/php -q /var/www/html/nobuneko.php
root      7164  7163  0 01:35 ?        00:04:28 /usr/bin/php -q /var/www/html/nobuneko.php
root      7167  7166  0 01:36 ?        00:04:24 /usr/bin/php -q /var/www/html/nobuneko.php
root      7170  7169  0 01:37 ?        00:04:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      7175  7174  0 01:38 ?        00:04:26 /usr/bin/php -q /var/www/html/nobuneko.php
root      7178  7177  0 01:39 ?        00:04:21 /usr/bin/php -q /var/www/html/nobuneko.php
root      7182  7181  0 01:40 ?        00:04:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      7185  7184  0 01:41 ?        00:04:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      7189  7187  0 01:42 ?        00:04:35 /usr/bin/php -q /var/www/html/nobuneko.php
root      7193  7192  0 01:43 ?        00:04:30 /usr/bin/php -q /var/www/html/nobuneko.php
root      7196  7195  0 01:44 ?        00:04:22 /usr/bin/php -q /var/www/html/nobuneko.php
root      7200  7199  0 01:45 ?        00:04:13 /usr/bin/php -q /var/www/html/nobuneko.php
root      7203  7202  0 01:46 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      7206  7205  0 01:47 ?        00:04:24 /usr/bin/php -q /var/www/html/nobuneko.php
root      7211  7210  0 01:48 ?        00:04:17 /usr/bin/php -q /var/www/html/nobuneko.php
root      7214  7213  0 01:49 ?        00:04:28 /usr/bin/php -q /var/www/html/nobuneko.php
root      7217  7216  0 01:50 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      7220  7219  0 01:51 ?        00:04:18 /usr/bin/php -q /var/www/html/nobuneko.php
root      7223  7222  0 01:52 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      7228  7227  0 01:53 ?        00:04:16 /usr/bin/php -q /var/www/html/nobuneko.php
root      7231  7230  0 01:54 ?        00:04:18 /usr/bin/php -q /var/www/html/nobuneko.php
root      7234  7233  0 01:55 ?        00:04:13 /usr/bin/php -q /var/www/html/nobuneko.php
root      7237  7236  0 01:56 ?        00:04:11 /usr/bin/php -q /var/www/html/nobuneko.php
root      7240  7239  0 01:57 ?        00:04:25 /usr/bin/php -q /var/www/html/nobuneko.php
root      7245  7244  0 01:58 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      7248  7247  0 01:59 ?        00:04:23 /usr/bin/php -q /var/www/html/nobuneko.php
root      7251  7250  0 02:00 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root      7262  7261  0 02:02 ?        00:04:15 /usr/bin/php -q /var/www/html/nobuneko.php
root     13916 13913  0 17:05 ?        00:00:00 /usr/bin/php -q /var/www/html/nobuneko.php
root     13919 13843  0 17:05 pts/0    00:00:00 grep php

マシンレスポンスが悪化している問題を解決するために、実行されているコマンドを全て停止したい場合がある。

その場合の1つの方法は、プロセスIDを1つ1つ指定してkillすることだ。例えば、上記の例だと、以下のようにする。

kill 5599  5628  5640  5641  5702  5703  5738  5739  5740  5741  5742  5743  5759  5760  5768  5769  5846  5926  5927  5928  5929  5930  5931  5932  5960  5965  5966  5967  5971  5973  5975  5995  5997  6012  6017  6047  6060  6063  6076  6086  6092  6103  6112  6127  6135  6148  6158  6166  6181  6189  6199  6211  6222  6235  6245  6263  6286  6304  6310  6333  6354  6361  6371  6385  6401  6417  6421  6444  6451  6452  6468  6503  6526  6539  6548  6572  6580  6600  6613  6618  6634  6641  6650  6668  6695  6709  6717  6726  6755  6758  6771  6820  6832  6848  6854  6870  6895  6906  6949  6986  7013  7016  7019  7022  7027  7030  7033  7040  7044  7049  7052  7060  7064  7067  7071  7074  7077  7080  7084  7088  7091  7094  7097  7100  7105  7108  7112  7115  7119  7123  7126  7129  7132  7136  7140  7143  7146  7150  7154  7158  7161  7164  7167  7170  7175  7178  7182  7185  7189  7193  7196  7200  7203  7206  7211  7214  7217  7220  7223  7228  7231  7234  7237  7240  7245  7248  7251  7262  13916

しかし、この方法だと、プロセスIDを1つ1つ指定することが面倒であり、この指定する作業に時間がかかり、問題解決までの時間が長くなる。

プロセスIDを1つ1つ指定してkillする方法ではなく、実行中の同一コマンド名のプロセスを一括停止するという方法をとれば、書くコマンドが短くて済むので、問題解決までの時間を短縮できる。

実行中の同一コマンド名のプロセスを一括停止するには、

pkill -f 'コマンド名(の一部)'

とすればよい。

上記の例では、

pkill -f 'nobuneko.php'

を実行すればよい。

※もちろん、同じコマンド名のプロセスが処理を完了できずに大量に残ってしまう根本的な問題については、このpkillコマンド実行により解決したわけではないので、別途検討して対策を取る必要がある。

※以下は、VMware Player 3.1にCentOS 6.0を仮想OSとしてインストールする簡易的な手順(メモ)となる。

1.VMware Playerを起動する。

2.メニューバーの[ファイル (F)]より、[新規仮想マシンの作成 (C) …]をクリックする。
 (「新しい仮想マシン ウィザード」が表示される。)

3.「新規仮想マシン作成ウィザードへようこそ」画面の「インストール元:」で「後でOSをインストール (S)」(仮想マシンは、空のハードディスクを1つ持つように作成されます)を選択する。

[次へ (N) >]をクリックする。

 ※「インストーラディスク イメージ ファイル (M)(iso)」を選択すると、「CentOS 64ビット が検出されました。このOSは簡易インストールを使用します。」と表示されるので、こちらの方がインストールが簡単そうだと思って当初はそのまま進めてしまった。その結果、たしかにインストールは簡単に終わったのだが、CentOSが英語版でインストールされてしまった。英語版を日本語版に設定し直せばよかったのかもしれないが、その手順を検討するのが面倒だったので、やり直すことにした。

4.「ゲストOSの選択」画面で「この仮想マシンにどのOSをインストールしますか。」と表示されるので、「ゲストOS」で「Linux」を選択し、「バージョン (V)」で「CentOS 64 ビット」を選択し、[次へ (N) >]をクリックする。

5.「仮想マシンの名前」画面で「仮想マシンに使用する名前を指定してください。」と表示されるので、「仮想マシン名(V):」に適当な名称を入力する。

※デフォルトでは、前画面の「ゲストOSの選択」で選択した「バージョン (V)」と同一の名称「CentOS 64 ビット」が入力されていた。
※同画面では「格納場所 (L)」も指定することができる。
デフォルトではWindowsのログインユーザ名のマイ ドキュメント配下に作成されるようだ。
《例》Windowsのログインユーザ名がAdministratorの場合
C:\Documents and Settings\Administrator\My Documents\My Virtual Machines\CentOS 64 ビット

「仮想マシン名(V):」と「格納場所 (L)」の入力内容を確認後、[次へ (N) >]をクリックする。

6.「ディスク容量の指定」画面で「このディスクのサイズを指定してください。」と表示されるので、「ディスク最大サイズ (S) (GB)」でディスク容量を指定する。

※ディスク容量は、100MB単位で設定できるようだった。
同画面には「CentOS 64 ビットの推奨サイズ:20GB」と表示されていた。20GB以上だったらいいのかな、と思い、「100GB」としてみる。

※試しに、「ディスク最大サイズ (S) (GB)」で、0を指定すると、「指定されたディスク サイズは、この仮想ディスクに許可されたサイズを下回っています。0.1〜2040.0GBの範囲でサイズを指定してください。」という警告が表示された。

「仮想ディスクを単一ファイルとして格納 (O)」と「仮想ディスクを複数のファイルに分割 (M)」のどちらかを選択しないといけないのだが、「ディスクを分割すると、仮想マシンを別のコンピュータに容易に移動できるようになりますが、非常に大きなディスクではパフォーマンスが低下する可能性があります。」と同画面に記述されており、インストールするPCのスペックがあまり良くないことも考慮して、「仮想ディスクを単一ファイルとして格納 (O)」を選択する。
※デフォルトの選択は「仮想ディスクを単一ファイルとして格納 (O)」になっていた。

[次へ (N) >]をクリックする。

7.「仮想マシンを作成する準備完了」画面で「仮想マシンは次の設定で作成されます:」の下に表示される内容を確認する。

ハードウェアを変更したい場合は、[ハードウェアをカスタマイズ (C)]をクリックし、「メモリ」、「プロセッサ」(CPU)の設定を変更する。

[完了]をクリックする。
(※以上で仮想マシンの作成が終了するが、この段階ではCentOS 6はインストールされていない。)

8.作成された仮想マシン名を右クリックで選択し、「仮想マシンの再生」をクリックする。

「Operating System not found」と表示され、画面下部に「CentOS 64 ビットはこの仮想マシンにインストールされていません。インストール ディスクを挿入し、[仮想マシン再起動]をクリックしてください。」と表示される。

[CD/DVDの設定を変更]をクリックする。
「CD/DVD(IDE)」画面の「接続」欄で「ISOイメージファイルを使用する(M)」を選択し、[参照 (B)]をクリックして、「CentOS 64 ビット」のインストールに使用するISOファイルを指定する。

「CD/DVD(IDE)」画面下部の[OK]をクリックする。

[仮想マシンを再起動]をクリックする。

9.CentOS 6.0の設定を画面の指示に従って適宜行う

※以下は私のかなり適当な設定例。

仮想マシンの再起動が完了すると、「Welcome to CentOS 6.0!」画面が表示される。
 Install or upgrade an existing system
 Install system with basic video driver
 Rescue installed system
 Boot from local drive
 Memory test
という5つの選択肢より、「Install or upgrade an existing system」を選択し、[Enter]キーを押す。

CUIのCentOS 6のインストール画面が表示される。
「Welcome to CentOS for X86_64」画面が表示されたら、画面の指示に従ってインストールを進める。

「Disc Found」画面
To begin testing the media before installation press OK.
Choose Skip to skip the media test and start the installation.

インストールメディアのテストは省略したかったので、[Skip]を選択する。

GUIのCentOS 6のインストール画面が表示される。
[Next]をクリックする。

「What language would you like to use during the installation process?」と表示される。
デフォルトでは、「English(English)」が選択されているので、「Japanese(日本語)」を選択し直す。

「どちらのタイプのストレージデバイスにインストールしますか?」で

「基本ストレージデバイス」(一般的なストレージデバイスにインストール、またはアップグレードします。どのオプションが正しいのか不明な場合は、これが適切でしょう。)

「エンタープライズストレージデバイス」(SANs(Storage Area Networks)などのエンタープライズストレージデバイスにインストールするか、またはアップグレードします。このオプションにより、FCoE / iSCSI / zFCPなどのストレージデバイスを追加でき、インストーラが無視すべきデバイスを選別します。)

のどちらかを選択するように求められるので、「基本ストレージデバイス」を選択する。

[次(N)]をクリックする。

ドライブの処理中にエラー発生:
pci-0000:00:10.0-scsi-0:0:0:0
102400MB
VMware,VMware Virtual S
このデバイスは初期化が必要かもしれません。

再初期化すると全てのデータが消失します!
このアクションは再初期化を必要とする全ての他のディスクにも適用できるかも知れません。

Device details:
pci-0000:00:10.0-scsi-0:0:0:0

という警告画面が表示されたら、[全てを再初期化(T)]をクリック
(初期化は一瞬で終了した。)

「このコンピュータのホスト名を指定してください。ホスト名はネットワーク上でこのコンピュータを識別するために必要です。」
という画面で、以下を設定する。
 ・ホスト名:「localhost.localdomain」→「nobuneko」
 ・[ネットワークの設定]をクリックし、「ネットワーク接続画面」を表示する。
  [有線]タブで「System eth0」を選択し、[編集]をクリックする。
  [IPv4のセッティング]タブの「方式(M)」で「自動 (DHCP)」が選択されているので、「手動」を選択し、
  [アドレス]で[追加]をクリックし、
   「アドレス」に「192.168.2.4」
   「ネットマスク」に「255.255.255.0」
   「ゲートウェイ」に「192.168.2.1」
   「DNSサーバ(D)に「192.168.2.5」
   を入力する。
  [適用]をクリックする。

 [次(N)]をクリックする。

「使用するタイムゾーンの中で一番近い都市を選択してください」で「アジア/東京」を選択する。
同画面の「システムクロックでUTCを使用(S)」というチェックボックスはチェックを外す。

 [次(N)]をクリックする。

「rootユーザーはシステムの管理用に使用します。rootユーザーのパスワードを入力してください。」
の画面で、「rootパスワード(P)」、「確認(C)」にパスワードを入力する。

 [次(N)]をクリックする。

「どのタイプのインストールをしますか?」と表示される。

  • すべての領域を使用する
  • 既存のLinuxシステムを入れ替える
  • 現在のシステムを縮小する
  • 空き領域を使用する
  • カスタムレイアウトを作成する

の5つの選択肢で、デフォルトでは「既存のLinuxシステムを入れ替える」にチェックが入っている。
このチェックはそのままとする。
※既存のLinuxシステムを入れ替える:Linuxのパーティションのみを削除します(以前のLinuxインストールで作成したもの)。これは、ストレージデバイス上にすでに存在する他のパーティションは削除しません(NTFSやFAT32など)。

同画面の「システムを暗号化する(E)」、「パーティションのレイアウトをレビューまたは修正(V)」のチェックボックスにはデフォルトでチェックが入っていない。これらはそのままとする。

 [次(N)]をクリックする。

「ストレージ設定をディスクに書き込み中」という警告画面が表示される。
「選択したディスク分割のオプションを書き込みます。削除及び再フォーマットするパーティションにある
データはすべて失われます。」と表示されるので、[変更をディスクに書き込む(W)]をクリックする。
「フォーマット中」の画面が表示される。

フォーマットが終了すると、以下の設定を行う。

「CentOSのデフォルトインストールは最小限インストールです。オプションとして追加のソフトウェアを選択することができます。

  • Desktop
  • Minimal Desktop
  • Minimal
  • Basic Server
  • Database Server
  • Web Server

の6つの選択肢があるが、Minimalが選択されている。このままとする。

「ソフトウェアのインストールに必要な追加リポジトリーを選択してください。」は、
「CentOS」にチェックが入っているので、このままとする。

同画面で「次のステップでソフトウェアの選択を詳細にカスタマイズすることができます。
またはインストール後にソフトウェア管理アプリケーションでカスタマイズを行うこともできます。」とある
ので、[後でぐカスタマイズ(L)]を選択する。

 [次(N)]をクリックする。

インストール作業が自動で開始される。
「おめでとうございます。CentOSのインストールが完了しました。」と表示されたら、[再起動(T)]をクリックする。

再起動が終了し、

CentOS Linux release 6.0 (Final)
Kernel 2.6.32-71.e16.x86_64 on an x86_64

nobuneko login:

と表示されたら、OK。

VMwareの画面下部に表示されている

物理コンピュータにインストールするのと同じ要領で、CentOS 64ビットをインストールします。
インストールの完了後、OSが起動したら、[インストールを完了しました]をクリックしてください。

のメッセージの右側にある[インストールを完了しました]をクリックする。

これでCentOSの設定は終わったようだったが、他のネットワークからゲストOSであるCentOSに接続できなかったので、ネットワークの設定を再確認することにした。

10.VMwareとCentOS 6.0のネットワークの設定を確認する。

VMwareのメニューバーの[仮想マシン(V)]より「仮想マシン設定」画面を開き、[ハードウェア]タブのより、

ネットワークアダプタ>「ネットワーク接続」>「NAT:ホストのIPアドレスを共有して使用」

という設定を

ネットワークアダプタ>「ネットワーク接続」>「ブリッジ:物理ネットワークに直接接続(B)」

を選択した設定に変更する。

※「物理ネットワーク接続の状態を複製(P)」のチェックボックスはチェックが外れていたのでそのままとする。

[OK]をクリックし、設定を反映する。

→これだけではネットワーク接続ができなかった。

理由がさっぱり分からなかったので、VMwareのメニューバーのヘルプより、アップデートを確認すると、VMware 4.0.0がダウンロードできることが分かったので、それにアップデートしてみた。
→しかし、解決せず。

そもそもVMwareの設定が関係ない予感がしてきたので、CentOS 6の設定をよく見てみる。

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT="no"
HWADDR=00:0C:29:35:F4:FC
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.2.4
PREFIX=24
GATEWAY=192.168.2.1
DNS1=192.168.2.5
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03

なんと、

ONBOOT=no

になってた。

ONBOOT=yes

に修正して、

/etc/rc.d/init.d/network restart

とコマンドを実行し、ネットワークサービスを再起動する。

これで、ネットワーク接続に成功した。

仮想OSのネットワーク設定がうまくできない場合、最初っから、仮想OSであるから、VMwareの設定が悪いなどと思い込まずに、まずは仮想OS(今回の例だとCentOS6.0)の設定をよく見るべきである、と反省した。

Linuxでのwget実行時にプロキシを指定するには、以下のようになる。

wget -e http_proxy=「接続先サーバのIPアドレス等:ポート番号」 「接続先サーバのURL」

接続先サーバにベーシック認証がかかっているのであれば、http-userとhttp-passwordをwgetのオプションで指定すればよい。

《実行例》
[nobu@neko test]# wget -e http_proxy=192.168.2.10:8080 --http-user=nobuneko --http-password=neko12345 http://nobuneko.com/test.tar.gz
--2011-12-23 03:04:25--  http://nobuneko.com/test.tar.gz
192.168.2.10:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 401 Unauthorized
192.168.2.10:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4817 (4.7K) [application/x-gzip]
`test.tar.gz' に保存中

100%[=========================================================================================================================================>] 4,817       --.-K/s 時間 0s     

2011-12-23 03:04:47 (11.2 MB/s) - `test.tar.gz' へ保存完了 [4817/4817]

CentOS5のコンソール画面で

yum update -y

と実行すると、

TypeError: unsubscriptable object

というエラーになり、yum updateが失敗することがある。

《例》
[root@nobuneko ~]# yum update -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package gnome-python2-gtksourceview.x86_64 0:2.16.0-3.el5 set to be updated
〜《省略》〜
---> Package libsilc.x86_64 0:1.0.2-2.fc6 set to be updated
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 229, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 145, in main
    (result, resultmsgs) = base.buildTransaction()
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 647, in buildTransaction
    (rescode, restring) = self.resolveDeps()
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 704, in resolveDeps
    for po, dep in self._checkFileRequires():
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 939, in _checkFileRequires
    if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
  File "/usr/lib/python2.4/site-packages/yum/transactioninfo.py", line 414, in getNewProvides
    for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 300, in getProvides
    return self._computeAggregateDictResult("getProvides", name, flags, version)
  File "/usr/lib/python2.4/site-packages/yum/packageSack.py", line 470, in _computeAggregateDictResult
    sackResult = apply(method, args)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 861, in getProvides
    return self._search("provides", name, flags, version)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 837, in _search
    for pkg in self.searchFiles(name, strict=True):
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 43, in newFunc
    return func(*args, **kwargs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 586, in searchFiles
    self._sql_pkgKey2po(rep, cur, pkgs)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 470, in _sql_pkgKey2po
    pkg = self._packageByKey(repo, ob['pkgKey'])
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 413, in _packageByKey
    po = self.pc(repo, cur.fetchone())
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 68, in __init__
    self._read_db_obj(db_obj)
  File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object

上記例では、python(パイソン)のアップデートでうまくできずにyum updateに失敗し、

TypeError: unsubscriptable object

というエラーになったように見える。

このエラーが表示された時には、「やばいなぁ、どうしよう」と少しあせったが、以下のサイトのおかげで解決した(感謝)。

《参考サイト》
CentOS 5 の yum に失敗 (TypeError: unsubscriptable object)
http://www.nire.com/2009/05/centos-yum-unsubscriptable-object/

上記のサイトに

yum clean metadata

を実行すると良いことが書かれていたので、実行してみた。

[root@nobuneko ~]# yum clean metadata
Loaded plugins: fastestmirror
17 metadata files removed
10 sqlite files removed
0 metadata files removed

yum clean metadata実行後に再度、yum updateを実行すると、エラーになることなく、yum updateが完了した。

今後もCentOS5でのyum update実行時に「TypeError: unsubscriptable object」などのエラーでyum updateが失敗したら、yum clean metadataを実行したいと思った。

CentOS5のコンソール画面で

yum update -y

と実行すると、

Cannot open logfile //var/log/yum.log

というエラーになり、yum updateが失敗することがある。

エラーメッセージの

Cannot open logfile //var/log/yum.log

は、「/var/log/yum.logというログファイルを開くことができません」という意味なので、「ファイルを開くことができない・・・ファイルのパーミッションの問題かな」と推測し、lsコマンドでファイルのパーミッションを確認すると、衝撃的な事実が分かるかもしれない。

《例》
[root@neko ~]# ls -ahl /var/log/yum.log
---x-wx-wT 26827 518144265 954210578 7.5E Mar 27  1911 /var/log/yum.log

ファイルのパーミッションが「---x-wx-wT」という見たこともないものになっており、ユーザ名も所有者名も得体のしれない変な数字になっている。

ファイルの容量は、「7.5E」となっているが、この大文字のEは、エクサバイトのことだろうか。

1ギガバイト(1GB)の1000倍→1テラバイト(1TB)
1テラバイト(1TB))の1000倍→1ペタバイト(1PB)
1ペタバイト(1PB)の1000倍→1エクサバイト(1EB)

で考えると、すごい容量だが、このLinuxマシンのハードディスクは1テラバイト(1TB)にすら到達していないので、「7.5E」と表示されていても、本当に「7.5エクサバイト(7.5EB)」もの容量がある、ということはありえない。

ファイルの更新日は、1911年3月27日(Mar 27 1911)になっている。100年前・・・ね。

Linuxで、ファイルのパーミッション、所有者、容量、更新日などが変なものになっている場合、ファイルシステムが壊れている可能性がある。

上記の例を確認したLinuxマシンの場合、dmesgコマンドを叩くと、

EXT3-fs error (device hda3): ext3_readdir: directory #9157376 contains a hole at offset 1958699008
attempt to access beyond end of devic

といったエラーが大量に出ていた。

shutdown -r nowコマンドで、Linuxを再起動しようと試みると、正常起動できず、メンテナンスモードに入ってしまった。fsck -yコマンドにより、ファイルシステムの修復を試みると、運よく成功した。

※fsckは、失敗することもあり、失敗したら、二度と起動できなくなる、という恐ろしいこともありえるので(かつてそうなったことがある)、実行する際には注意と勇気と運が必要。

fsckでファイルシステム修復後、Linuxの起動に成功した後で、

/var/log/yum.log

のパーミッション等を確認しようとすると、このファイルそのものが消失していた。

/var/log/yum.logファイルが消失していたのは気になるところだが、

yum update -yコマンドを実行すると、無事にyum updateが成功したので良かった。

今後もCentOS5でのyum update実行時に「Cannot open logfile //var/log/yum.log」などのエラーでyum updateが失敗したら、

  • /var/log/yum.logファイルのパーミッションの確認
  • demesgでファイルシステム、ハードディスク関連のエラーが出ていないかの確認

をしようと思った。

定期的にLinuxサーバのハードディスクの残り容量を自ら確認しにいくのが面倒なので、メールで自動通知してくれたら良いのに、と思う時がある。そんな時は、dfコマンドの実行結果をcronでメール送信するようにしてやると、良いかもしれない。

毎時0分にシェルを実行するcronの例
0 * * * * /home/nobuneko/df.sh

実行するシェル(df.sh)の中身
#!/bin/sh
echo -e "`df -h`" | mail -s "nobuneko server df result" r_nobu@h8.dion.ne.jp

シェルの実行により届くメールの内容
メールタイトル:
 nobuneko server df result

メール本文:
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             3.8G  3.1G  505M  87% /
/dev/sda3              90G   64G   22G  76% /home
/dev/sda1              46M   24M   21M  54% /boot
tmpfs                1006M     0 1006M   0% /dev/shm

《備考》
echo "`df -h`" | mail -s "nobuneko server df result" r_nobu@h8.dion.ne.jp

といったように、echoコマンドに-eオプションをつけないと、以下のようにdfコマンドの結果が改行なし(改行コードなし)でメールされてしまうので注意が必要。

Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 3.1G 505M 87% / /dev/sda3 90G 64G 22G 76% /home /dev/sda1 46M 24M 21M 54% /boot tmpfs 1006M 0 1006M 0% /dev/shm

echoコマンドの結果に改行コードを含めるには、

echo -e "`df -h`" | mail -s "nobuneko server df result" r_nobu@h8.dion.ne.jp

といったように-eコマンドが必要だ。

Linuxのcpコマンドであるファイルを別のディレクトリのファイルに上書きコピーする際に、何もオプションをつけなければ、

〜を上書きしてもよろしいですか(yes/no)?

といったメッセージで、いちいち上書きの是非を確認するメッセージが表示されてしまう。

このメッセージが表示された場合、ファイルの上書きを認める場合には、「yes」と入力して[Enter]キーを押下し、ファイルの上書きを認めない場合には、「no」と入力して[Enter]キーを押下する必要がある。

上書き対象のファイルが複数ある場合は、ファイル数と同じ数だけメッセージが順次表示されるので、もし、100ファイルをコピーする場合は、「yes」と入力して[Enter]キーを押下する、という行為を100回も繰り返さなくてはならない。

この「〜を上書きしてもよろしいですか(yes/no)?」というメッセージを表示させることなく、強制コピーを行いたい場合は、通常、「cp -f」と-fオプション付で実行すれば良い。

しかし、サーバによっては、「cp -f」と-fオプション付で実行しても、「〜を上書きしてもよろしいですか(yes/no)」と出てしまう場合がある。

その場合は、数が少なければ、

[root@nobuneko test2]# cp -f * /home/nobuneko/test/
cp: `/home/nobuneko/test/test1.js' を上書きしてもよろしいですか(yes/no)? yes
cp: `/home/nobuneko/test/test1.css' を上書きしてもよろしいですか(yes/no)? yes
cp: `/home/nobuneko/test/test2.js' を上書きしてもよろしいですか(yes/no)? yes
cp: `/home/nobuneko/test/test3.js' を上書きしてもよろしいですか(yes/no)? yes

といったように、「yes」と入力して[Enter]キーを押下する、という行為を繰り返しても良いかもしれない。

しかし、数が多いと、こんなことはやってられない。

Linuxのcpコマンドを-fオプション付で実行しても「〜を上書きしてもよろしいですか(yes/no)」というメッセージが出てしまう場合は、cpコマンドの直前に\を打てば、メッセージが表示されなくなる。この方法であれば、対処方法は簡単であり、すぐにできる。

※「\」は、Windowsの場合はエスケープシーケンス(「¥マーク」の半角)、Linuxの場合は、バックスラッシュ。

《例》
[root@nobuneko test2]# \cp -f * /home/nobuneko/test/

Linuxのcrontabで設定したスケジュールが実行されるたびにメールを送信したい場合は、以下のようにすればよい。

1)crontab -eでcrontabの編集画面を開く。

2)以下をcrontabの編集画面先頭行などに記載する。

MAILTO=送信したいメールアドレス

※メールアドレスを複数指定したい場合は、,(カンマ)区切りでメールアドレスを並べると良い。
MAILTO=送信したいメールアドレス1,送信したいメールアドレス2

CentOS 6.2 Live CDでCentOS 6.2をハードディスクにインストールする方法を以下に記載する。

1)インターネット、雑誌などで入手したCentOS 6.2 Live CDをCDドライブにいれてマシンを起動する。
※私が今回使用したLive CDは、インターネットで入手した「CentOS-6.2-x86_64-LiveCD.iso」をCD-Rに焼いたものだ。

2)CentOSが無事に起動したら、デスクトップ画面に「Install to Hard Drive」というハードディスクのアイコンがあるこを確認する。

「Install to Hard Drive」という名前の通り、このアイコンは、CentOS 6.2をハードディスクにインストールするためのものだろう。

3)「Install to Hard Drive」をダブルクリックする。

「CentOS 6
Community ENTerprise Operating System」

という画像が画面中央に表示される。

しばらく見つめる。

何も変化がないので、「きっとLiveCDだから処理が遅いのだろう」と思って、しばらく放置して待つ。

…が、一向に変化がないので、再度画面を見ると、画面右下に小さく[→Next]というボタンが表示されていることに気付く。

[→Next]をクリックする。

4)「Select the appropriate keyboard for the system.」(本システムで使用する適切なキーボードを選択してください。)というメッセージが表示されるので、「Japanese」をクリックし、画面右下の[→Next]をクリックする。

5)「What type of devices will your installation invole?」という画面になる。

 ●Basic Storage Devices
  Installs or upgrades to typical types of storage devices. If you're not sure which option is right for you, this is probably it.

 ○Speciallized Storage Devices
  Installs or upgrades to enterprise devices such as Storage Area Networks (SANs). This option will allow you to add FCoE / iSCSI / zFCP disks and to filter out devices the installer should ignore.

「Basic Storage Devices」にチェックを入れたままで、画面右下の[→Next]をクリックする。

6)「Please name this computer. The hostname identifies the computer on a network.」
という画面になる。

「Hostname:」ラベルの右のテキストフィールドには、「lived.centos」という文字列がデフォルトで入力されている。

「Hostname(=ホスト名)」が「lived.centos」のままで良ければ、そのままとする。変更したい場合は、自分の好きな名前(neko)などに変更する。

[→Next]をクリックする。

7)「Please select the nearest city in your time zone:」というメッセージと共に世界地図が表示される。
地図の下部に「Select city: New York, America (Eastern Time)」というメッセージがある。
そのメッセージの下部にあるセレクトメニューがデフォルトでは「America/New York」になっているので、「Asia/Tokyo」に変更する。

画面下部には、「System clock uses UTC」というラベルの右にあるチェックボックスにチェックが入っているチェックはそのままとする。

インストール後に、

UTC:Universal Time Coordinated (協定世界時) を
JST:Japan Standard Time (日本標準時)に

変更することになると思うので、ここでチェックを外した方が良かったのかもしれないが・・・まあ、いいか。

[→Next]をクリックする。

8)「The root account is used for administering the system. Enter a password for the root user.」という画面になる。

このメッセージの下部に

Root Password:
Confirm:

というように、「rootパスワード入力欄」と「rootパスワード入力(確認)欄」が表示されるので、rootパスワードを自分で決めて入力する。

[→Next]をクリックする。

※rootパスワードが、安易なパスワードだと、「Weak Password」という警告ダイアログが出て、「You have provided a weak password: it is based on a dictionary word」といったメッセージが表示されることがある。

このメッセージは、「辞書に収録されている単語を用いた『セキュリティ的に貧弱なパスワード』を入力しています。」といったことのようだから、ダイアログには、[Cancel]と[Use Anyway]というボタンがあるので、パスワードを変更する場合は、[Cancel]ボタンをクリックして、辞書に載っているような単語をパスワードの文字列には含めないようにパスワードを変更する。「貧弱なパスワードでいいんだよ」ということであれば、CentOS 6.2のせっかくの親切な警告を無視することにはなるが、[Use Anyway]をクリックする。

9)「Which type of installation would you like?」という画面になり、以下の5つより1つ選択するように求められる。

○Use All Space
 Remove all partitions on the selected device(s). This includes partitions created by other operating systems.
 Tip:This option will remove data from the selected device(s). Make sure you have backups.

●Replace Existing Linux System(s)
 Removes only Linux partitions (created from a previous Linux installation). This does not remove other partitions you may have on your storage device(s)(such as VFAT or FAT32).
 Tip: This option will remove data from the selected device(s). Make sure you have backups.

○Shrink Current System
  Shrinks existing partitions to create free space for the default layout.

○Use Free Space
  Retains your current data and partitions and uses only the unpartitioned space on the selected device(s), assuming you have enough free space available.

○Create Custom Layout
 Manually create your own custom layout on the selected device(s) using our partitioning tool.

「Use All Space」にチェックを入れる。

画面下部には、
「Encrypt system」と「Review and modify partitioning layout」のチェックボックスがある。
(デフォルトではチェックは外れている。)

[→Next]をクリックする。

10)「Writing storage configuration to disk」というダイアログが表示される。ダイアログには、
「The partitioning options you have selected will now be written to disk. Any data on deleted or reformatted partitions will be lost.」というメッセージが表示されており、[Go back]と[Write changes to disk]のボタンが表示されている。

[Write changes to disk]をクリックする。
※ディスクのフォーマットが開始される。
しばらく待っていると、

「Congratulations, your CentOS installation is complete.

Please reboot to use the installed system. Note that updates may be available to ensure the proper functioning of your system and installation of these updates is recommended after the reboot.」

という画面になるので、画面右下の[Close]ボタンをクリックする。

11)画面上部のツールバより[System] → [Shut Down...]をクリックする。
「Shut down this system now?」というダイアログが表示され、
「You are currently logged in as "LiveCD default user".
This System will be automatically shut down in 60 seconds.
[Restart][cancel][Shut Down]

[Restart]ボタンをクリックするか、「This System will be automatically shut down in 60 seconds」とあるように、何もしないでも60秒待っていれば、自動的に再起動が開始される。

再起動により、無事にOSが起動できたら、インストールに成功したことになる。起動できなかったら・・・色々と原因を探っていかないといけない。

Windows OS(Windows XP、Windows Vista、Windows 7、Windows Server 2003、Windows Server 2008等)がプリインストールされているマシンで、Windows OSを削除してLinux(CentOS 6等)を新規インストールしたい、という時がたまに(?)ある。

そんな時は、Linuxのインストーラに任せておけば、特に問題なくインストールが終わるのだが、インストール対象の環境によっては、Linuxインストール後の初回の再起動時に「Missing operating system」というエラーメッセージが出て、Linuxが起動できない場合がある。

このような場合考えられる原因としては、色々とあるのだろうが、原因の1つとして、ハードディスクが「RAID(レイド)」構成の場合、RAIDの設定に問題がある、ということだ。

RAIDの設定は、BIOSの画面、RAIDの画面で設定する項目があるので、環境に応じてそれらを見ていくことになると思う。

BIOSの画面だと、例えば、あるマザーボードだとBIOS画面では

Advanced > SATA Configuration > SATA Mode > [RAID MODE]

という設定項目があるので、そこで

(1)IDE Mode.
(2)AHCI Mode.
(3)RAID Mode.

といった3パターンのどれか1つに設定を変更することができる。

ここの設定を変更することでうまくいく場合があるかもしれない。

最近、私がハマったパターンは、そのBIOS画面での設定ではなく、RAIDの設定画面での設定だった。

RAIDの設定をどうにかしないといけないのであろうとは思っていたが、どうすれば良いかが分からなかった。

そんな時に偶然見つけたのが、以下のサイトの情報。

PRIMERGY TX100 S1 RAID環境へのCentOS5.6インストール
http://joint.aichi-u.ac.jp/mt3/2011/08/05_190400.php

OSインストール前には、RAID ConfigurationのClearが必要、ってどこかに書いておいてくれればいいのに。

これは、大ヒントだと思った。(このヒントのおかげで問題が解決したので、大感謝。)

早速、マシンの電源投入後にしばらく待ち、キーボードで「Ctrl + M」を押下し、

「LSI Software RAID Configuration Utility Ver C.05 Mar 03, 2011 BIOS Version A.10.03031333R」

というRAIDの設定画面を表示させる。

設定画面内に「RAIDを再構築する」に繋がる設定項目がないかどうかを探す。

Management Menu > Configure > Configuration Menu > Clear Configuration

と進むと、「Clear Existing Configuration」というメッセージが表示される。

「Clear Existing Configuration」は、「既存の(RAID)構成を削除する」ということ、か。

[Enter]キーを押下する。

「Clear Configuration?」と出るので、「Yes」で[Enter]キーを押下する。

「Existing Configuration Is Cleared
 Press Any Key to Continue」

というメッセージが表示される。

 「既存の構成を削除したので、(その他の作業を)続けるには、何かキーを押してください」ということなので、何かキーを押下する。

RAIDの設定画面を閉じ、再度、CentOSを入れ直すと、「Missing operating system」というメッセージが表示されなくなった。

しかし、CentOSは起動せず、今度は、「Missing operating system」というメッセージの代わりに、「Intel Boot Agent」が立ち上がってきて、エラーとなってしまった。

今度は、RAIDの設定ではなく、BIOSの設定だろうと思って、[F2]キー押下でBIOSの画面を開く。

BIOS画面で、

Advanced > SATA Configuration > SATA Mode > [RAID MODE]

となっていたので、ここで「RAID MODE」を「IDE Mode」に切り替えて再度マシンを再起動したところ、やっとCentOSが起動できた。

「RAID MODE」では起動できなかったということは、今はRAIDではない、ということだ。しかし、それは考えてみれば当たり前だ。

先ほど「Clear Existing Configuration」を実行し、既存のRAID構成を削除したからだろう。

そういえば、CentOS 6.2のインストール時に表示されたブートローダーの設定画面では、それまでのブートローダーのインストール先として、

「Install boot loader on /dev/ddf1MegaSR R1 #0.」

となっていたのが、

「Install boot loader on /dev/sda.」

と表示されていたのを思い出す。

「Clear Existing Configuration」で既存のRAID構成を削除した時に、「Install boot loader on /dev/ddf1MegaSR R1 #0.」というインストール先についても削除されたのだろう。

「RAID MODE」で使うためには、RAIDを再構築しないといけない。
もちろん、IDEモードでもCentOSは使えるが、せっかくなのでRAIDにしたいと思い、マシンを再起動して、RAIDの設定画面を開き、

Management Menu > Configure > Configuration Menu > New Configuration

で、RAIDを再構築した。(やり方がよく分からなかったので、RAIDのマニュアルをネットで探し、マニュアルに従って設定を行ったら、迷うことなく簡単に設定できた。)

そして、BIOSの設定画面を開き、

Advanced > SATA Configuration > SATA Mode > [IDE Mode]を
Advanced > SATA Configuration > SATA Mode > [RAID MODE]

に変更し、マシンを再起動すると・・・無事にCentOSを起動することができた。

今後もRAID構成のマシンにLinuxをインストールすることがある場合には、注意をしなくてはいけない、と思った。

あるLinuxサーバから別のLinuxサーバにファイルをコピーしたい場合、scpコマンドを使用すると便利だ。

《例1》 あるLinuxサーバから別のLinuxサーバに1ファイルのみコピーする方法

# pwd
/home/test
# scp -p nobu@192.168.2.6:/home/test2/index.php ./
nobu@192.168.2.245's password:
index.php                                                100%  602     0.6KB/s   00:00

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「nobu」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test2/」直下に保存されている「index.php」ファイルをコピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

《例2》あるLinuxサーバから別のLinuxサーバに正規表現を用いて複数ファイルをコピーする方法

# scp -p nobu@192.168.2.6:/home/test2/*.html ./
nobu@192.168.2.6's password:
index.html                                                100%   16KB  15.9KB/s   00:00
index2.html                                              100%   16KB  15.9KB/s   00:00
index3.html                                              100%  319     0.3KB/s   00:00
test01.html                                              100%  304     0.3KB/s   00:00
test02.html                                              100% 8950     8.7KB/s   00:00
test03.html                                              100%  323     0.3KB/s   00:00

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「nobu」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test2/」直下に保存されている「.html」拡張子のファイル全てを「*(アスタリスク)」を用いた正規表現により取得し、コピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

※「*(アスタリスク)」は、0文字以上の文字列を表す。

《例3》あるLinuxサーバから別のLinuxサーバに指定したディレクトリ全体(丸ごと)をコピーする方法

# scp -pr nobu@192.168.2.6:/home/test3 ./

※上記は、コピー元のサーバ(IPアドレス:192.168.2.6)にユーザ名「nobu」でアクセスを行い、コピー元のサーバのディレクトリ「/home/test3/」配下にある全ディレクトリおよびファイルをコピー先のサーバのカレントディレクトリ(/home/test)にコピーした時の例。

※指定したディレクトリ全体(丸ごと)を再帰的にコピーする場合、「-r」オプションをつける。 

《参考》

CentOS5で「man scp」を実行して確認できるヘルプ。

-p     Preserves modification times, access times, and modes from the original file.

-r      Recursively copy entire directories.

このヘルプより、

「-p」オプションは、オリジナルファイルの更新日時、アクセスタイム、モードを維持する

「-r」オプションは、ディレクトリ全体を丸ごと(再帰的に)コピーする

というオプションであることが分かる。

2012年4月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

アーカイブ

カテゴリー