web-dev-qa-db-ja.com

EFIとレガシーMODの両方で起動可能なUSBスティックにLinuxディストリビューション(できればUbuntu)をインストールする方法は?

なんとなくやりがいのあることを成し遂げようとしています。私はかなり高速で大きなUSBスティック(SanDisk Ultra USB 3.0 16GB)を持っていますが、これを非正統的な方法で使用したいと思います。

  1. WindowsとLinuxの両方で読み取ることができる約1GBのサイズのパーティションが必要です(ご存知かもしれませんが、以前のバージョンのWindowsはマルチパーティションのUSBスティックとうまく調和しません。または、言うまでもありません。 ?最初のパーティションのみを読み取り、残りは無視します)
  2. スティックにLinuxディストリビューション(できればUbuntu)をインストールする必要があります
  3. このスティックは、EFI対応マシンとレガシーマシンの両方で起動可能である必要があります。

Ubuntuをディスクにインストールするのは簡単で、スティックの速度は予想よりも優れています。しかし、UEFI以外のマシンからスティックを起動することはできませんでした。マシンは単にスティックを読み取らず、真っ黒な画面にぶら下がっています。

だから、私の質問は:

  • 私が達成しようとしていることは可能でさえありますか?

  • もしそうなら、私は特別なパーティションスキームが必要ですか?新規インストールを行っても大丈夫です。

  • UEFIとレガシーMODの両方にgrubをインストールできますか?もしそうなら、どのように?

1
SercioSoydanov

私が達成しようとしていることは可能でさえありますか?

はい!

もしそうなら、私は特別なパーティションスキームが必要ですか?新規インストールを行っても大丈夫です。

特別なパーティションスキームが必要になります。既存のものを適切に変更することは可能かもしれませんが(追加する必要があるのは小さな1MiB BIOSブートパーティションだけです)、必要なパーティションスキームの概要を以下に示します。

UEFIとレガシーMODの両方にgrubをインストールできますか?もしそうなら、どのように?

各モードにGRUBをインストールする必要があります。以下は、UbuntuとDebianの手順です。


セットアップ

以下は、UEFIとレガシーブートモードの両方でUbuntuをインストールするためのゼロからの手順です。これらの手順は、USBだけでなく、どのディスクでも機能します。

このガイドでは、最初から始めたい、ディスクが/dev/sdXであると想定しています。 /dev/sdXをディスクブロックデバイスに置き換えます。

  1. すべてのパーティションを削除して、きれいな状態にします。

    sgdisk --zap-all /dev/sdX
    
  2. ディスクにGPTパーティションテーブルを作成します。

    sgdisk --mbrtogpt /dev/sdX
    
  3. フラッシュドライブの先頭に1GBのパーティションが必要なため、1GiBパーティションを作成するコマンドは次のとおりです(注:GBの代わりに GiB ):

    sgdisk --new 3::+1G --typecode 3:0700 /dev/sdX
    
  4. BIOSブートパーティションを作成します。これは、レガシーブートでEFIサポートを追加するために必要です。

    sgdisk --new 1::+1M --typecode 1:ef02 /dev/sdX
    
  5. EFIシステムパーティションを作成します。

    sgdisk --new 2::+50M --typecode 2:ef00 /dev/sdX
    
  6. Ubuntuをインストールするデータパーティションを作成します。

    sgdisk --new 4::+ --typecode 4:8300 /dev/sdX
    
  7. 上ですでに設定したパーティションスキームを使用して、フラッシュドライブにUbuntuをインストールします。

    グラフィカルなUbuntuインストーラーを使用したくない場合にのみ、次のステップに進んでください。

    グラフィカルなUbuntuインストーラーを使用する場合は、作成済みのパーティションスキームを使用して使用し、ここに戻って次のコマンドを実行します。

    mount /dev/sdX4 /mnt
    mount --rbind /dev  /mnt/dev
    mount --rbind /proc /mnt/proc
    mount --rbind /sys  /mnt/sys
    chroot /mnt /bin/bash --login
    

    グラフィカルインストーラーを使用したので、ステップ17にスキップします。

  8. 作成したばかりのデータパーティションである/dev/sdX4にUbuntu用のファイルシステムを作成します。

    mkfs.ext4 /dev/sdX4
    
  9. 新しいファイルシステムを一時パスにマウントします。

    mount /dev/sdX4 /mnt
    
  10. ベアボーンUbuntuをインストールします(bionicをインストールするUbuntuバージョンのコードネームに置き換えます):

    debootstrap bionic /mnt
    
  11. 新しいUbuntuインストールのホスト名を設定します(HOSTNAMEを目的のホスト名に置き換えます)。

    echo HOSTNAME > /mnt/etc/hostname
    
  12. 次のコンテンツを/mnt/etc/apt/sources.listに書き込んでパッケージソースを構成します(bionicをインストールしたUbuntuバージョンのコードネームに置き換えます)。

    deb http://archive.ubuntu.com/ubuntu bionic main universe
    deb-src http://archive.ubuntu.com/ubuntu bionic main universe
    
    deb http://security.ubuntu.com/ubuntu bionic-security main universe
    deb-src http://security.ubuntu.com/ubuntu bionic-security main universe
    
    deb http://archive.ubuntu.com/ubuntu bionic-updates main universe
    deb-src http://archive.ubuntu.com/ubuntu bionic-updates main universe
    
  13. 新しいUbuntuシステムにログインする準備をします。

    mount --rbind /dev  /mnt/dev
    mount --rbind /proc /mnt/proc
    mount --rbind /sys  /mnt/sys
    
  14. 新しいUbuntuシステムにログインします。

    chroot /mnt /bin/bash --login
    
  15. ロケールを構成します(必要に応じて変更します)。

    locale-gen en_US.UTF-8
    echo LANG=en_US.UTF-8 > /etc/default/locale
    
  16. Ubuntuデスクトップの残りの部分をインストールします(Ubuntuデスクトップが必要ない場合は、ubuntu-desktopを必要なフレーバーに置き換えます)。

    dpkg-reconfigure tzdata
    ln -s /proc/self/mounts /etc/mtab
    apt update
    apt install -y ubuntu-desktop
    
  17. インストールGRUBレガシーブートの場合:

    apt install -y grub-pc
    
  18. EFIファイルシステムをセットアップし、EFIブート用にGRUB)をインストールします。

    apt install -y dosfstools
    mkdosfs -F 32 -n EFI /dev/sdX2
    mkdir /boot/efi
    echo PARTUUID=$(blkid -s PARTUUID -o value /dev/sdX2) /boot/efi vfat nofail,x-systemd.device-timeout=1 0 1 >> /etc/fstab
    mount /boot/efi
    apt install -y grub-efi-AMD64
    
  19. レガシーブート用にGRUBを構成します:

    grub-install --target=i386-pc /dev/sdX
    
  20. EFIブート用にGRUBを構成します:

    grub-install --target=x86_64-efi /dev/sdX
    
  21. Initrdファイルを更新します。

    update-initramfs -ckall
    
  22. GRUBブート構成を更新します:

    update-grub
    
  23. Chrootを終了し、アンマウントしてクリーンアップします。

    exit
    umount -R /mnt
    

これで、EFIモードまたはレガシーモードで起動できるUbuntuがディスクにインストールされているはずです。

/dev/sdX3は、要求したデータパーティションです。必要に応じて、Windows互換のファイルシステムでこれをフォーマットできます。


謝辞

私はこのガイドを2つの異なるソースからまとめました。

1
Deltik