USB経由でLinuxをインストールする:起動時に「起動オプションの回復」が表示される

USB経由でLinuxをインストールする:起動時に「起動オプションの回復」が表示される

Q:Grubを使用してEFIシステムからLinuxを手動で起動する方法は?

問題の原因:x64システムにカスタムカーネル、ルートファイルシステム、およびグラブをインストールしようとしています。 USBスティックには同等のインストールスクリプトがあり、起動しますが、x64デバイスにeMMCをインストールしようとすると、「起動オプションの回復」と表示されます。これは再起動ループであり、Grubの使用方法に関連していると思われます。

写真(私のものではありません):

ホーム画面:

起動オプションの回復

利用可能なオプション:

起動オプションが復元されました。

(簡体字)コード:

#! /bin/bash
set -e

# Create GPT, partition 1, type BIOS boot, bootable flag
(echo -e "g\nn\n1\n\n+128M\nt\n4\nM\na\nM\nw\n") | fdisk /dev/mmcblk0
sleep 1
mkfs.vfat -N BOOT /dev/mmcblk0p1

# Create partition 2
(echo -e "n\n2\n\n\nY\nw\n") | fdisk /dev/mmcblk0
sleep 1
mkfs.ext4 -F -L ROOTFS /dev/mmcblk0p2

dd if=rootfs of=/dev/mmcblk0p2 conv=fsync
mount /dev/mmcblk0p2 /mnt
mount /dev/mmcblk0p1 /mnt/boot/efi
cp vmlinuz-custom /mnt/boot

chroot /mnt <<-EOF
        mount -t proc none /proc
        mount -t sysfs none /sys
        mount -t devtmpfs none /dev

        # This could be moved out of the chroot, but for is use this.
        update-initramfs -c -k custom

        umount /proc /sys /dev
EOF

grub-install --target=x86_64-efi --removable --recheck \
        --root-directory=/mnt \
        --efi-directory=/mnt/boot/efi \
        --boot-directory=/mnt/boot/efi/EFI \
        --bootloader-id=grub /dev/mmcblk0;

cat > /mnt/boot/efi/EFI/grub/grub.cfg <<-EOF
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod normal
        
search.fs_label BOOT grub
search.fs_label ROOTFS rootfs
        
set prefix=/bogus  # Unavailable prefix (prefix required by Grub)
        
sleep 1
linux (\$rootfs)/boot/vmlinuz-custom root=UUID=$(blkid -o value -s UUID /dev/mmcblk0p2) i915.force_probe=* swiotlb=65536 module_blacklist="pinctrl_elkhartlake,dp83867"
initrd (\$rootfs)/boot/initrd.img-custom
boot
EOF

すでに確認済み:

  • GrubのUUIDが正しいようです
  • USBとEMMCのインストールスクリプトは同じではありませんが、同じです。
  • BIOSオプションをデフォルト設定にリセット
  • すべてのコマンドが正しく実行されているようです。

ベストアンサー1

正確には覚えていませんが、Grubの作成に関連していたようです。削除してみてください--removable。また、削除してみてください--recheck

結局、カーネルをEFIパーティションのEFI専用の場所に移動しました。このefibootmgr処理方法はGrubよりはるかに優れています。

おすすめ記事