昔ほんの少し遊びがてら勉強してみたLinuxを最近、再び少しずつ勉強するようになった。
2週間ほど前になると思うが、「Debian 30r2 i386 binary 1」を長いこと押入れにしまいこんでいたDynabook Satellite 2510(東芝製ノートパソコン)にインストールしてみた。最初、xの設定を間違っていたらしく、xの起動時に、xがクラッシュしました・・・のようなエラーメッセージが出てしまって2日ほど悩んでしまった。現在、音声の再生はできないが、xの起動も問題ないし、インターネットの接続もできる。Pentium MMX 266MHzでメモリ64MBの旧式PCのため、ブラウザの起動に大変時間がかかってしまうが、Linuxで色々と遊んでみるぶんには十分かな。
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 |
・・・1週間以上Linuxマシンの電源を入れずに放置していたら、起動が正常にできなくなっていた。dev/hda1に問題が生じているので、rootパスワードを入力した後、fsckを手動で実行してほしい、というメッセージがでていた。Linux初心者の私はこのコマンドを今回初めて知ったのだが、状況から、Linuxのファイルシステムを修復するコマンドのようだ、ということは分かった。他にどうすればいいかなどの知識は全く持っていなかったため、とりあえず、画面に表示されている指示に従うことにした。これでいいかな、と思って下記を入力し、Enterキーを押してみる。
fsck /dev/hda1
色々とチェックが始まり、修正したいのなら、「y」をEnterしてほしい、とメッセージが出てきた。よく分からないが、「y」を選択。その後も似たようなメッセージが表示され、常に「y」の選択を求められた。とりあえず、どんどん「y」をEnterしていった。10回(実際はもっと少なかったかも)程度繰り返した後、exitで再起動。
治った!起動に成功。ふぅ〜。助かった。本当に助かった。こうやって、少しずつ、コマンドを覚えていこう、と思う。
・・・2日ほど前の深夜、Linuxを久しぶりに起動した。うとうとしながらKDEのGUIでログインし、ブラウザを起動したあたりで眠りに落ちた。しばらくして意識が戻った時、まだ眠気が続いていたので、さっさとシャットダウンして布団で寝ようと思った。しかし・・・そこで、シャットダウンの方法が分からなくなっていた。そういえば前回、GUI画面でのシャットダウン方法が分からず、コンソール画面を出して、shutdown -h nowを実行したっけ・・・と思い出して、早速試してみる。
command not found
・・・。スペルミスだろうか、と思って何度試しても同じ結果だった。眠くてイライラしてきた時、ふと思った。rootで試したらどうなるだろう・・・。イライラしていた気分が消えていった。シャットダウンに成功したのだ。
今日インターネットで調べていたら、shutdownコマンドは電源を切るという重要なコマンドなので、やはり、rootでないと使用できないようだった。Linuxは電源を切るのにも一苦労。しかし、それがまた面白いかも・・・と思うのであった。
- debianのサイトよりdebian-31r2-i386-binary-1.isoをダウンロードし、CD-Rに焼く。
- Dynabook Satellite 2510のCDトレイにCD-Rを挿入してCDブートする(デフォルトではDynabook Satellite 2510の場合は、キーボードの「C」を押しながら電源を投入すればCDブートとなるようだ)。
- Linuxのインストーラーが表示された際に標準インストールを選択すると、「CD-ROMドライブを見つけるためにハードウェアを検出しています」というメッセージに続いて「'Toshiba America InfoSystem ToPIC97'用のモジュール'yenta_socket'をロードしています...」と表示された後にフリーズしてしまう(進行度のメモリは2%の状態・・・)。仕方なく、このCDが提案する標準インストールは諦めて2.6シリーズのカーネルでのインストールを試してみたところ、あっさりとインストールできてしまった。なお、Dynabook Satellite 2510はLANコネクタが標準搭載されていないため、PCカード経由でLANを利用することになる。すごく昔にTurbo Linuxをインストールした時にはインターネット環境がAirH''しかなかったのでどうやってインターネットに接続していいのかさっぱり分からなくてインターネット接続は挫折したことがあるが、今回は簡単だった。HUBとパソコンをLANで繋げば接続できてしまった(ブロードバンドは楽でいいなぁ)。
現在のインターネット環境は以下の通り。
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を入れる予定なので、その時には動作速度向上を体感できるかもしれない。
- 「mysql -u ユーザ名 -p」と入力。
- パスワードを入力。
MySQLへのログインが成功した場合
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キーを押すと以下のようなエラーとなるので注意。
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)を起動した時の初期画面。
「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)で上記の設定を行った画面。
[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 -- -foorm ./-foo
ファイルの削除に rm を使った場合、通常はそのファイル内容を復元できてしまう、
ということには留意しておいてください。もしその内容を本当に復元不可能にする
保証を得たければ、shred の利用を考えてみてください。バグを発見したら <bug-coreutils@gnu.org> 宛に報告して下さい.
ヘルプに思いっきり答えが書かれていた。
`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
rm -- -foorm ./-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 lineSELinux 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_64nobuneko 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.phpOSインストール前には、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」オプションは、ディレクトリ全体を丸ごと(再帰的に)コピーする
というオプションであることが分かる。
カテゴリー
- ★1. 日記
- English
- PHS・携帯電話
- おもちゃ
- お買い物
- フジ
- 商店街(愛媛県)
- カメラ・ビデオカメラ
- キャラクター
- コンピュータ
- バス
- 温泉・銭湯・宿泊施設等
- 07 福島県
- グランパークホテルエクセル福島恵比寿
- 東横INN新白河駅前
- 09 栃木県
- 13 東京都
- ホテル リステル新宿
- ホテルニュースター池袋
- 新宿プリンスホテル
- 東横INN新宿歌舞伎町
- 14 神奈川県
- アパホテル横浜関内
- エスカル横浜
- コンフォートホテル横浜関内
- スーパーホテル横浜・関内
- ダイワロイネットホテル横浜関内
- ダイワロイネットホテル横浜公園
- ホテル横浜ガーデン
- メルパルク横浜
- リッチモンドホテル横浜馬車道
- 横浜タウンホテル
- 横浜平和プラザホテル
- 東横INN横浜みなとみらい線日本大通り駅前
- 東横INN横浜スタジアム前本館
- 15 新潟県
- ホテルα-1上越
- 湯沢東映ホテル
- 27 大阪府
- アパホテル関空岸和田
- カルルの湯
- スーパーホテル御堂筋線・江坂
- スーパーホテル大阪・天王寺
- トーコーシティホテル新大阪
- ドーミーイン心斎橋
- ホテルアウィーナ大阪
- ホテルダイトー
- 新大阪江坂東急イン
- 33 岡山県
- 34 広島県
- ひろしま国際ホテル
- 35 山口県
- ウェルハートピア萩(厚生年金ハートピア萩)
- スーパーホテル防府駅前
- ホテルオレンジ
- 萩トラベルイン
- 萩ロイヤルホテル
- 萩指月温泉 ホテル 萩の浜
- 萩本陣
- 38 愛媛県
- 39 高知県
- スーパーホテル高知
- 40 福岡県
- コンフォートホテル小倉
- スーパーホテル小倉駅南口
- ホテル法華クラブ福岡
- 西鉄イン小倉
- 43 熊本県
- ホテル熊本テルサ
- 県庁前グリーンホテル
- 44 大分県
- コモドホテル
- ベストウェスタン ホテルフィーノ大分
- 07 福島県
- 空港
- 寺社
- 城
- 食べ物
- 生き物
- 船
- 鉄道
- 道路
- 飛行機
- 風景
- 娘
- 遊び場
- ★2. レビュー