kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

BIOS/UEFIが機能しなくなる問題、修復方法が見つかる

先日一部のPCで「Ubuntu 17.10」をインストールすると、BIOS/UEFIが機能しなくなる問題を紹介しました。



影響を受けたPC(問題が起きているPC)で、BIOS/UEFIを修復する方法が見つかりました。


ポイントは「Linux Kernel 4.14.9」をインストールし、PCを再起動することです。
これでロックされたBIOS/UEFIが再び機能するようになり、ロックが解除され設定の変更やライブUSBメモリーから「Ubuntu」の起動等が可能になります。

修復方法

修復方法です。

1.Ubuntuの起動

HDD/SSDなど「Ubuntu」をインストールしたストレージから「Ubuntu」を起動します。

2.ukuuのインストール

「端末」から以下のコマンドを1行ずつ実行し、「Mainline Kernel」のインストールを支援する「ukuu」をインストールします。

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu


3.Linux Kernel 4.14.9のインストール

「ukuu」を起動し、「kernel 4.14.9」を選択して「Install」ボタンをクリックします。


これで「Linux Kernel 4.14.9」がインストールされます。
「Status」が「Installed」になっていることを確認してください。


インストールが完了したらPCを再起動します。

4.Linux Kernel 4.14.9でUbuntuを起動

「GRUB」のブートメニューを表示し、「Advanced options for ubuntu」を選択して「エンター」キーを押します。
以下のように「Linux Kernel」を選択する画面が表示されるので、「Linux 4.14.9-****-generic」を選択し、「エンター」キーを押します。


5.PCの再起動

「Ubuntu」が起動したらPCを再起動し、「BIOS/UEFI」の画面を表示します。
「BIOS/UEFI」の画面の表示方法は、PCの説明書を参照してください。
「BIOS/UEFI」の画面を表示したら、設定を変更し設定が保存されるか確認します。
 またライブUSBメモリーから「Ubuntu 16.04」が起動できるか確認します。

なぜLinux Kernel 4.14でこの問題が解消されるのか

Comment - #330」によると、以下の「Linux Kernel」の不具合の修正が、この問題の解消に繋がっているのではないかとのことです。



現在の理論において「drivers/mtd/spi-nor/spi-nor.c」で「SPI_NOR_HAS_LOCK」を設定するシリアルフラッシュでは、Linux SPI-NORコアはチップの「JEDEC ID」の読み込みに加え、ステータスレジスター(SR)をクリアする必要がある。
これは保護ビット(BP0/BP1/BP2)がクリアされていることを確認するために行われる。

この時処理の流れは、以下のようになる。

  1. WREN (write enable)
  2. WRSR with 0 (write status register)

しかし「intel-spi」ドライバーにoff-by-oneバグ(1つずれるの意)があり、この不具合により1バイト書き込むところを2バイト書き込んでいる。
つまり上記の処理の流れが、実際には以下のようになっている。

  1. WREN (write enable)
  2. WRSR with 0, X (write status register)

「2.」の「X」の値は、FDATA[1] FIFOにある値である。
多くの状況でこの値は、読み込んだ「JEDEC ID」の値の一部である。

さて、ステータスレジスターとコントロールレジスターの値を読み込むコマンドは、それぞれ異なるコマンドであるにも関わらず、「WRSR」はステータスレジスターとコントロールレジスター(CR)の双方に値を書き込めるという点で奇妙に思う。

もし「X」の値がビット6がセットされた値だった場合、結果的にドライバーはコントロールレジスターに0x40を書き込むことになる。
つまり上記の「2.」の処理では、以下の値を書き込む。

SR=0x00 CR=0x40

ステータスレジスターの保護ビット(BP0/BP1/BP2)が「0」にセットされ、コントロールレジスターの「CMP」が「1」にセットされるため、チップ全体が読み込み専用になる。
(CMPはBP0/BP1/BPを補完する役割を持つ)
そのためBIOS/UEFIから設定の保存や変更ができなくなる。

このoff-by-oneバグは2017年9月にすでに修正された不具合である。

Ubuntu 17.10の配布停止

この不具合のため、現在「Ubuntu 17.10」(Ubuntu 17.10 日本語 Remix含む)は配布停止になっています。
不具合修正後、再度「Ubuntu 17.10」が提供される予定です。

この問題は致命的な問題であり、この問題に影響を受け修理に約€100(約1.4万円)かかったと報告しているユーザーもいます。
「Ubuntu」の評判に大きく影響する問題であるため、配布停止もやむなしでしょう。

他のLinuxディストリビューションも注意

この問題は「Ubuntu」に限定された問題ではなく、「Antergos」で発生したとの報告もあります。
そのため他のLinuxディストリビューションでも注意が必要です。

関連コンテンツ
同一カテゴリーの記事
コメント
オプション