なんとなくやりがいのあることを成し遂げようとしています。私はかなり高速で大きなUSBスティック(SanDisk Ultra USB 3.0 16GB)を持っていますが、これを非正統的な方法で使用したいと思います。
Ubuntuをディスクにインストールするのは簡単で、スティックの速度は予想よりも優れています。しかし、UEFI以外のマシンからスティックを起動することはできませんでした。マシンは単にスティックを読み取らず、真っ黒な画面にぶら下がっています。
だから、私の質問は:
私が達成しようとしていることは可能でさえありますか?
もしそうなら、私は特別なパーティションスキームが必要ですか?新規インストールを行っても大丈夫です。
UEFIとレガシーMODの両方にgrubをインストールできますか?もしそうなら、どのように?
私が達成しようとしていることは可能でさえありますか?
はい!
もしそうなら、私は特別なパーティションスキームが必要ですか?新規インストールを行っても大丈夫です。
特別なパーティションスキームが必要になります。既存のものを適切に変更することは可能かもしれませんが(追加する必要があるのは小さな1MiB BIOSブートパーティションだけです)、必要なパーティションスキームの概要を以下に示します。
UEFIとレガシーMODの両方にgrubをインストールできますか?もしそうなら、どのように?
各モードにGRUBをインストールする必要があります。以下は、UbuntuとDebianの手順です。
以下は、UEFIとレガシーブートモードの両方でUbuntuをインストールするためのゼロからの手順です。これらの手順は、USBだけでなく、どのディスクでも機能します。
このガイドでは、最初から始めたい、ディスクが/dev/sdX
であると想定しています。 /dev/sdX
をディスクブロックデバイスに置き換えます。
すべてのパーティションを削除して、きれいな状態にします。
sgdisk --zap-all /dev/sdX
ディスクにGPTパーティションテーブルを作成します。
sgdisk --mbrtogpt /dev/sdX
フラッシュドライブの先頭に1GBのパーティションが必要なため、1GiBパーティションを作成するコマンドは次のとおりです(注:GBの代わりに GiB ):
sgdisk --new 3::+1G --typecode 3:0700 /dev/sdX
BIOSブートパーティションを作成します。これは、レガシーブートでEFIサポートを追加するために必要です。
sgdisk --new 1::+1M --typecode 1:ef02 /dev/sdX
EFIシステムパーティションを作成します。
sgdisk --new 2::+50M --typecode 2:ef00 /dev/sdX
Ubuntuをインストールするデータパーティションを作成します。
sgdisk --new 4::+ --typecode 4:8300 /dev/sdX
上ですでに設定したパーティションスキームを使用して、フラッシュドライブに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にスキップします。
作成したばかりのデータパーティションである/dev/sdX4
にUbuntu用のファイルシステムを作成します。
mkfs.ext4 /dev/sdX4
新しいファイルシステムを一時パスにマウントします。
mount /dev/sdX4 /mnt
ベアボーンUbuntuをインストールします(bionic
をインストールするUbuntuバージョンのコードネームに置き換えます):
debootstrap bionic /mnt
新しいUbuntuインストールのホスト名を設定します(HOSTNAME
を目的のホスト名に置き換えます)。
echo HOSTNAME > /mnt/etc/hostname
次のコンテンツを/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
新しいUbuntuシステムにログインする準備をします。
mount --rbind /dev /mnt/dev
mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys
新しいUbuntuシステムにログインします。
chroot /mnt /bin/bash --login
ロケールを構成します(必要に応じて変更します)。
locale-gen en_US.UTF-8
echo LANG=en_US.UTF-8 > /etc/default/locale
Ubuntuデスクトップの残りの部分をインストールします(Ubuntuデスクトップが必要ない場合は、ubuntu-desktop
を必要なフレーバーに置き換えます)。
dpkg-reconfigure tzdata
ln -s /proc/self/mounts /etc/mtab
apt update
apt install -y ubuntu-desktop
インストールGRUBレガシーブートの場合:
apt install -y grub-pc
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
レガシーブート用にGRUBを構成します:
grub-install --target=i386-pc /dev/sdX
EFIブート用にGRUBを構成します:
grub-install --target=x86_64-efi /dev/sdX
Initrdファイルを更新します。
update-initramfs -ckall
GRUBブート構成を更新します:
update-grub
Chrootを終了し、アンマウントしてクリーンアップします。
exit
umount -R /mnt
これで、EFIモードまたはレガシーモードで起動できるUbuntuがディスクにインストールされているはずです。
/dev/sdX3
は、要求したデータパーティションです。必要に応じて、Windows互換のファイルシステムでこれをフォーマットできます。
私はこのガイドを2つの異なるソースからまとめました。