ユーザーのRedHat 5.xワークステーションがクラッシュし、ファイルシステムにエラーが残った場合、次回の起動時に、rootパスワードを要求してシングルモードに入り、fsckを手動で実行します。
ユーザーは自分のワークステーションを使用できず、fsckを実行するためだけに誰かを送る必要があるため、これは面倒です。
ユーザーはワークステーションに貴重なデータを保存しないので、パスワードなしでエラー時に自動的に実行されるようにこのfsckを構成する方法はありますか?
これを行うための「公式」の方法におそらく最も近いのは、通常は推奨されない(正当な理由で!)ことです。
echo ' -y ' > /fsckoptions
chattr +i /fsckoptions
/etc/rc.d/rc.sysinit
のすべてのバージョンは、fsck
を実行する前に、/fsckoptions
の内容を$fsckoptions
変数に追加することを確認しました。 chattr +i
は、自動的に変更されないことを確認します。
これらの飛行前チェックはすべて、オペレーティングシステムによって作成された初期ramdiskイメージ(grub.confのinitrdオプション)によって制御されます。このイメージは、ファイルシステムのエラーをすばやくテストし、エラーが検出されるとシングルユーザーモードになります。この動作を実行するように変更するためのあなたの旅fsck -y
パスワードなしでは、カーネルRPMに含まれているinitrdイメージを解凍することから始めます。残念ながら、システムを更新するたびにこれを行う必要があります(redhatはカーネルごとに新しいinitrdを出荷します(または、より具体的には、ハードウェアに基づいてmkinitcpioを使用して新しいinitrdを生成します))。
私たちの環境でも同じ問題があります。このアイデアに感謝します。これを調べたり解決したりする時間があれば、必ずこの投稿を更新します。
...私はそれを見つけたと思います。 /etc/rc.d/rc.sysinitには、次のような行がいくつかあります。
if! [["$ fsckoptions" =〜 "-y"]];次に fsckoptions = "-a $ fsckoptions" fi
if! [["$ fsckoptions" =〜 "-y"]]; then if! [["$ fsckoptions" =〜 "-a"]]; then if! [["$ fsckoptions" =〜 "-p"]];次に fsckoptions = "-y $ fsckoptions" fi fi fi
もちろん、コツはばかげたことをテストすることです。通常の自動fsckがrootパスワードを要求する原因となるファイルシステムエラーを強制する方法がわからないため、実際に機能したかどうかを知ることができます。
ユーザーはワークステーションに貴重なデータを保存しないので、パスワードなしでエラー時に自動的に実行されるようにこのfsckを構成する方法はありますか?
これはすべて、シェルスクリプトである/etc/rc.d/rc.sysinit
によって制御されます。ニーズに合わせてこれを変更できます(ただし、パッケージが更新された場合に変更が失われないように注意する必要があります)。スクリプトがsulogin
を呼び出す場所を探します。
このスクリプトを確認すると、次の行を削除した場合のように見えます。
touch /.autofsck &> /dev/null
システムは、次の起動時にfsckを実行しなくなりました。 ext3
(またはext4
)を使用している場合、通常はfsckを実行する必要はありません。
そのためのパスワードをバイパスする方法がわかりません。ファイルシステムの整合性について心配していない場合は、grub.confのカーネル行にfastboot
を追加することで、fsckを完全にバイパスできます。
この問題を回避するもう1つの方法:GRUB/LILOで、コマンドラインの最後にinit=/bin/bash
を追加します。これにより、fsckで取得しているsuloginプロンプトをバイパスできます。