スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

wheezyのgrubの解像度の変更

以前俺は15インチのディスプレイを使っていると書きましたが、両親が使っていた17インチのものを貰い受けたので今は1280*1024まで表示できます。

X Window System が立ち上がってGUI上で作業している分には何も問題ありません。nvidiaのグラボにドライバをあててあれば、特に何かを設定しなくても1280*1024の画面を使うことができます。かつて色々と悩まされたnvidiaのプロプライエタリドライバですが、今のDebianでは

# apt-get install nvidia-kernel-dkms

これで終いです。debian-rulesとか m-a a-i とか色々とやりましたが、今はこれだけで終わってしまいます。あ、そうだ、/etc/X11/xorg.confには

Section "Device"
Identifier "Configured Video Device"
Driver "nvidia"
EndSection

と手で書いてあげる必要がありますが (追記: xorg.confは # nvidia-xconfig で自動で作成されるようです) 。

しかしGUIでは至極快適なこの大きいディスプレイも、CLIの画面、つまりGRUBの起動するOSを選択する画面とか、Debianが立ち上がるときに流れるメッセージとか、ttyコンソールでは一転不快になります。640*480が17インチで表示されるので文字が大きすぎるのです。これを何とかしたい。

こういうときに読むのが/boot/grub/grub.cfg。書き出しに

It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub

とあるので、このファイル自体は書き込み禁止になっていますが、この設定を変えるのにどこをいじったらいいのか教えてくれています。んで63行目 (それぞれのシステムによって違う可能性もあります) に、

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 3.0.0-2-686-pae' --class debian --class gnu-linux --class gnu --class os {
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set=root c3cd… (中略)
echo 'Loading Linux 3.0.0-2-686-pae ...'
linux /boot/vmlinuz-3.0.0-2-686-pae root=UUID=c3cd… (中略) ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.0.0-2-686-pae
}

とあるのを発見。Ubuntuやsiduxを使ったときの経験として、この ro quiet で終わる行に vga=791 と書き込めば起動メッセージやttyコンソールは1024*768で起動するはず。まずは再起動して、GRUBの機動オプションを手書きする機能で確認。GRUBのOS選択画面になったらeキーを押して、そのように書き足してCtrl+xキー。うん、ドット数が上がって文字が小さくなりました。

では、その旨を/etc/grub.d/10_linuxに書き込んだらよろしいのだろう。以前Windowsの呼び出しが間違っていた時にこの手の奴を編集したから、きっと今回も簡単なはず。

# vi /etc/grub.d/10_linux

…全然読めない…なにこれ?「quiet」とかで検索しても、該当する文字列もない。

…ええっと、後回しだ。まずはGRUBの画面が640*480なのが気に入らないんだよ、そこから手をつけよう。/etc/default/grubだ。開くと、意外なことに九行目に

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

という行を発見。もうここに書いてしまうか。vga=に続く数値はいくつがいいのか、それはそれぞれの環境と好みがあるわけですが、それを解説しているページを発見。

VGA Boot modes to set screen resolution | USB Pen Drive Linux

Ubuntuやsiduxを15インチディスプレイのマシンで使ったとき7自動で設定されていた791は16bit、これが標準だとするならば、16bitと1280*1024で794。

GRUB_CMDLINE_LINUX_DEFAULT="quiet vga=794"

更に20行から24行にかけて、こんな記述を発見。

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

これは、GRUBのOS選択画面の解像度を変えたい場合は、24行目のコメントアウト (先頭の#) を外して、好きな数値を書き込め、ということだろうか。やらせていただきましょう。

GRUB_GFXMODE=1280x1024

これを保存して、この変更を/boot/grub/grub.cfgに反映させましょう。

# update-grub

終わったら/boot/grub/grub.cfgを覗いて変更がなされていることを確認して、念のため再起動。

問題無し。画面が広くなりました。これが正しい設定の仕方なのかどうか分かりませんが、とりあえずこうやってCLIの画面サイズの調整ができました。

スポンサーサイト

テーマ : Linux
ジャンル : コンピュータ

wheezy/sid上で複数のサウンドカードがある場合の設定

すごい大事なネタを投稿せずに放っていました…投稿を忘れていただけで、今日までうちのマシンで音が出ていなかったというわけではないので念のため。

両親の使っていたパソコンを貰い受けたので、長年使ったAthlonXPのマシンは引退させたという話を書きましたが…その両親のPCがAMD690のマシンでATIのグラフィックデバイスがオンボードでついているのですが、ATI/AMDのグラボはLinux用のドライバに (少なくとも二年前までは) 不安があったため、Nvidiaのローエンドのグラボを買ってきて取り付けました。またオンボードのサウンドカードの音が悪いのは分かりきったことなので、引退させるマシンからサウンドカード Audiotrak Prodigy HD2 を取り出し、新しいマシンに取り付けました。

すると、/proc/asound/modulesの中身がエラいことに。

0 snd_hda_intel
1 snd_ice1724
2 snd_hda_intel

snd_hda_intelが二つあるのです。もちろんこれの正体はグラボのHDMI出力で、どちらかがAMD690のオンボードで他方がnvidiaであるわけですが、どっちがどっちかは分かりません。いや、正確には/proc/asound/cardsを見れば分かりますが、しかしですよ。以前サウンドカードの優先度を変更したときは、/proc/asound/modulesの中身が

0 snd_hda_intel
1 snd_via82xx
2 snd_ice1724

こうであったところ、Prodigy (ice1724) を最優先にするために、/etc/modprobe.d/sound.confに

options snd_ice1724 index=0
options snd_via82xx index=1
options snd_hda_intel index=2

こう書きました。これで再起動すると/proc/asound/modulesの中身が書き換わり、ice1724のProdigyが第一のサウンドカードとして機能してくれたわけです。

このマシンではどうしたら良いのでしょう。例えばオンボードのサウンドデバイスを最優先にしたいとかだったら、もう/etc/modprobe.d/sound.confの設定は使えませんね。今回はice1724だから問題はないか、と思いきや、

options snd_ice1724 index=0
options snd_hda_intel index=1
options snd_hda_intel index=2

このように書いても、無視されたり、ひどいときにはice1724が認識されなくなったりして、効果はありませんでした。オンボードグラフィックのあるマザーにグラボを挿している俺が世間の常識から外れた困った子という可能性はありますが、でもATIのグラフィックはLinux上では不安だし、買ってしまったnvidiaのカードはもったいないし、このマシンを捨てるのはもっともったいないのです。マータイさんが草葉の陰で泣きます。



しかし、wheezy/sidでよいものを発見しました。GNOMEを使っているのならば、gnome-control-centerの、「サウンド」の設定メニューからGUIで設定できます。

gnome-control-centerでサウンドカードを切り替える

この様に使わないサウンドカードをことごとくオフに、使いたい物だけを残す、ということでサウンドカードを選ぶことができます。しかもこれは/etc/modprobe.d/sound.confと違って設定を有効にするのに再起動を要しないので、必要に応じてサウンドカードを切り替えることもできます。前に、うちのProdigyのインプットが効かないので、オンボードをskype専用に生かしておくということをやりました。UbuntuをインストールしたりDebianに戻したりと環境が変わるうち、今うちの環境ではskypeの設定メニュー上から直接使うサウンドカードを選ぶことはできなくなっています (PluseAudio Server と表示されるのみ) が、これでオンボードのサウンドカードに切り替えることでskypeを使うことができました。

カード毎にインプットのみを生かす・アウトプットのみを生かす等の設定も可能

さらに、アウトプットは音質の良い後付けのサウンドカードを使い、オンボードはインプットだけを生かしておく、なんて設定もこのとおり可能です。

テーマ : Linux
ジャンル : コンピュータ

デュアルブートはお試し感覚でやるもんじゃない

最近Linuxに興味を持って…興味を持つのはいいことですが…ろくろく知識もないままデュアルブートに挑戦して、失敗して、大事なPCを潰してしまい途方に暮れる人が増えているようです。よう知らんけれども、どうやら男子小中学生に人気のドラマの影響があるみたいですね。

ウチのブログでも一応注意を書いていたつもりですが、被害を減らすためにももう一度はっきりと書いておきます。

結論 : デュアルブートは、非常に面倒であり、また危険でもあります。お試し程度でLinuxに触れてみたいという段階でやることではありません。



理由1 : ハードディスクの領域を分割する必要がある

普通、ハードディスクの一つの領域に起動可能なOSは一つしか存在できません。よって、Windowsとデュアルブートにしたいならハードディスクにパーティションを設け、領域を区切ってやる必要があります。ここなんですが、まさか今現在使っている、これからLinuxとデュアルブートにしたいWindowsマシンのハードディスクに、未フォーマット領域があるって方はいますまい。普通は目一杯Windowsシステムなりユーザーデータ用に割り当ててあるはずです。つまり、今現在Windowsで使われている領域を切り詰めて、新たな領域を作る必要があります。

もちろん、この作業は自動ではしてくれません。WindowsとLinuxにどれくらいずつハードディスク容量を割り当てたいか、それはそれぞれの使い方考え方によって異なるからです。そして、あえて何も指定しなければOSのインストーラはハードディスクの全領域を自らのために確保しようとするはずです (これはLinuxだけの話じゃなく、Windowsもそう) 。よく分からないままLinuxをインストールした、Windowsは、今までの大切なデータはどこへ行ったのか…なんて話を質問サイト等で目にすることがありますが、もうお気の毒としか言えません (業者に頼めば回収できるものもあるでしょうが、ビックリするほど高い…) 。

何?ハードディスクの切り分け自体はそんなに難しい作業じゃないって?Gparted Liveというディストリビューションを使うと、Windowsのファイルシステムの空き容量の一部を、簡単に新たなパーティションとして切り分けられるだろうと?

本当にそうでしょうか?Windowsでデフラグを起動してご覧なさい。ハードディスクのデータ断片化・分散状況を図にしてわかりやすく表示してくれます (Vista以降はない?) 。これを見ると、データがあちこちに分散して書き込まれることがよくわかるでしょう。もうひとつ重要なことに、空き領域も分散するのです。つまり、例えばWindows領域に50GB空きがあるから、20GB空きを残してお尻の30GBを切り分けようったって、それが安全とは限らないのです。末尾30GBがまとまった空き領域である保証はありません。何かが書かれていたら、その何かが消えます。そのままデフラグを実行してしまえば問題は解決されるとお思いの方もいるかもしれませんが、Windowsのデフラグには空き領域の最適化の機能はなかったはずです、やはり安全とは言えません。

よって、インストール作業に入る前にバックアップは絶対にしておかなければなりません (デュアルブート以前の問題でもありますが、結構バックアップを怠けている人は多いでしょう) 。俺だったら、パーティションを切り分けたら念のためWindowsも入れ直しますね。ちなみに、Linuxを入れてからWindowsを入れてデュアルブートにするのは更に面倒なので、先にWindowsを入れます。



理由2 : マスターブートレコードが変更される

パソコンをコントロールするためにはOSが必要ですが、パソコンに電源が入ったその直後はOSがロードされていません。これではパソコンは永遠に何もできないことになってしまうので、電源を入れるとOSを起動させるためのプログラム (ブートローダ) を強制的に読みにいくようになっています。で、そのブートローダが書かれているのがハードディスクの先頭、マスターブートレコード略してMBRというところです。

デュアルブートを設定するということは、即ちこのMBRに変更を加えるということです。つまり、Linuxのインストールに失敗するとWindowsを含めて起動できなくなります。また、失敗はしなくてもWindowsシングルブートに戻したい場合にはそれはそれでMBRの復旧は必要になります。MBRのバックアップ・復旧方法はこのブログでも何度か話題にはしましたが、WindowsXPの回復コンソールは結局俺はあの後一度も使っていない (Debianが思った以上に使いやすくすぐにメイン環境にしてしまったため、Windowsシングルブートに戻そうと思わなかった) ため、あれで本当にうまくいくかどうかは知りません。



理由3 : リカバリー領域の存在

デュアルブートをやめて、Windowsシングルブートに戻すならば、一番手っ取り早いのはリカバリーをしてしまうことです。さて、リカバリーディスクはありますか?俺は自作派なので詳しくは知りませんが、最近の既製PCはリカバリディスクを用意せずに、ハードディスク内に隠しパーティションをつくってリカバリ用のプログラムを入れてあるだけというものが少なくないそうです (参考 : リカバリー領域 - Wikipedia) 。

この手のPCでパーティションを切り方を間違えると、そのリカバリ領域を潰してしまうこともあるでしょう。するとリカバリ不能、メーカーサポートのお世話を受けることになります。また、俺はこの手のパソコンを持っていないので憶測になってしまいますが…リカバリ領域を潰さずにパーティションを切れたとしても、もしリカバリプログラムを起動するための情報もブートローダに書かれているとしたら、MBRを書き換えた時点でそのパソコンはリカバリ不能になってしまいますよね。



理由4 : もっと安全にLinuxを試す方法がある

上記123の理由により、デュアルブートは間違いなく面倒であり、危険も伴うことは分かっていただけたと思います。わざわざそんなことをしなくても、Linuxを試したいだけならば、もっと安全な方法があります。

例えば、1CDLinuxとかLive CDと呼ばれるもの。Knoppixが最も有名だと思いますが、1枚のCD/DVDから起動させるLinuxOSです。つまり、これをCD-R等に焼いたものを用意して、それをディスクドライブに入れたまま起動するとLinuxが立ち上がってくれるというものです。これは、ハードディスクに手をつけなければ、CDを抜いて再起動するだけで今までの環境が戻ってきます。

または仮想PC (仮想機械) 。仮想PCとは、PCのハードウェアの動作を再現するプログラムで、その上でOSを走らせることのできるものです。Windows上で動くアプリケーションである仮想PC (VMWare Playerなど) を使えば、Windows上でアプリケーションとしてLinuxOSが実行できます。パーティションも切る必要はありません、仮想PCの仮想ハードディスクは実OS上ではファイルとして扱われますから。MBRも汚れません、起動はOSとしてではなくアプリケーションとして行うため、MBRを書き換える必要がないからです。これも、いらなくなったら仮想PCアプリケーションをアンインストールして仮想ハードディスクファイルをゴミ箱に捨ててしまえば元通りです。

このふたつは直接Linuxをインストールするのに比べて制約はあります。前者はCDにあらかじめ収録されたアプリケーション以外を使うのはちょっと難しいですし、後者はリソースの全てを仮想OSが占有することができないのでどうしてもパフォーマンスが落ちます。が、どちらもお試し程度には充分過ぎるものです。このブログで仮想PCを紹介しなかったのはウチのPCが六年も前のもので、充分なリソースがなかったからなんですが、今のパソコンならばみんな高スペックを持て余しているんじゃないですか?お試しならばこういったものでやるべきです。



以上、いきなりデュアルブートはやめましょうという話でした。もちろん、ある程度Linuxに触れていて、ぜひメイン環境にしたい、Windowsはたまに起動できればいいという方ならば、それはぜひデュアルブートを考えるべきですがね。初心者がいきなりはやめましょうということです。

それと、バックアップやリカバリー、MBRのことについて注意しましたが、もう一つ注意を。家族との共用コンピュータでやるならば、家族全員の承諾を取りましょうね。もちろん、デュアルブートの危険性についても分かってもらった上での承諾ですよ、でないと意味ないですから。意外にみんな自分の人生にすら関わってくるような大事な書類をバックアップもせずにパソコンのハードディスクに無造作にいれているもんです。バックアップしない奴が悪いと言えば悪いですけれども、ご家族の人生はご自身の人生にも直結しますよ…と、未成年者向けの注意も入れておきます。

テーマ : Linux
ジャンル : コンピュータ

複数のサウンドデバイスがあるときの優先順位の変更

*2012年07月15日追記 GNOME3ではもっと楽なやり方があります。こちらへどうぞ

音楽好きなあなたなら、一度はジュークボックスに憧れたでしょう。はじめて行ったビレッジバンガードに置いてあった「手を触れないでください」の貼紙のついた冷蔵庫ほども大きさのあるジュークボックス…ああ何と艶かしいその姿…何と甘美な響き…都会へ出てきてもう何年、ビレッジバンガードなんかもう飽きるほどに足を運びましたが、あの時の感動は今も忘れません。

しかし時は流れ現在、きっと音楽好きはパソコンをジュークボックス代わりにしていますよね。ええ、いい時代になったものです。ただ、パソコンの音は大抵悪いのが現実。アンプ・スピーカーはいいものを繋げば良いとして、問題は音を作り出す部分ですよ。その部分の音が悪ければ、いくらアンプやスピーカーの原音再現度が如何に高かろうと、悪い音やノイズを再現度高く再生してしまうだけなんでね。

で、いいサウンドカードを買ってきて取り付けるわけですよ。ただそのままだと既存のサウンドデバイスと競合するため、新しいサウンドカードだけを有効にして他を無効にする作業が必要になります。

オンボードのサウンドデバイスはBIOSで無効にできますな。今まで使っていたサウンドカードがあればそれを引っこ抜けばいい。Windowsだったらばデバイスドライバ設定画面から無効にすることもできました。…Linuxは、Debianはどうしたら良いんだ?etchまでは

# alsaconf

というコマンドを打つとウィザード的な設定ツールが立ち上がるので、画面の指示に従って有効にしたいサウンドデバイスを選択すればよかったのですが…それがなぜかlennyからできなくなり。まあいい。BIOSでオンボードは殺せるし、後付のサウンドカードは使わないなら引っこ抜けばいい。…と思っていた。



ビデオカードを付け替えたあたりからどうも音が出たり出なかったりするようになったんです。なぜか起動する度に調子が変わるようで、全く調子の良い時もあれば、全く音が出ない時もある、アプリケーションによって出たり出なかったりが違う時もあったり。で、よくよく考えてみたら新しくつけたビデオカードにはHDMI出力端子がついているわけで。HDMI出力には音声も乗せられるわけですから、これが原因か?

しかし、オンボードはBIOSで無効に、USB・PCIは引っこ抜ける…こいつはどうする?引っこ抜こうったって、ビデオ出力は必要だし、HDMIに一本化するか?ウチにはHDMIに対応するアンプはないし、だいたいウチのディスプレイはDVIだ。

んで、色々と検索。すると。 サウンドデバイス関連(Hardy Heron編) この様なページを発見。

オーディオデバイスの認識順序を固定する
Linuxではサウンドカードが複数接続されていると、起動するたびに認識順序がコロコロと変わるようになっている


んー、臭いぞ。きっとこれじゃないか。これはUbuntuの解説ですが、UbuntuとDebianは似たようなディストリビューション、ちょっとやってみましょ。

$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_via82xx
2 snd_ice1724

snd_ice1724ってのが俺の使いたいPCIサウンドカードであるAUDIOTRAK PRODIGY HD2、snd_via82xxってのがオンボードのサウンドデバイスであるはず(BIOSで無効にしたはずだが、なぜOSから見えているのかは不明)。0に来ているやつは全く見慣れないやつだ。サウンドデバイスを三つも繋げた覚えはないし、"hd"とあるところがいかにもHDMIくさい。同じ/proc/asoundディレクトリ内にcardsというファイルがあったのでこれも覗いてみると。

0 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xde800000 irq 17
1 [V8237 ]: VIA8237 - VIA 8237
VIA 8237 with AD1980 at 0xe000, irq 22
2 [ICE1724 ]: ICE1724 - ICEnsemble ICE1724
ICEnsemble ICE1724 at 0xb400, irq 19

はい、こいつがHDMIであることがハッキリいたしました。現状、このHDMIのサウンドが最優先されているということらしいので、最優先をICE1724にして、しかも固定してしまいたい。

先ほどのページによると、/etc/modprobe.d/soundに

options デバイス名 index=認識させたい順番
options デバイス名 index=認識させたい順番

こう書けば良いとのこと。デバイス名は/proc/asound/modulesにあった名前で、優先順位は0、1、、、と書くか、それでうまくいかなければ1、2、、、と書くとのこと。というわけで実践。

# vi /etc/modprobe.d/sound
options snd_ice1724 index=0
options snd_via82xx index=1
options snd_hda_intel index=2

うむ、HDMI対応の高品質なオーディオアンプとディスプレイを買うまでHDMI音声出力には眠ってもらう。まあ、その時にはマシンも変わっているとは思うが…さすがにAthlonXPはH264とかを再生するには非力…新しいマシンにはAGPのボードは引き継げないからね。

はい、再起動。…うん、gstreamerも、xineも、Flashも、その他アプリケーションも音が出てくれる。/proc/asound/modulesの順番も指定通り。偶然の可能性もあるので、もう一度再起動。もう一度確認。問題無し…ん?なんかあったぞ。起動時のメッセージを見ていると、

WARNING: All config files need .conf: /etc/modprobe.d/sound, it will be ignored in a future release.

というものを発見!ということは、いずれこれも使えなくなるってことだ。どうしよう…しかし、メッセージの内容は、 All config files need .conf が主たる内容であって、it will be ignored in a future release. は補足であるようにも読めるぞ。つまり、/etc/modprobe.d/sound を /etc/modprobe.d/sound.conf とするべきだということか? /etc/modprobe.d/ を見てみると、他のファイルはすべて.confがついている。やるしかあるまい。これでうまくいかななっても、その be ignored の日は少なくとも今日ではなさそうだ、代わりの方法をまた探せばよい。

# cd /etc/modprobe.d/
# mv sound sound.conf
# shutdown -r now

…画面に目を凝らしたけれど、警告は出なかったような。起動し終わったら、一通り音を出して確認。/proc/asound/modules 及び /proc/asound/cards の内容も確認。起動時のメッセージは /var/log/dmesg に記録されているようなので、それも確認。

# less /var/log/dmesg | grep WARNING

はい、問題なさそうです。よって、/etc/modprobe.d/sound は、最初から /etc/modprobe.d/sound.conf として作った方が良さそうです。

というわけで、とりあえずはalsaconfの代替は /etc/modprobe.d/sound.conf で。

テーマ : Linux
ジャンル : コンピュータ

日付と時刻の調整…自動で。

前回の続き…

スケジューリングで自動的に仕事をこなしてくれるのはcronという機能だということですが。

とりあえず、この設定ファイルは/etc/crontabにあるようですが、これを直接編集することは推奨されないんだとか(Cronで簡単スケジューリング)。しかしとりあえず見るだけ見てみる。

# less /etc/crontab
(前略)
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

なるほど。よく分からないけれども、/etc/cron.dailyの中身を一日一回やってくれるということか。まあ、時計合わせなど一日一回できれば十分過ぎるほどであると思うので、これを使うことにする。



では実践。上に挙げたページやntpdate を使った時刻合わせ | 自宅サーバー Fedoraなどを参照に、

# cd /etc/cron.daily
# ls

とりあえず、既に設定がなされていたなんてバカな話でないことを確認する。なかったので、

# vi ntpdate

以下の通り記入。

#!/bin/sh
ntpdate ntp.nict.jp

終わったら保存して、

# chmod 755 ntpdate

今つくったファイルに実行権限を与える。



これで一日一回自動で時刻調整をしてくれるであろう。…本当か?さきほどの/etc/crontabの中身によると、午前六時二十五分に実行されることになっている。俺そんな時間にパソコンを起動していないと思うんだけれど…そう、これって二十四時間起動させているサーバのための機能なんじゃないか?

というわけで、もっといいものはないだろうか。起動直後に実行されるとかさ。

Wikipediaのcrontabのページを見てみたら、anacronというものがあるのが分かった(anacron - Wikipedia)。よくわからないけれども、これはパソコンなど、二十四時間起動させっぱなしでないシステムでこのcronを補完してくれる機能であるらしい。

aptで確認するとうちのシステムにもすでにインストールされている(つまりはDebianでデフォルトインストールされていると思われる)ようだったので、とりあえず設定ファイルを覗いてみる。

$ less /etc/anacrontab

すると。

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# These replace cron's entries
1 5 cron.daily nice run-parts --report /etc/cron.daily
7 10 cron.weekly nice run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly

となっている。つまり、/etc/cron.dailyの中身は実行してくれるということだろうか。/etc/crontabに直接コマンドを書き込むことが推奨されないというのは、この辺が理由なんだろうか?

しかし、このanacronなるもの自体が自動で起動しないと意味がないよね。デーモンの自動起動を司るのは/etc/rc*.dであるのは以前勉強したので、そこを見てみましょう。

$ cd /etc/rc2.d
$ ls -F
README S20clamav-freshclam@ S20saned@ S89anacron@
S05loadcpufreq@ S20exim4@ S23ntp@ S89cron@
S10rsyslog@ S20kerneloops@ S24dhcdbd@ S99rc.local@
S12acpid@ S20nfs-common@ S24hal@ S99rmnologin@
S12dbus@ S20nvidia-glx@ S26network-manager@ S99stop-bootlogd@
S14avahi-daemon@ S20nvidia-kernel@ S30gdm@
S19cpufrequtils@ S20openbsd-inetd@ S50cups@

あ、いるね。つまり、一応はこのままで問題ないということか。

一応確認のために、あえて軽く時計を狂わせた状態で再起動。で、画面に流れるメッセージを注視しているとanacronを起動するメッセージを発見。起動が完了してgdmが立ち上がった時に時計を確認。すると、あえて狂わせた時計が直っていた。

*ただし、時計をあえて狂わせるにせよ、それを直すにせよ、大幅にやるとシステムを混乱させることになるので(突然スクリーンセーバーが起動するとか、ハイバネートするとか、プログラムの動作に矛盾が生じるとかが考えられますな)、あまりやらない方がいいかも。また、極端な日付に設定すると、2000年問題よろしくシステムがそれに対応出来ずに誤作動を起こすことも指摘されているので(2038年問題 - Wikipedia)、それは知っておいた方がいいでしょう。



なお、今回も標準的なインストールをされたDebianを前提にお話をさせてもらっています。Debian以外のシステムや最小インストールをしたDebianでもこの様にcron・anacronが都合良く設定済みか否かは分かりません。


追記

これをやって以来、起動する度にコンソールに You have new mail などと表示されるようになりました。今まで普段使っているメーラーであるSylpheedに未読メッセージがあってもこんな通知が出たことはなかったので、おそらくは犯人はcronであるわけですが…。

とりあえず /var/ ディレクトリを覗くと、mailというディレクトリが存在しているのを見つける。で、中身を見てみると…どうやらcronの実行したコマンドが返したメッセージはメールとして管理者に通知されるという話であるらしいことが分かりました。

まあ、それはそれはご丁寧に…つっても、その内容がせいぜい時刻調整に成功、何秒ズレていたとかの正直ほとんどどうでもいいことなので、いちいち You have new mail と表示されるのは邪魔くさいなあと思ったんです。そんなとき、こんな記事を発見。 /dev/null - Wikipedia どうやら、結果をこの /dev/null というファイルに書き込むように指示すると一切のメッセージを残さないため、メールにもならないとのこと。つまりさきほどの /etc/cron.daily/ntpdate を

#!/bin/sh
ntpdate ntp.nict.jp > /dev/null

としてやればいいってことでしょうね。

ただ、これだとちゃんと動いてくれているのかも分からなくもなりますが…。エラーも /dev/null に消えちゃいますからね。

テーマ : UNIX/Linux
ジャンル : コンピュータ

プロフィール

ざっぱー

Author:ざっぱー
(この画像について)

当ブログについて
メール
(このメールアドレスへの特定電子メール (迷惑メール) の送信はお断りします)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。