FedoraでFirewire(IEEE1394)の起動が中止されました。

FedoraでFirewire(IEEE1394)の起動が中止されました。

Fedora 36(カーネル5.19.6-200.fc36.x86_64)のFirewire(IEEE1394)からの起動を妨げる問題があります。

Fedoraはここで長い間停止します。

Fedoraは長い間ここにぶら下がっていました

Dracut Emergency Shellの最終出力:

デラクール

ログがあります/run/initramfs/rdsosreport.txt(ライン1843)。抜粋:

mac2011-linux% cat '/media/alba/sauve/rdsosreport.txt' |grep -E "fw|firewire"
[    2.786192] fedora kernel: firewire_ohci 0000:04:00.0: added OHCI v1.10 device as card 0, 8 IR + 8 IT contexts, quirks 0x0, physUB
[    3.290214] fedora kernel: firewire_core 0000:04:00.0: created device fw0: GUID a4b197fffe435f8e, S800
[    3.291200] fedora kernel: firewire_core 0000:04:00.0: phy config: new root=ffc1, gap_count=5
[    8.368893] fedora kernel: firewire_core 0000:04:00.0: created device fw1: GUID 0030e002e0011462, S800

ls /lib/modules/5.19.6-200.fc36.x86_64/kernel/drivers/firewire返品firewire-core.ko.xz firewire-ohci.ko.xz

modprobe -c|grep fwと同じ行のスコアを返しますalias symbol:fw_bus_type firewire_core

私は4つのSATAデバイス(3つのSSDと1つのロータリー)、3つのMacbook Pro(2009、2010、2011)、2つの異なるFirewire接続、および2つの異なるケーブルを試しました。

デバイスが内部的にSATAに接続されている場合、またはMac OS X El CapitanまたはSierraを起動するために使用される場合、問題はありません。時々欠陥が観察されることはありましたが、Ubuntu(カーネル5.15)でも動作します。

この質問はFirewireとFedoraに適用されます。

次のようにきれいに再現できます。

  1. EFIファイルシステム用のHFS +パーティションと1つのルートファイルシステム用のExt4パーティションを使用してFedoraを新規インストールします。
  2. 内部的に新しいインストールを開始します。
  3. Firewireドライバがインストールされていることを確認するには、Firewireに他のデバイスをインストールできることを確認するか、他のデバイスがない場合をご覧くださいmodprobe -c|grep firewire
  4. Firewireで再起動してみてください。 Plymouthステップの後は失敗します(ログを表示するには、Fedoraのロゴが表示されたらEscを押します)。

誰でも問題を再現または解決するのに役立ちますか?

答え1

したがって、起動プロセスのinitramfsフェーズ中に緊急シェルになります。これは、ファームウェアがGRUBをロードした後、GRUBがカーネルとinitramfsをロードしてカーネルを起動したことを意味します。この時点で、システムの基本目標は1つです。真のルートファイルシステムをインストールすることです。この目的のために、initramfsファイルには、必要なハードウェアと必要な設定を実行するスクリプトをサポートするカーネルモジュールを含めることができます。ルートファイルシステムがマウントされると、実際のプロセス#1バイナリが実行され、initramfsに提供されている一時プロセスが置き換えられ、このプロセスによって起動プロセスがどのように進行するかが決まります。

図のメッセージは、カーネルがfirewire-coreモジュールを正常にロードし、Firewire デバイスの存在を検出したことを示しています。ただし、コアモジュールにはfirewire-sbp2Firewire ベースをサポートするために別のモジュールが必要です。保存機器。

あなたの場合、initramfsには明らかにモジュールが含まれていませんfirewire-sbp2firewire-spb2コメントにタイプミスを作成し、modprobeコマンドを正しく入力したと仮定します)。このモジュールは Firewire ベースのストレージデバイスをサポートするために必要です。したがって、欠落しているモジュールはFirewireベースの起動失敗の最大の原因です。モジュールがないと、カーネルはFirewireリポジトリにあるルートファイルシステムにアクセスできず、他のファイルシステムがマウントされていないため、initramfsはカーネルの欠陥です。起動プロセスの初期段階にアクセスできる唯一の場所です。

新しいカーネルバージョンがインストールされるたびに、Initramfsファイルが最初に作成されます(特定のカーネルがそれを要求/使用するように構成されていると仮定)。 initramfs ファイルは、ビルドされたカーネルのバージョンによって異なり、ディストリビューションで使用する initramfs ジェネレーターのプロセスによってビルドされたシステムに対してある程度カスタマイズされる場合もあれば、そうでない場合もあります。一部のinitramfsジェネレータ必要なドライバモジュールの識別initramfsを作成するときは、ルートファイルシステムにアクセスしてinitramfsファイルのサイズを小さく保つために必要なモジュールのみが含まれています。

したがって、ディスクがSATAを介して接続されたときにinitramfsファイルが作成された場合、Fedora initramfsコンストラクタ(dracut)はFirewireストレージサポートモジュールを省略した可能性があります。 「ルートファイルシステムがFirewireディスクにないため、後で必要に応じて/lib/modulesルートファイルシステムをマウントして自動的にロードできる場合は、このモジュールを追加する必要があります。」

SATAとFirewireの間でシステムディスクを移動することに慣れている場合は、firewire-sbp2その時点で必要とされていないように見えても、initramfsコンストラクタにモジュールをinitramfsに含めるように常に指示できます。

の場合は、ファイルを生成することでこれを継続的に実行dracutできます。たとえば、名前をとして指定できます。これには次の行を含める必要があります。*.conf/etc/dracut.conf.d//etc/dracut.conf.d/01-always-include-firewire-storage.conf

add-drivers+="firewire-sbp2"

(のファイルは/etc/dracut.conf.d/名前に応じて英数字の順序で処理されるため、順序があいまいにならないようにファイル名に2桁の接頭辞を追加する慣例があります。)

このファイルを追加した後、initramfsファイルを再構築する必要があります。現在のカーネルに対してこれを行うには、次のように入力します。

dracut --force

別のカーネルバージョンに対してこれを行うには、コマンドは次のようになります。

dracut --kver <kernel version> --force

--forceこのオプションは、すでに存在するinitramfsファイルを上書きするために必要です。

関連情報