BIOS / UEFIブートオプションメニューから見えないノートブックSDカードからLinuxを起動可能にします。

BIOS / UEFIブートオプションメニューから見えないノートブックSDカードからLinuxを起動可能にします。

Acer Aspire R15ノートブックがあり、内蔵SDカードスロットでLinuxを実行する必要があります。起動オプションメニューにSDカードオプションはありません。

〜100MB EFIパーティション(49MBの空き容量)を持つメインSSDにWindows 10をインストールしました。 SDカードにArch Linuxをインストールし、ルートを指定し、EFIパーティションを/ efiとしてマウントして(SDカードに/bootを残して)、UEFIレコードを追加しましたが、grub-install --target=x86_64-efi --efi-directory /efi --boot-directory /boot --bootloader-id=ARCH-SD問題はSDカードソケットに最初にアクセスできないことです。ブートスロットステップなので、GRUBは/bootに到達してカーネルとinitramをロードできません。 "mmc_core mmc_block sdhci sdhci-pci"モジュールを使用してカーネルをインストールする必要があります(/etc/mkinitcpio.confを編集してMODULES="mmc_core mmc_block sdhci sdhci-pci"実行してmkinitcpio -p linux)、アクセスできるようにEFIパーティションを/ bootにマウントできることを知っています。初期段階では、EFIパーティションの空き容量があまりにも希薄ではありませんか?

したがって、質問は次のようになります。 SDカードを作成する唯一の目的で、SDカードモジュールが取り付けられている最小カーネルを含むようにEFIパーティションに.efiバイナリを設定する方法はありますか(ディスク容量の使用が重要です)。アクセスでき、フル機能のカーネル、initramなどのリンクがSDカードにロードされますか?それとも他のより良い方法がありますか? GRUB / efibootmgr / other_bootloaderを介してこれを実行することをお勧めします(エラーが発生しやすく、システム更新を手動でサポートする必要がある低レベルの操作を実行するよりも)。メインSSDを再パーティションしたり、USB SDアダプタを使用するなどの方法はありません。

修正する:

解決策:@alex-stragiesの提案に従って設定しました。始めるWindowsパーティションのフォルダです。全体の順序は次のとおりです。

  1. EFIパーティションを次にマウントします。/efiフォルダ;
  2. インストールするNTFS-3G使用されるパッケージNTFSサポートされている、Windowsパーティションを次にマウント/mnt/ウィンドウ/mount /dev/sdxY /mnt/Windowsそしてしなさい始めるディレクトリ:mkdir /mnt/Windows/boot;
  3. 作成したフォルダをバインドします。始めるmount --bind /mnt/Windows/boot /boot;;
  4. (オプションですが推奨されています。システム/カーネルの更新にのみ必要です)上記の内容を次に追加してください。/etc/fstab永続性のためには少なくとも4つのマウントレコードが必要です。//efi/mnt/ウィンドウ/開始する(後者は以下の通りです。始める以前にインストールされたフォルダ/mnt/ウィンドウ、次に追加製本インストールオプション)
  5. 編集する/etc/mkinitcpio.conf、「HOOKS」セクションに詰まったフックは次のとおりですウデブそして前にファイルシステム(上記のカーネルモジュールは不要であり、SD / MMCカードのサポートは以下で提供されています。詰まったフック)、次にinitrdアップデートを実行しますmkinitcpio -p linux
  6. UEFIにGRUBレコードを書き込むgrub-install --target=x86_64-efi --efi-directory /efi --boot-directory /boot --bootloader-id=LINUX-SD:;
  7. GRUB構成の更新:grub-mkconfig -o /boot/grub/grub.cfg;
  8. 再起動し、追加されたLINUX-SD起動オプションを選択します(通常、F8、F12、またはBIOS / UEFIを介して明示的な起動履歴を確認する必要があるかもしれません)。

そうする必要があります。ブートチェーンは次のとおりです。 UEFI シェルは、EFI パーティションで grubx64.efi バイナリを実行します。これは、次のリンクを介してWindowsパーティションに追跡されます。始めるフォルダ、GRUBが読み込まれました初期化プログラム環境とカーネル(SDカードサポートが有効になっている)、SDカードに/(ルート)パーティションをマウントし、通常の起動プロセスを続行します。

答え1

起動できないストレージにRootFSを配置する標準的な回避策は、/bootフォルダをSSDのどこかに配置することです。これは、「SDカードから直接起動」するのではなく、「SSDからカーネル+ InitRDをロードしてから、SDカードからルートFSをマウントする」ことです。

/boot/このフォルダをWindowsパーティション(「raw」パーティション)または200MiBループバックマウントファイルシステムイメージに配置できます。

Archについては言えませんが、Debianでは次の手順を実行できます。

  • Windowsパーティションを自動的にマウントするには、FSTABエントリを追加します。
  • mv /boot /mnt/windows/MyLinuxBoot
  • ln -s /mnt/windows/MyLinuxBoot /boot
  • update-grub

同様の手順をArchにも適用する必要があります。

これにより、SSDからkernel + initrdをロードする必要があり、initrdにはSDカードからルートFSをロードできるSDカード用のドライバがあります。

あるいは、EFIパーティションにすべて入れることもできます。

  • /boot/grubフォルダを/boot/efi/grubに移動します。
  • /boot/grubを/boot/efi/grubに再シンボリックリンク
  • カーネルとinitrdを/bootから/boot/efi/に移動します。
  • 元の場所と名前で再シンボリックリンク
  • 走るupdate-grub

EFIパーティションの残りのスペースにすべてを配置できるように、すべてのモジュールを含めないようにinitrdで生成されたパラメーターを調整する必要があるかもしれません。

答え2

あなたの質問に対するより直接的な答えである2番目の答えを追加しています。ただ私の他の答えのような回避策。しかし、これは詳細がほとんどなく、「方法」ではなく「おおよその旅行計画」に近いです。

中間ブートローダを使用することもできます。

  • ブートローダのダウンロード/コンパイルsdhci-pciのサポート
  • EFIパーティションにこのブートローダをインストールします。
  • grubをチェーンロードするか、SDカードから直接カーネルをロードするようにこの中間ブートローダを設定します。

答え3

SDCARDにLinuxをインストールできる場合。次に、ストレージの選択ステップで、SSDの小さなFat32 / ext4パーティションを/ bootとして選択します。それはすべてです。状況をより複雑に見せないでください。

関連情報