7月 152020
 

さてと。前回のエントリは ThinkPad X13 の AMD 版が納品されて、簡単なファースト・インプレッションを行いました。
僕はそもそも NotePC で Windows10 を利用することはあまりないので、ベンチマークとか全然できないのであります。なので、詳細な検証などはまるで皆無。参考にならない記事ですなf(^^;;。

と、いうことで、今回は出たばかりの最新鋭の NotePC に FreeBSD をインストールしてみます。色々と問題点があるのだろうなぁ。とは思うのでありますが、れっつとらい。

 
1. FreeBSD のインストール準備
今回チョイスした FreeBSD のバージョンは FreeBSD/amd64 12.1-RELEASE と、いうリリースされている標準的なバージョンです。このバージョンが、最新鋭の NotePC にインストールしてどこまで動作するのか確認してみたいと思います。

インストールの作業手順は以下のとおりです。

0).Windows10 の回復 USB の作成
1).Windows10 のパーティションの縮小
2).FreeBSD 用 UEF パーティションの確保
3).FreeBSD のインストール
4).bcdedit でブートメニューの登録

このうちのほとんどの作業は以前「ThinkPad E145 を UEFI ブートに変えてみた。」といえエントリに書いているのでサクっと省略します。実際に僕もこの手順で問題なくインストールできましたので、そちらを参考にして頂ければと思います。

ただ、今回は最新鋭の NotePC で、今まで利用していた ThinkPad e145 と比べて最新技術が導入されています。

気を付けたのは以下の点。

  • BitLocker が default で導入されている
  • UEFI (BIOS) の設定画面で「レガシー BIOS」(CSM のことですね) がどうも見当たらない

この二つをなんとか回避する必要があります。

 
2. BitLocker の解除
「コントロールパネル」から「BitLocker ドライブ暗号化」メニューを覗いても無効にはできませんでした。ただし、この画面から BitLocker のキーを取得しておきましょう。
BitLocker を解除するのは「設定」アプリの [更新とセキュリティ] の中にあります。ここからまず、 BitLocker を無効にします。

最初から入っている OS 以外をインストールするとき EFI セットアップメニュー (BIOS 画面) で「セキュアブート」を無効にする必要があるのですが、 BitLocker を有効にしたままセキュアブートをオフにすると青い画面が現れて何やらキーを入力するように要求されてしまい『むむむ。』などと思ってしまうのであります。

と、いうことで、新しい OS をインストールするためには、

・BitLocker を無効にする
・セキュアブートをオフにする

以上の二つが必要です。

 
3.「レガシー BIOS」の設定画面が見当たらない
もしかしたら EFI セットアップメニュー内にあるのかもしれません。が、しかし、僕は見つけられませんでした。と、いうか、もう FreeBSDの インストール時には「レガシー BIOS」の設定の有無は不要です。

ThinkPad e145 を UEFI で利用する設定を投入したときに FreeBSD のインストール用 USB メモリを Rufus で作成した。と、書いています。 Rufus で FreeBSD のブート USB イメージを作成するときは MBR で起動する USB ブートイメージしか作れない。と、書いているのですが、実は FreeBSD の 12.1-RELEASE のインストールイメージは UEFI+GPT に対応しているんですね。

Rufus を利用して UEFI 対応の FreeBSD の USB ブートイメージを作成する場合 ALT+E を押すことにより BIOS+MBR にするか UEFI+GPT にするか選択できます。

なので、「レガシー BIOS」 をオンにせずとも UEFI モードのままで FreeBSD をインストールすることができるのであります。

 
4.FreeBSDのインストール
EFI セットアップメニューで変更するのは セキュアブート “オフ” のみで FreeBSD のインストールが可能になりました。

と、いうことで、あとは FreeBSD をインストールするのみです。途中パーティションの設定の所では、 [Auto] を設定すると、SSD の全領域を対象としてしまうので、ここは [Manual] で、必要な領域を確保するようにします。

インストールが完了したあとは Windows10 が起動するので bcdedit で Firmware Windows Boot Manager に FreeBSD がブートするように登録してあげてインストール作業は終了です。

 
5.いよいよ FreeBSD の起動。しかし NIC は?
まず、必要なのにデバイス的に動かないもの。あ、今回は一発目のインストールなので 12.1-RELEASE になります。あまりにも動かないようであれば CURRENT に移行するか。などと思っていますが。

  • WiFi6 AX200
  • Ryzen7 Radeon Vega10

この二つは結構痛い・・。orz
順番に話して行きます。

そもそも pciconf -lv すると none のデバイスが 8 個もあります。orz

pciconf -lvの結果

vmm.ko を kldload するとか、仮想 OS 用のブリッジ・RealTek のデバイス・AMD のマルチメディア系デバイスなどが認識していません。

 
Intel の WiFi6 対応の AX200 は 調べてみたところ OpenBSD のほうでは if_ixw と、いうドライバが書かれているみたいですが、 FreeBSD はまだ未対応のようです。 if_iwm.ko でも動作しません。

ThinkPad X13 の内臓 re0 を利用するためのアダプタを購入してないので USB WiFi や USB NIC を利用しようと思いましたが・・。それにしても最近の FeeeBSD の USB NIC はボロボロですな・・。RealTek の WiFi NIC ドライバ if_urtw.ko は 802.11a 対応したチップをマージしたら速度が全く出ないし、 if_axge.ko は ue0 の 1Gbps で接続する JR45 の NIC なのに、こいつは ping の損失率は 60% 前後。もう、悲惨というほかない・・。

ショーがないので WiFi の場合は if_run.ko を利用し RJ45 NIC の場合は if_axe.ko を利用する。と、いう状態・・。orz

 
6.Xorg 動く?
Ryzen7 Radeon Vega10 はディスプレイ用のチップですが ports から graphics/drm-fbsd12.0-kmod/ をインストールして

kld_list="/boot/modules/amdgpu.ko "/boot/modules/radeonkms.ko"

 

を書いても認識されませんでした。

/dev/dri/Card0 が生成されないので OS 的にも認識されていません。

まぁ、この際 amdgpu.ko をきっぱりと諦めて vesa ドライバで Xorg が起動してみようと試みるもダメ・・。あらまぁ。

[ 71220.842] (II) VESA(0): initializing int10
[ 71220.843] (EE) VESA(0): V_BIOS address 0x0 out of range
[ 71220.843] (II) UnloadModule: "vesa"
[ 71220.843] (II) UnloadSubModule: "int10"
[ 71220.843] (II) Unloading int10
[ 71220.843] (II) UnloadSubModule: "vbe"
[ 71220.843] (II) Unloading vbe
[ 71220.843] (EE) Screen(s) found, but none have a usable configuration.
[ 71220.843] (EE) 
Fatal server error:
[ 71220.843] (EE) no screens found(EE) 
[ 71220.843] (EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
[ 71220.843] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 71220.843] (EE) 
[ 71220.844] (EE) Server terminated with error (1). Closing log file.

 
vesa ドライバを利用した場合はこんな感じのログが出力されます。

それなら最後の手段だ。と、いうことで scfb で試してみたところ、一応 Xorg の画面は現れました。が、 xrandr で対応する画面サイズを確認してみると・・。

# xrandr 
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 640 x 480, maximum 640 x 480
default connected 640x480+0+0 0mm x 0mm
   640x480        0.00* 

 
orz。

しかし、scfs ドライバというのは UEFI と密接に関連いているようですね。 xorg.conf でディスプレイサイズを変更するのではなく UEFI 用のコマンドが用意されていて、 OS 起動時の画面サイズを調整してから、そのサイズを scfb ドライバが読み取って画面サイズが決定されるようです。

FreeBSD の起動時に OS ブートのメニューが表示されますが、そこで 3 を 押して OK プロンプトを出します。

表示された OK プロンプトで gop コマンドを打ちます。 GOP とは Graphics Output Protocol のことらしいです。オプションは list (選択枝の表示) get (現在の設定情報の取得) set (新しい設定を指定) の三つ。

OK プロンプトから gop list と打つとディスプレイが対応しているサイズの一覧が表示されます。そこて gop set 0 などと打ち、使いたいサイズの番号を打ちます。

すると、コンソールが中央付近に小さくなって表示されます。そこの OK プロンプトで boot と打つと指定した画面の大きさで FreeBSD がブートします。くれぐれも reboot とは打たないように;-)。
OS の起動後にすかさず startx と叩くと、さっきまで 640×480 でしか表示してくれなかった scfb ドライバが大画面で表示できるようになります。

ちなみに ThinkPad X13 AMD は色々なサイズがあったのですが、実質的に 640×480 か 1920×1080 の二つのサイズしか表示できませんでした。

なお、 /boot/loader.rc に gop set で指定したモードの番号を記載することにより毎回 OK プロンプトで設定する必要がなくなるらしいのですが、それはちょっとバグがあるみたいで正しく動作しないようです。
では、どうするか? と、いうと /boot/loader.conf に exec=”gop set 0″ と、コマンドイメージそのままを書くと良いです。

これで Xorg が無事に起動したので、ずいぶんと利便性がアップしました;-)。いやぁ。良かった。
あと、 NotePC のスペックが非常に高いので scfb ドライバでもその遅さがあまり気になりません。これは非常にラッキーです;-)。

 
7.Suspend/Resume するの?
以前、今回の ThinkPad X13 AMD を購入する前に FreeBSD の偉い人が既に ThinkPad X1 を持っていたのでその人に「Suspend/Resume します?」って、聞いたら「興味ない。」と、つれない返事。あらま。

では、ThinkPad X13 AMD が届いてから確認すれば良いやぁ。などと思ったのですが、今回はその検証を。

 
まず、何はなくとも zzz と打ってみると、一応は寝てくれました。しかし、電源を投入すると、 OS が起動して来て fsck が走ります。あらら・・。

試しに以下のコマンドを打ってみます。

# sysctl hw.acpi.supported_sleep_state
hw.acpi.supported_sleep_state: S4 S5

 
うひょー。 S3 ステートがないじゃーーん。 orz
なるほど。これが原因で「興味ない。」と、コメントが返ってきたんだな。と、一人で納得。

本当に S3 ステートが無いのか? とウェブで探し回ったことろ、以下の URL にぶち当たりました。

Lenovo ThinkPad X1 Carbon (Gen 6)

最近の ThinkPad には BIOS レベルで S3 ステートがなく、かわりに s0i3 スリープというのがあるらしい。では s0i3 スリープとはなんぞや? と、思い調べてみると Windows10 もしくは Microsoft 『モダンスタンバイ』というモノらしく OS べったりなスリープモードらしいです。

これを FreeBSD 側、上記 URL では『Linux 側』で利用するには ACPI の DSDT を書き換える必要がります。まぁ、過去に何回か書き換えたことがあるのでどーにかなるだろう。などと思いつつも EFI セットアップメニューを眺めていたらなんとっ!!

ThinkPad X13 AMD はスリープステートを EFI セットアップメニューから切り替えられるようになっておりました。

[Windows 10] にすると「モダンスタンバイ」 になって [Linux] にすると今までどおり S3 ステートになります。 [Linux] に変更したあとに上記 hw.acpi.supported_sleep_state を確認すると S3 S4 S5 と、 S3 が生えてまいりました;-)。

 
と、いうことで準備が整ったので再度 zzz と打ちます。 Suspend は割と素直に寝てくれます。フタを閉じて再度開けると、画面はブラックアウトです。しかし、 USB WiFi がピカピカ光っているのでカーネル自体は起き上がったようです。

しばらく待って ping の疎通確認したら目覚めていました。 ssh したらログインできました。無事に Suspend/Resume 自体は動作しているようですが、画面は真っ暗なまま。まぁ、まだ Xorg 動き始めたばかりなのでなんとも言えないですが、 コンソール周りの vt や Xorg 次第で画面が復活するかな?などと安直に思っています。

ちなみに、相変わらず acpi_video.ko はまともに動作せず sysctl の hw.acpi.reset_video mib を 1 にするとカーネルが凍りつくのは ThinkPad e145 と一緒ですね。

 
8.その他
画面の明るさ変更についてですが、上にも書いた通り acpi_video.ko がまともに動かないので sysctl の hw.acpi.video.lcd0.brightness mib などが使い物になりません。

これまた、画面の明るさについては Xorg が動いたら本格的にいじっていきたいです。

 
あと、まださわりだけですが、イヤホンジャックから音が出ません。 /dev/sendstat 見ると色々デバイスはあるみたいですが sysctl hw.snd.default_unit で切り替えてもヘッドホン端子にさしたイヤホンで音が出ていません。

pciconf -lv で AMD マルチメディアチップが none8 になっていたのでその辺りが影響しているのかな?

 
9.で、結局?
しかし、普段から NotePC で FreeBSD を利用しているので Windows10 では PC のスペックに対してその速さをあまり体験できなかったのですが FreeBSD をブートするとその性能が体感できますね。起動がむちゃくちゃ速い。 KDE5 も sddm からログインしたらサクっとデスクトップが表示されるし、 Firefox の起動もむちゃくちゃ速い。『いやぁー。速い NotePC は中々良いねぇ。』と、なるのであります;-)。

そして、ですが FreeBSD/amd 12.1-RELEASE では結局、以下が動きませんでした。

  • WiFi の AX200 が動作しない
  • Radeon Vega10 が amdgpu.ko で認識しない
  • S3 ステートは利用可能だが Suspend して Resume 後は画面がブラックアウト
  • 画面の明るさは変更できない
  • 音声出力がイヤホンジャックに切り替えられない

こんな感じでしょうか。Radeon Vega10 が graphics/drm-devel-kmod/ な ports で動作するのか確認したいところではありますが、そーすると OS 自体を CURRENT に上げる必要があります。

上記の状態を鑑みると CURRENT を試してみる価値ば十分にあるのかなぁ? などと、思っている次第ではあります・・。

が、このネタ、もう一回続くかも。

  8 件のコメント to “ThinkPad X13 AMD で利用する FreeBSD。”

  1. […] 今回も ThinkPad X13 で FreeBSD を動かすネタです。前回のエントリは「ThinkPad X13 AMD で利用する FreeBSD。」というネタでしたが、結局のところ FreeBSD/amd64 12.1-RELEASE ではだいじなものが動作しな […]

  2. […] 以前のエントリで「ThinkPad X13 AMD で利用する FreeBSD。」と、いうのを書きました。このときに利用した FreeBSD のバージョンは FreeBSD/amd64 12.1-RELEASE でした。その後 FreeBSD/amd64 12.2-RELEASE が出たときに試しましたが、やはり Renoir は認識せず、 xf86-video-scfb を使い続けていた状態なのでありました。   途中 13-CURRENT も試したりしましたが、カーネルと drm-kmod 辺りの相性が悪く、カーネルパニックになったりしてそこはかとなく悲惨な状態だったので利用を断念して RELEASE バージョンに戻した。と、いう雰囲気だったのであります。 […]

  3. 最近 X1 Nano に FreeBSD 13R を追加する際に参考にさせて貰いました。詳しくて助かりました。
    1つだけ謎があります。ステップ 4) をせずに 3)が終わった段階で、何故か、目的の状態になりました。
    FBSD をインストール後の最初の起動で FBSD が立ち上がって、「あーやってしまった」と思ったのですが、
    起動時に F12 を押すと、先頭に FreeBSD が表示されていて、下にある Windows boot manager を選ぶと
    ちゃんと Windows 10 が立ち上がりました。つまり、目指す状態でした。
    なので 4)の bcdedit や boo1.efi のコピー をやってないのですが、このままでも良いですかね?

    • タカ さん。こんにちは。

      FreeBSD のインストールイメージもどんどん進歩している。と、いうことなのでしょぅかねぇ?

      bcdedit /enum all

      で、確認してみるのと、

      mountvol

      して、EFI パーティションの中身がどう更新されたか、確認してみるのが良いかもですねぇ。

      もしかして、このサイト見た人が FreeBSD のインストーラの構造変えたかもしれないですねぇ;-P。

  4. ハンドルネーム微妙にかぶってすみません。書き込んでから気づきました。
    Bitlocker の無効や SecureBoot の無効など、助かりました。お陰でデュアルにできました。
    bcdedit /enum firmware すると、

    ファームウェアのブート マネージャー
    ——————————–
    identifier {fwbootmgr}
    displayorder {6e906c3f-01e9-11ec-8366-806e6f6e6963}
    {bootmgr}
    {0b042097-d64a-11eb-8238-806e6f6e6963}
    {0b042098-d64a-11eb-8238-806e6f6e6963}
    {0b042099-d64a-11eb-8238-806e6f6e6963}
    {0b04209a-d64a-11eb-8238-806e6f6e6963}
    {0b04209b-d64a-11eb-8238-806e6f6e6963}
    {0b04209c-d64a-11eb-8238-806e6f6e6963}
    {0b042091-d64a-11eb-8238-806e6f6e6963}
    {0b042092-d64a-11eb-8238-806e6f6e6963}
    timeout 0

    Windows ブート マネージャー
    ——————————–
    identifier {bootmgr}
    device partition=\Device\HarddiskVolume1
    path \EFI\Microsoft\Boot\bootmgfw.efi
    description Windows Boot Manager
    locale ja-JP
    inherit {globalsettings}
    isolatedcontext Yes
    default {current}
    resumeobject {4f2703e1-d64a-11eb-8238-3c18a059d4e1}
    displayorder {current}
    toolsdisplayorder {memdiag}
    timeout 0

    ファームウェア アプリケーション (101fffff
    ——————————–
    identifier {0b042088-d64a-11eb-8238-806e6f6e6963}
    description Setup
    isolatedcontext Yes

    と、たくさんのファームウエアアプリケーションが続いて、一番下に、

    ファームウェア アプリケーション (101fffff
    ——————————–
    identifier {6e906c3f-01e9-11ec-8366-806e6f6e6963}
    device partition=\Device\HarddiskVolume1
    path \EFI\freebsd\loader.efi
    description FreeBSD

    が追加されてました。これで、電源ONでFreeBSDが立ち上がります。
    私はこのエントリーを追加してないし、 \EFI\freebsd\loader.efi も置いてないです。
    FreeBSD のインストーラーが進化したのですかね。嬉しいことです。
    もしかしたら、2) の小さな UEF パーティションの確保も不要になってるのかも。
    削除して再度試せばわかりますが、怖くてやってないです。

  5. 今は bcdedit /set {fwbootmgr} displayorder {bootmgr} /addfirst して、一旦、電源ONで Windows10 にしました。
    ここでも記事が参考になり助かりました。FreeBSD が安定したら、もう一度 /addfirst して、電源ONで FreeBSD に戻す予定です。
    今 FreeBSD 13R で抱えてる問題は、軽い方から並べると 次のようになります。

    1)4つあるスピーカーの2つからしか音がでない。
    2)イヤホンから音がでない。
    3)AC を接続するか抜くか(!)すると、バックライトが100%になる。
    4)AX201 Wifi が使えない。
    5)外付けモニターやプロジェクターが使えない。

    1),2) はあまり調査してません。必ず必要ではないですが、動けば嬉しいです。
    3) はちょっとだけ不便。その度に backlight 30 してます。Xなしのコンソールでも同じなので何処がやってるのですかね。
    4) は想定内でした。今は USB Wifi ドングルを使用してます。 USB-C to A を経由しないとなので、まぁまぁ不便です。
    5) が一番の問題。USB-C (Thunderbolt 4) につないだ HDMI アダプターにモニタやプロジェクタをつなぐのですが、
    何故か FreeBSD 13R はまったく認識してくれません。xrandr でずっと disconnected です。Linux や OpenBSD
    では問題ないそうなので、何とかなると思ったのですが、今のところお手上げです。アドバイスを頂けると助かります。
    この X1 Nanoで初めて xf86-video-intel を止めて modesetting になったのでその影響なのか、
    それとも、FreeBSD の thunderbolt 対応が遅れているのか、はたまた、アダプタやケーブルとの相性なのか。うーむ。

    • タカ さん。こんばんは。

      WiFi は AX201 なんですね。
      僕のは AX200でしたが、https://wiki.freebsd.org/WiFi/Iwlwifi で大分動くようになっているみたいです。僕は試してませんけど。

      イヤホンから音が出ない件ですが、以下の sysctl でどうでしょう? dev.hdac.?.polling について、google で検索してみてください。
      sudo sysctl -w dev.hdac.0.polling=1
      sudo sysctl -w dev.hdac.1.polling=1

      僕のは AC アダプタを抜くとカーネルがパニックするので、タカさん のはまだ多少マシな状態ですね。原因は明らかに ports の drm-fbsd13-kmod の /boot/modules/ にインストールされたカーネルモジュールで、僕の場合は amdgpu.ko を kldload せずに scfb で X を起動すると AC アダプタを抜いてもカーネルパニックしません。
      ただ、scfb は 100% な明るさで backlight はそもそも使えませんけど・・f(^^;;。

      時々 gitHub から drm-kmod のソースコード持ってきてコンパイルしているのですが、通ったり通らなかったりで、カーネルソースと絡んでいて中々やっかいです。素直に CURRENT に行け。と、いう話もありそうですが、生ものなので最新に更新したタイミングで OS 自体が起動しなくなることが多々あるのでやめました。

      gitHub の最新の drm-kmod のコンパイルを通すためには、カーネルソースの /usr/src/sys/compat/linuxkpi/ 辺りがドンドンアップデート入っているので 13.0-R のコードではコンパイルは通りません。
      drm-kmod の辺りの影響で HDMI アダプターは反応してくれないですねぇ・・。

      今のところ、僕がコメントできるのはこの辺りでしょうか・・。

      それにしても bcdedit /enum firmware の結果が凄いですねぇ。path \EFI\freebsd\loader.efi を書き込んでくれるのですかー。

      今後とも情報交換、宜しくお願いしますー。

      • こんばんは。情報どうもです。
        Intel AX200 201 は近いうちに使える様になりそうですね。作業している人が居るのありがたいです。明日にでも試して見ようかな。

        イヤホンですがダメでした。 dev.hdac.1 が存在しないです。もう少し調べてみます。

        Freshports を見たら 9月9日の drm-devel-kmod が amdgpu での AC でのパニックに対応との事ですね。

        HDMI は X13 でも反応なしなのですか。と言うことは、私の所でも USB-C とは関係なく、同じ現象ですかね。
        ならば、 drm-kmod 周りがどんどんアップデートされてると、そのうち解消する期待が持てます。

 コメントを書いてください。

HTML タグが利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(必須項目)

(必須項目)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください