Gentooの起動時にudevが/dev/hda3を生成しない問題を解決するには?

Gentooの起動時にudevが/dev/hda3を生成しない問題を解決するには?

私の古いGentooラップトップにudevの問題があるようです。おそらく最新のソフトウェアを使用してemerge、udev + kernelをアップグレードし、「udev / kernelをアップグレードした後にこれを実行してください」というメッセージを受け取り、「画面の出力を見てこのメッセージを読んでシステムを再起動する前に、処理してください。」残念ながら、私はもちろんメッセージを確認するのを忘れてしまいました/dev/hda3

/dev/hda3これでシステムブートを手動で作成し、続いて(以下で詳しく説明する)この問題を解決できましたが、initこの問題を完全に解決する方法についてのアドバイスが必要です(したがって、毎回以下の手順を繰り返す必要はありません)。新兵)。

(誰かが私のGentooコンピュータで私がインストールしたパッケージのインストール後にすべてのメッセージを見つけることができる場所を教えてくれた場合は、udevと私が読む必要があるカーネルに関する指示を見つけることができます。)

関連ソフトウェアバージョン:

Gentoo強化カーネル2.6.36-r6(優先)および2.6.28-r9(終了前21ヶ月)。以下に説明する退屈な手動起動プロセスは、両方のカーネルバージョンで動作することが確認されました。 udevパッケージはudev-151-r4です。

「ルートファイルシステムの確認」「ステップに達するまで、起動時にすべてが問題ないようです(マシンはカーネルを起動し、/proc、/sys、/devをマウントし、udevdを起動し、ueventsに基づいて/devを埋め、ueventを処理し、/dev/ptsをマウントします)。

そこから解放されます

Failed to open the device '/dev/hda3': No such file or directory

その後、rootパスワードを尋ねます(または続行するにはCtrl-Dを押します)。

私がそれを入力すると、シェルは秋にあり、それがにあることをmount知らせます。また、書き込み不可能(読み取り専用/読み取り専用ファイルシステムなど)について文句を言います。まだリリースが完了していないことを考慮すると、これらすべてが理解されます。rootfs/dev/root/mount/etc/mtab

これにより、通常はそこにある必要がある、またはデバイスがls /devないことがわかります(udevでそのデバイスを作成したい)。 、またはデバイスも含まれていないため、最新のudevやカーネルが他のディスクデバイスを呼び出すためのルールを変更するという問題は見られません。また、ディスクデバイスが「隠す」ことができるディレクトリもありません。hdahda1hda2hda3/devsdasda1sda2sda3/dev/disk

だから私の次の(おそらく汚い)ステップは手動で作成することでした、hda(私は他のGentooサーバーの1つを少し見て、メジャー番号とマイナー番号、適切な権限とグループメンバーシップを見つけました):hda1hda2hda3/dev

mknod /dev/hda b 3 0
mknod /dev/hda1 b 3 1
mknod /dev/hda2 b 3 2
mknod /dev/hda3 b 3 3
chmod 660 /dev/hda*
chgrp disk /dev/hda*

残念ながら、Ctrl-Dを実行するかexitここに書き込むと、中断された起動順序は続行されず、代わりに再起動が開始されます(コンピュータが見つからない状態に切り替えます/dev/hda)。それ残念ながら、この問題に対する解決策はありません。

起動直後に「I」を押して(「i」も試してください)、initさまざまな初期化スクリプト(例:/ proc、/ sysマウントなど)の実行を開始して他の回避策を試しましたが、失敗しました。起動順序に達する(失敗する)前に、対話型起動モードで/ dev / hda3を確認しようとしました。

代わりに、私の/dev/hda3デバイスを使用してOSファイルシステムをマウントし続けます。
mount -o remount -o rw /dev/hda3 /

これで、マイコンピュータのファイルシステムへの書き込みアクセス権がありました。一部この状況を解決するためのオプション:設定ファイルの変更、さまざまな初期化スクリプト、サブシステムの起動など

一つのことをするいいえそれでも効果があったのはランレベルを変更することでした。理由は、init 3エラーメッセージで失敗したためですinit: /dev/initctl: No such file or directory。私は別のGentooサーバーを見直して、これが/dev/initctl権限があり、属するパイプであることを知っていたので、再作成しました。600root:root

mknod /dev/initctl p chmod 600 /dev/initctl

今はinit 3失敗しますが、少し違ってしばらく中断され、次のメッセージを放棄しますinit: timeout opening/writing control channel /dev/initctl。これは、元のプロセス(プロセスID 1)が新しく作成されたプロセスを読み取るために開かなかったinitために意味があります。/dev/initctl

これでinitマニュアルページを読んで、sendが閉じて再び開くSIGUSRことに気づきました。init/dev/initctl正確に必要なのは、コマンドを実行してkill -lすべてのシグナルとその番号(ここで数字10が表示されている)のリストを取得し、SIGUSR1makereopen
kill -10 1
コマンドを実行してランレベル3を再入力することです。init/dev/initctl
init 3

それでは、initランレベル3に入り、多くのスクリプトを実行してみてください。残念ながら、これらのスクリプトはすべて失敗しますERROR: cannot run syslog-ng until sysinit completes。そのため、システムを再起動し(実際には期待どおりに機能しますinit/dev/initctlログインしてroot質問を発行しました)、送信されたポイントまで上記rebootの手順(書き込み可能に再インストールを除く)を繰り返しました。もう少し滑らかな方法で起動順序を復元してファイルを再度読み取ろうとします。/dev/hda3SIGUSR1initinit/etc/inittab

init q

何もないそんなことが起こったようです。だから/etc/inittabという名前で見えるランレベル項目をどこで見つけたか調べてみましょうsysinit。私はリスクを取って再実行しました。

init sysinit

今回はinit使用メッセージについて文句を言います。もう一度読んで、/etc/inittab項目がパラメータとして呼び出されることを報告し、一度試してみることにsysinitしました。/sbin/rcsysinitそれ:

/sbin/rc sysinit

システムは多くのサービスを開始しようとします。そしてそれはうまくいきました!/procさらに、インストール用のinitスクリプトが再実行されたときにすでにインストールされているか/sysどうかも確認されます(これは、コードで完全性とエラーチェックを実行し、問題が発生した場合に応じて対処することがどれほど重要かを証明します)/dev)特別な場合)。これに満足して、/etc/inittabその項目にもコマンドを実行することにしましたbootwait。その項目にもランレベルの文字や数字が欠けているからです。

/sbin/rc boot

同様に、主にネットワーキング用に複数の初期化スクリプトが起動されます。予期しないエラーは報告されていないため、ランレベル3で再試行できて嬉しかったです。

init 3

initスクリプトが完了すると、マシンが起動してrootとしてログインできます(理論的にはこの混乱の根本原因を解決します)!

ベストアンサー1

カーネルを再コンパイルし、設定されていないか、設定されていないことを確認しCONFIG_SYSFS_DEPRECATEDましたCONFIG_SYSFS_DEPRECATED_V2

ただし、数回のCONFIG_IDE設定されていない再試行(およびハードドライブ用のカーネルが見つからなかった後)の後、CONFIG_IDE 置く廃止予定のATA / ATAPIサポートで、より多くのカーネル構成オプションを見つけることができます。もう一度(/ dev / hda検出が機能する)別のサーバーを見て、欠落しているATA / ATAPI関連のカーネルオプションを追加しました。 どの実際には気付かないオプションを追加しましたが、ATA / ATAPIで有効になっているすべてのオプションのリストは次のとおりです。 CONFIG_IDE_GD
CONFIG_IDE_GD_ATA
CONFIG_IDE_PROC_FS
CONFIG_IDE_GENERIC
CONFIG_IDE_PCIBUS_ORDER
CONFIG_BLK_DEV_GENERIC
CONFIG_BLK_DEV_PIIX

また、シリアルATAおよびパラレルATAのサポートも無効にしました。

だから起動してデバイスを正常に検索するカーネルがあります/dev/hda3

私はこれが廃止されたATA / ATAPIカーネルサポートに頼る悪い習慣であることを知っています。いいえより近代的なSATA / PATAコアサポートを使用してください。結局SATA / PATAに移行する必要がありました。しかし、今は幸せです(そして私のLinuxシステムについてもっと知りました)。

(質問を投稿した後、それに答えて私の答えを許可された答えとして選択した場合はお詫び申し上げます。

おすすめ記事