見出し画像

linuxでUEFIのプラットフォームサイズを確認する覚書

※本文は前記事からの補足的なものです。

こんにちは。
前記事では32bit版UEFIから起動できるISOファイルの作成手順についてご紹介しました。では、すでに動作しているlinuxからUEFIが64bit版か32bit版かを知りたい場合は、どうすればいいでしょうか?

今回はどちらかというと開発者の目線からとなりますが、
/sys/firmware/efi/fw_platform_sizeファイルを使ってUEFIのプラットフォームサイズを確認する方法をご紹介します。

UEFIには64bit版と32bit版がありますが、どちらを使っているかはlinux上からでも確認できます。私の知るもっとも簡単な方法が、
/sys/firmware/efi/fw_platform_sizeファイルを参照することです。

/sys/firmware/efi/fw_platform_sizeファイルは、linuxが起動する際にefivarsモジュールによって作成されます。このファイルには、UEFIのプラットフォームサイズが書かれています。例えば64bit版のUEFIなら「64」という文字列が、32bit版のUEFIなら「32」という文字列が入っています。

このファイルをcatコマンドで表示すれば、UEFIのバージョンがわかります。以下は64bit版のUEFIを使っている場合の例です。

$ cat /sys/firmware/efi/fw_platform_size
64

この方法は、linuxカーネルがefivarsモジュールをサポートしていることが前提です。またlinuxがUEFIモードで起動していることも必要です。なお古いBIOSモードで起動している場合は、そもそも/sys/firmware/efiディレクトリ自体が存在しません。

まとめます。

  1. /sys/firmware/efiディレクトリが存在するか?

  2. /sys/firmware/efi/fw_platform_sizeに格納されている文字列が「32」or「64」のどちらか?

このようなロジックで、現在動作しているPCプラットフォームが32bit版 UEFIか、あるいは64bit版 UEFIか、そもそもUEFIでない古いBIOSなのかを判定することができます。

もしあなたがLinuxディストリビューションの開発者であれば、これらの情報を元に適切な起動用Grubファイルを生成することは、それほど難しくないと思います。いかがでしょうか?

なお本記事もBingで生成した内容を、そときせひろが手直ししたものとなります。Bing偉い。

この記事が気に入ったらサポートをしてみませんか?