BOOTx64.EFIファイルを起動しますが、直接起動のみ可能で、UEFIが外部SSDに接続されていると起動できません。

BOOTx64.EFIファイルを起動しますが、直接起動のみ可能で、UEFIが外部SSDに接続されていると起動できません。

Arch Linuxがインストールされている外部SSDがあります。 ESPは/ bootにインストールされます。 ESPには、BOOTディレクトリを持つディレクトリEFIがあります。 \vmlinuz-linux root=PARTUUID=[partuuid] initd=\initramfs-linux.img という /ext/kernel/cmdline を使用して BOOTx64.EFI を作成しました。

私の考えでは、ブートリストを使用してSSDを選択すると、UEFIシステムは自動的に/boot/EFI/BOOT/BOOTx64.EFIを見つけて正しく起動します。しかし、代わりに私はrootfsに移動して/ dev / sda2(ルートパーティション)をnew_rootにマウントしてからrootfsを終了する必要がありました。そしてその指針は効果的です。ただし、この場合、/ proc / cmdlineにYRYが表示されます。

または、ブートリストにファイルからブートするように指示し、BOOTx64.EFIファイルを選択すると、完全にブートされ、/proc/cmdlineに/etc/kernel/cmdlineが表示されます。

そのため、SSDを選択したときにHP ElitebookがBOOTx64.EFIを正しく実行しようとしているようですが、何らかの理由でルートパーティションが表示されません(デバイスが「」でファイルシステムが存在しないことを意味します)。だから手動でインストールする必要があり、すべてが大丈夫でした。

SSDからEFIを呼び出すときにラップトップがルートパーティションをnew_rootにマウントしませんが、EFIファイルから直接呼び出すときにマウントする理由を知りたいです。

ベストアンサー1

注:これは初心者やArch Linuxについて学ぶ人だけではありません。間違いを犯すと、ハードドライブのすべてを失う可能性があります。このオプションに移動する前に、少なくともすべてのデータをバックアップしてください。

私はついにこれを正しく行う方法を学びました。最善の方法は、systemd-auto-gpt-generatorを使用することです。これは、GPTタイプに基づいてパーティションを見つけてマウントするように設計されたsystemdの一部です。これが機能するためには、最初のステップはGTPタイプが正しいことを確認することです。 EFIパーティション(EF00コード)の場合はEFI、ルートパーティションの場合はLinux-x64-root(8304コード)、ホーム(8302)の場合は別々のデフォルトパーティションを使用してください。

次のステップは、baseとudevの代わりにsystemdで始まるようにmkinitcpio.confのフックを設定することです。つまり、設定ファイルのフックラインでbaseとudevをsystemdに置き換えます。

これで、efiブートファイルを作成する準備が整いました:mkinitcpio --uefi /boot/EFI/BOOT/BOOTx64.EFI

完了すると、ブートメニューから外部ドライブを選択すると自動的に動作し、ルートパーティションとプライマリパーティションがマウントされます。ブートパーティションは、そのファイルにアクセスしようとするまでマウントされません。この時点でシステムは自動的にマウントされます。

おすすめ記事