web-dev-qa-db-ja.com

単一の起動ハードウェアで起動修復なしでUbuntu BIOSインストールをEFI / UEFIに変換するコマンドはどれですか?

偶発的なBIOSモードのインストール

UEFIセットアップユーティリティを備えたIntel 64ビットハードウェアを使用しています。 Ubuntu 14.04.1 LTSは、接続されている唯一のドライブに唯一のオペレーティングシステムとしてインストールされました。偶然、UbuntuはBIOS/CSM/legacyモードでインストールされました。

UEFIに変換

後でUEFIについて学習する際の目標は、この既存のUbuntuインストールをEFI/UEFI経由の(より速い)ブートに変更することです。 UEFIセットアップユーティリティを起動できるブートメニュー-2秒が表示されます。したがって、私はGrubを使用する必要があり(EFIブートスタブを使用できない)、 GOPサポートにはGrubバージョン1.99以上が必要です と考える必要があります。ライブCDを使用してドライブのパーティションを再作成し、ドライブの先頭に200 MiB EFIパーティションを挿入し、そのfat16フォーマットのパーティションをタイプID 0xEFとしてマークしました。

前:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

後:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

ブート修復しないでください

Ubuntuコミュニティwikiでは、boot-repairを使用して buntuをEFIモードに変換する を使用することを推奨しています。 GUIを使用したり、余分なパッケージをインストールしたりしたり、Pastebin.comに誤ってデータを送信したりしたくないので、何が変更されるのか正確に知りたいので、したくない Boot-repair を使用します。

フードの下

ブート修復が実際に行うことを理解しようとして、私はこのスニペットを見つけました:

Boot-Repairは、grub-pcをアンインストールし、gptがパーティション分割されている場合はgrub-efiをインストールすることにより、BIOSインストールをUEFIに変換します。

ソース: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

UEFIモードインストールの比較

UEFIモードでUbuntu 14.04.1をクリーンインストールすると、512 MiB Fat32フォーマットのEFIパーティションが作成されます。そのパーティションには、/EFI/ubuntugrub.cfggrubx64.efiMokManager.efiの4つのファイルを含む1つのディレクトリshimx64.efiが含まれます。 grub.cfgには以下が含まれます。

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuidはLinuxインストールパーティションのUUIDを指します。この比較では、UEFIインストールLinuxはパーティション/ dev/sda2をインストールします (BIOSモードインストールのsda1に対して)

潜在的なAsrockファームウェアの問題は見つかりませんでした

ファームウェアでまだCSMを無効にし、クリーンなUEFIモードUbuntuインストールを使用しています。ライブCDおよびgpartedを使用して512 MiB EFIパーティションのサイズを200 MiBに変更すると、フォーマットがFAT32からFAT16に変更されます。 AsrockファームウェアP1.50 (ブートメッセージ「BIOS日付」でAMIが誤ってBIOSを呼び出した) まだUEFIモードで起動できますUbuntu:UEFI+FAT16=ok
パーティションテーブルをGPTからMBRに変換する (msdos)同じLive CD端末コマンドgdiskとそのコマンドrgpwは、MBRパーティションドライブでUEFIブート可能なUbuntuを生成します:UEFI+MBR=ok

質問

これは、私が実行する必要があるコマンド(レガシーUbuntuインストールからこの順序で)のみが以下であることを意味しますか?

# apt-get install grub-efi
# apt-get remove grub-pc

?それとももっとする必要がありますか?

32
Pro Backup

UEFIモードでUbuntu Linux(14.04)Live CDを起動します。 USBブートデバイスの場合、UEFIで「高速ブート」を無効にします。

ターミナルウィンドウを開きます(Ctrl+Alt+T

実際にUEFIモードで実行していることを確認するには、次のbashコマンドを使用します。

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

結果の出力は次のようになります。

UEFI

BIOSと表示されている場合は、ファームウェアを再起動して、起動デバイスの設定を修正します。

BIOSからEFI/UEFIへの変換を行うには、次のコマンドを入力します。

$ Sudo mount /dev/sda1 /mnt
$ Sudo mkdir -p /mnt/boot/efi
$ Sudo mount /dev/sda3 /mnt/boot/efi
$ Sudo mount --bind /dev /mnt/dev
$ Sudo mount --bind /proc /mnt/proc
$ Sudo mount --bind /sys /mnt/sys
$ Sudo mount --bind /run /mnt/run
$ modprobe efivars
$ Sudo chroot /mnt
# apt-get install grub-efi-AMD64

The following extra packages will be installed:
  efibootmgr grub-efi-AMD64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

エラーメッセージで終わるにもかかわらず:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

次回の再起動では、ファームウェアの起動オプションメニューに「ubuntu」が表示され、efiモードで起動する場合を除き、以前と同じようにコンソールが起動します。

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

何か問題が発生した場合、 https://superuser.com/questions/376470/how-to-reinstall-grub2-efi が役立つ場合があります。

39
Pro Backup

これは私にとっても、1つの小さな変更で機能しました。ネットワークが機能していても、「apt-get install grub-efi-AMD64」を取得してパッケージサーバーを見つけることができませんでした。

BIOSモードで最後に起動し、grub-efi-AMD64をインストールすることでこれを回避しました。

「apt-get install grub-efi-AMD64」を省略することを除いて、ここで手順を実行できます。

1
WallyZ

小さな修正:

Sudo apt-get install -y grub-efi-AMD64
Sudo mount /dev/sda1 /mnt
Sudo mkdir -p /mnt/boot/efi
Sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do Sudo mount -B /$d /mnt/$d; done
Sudo modprobe efivars
Sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

できた.

0
Daniel Jean