So-net無料ブログ作成

UEFIでの起動 [プログラム]

BIOSの問題で、「3TB(GPT)のHDDからlinuxを起動できないけど、2TBまでのパーティションだけ(MBR)だったら起動できる」ということをやっていたHDDがありまして、今回、UEFIについて調べて、なんとかMBRからGPTへ、UEFIでの起動ができるようになりました。その作業メモです。

注意: ここでの内容の正確さは保証できません。起動できなくなっても自力で解決できる人向けの情報です。

ここでのBIOSの問題とは、おそらく、
gdiskを使って、GPTでパーティションを作成すると、MBRのパーティションがprotective MBRになってしまって、そこにbootableなパーティションがないから、MBRのブートストラップを実行しない
のではないかと思われます。
そんなBIOSでも、時期によっては、
UEFIでの起動がサポートされていて、ちゃんとUEFIの起動の作法に合わせるとGPTを理解して起動できる

ようなものがあります。

以前3TB買ったときは... 面倒だったので、2TBまでのパーティションでMBR onlyとしたのでした。
今回、それをUEFIにして、未使用部分でパーティションを拡張します。
UEFI化するとき、今回は、現在起動中のHDDをそのまま使って行ないます。そのため、慎重に操作しなければなりません。

操作の概要は、次のとおり。なお、swapを止めても動作できる程度のメモリを積んでいることが前提です。linuxのコンソールなら、4GBでも十分でしょう。

まず、EFIのパーティションが必要です。
EFIのパーティションは、数10MBもあれば十分ですので、swapパーティションからもらうことにします。
swapを停止し、fstabのswap行を一時的にコメントアウトしておきます(でないと、再起動のときに90秒も待たされます)
その後、gdiskを使って、MBRからGPTを作り、swapパーティションを削除し、そこにEFIパーティションを作成して、書き込みます。
次にEFIパーティションをFAT32でフォーマットして、/boot/efiのディレクトリを作って、そこにマウントします。
そして、grub-efi-amd64をインストールし、EFI用のgrubをインストール(grub-install --target=x86_64-efi /dev/sda)して、EFI用のブートローダ(/boot/efi/EFI/debian/grubx64.efi)をインストールします。そして、それをEFIでのデフォルトの起動パスの位置(/boot/efi/EFI/boot/bootx64.efi)にコピーします。


# swapoff -a
# vi /etc/fstab   ← swapの行をコメントアウトします。
# gdisk /dev/sda
    rのfで、MBR->GPT(+protected MBR)にします。
    mで戻って、dでswapパーティションを削除し、そこにnで数10MBのパーティションを作ります。tはEF00のEFIパーティションです。
    さらにnで、残りの部分をswapにします。
    vで確認してから、wで書き込みます。
# mkfs.vfat -F32 /dev/sdaX    ← EFIパーティションをFAT32でフォーマットします。
# mkswap /dev/sdaY  ← swapパーティションをフォーマットします。
# mkdir /boot/efi
# mount /dev/sdaX /boot/efi
# vi /etc/fstab   ← /dev/sdaXを/boot/efiにマウントするようにします。(これは行わなくても構いません)
# apt-get install grub-efi-amd64
# grub-install --target=x86_64-efi /dev/sda
# mkdir /boot/efi/EFI/boot
# cp -a /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
# sync
# reboot   ← 再起動します。
    再起動では、念のためrecoveryを選んで立ち上げます。再起動に失敗したら、Debianのインストーラのrescueを使って復旧します。
    rootのパスワードを入力して、シェルに入ります。
    EFIで起動したかどうかは、/sys/firmware/efi/があるかどうかで判断できます。
    問題なさそうなら、
# swaplabel /dev/sdaY    ← swapのUUIDが表示されますので、それをfstabに書き込みます。
# vi /etc/fstab  ← swapの行を、そのUUIDを使用して修正します。
# sync
# reboot

未使用だった領域を使えるようにするには、新しいパーティションを作るか、あるいは、gparted liveを使ってパーティションを拡大するか、です。私は、操作が簡単なgparted liveをUSBメモリにべた書きしてそれ使って拡大しました。



共通テーマ:パソコン・インターネット