ThinkPad E585 AMD Ryzen 5 2500UでChaletOS 16.04(Ubuntu派生)をフリーズさせないための2つの対策

 
AMD製CPUはUbuntuとの相性が良くないことが数多く報告されています。

ChaletOS 16.04もUbuntu 16.04をベースにしているため、やはり不具合が起きてしまいます

それはランダムかつ頻繁にフリーズしてしまうという現象です。キーボードも応答しなくなるため、最終的には電源ボタンで強制シャットダウンするしかなくなるのです。

これでは使い物になりません。

しかし、私なりにですが、何とか打開策(らしき物)をひねり出しました。

これが「絶対的な答え」かどうかは分かりません。しかし少しでも参考になればと思い、敢えて紹介していきたいと思います。

適用範囲

その前に、これから説明する対策は、以下の条件で検証したものです。

  • CPU:AMD Ryzen 5 2500U
  • カーネルバージョン:Ver.4.15 つまりHWEカーネル(最新安定版)

※ChaletOS 16.04.2のデフォルトは Ver.4.8

これ以外の条件では通用しない場合も十分ありますので、ご了承ください。

AMD製CPUをひとくくりにしない

この適用範囲の中で、最も重要なのはCPUのブランド(Ryzen、Athlon、Aシリーズなど)とモデルナンバー(製品型番)の組み合わせです。

AMD製のCPU搭載PCで、Ubuntuがフリーズすると嘆いている記事を本当によく見かけます。しかし、どのブランド、モデルナンバーで問題が起きているかを丁寧に紹介している記事は意外と少ないのです。

AMD製CPUのブランドとモデルナンバー
出典:AMD Ryzen™ プロセッサーとは | パソコン工房 NEXMAG

確かにAMD製CPUは「総論」としてUbuntuとの相性はよくありません。

しかし、その打開策については「ブランド×モデルナンバー」によって「個別」に異なると思っています。この事は非常に大事です。実際、このことに気付いていなかったら、この記事は到底書けなかったと心から思っています。

HWEカーネルにアップグレードした理由

カーネルをVer.4.15、つまりHWEカーネル(最新安定版)にアップグレードした理由は、手持ちの「インテル Intel Wireless-AC 9260」を使いたかったからです。

intel9260-kernel
カーネルVer.4.8のままだと使用できない 出典:インテル® ワイヤレス・アダプターの Linux* サポートについて
このアップグレードは、ChlaetOS 16.04 安定化の一環として行ったのではありません。またHWEカーネルにアップグレードすれば、ChaletOS 16.04のフリーズが無くなるという訳でもありません。

紛らわしくてすみません。

とは言え、デフォルトのカーネルVer.4.8でも動作は不安定でした。しかし、その状態での対策や検証は全く行っていません。ご容赦下さい。

ChaletOSユーザーこそHWEカーネルへアップグレードを

とは言え、ChaletOSユーザーはぜひともHWEカーネルへアップグレードしてほしいと思います。

なぜなら本家Ubuntu LTS版(長期サポート版)と違い、ChaletOSは4年に1度しか更新されないからです。本家Ubuntu LTSは2年毎に更新されます。

ですから例えばこのまま数年前のカーネルをそのまま使い続けたら、当然、最新のハードウェアが使えなくなるリスクが高くなるのです。

1604LTS-schedule
出典:Kernel/RollingLTSEnablementStack - Ubuntu Wiki

HWEとは「Hardware Enablement」の略。簡単に言えば、現在のLTS(16.04)のまま、最新のハードウェアを利用できるようアップグレードすることです。

HWEカーネルにアップグレードして損はありません。また、アップグレードしたからと言って16.04 LTSのサポート対象外になることもありません。

Ubuntu 18.04 LTS(Bionic Beaver)での対策が参考にできる

実は、HWEカーネルにアップグレードすることには、もう1つ別のメリットがあります。それは、Ubuntu 18.04 LTS(Bionic Beaver)ユーザーの情報も参考にできるという事です。

Ubuntu LTSの最新版は18.04 LTS(Bionic Beaver)です。Ubuntu 18.04 LTSに初期導入済みカーネルはVer.4.15です。

1804LTS-schedule
出典:Kernel/RollingLTSEnablementStack - Ubuntu Wiki
つまりカーネルに関しては、HWEアップグレード済みのChaletOS 16.04とUbuntu 18.04 LTSはバージョンが一致するのです。

そのため、Ubuntu 18.04 LTSユーザーが発する「情報」をも「多く」取り込んで活用できるようになるのです。これはとても大きなアドバンテージです。

インストールが出来ない

前置きが長くなりましたが、まだもう1つクリアすべき課題あります。それはそもそも「ChaletOS 16.04.2」のインストールが出来ないという問題です。

uefi-grub
出典:UbuntuTips/Install/UEFI - Ubuntu Japanese Wiki

具体的にはライブUSB、DVDを起動させ、上記のようなGRUB画面に進み「Try ChaletOS 16.04.2 without installing」を選択しても、ただ画面が真っ黒になってしまうのです。

ただしCPUファンはうなり続けます。

インストールのためのカーネルパラメーター

これを解決するには、カーネル・ブート・パラメーター(Kernel Boot Parameter、以降カーネルパラメーター)を修正する必要があります。カーネルパラメーターの修正するためにはGRUB画面(下図)で「e」キーを押下します。

uefi-grub
出典:UbuntuTips/Install/UEFI - Ubuntu Japanese Wiki
カーネルパラメーター編集画面
カーネルパラメーター編集画面

そうすると上記の画面に切り替わります。ここで「quiet splash」という文字列の後に、以下のパラメーターを追記します。「splash」後の「--」は削除します。

intremap=off spec_store_bypass_disable=prctl

ちなみに英語キーボードとしての入力になるので、以下の記号については下表をご参照ください。

記号 入力方法
= ^
_ Shift + ー
カーネルパラメーター変更後
カーネルパラメーター変更後

入力に誤りが無いことを確認の上、「Ctrl+X」を押下してください。通常通りライブ画面に切り替わると思います。

live-image

10秒以内にeボタンを

その後は通常通りChaletOS 16.04.2をインストールをして下さい。

場合によっては、最後の最後で先に進まなくなるかも知れません(画面撮り忘れ)。その場合は電源ボタン長押しで電源を落として下さい(それでもインストールは済んでいるはず)。

再起動後、もう一度、必ずカーネルパラメーターを修正する必要があります。

しかし今度はGRUB画面が出たら10秒以内に「e」ボタンを押さないと、カーネルパラメーターの修正画面に入ることが出来ません

intremap=off spec_store_bypass_disable=prctl

念押しですが、上記パラメーターを「quiet splash」と「$vt_handoff」の間に入力し「Ctrl+X」を押下し、ログインして下さい。

日本語化

そして残りの日本語化、ソフトウェアの更新を行って下さい

■参考記事

HWEカーネルへアップグレード

ChaletOS 16.04.2の日本語化とソフトウェアの更新が終わりましたら、次にHWEカーネルへアップデートを行います。

sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04

端末を起動し、上記コマンドでアップグレードを行って下さい。

■参考
Kernel/LTSEnablementStack - Ubuntu Wiki

ここまでが下準備です。

この後再起動をして頂きますが、再起動後すぐにBIOSの設定とカーネルパラメーターの修正をします。多少慌ただしくなります。

全て準備が整ってから再起動をして下さい。

対策1 CPU Power Management を Disabledへ

この対策1は実施せず、そのまま対策2の方を実施して下さい。

この記事を公開後、頻繁ではないですがフリーズが再発。その後、下記のシステムログを発見。BIOSの「CPU Power Management」は デフォルト(Enabled)のままで大丈夫です。

kernel: Uhhuh. NMI received for unknown reason 2d on CPU 4.
kernel: Do you have a strange power saving mode enabled?
kernel: Dazed and confused, but trying to continue

特にBIOS画面に入る必要はありません。

再起動後、画面が立ち上がりましたら、すぐに「F1」キーなどを押しBIOS画面を開きます。

まずBIOSの中の「Config」メニューを選択します。メニュー内の「Power」を選択し「Enter」キーを押します。

bios-config
ConfigメニューからPowerを選択


「Power」の詳細画面に移ります。その中に「CPU Power Management」という項目があります。

デフォルトで「Enabled」になっていると思います。「Enabled」の所で「Enter」キーを押下すると、「Disabled」という選択肢が出てきます。ここで「Disabled」を選択します。

もう一度「CPU Power Management」が「Disabled」になっていることを確認し「F10」キーでBIOS画面から抜けます。

■参考サイト
Ubuntu Forums

対策2 idle=nomwait

BIOS画面から抜けると、通常の「LENOVO」のロゴ画面になり、その後GRUBの画面になると思います。GRUBの画面になりましたら、やはり10秒以内に「e」キーを押して下さい。

カーネルはもうVer.4.15にカーネルになりましたので、Ver.4.8の時とは別のカーネルパラメーターを記載します。

ivrs_ioapic[32]=00:14.0 idle=nomwait

上記パラメーターを「quiet splash」と「$vt_handoff」の間に入力して下さい。記号入力は下表参照。

記号 入力方法
_ Shift + ー
[ @
] [
= ^
: ;
idle=nomwait入力後
カーネルパラメーター修正後

念のため入力ミスがないこと確認の上、「Ctrl+X」を押下しログインをして下さい。

sudo update-grub

無事にログインができ、不具合が無ければ、毎回カーネルパラメーターを入力しなくて済むように設定しましょう。

まずはroot権限で「/etc/default/」ディレクトリにある「grub」というファイルをお好みのテキストエディターで開きます。

sudo (お好みのテキストエディター) /etc/default/grub

または「Thunar ファイルマネージャー (Administrator)」で「/etc/default/」を開き、「grub」を開くなど。

thunar-admin

etc-default-grub

「grub」を開きましたら、「quiet splash」に続けて「ivrs_ioapic[32]=00:14.0 idle=nomwait」を入力します。入力ミスがないことを確認しましたら、保存し閉じます。

grubの記入例
赤線部分を追記

次に端末を起動し以下のコマンドを実行します。

sudo update-grub

これで次回のログイン以降、カーネルパラメーターの入力は不要になります。

あくまでAMD Ryzen 5 2500Uの対策です

以上がThinkPad E585 AMD Ryzen 5 2500UでChaletOS 16.04(カーネルはVer.4.15)のフリーズを回避する対策となります。中でも「idle=nomwait」というカーネルパラメーターが最も効果的だったのではないかと思います。

今回はCPUが「AMD Ryzen 5 2500U」の場合の対策のみ検証しました。

同系統で「AMD Ryzen 3 2500U」、「AMD Ryzen 7 2500U」というCPUもあります。恐らくそれらを搭載したThinkPad E585にもある程度、通用する策ではないか思っています。ただ期待はしないで下さい。

Ubuntu 18.04 LTS(Bionic Beaver)にも通用する

ChaletOSというマイナーなディストリビューションにてフリーズ問題対策を検証して来ました。しかし、検証したのはHWEカーネルにアップグレード済みのChaletOS 16.04.6です。

カーネル(Linux)のバージョンは同じVer.4.15なので、今回取り上げたフリーズ対策は、Ubuntu 18.04 LTS(Bionic Beaver)にも十分通用すると思います。

ただし使用するCPUが「AMD Ryzen 5 2500U」であれば、という条件は当然付きます。

システムも定期バックアップを

今回の対策を見出すのには、実は4週間程度かかりました。2日徹夜もしました。5回以上OSクリーンインストールもしました。

ちなみにそれまでは、「約2時間に1回」という高頻度でフリーズが起こっていました。

今回の経験を通して反省すべき点があります。

それはまめにシステムバックアップを取っていれば、複数回の徹夜、OSクリーンインストールは不要だったはずだと。

実はUbuntuでも簡単にシステムのバックアップを取るソフトがありました。中でもシンプルなのが「Timeshift」です。スケジュール機能がとても便利です。

timeshift_settings_schedule
出典:Timeshift – TeejeeTech

■使用方法の参考サイト
システムのバックアップ ( ソフトウェア ) - スローなPCライフ - Yahoo!ブログ

今のところ4週間連続でフリーズは発生していません。しかしフリーズ対策を検証をしたThinkPad E585は2019年2月に購入した物です。使用歴が浅いのです。

ですから、予期せぬフリーズ、不具合は当然あると思っています。そんな時、後悔しないためにも、システムのバックアップは定期的に取ることを強くお勧めします。

もちろんホームディレクトリのバックアップも必須です。こちら rsync コマンドで十分だと思います。

C6無効化、SMT無効化、ASLR無効化全て意味なし

AMD製CPUのフリーズ対策として、頻繁に取り上げられている3つの対策があります。

  • C6の無効化
  • SMTの無効化
  • ASLRの無効化

これら3つとも実際に試しました。C6の無効化とASLRの無効化については何の効果なしでした。

ただ「SMTの無効化」を行うと、症状がかなり悪化しました。フリーズ頻度が2〜3倍に跳ね上がったのです。

いずれの対策も実施時の難易度が相当に高いです。本当に骨折り損です。

こうした徒労を防ぐ唯一の方法は「情報の正しい選別」だと思います。

無数にある情報をCPUの「ブランド×モデルナンバー」、そしてカーネルのバージョンで情報を絞り込むことで、時間と労力の無駄を大幅に省くことができます。

もっと言えば、ThinkPad E585は2018年モデルなので、2018年より前の情報はバッサリ切り捨てても良いかも知れません

※関連記事