Linuxの起動に問題があります。試してみましたが、ドライブとESPが1つしかない場合は正常に起動します。しかし、私の目標は、独自のESPを備えた2つの異なるドライブを持つことです。最初のドライブは独自のESPを含むWindows用で、2番目のドライブは独自のESPを含むLinux用です。
他のドライブなしでこれらのドライブを独立して起動できるようにします。
私がしたことは、Windowsを含む最初のドライブを削除し、2番目のドライブにLinuxをインストールすることでした。最初のドライブが接続されていない場合、Linuxは完全に起動します。
今私の問題は、Linuxで起動するときに両方のドライブが接続されていることを示していますが、no init found try init=bootargs
Windowsドライブは完全に起動することです。
答え1
このno init found
メッセージは、Linuxカーネルが起動されたが、/sbin/init
ルートファイルシステムに見つからないことを伝えます。それはおそらく間違った場所を探しているからです。
Linux ブートローダの設定がルートファイルシステムを認識する方法を学びます。通常、これはroot=
Linuxカーネルのオプションです。
ルートファイルシステムが/dev/sdaN
(ここでNは数字)として識別されると、initramfs / initrdファイルに含まれるドライバが最初に検出したディスクのN番目のパーティションを指定します。 Linuxドライブのみを接続すると、この仮定が正確でシステムが正常に起動します。ただし、両方のディスクが接続されると、Windowsディスクが最初に検出され、オプションroot=/dev/sdaN
は実際に間違ったディスクを指します。
この問題を解決する最善の方法は、ディスク検出順序に依存しない方法でルートファイルシステムを指定することです。
Linuxではblkid
rootとして実行します。すべての識別子で表示できるすべてのディスクパーティションが一覧表示されます。ルートファイルシステムを含むパーティションに一致する行を見つけます。UUID=<a long hexadecimal string>
値をリストする必要があります。あるかもしれないしないかもしれませんLABEL=<a short name>
。もう 1 つ、PARTUUID
もう 1 つを一覧PARTLABEL
表示できます。
ほとんどのLinuxディストリビューションでは、root=/dev/sdaN
このオプションをformに変更できますroot=UUID=<the long hexadecimal string form blkid>
。これにより、ルートファイルシステムは、検索された順序ではなく、一意のファイルシステムUUIDによって明確に識別されます。
Linuxディストリビューションの名前とバージョンを指定しなかったため、ブートローダ設定の場所がLinuxディストリビューションによって異なるため、正確にどこで変更する必要があるかを説明できません。しかし、最新のディストリビューションでは、/etc/default/grub
おそらく良い推測でしょう。修正後、通常は/etc/default/grub
実際のブートローダを更新するためにいくつかのコマンドを実行する必要があります。これはupdate-grub
、またはgrub-mkconfig
同様のものである可能性があります。