きっかけ
以前はMacbook Proの15インチとiPad Proの12.9インチを使っていましたが、電池持ちが良くないため充電器コミコミで2kg強になって買い替えを検討、そこでSurface Pro 8を見つけ家電量販店で試しに使ってみて帰りのハードオフにて同じ機種があったため購入。本体が18万強・ペン・キーボードはセットで新品3万弱で計21万だったが公開はしていない。
結構苦労したので書き残しておこうと思う。
なぜFedoraを入れたのか
単純にWindowsが使いにくかったから。元々Linux (Debian系)を使っていたのもあるが、あまりGUIメインよりCUIでポチポチ打つほうがやりやすかったのでWindowsでは耐えられなかった。あと試しにサブで使っていたノートパソコンにFedoraを入れてみたら手動でドライバを入れなくても完動して感動したから、ダジャレじゃないです。
スペック
SSDを256GB -> 1TBに増設している。
動作状況
カメラ以外は基本的に動作している。
Slim Pen 2に関してはまだドライバがないためマウス扱いになるが使えないことはない。
使用モジュール
・linux-surface(Surfaceに最適化されたカーネル、大体がこれで動作する)
・ithc-linux(Surface Pro 8と7+でタッチパネルを動作させるために必要な前提モジュール、これのみだとシングルジェスチャのみ動作する)
・itpsd (fork)(linux-surfaceに入っているiptsdのフォーク、こちらを使うことでマルチジェスチャが動作した)
前提条件
Fedora 36をインストール後インターネットに接続してアップデートを済ませてるものとする。
1. インストール(カーネル)
こちらを参考にカーネルをインストールする
リポジトリ追加
sudo dnf config-manager \
--add-repo=https://pkg.surfacelinux.com/fedora/linux-surface.repo
各種インストール
sudo dnf install --allowerasing kernel-surface iptsd libwacom-surface
自動起動有効
sudo systemctl enable iptsd
セキュアブートを有効(未確認)
当方はこちらを入れてセキュアブートを有効にしたが、動作しなかった。
sudo systemctl enable iptsd
ファイル作成
当方はVimを使った。
[Unit]
Description=Fedora default kernel updater
[Path]
PathChanged=/boot
[Install]
WantedBy=default.target
[Unit]
Description=Fedora default kernel updater
[Service]
Type=oneshot
ExecStart=/bin/sh -c "grubby --set-default /boot/vmlinuz*surface*"
自動起動有効(セキュアブート)
sudo systemctl enable default-kernel.path
次回時Surfaceカーネルを自動読み込み
sudo grubby --set-default /boot/vmlinuz*surface*
再起動
普通に再起動
2.タッチパネル関係をインストール
再起動すると諸々が使えるようになってると思う。このままでも常用できなことはないが、個人的にタッチパネルが使えないのは辛い。
そこで色々こねくり回した結果、必要なモジュールを個別でソースコードからビルドすることで使えるようになった。
ithc-linux
こちらからソースコードをダウンロード(クローン)後、以下のコマンドを順番に入力する。
事前にdkmsとここからFedora用のdevelと書いたものをインストールしておく。
make && sudo make install
sudo modprobe ithc
当方はここで指定のディレクトリが存在しないようでつまづいた。
そのため指定のディレクトリにソース一式を移したあと、もう一度同じコマンドを実行し直したらうまくいった。
その後、dmesgを実行してithc関連でエラーが出てないか確認する。
うまくいけばシングルタッチが動作するようになるが、ここで
Blocked an interrupt request due to source-id verification failure
と出ていたらGRUB2の設定に
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet intel_iommu=off intremap=nosid"
書き込んでから
grub2-mkconfig -o /etc/default/grub
実行後再起動する。
iptsd
事前にmesonとninjaが入っていなければインストールしておく
ここからソースコードをダウンロード。
その後ビルドする。
meson build --wrap-mode=forcefallback --buildtype=debugoptimized -Dmarch=native
ninja -C build
sudo build/src/daemon/iptsd
g++関連でエラーが出た場合
sudo dnf install g++
インストール後再試行すればうまくいくはず。
ビルド後、インストールする。
sudo ninja -C build install
sudo systemctl daemon-reload
sudo systemctl disable iptsd
sudo systemctl start iptsd
すべてうまくいけばマルチタッチができるようになっているはずだ。
GNOMEはジェスチャー動作もするようになっているため、直感的に操作できて使いやすい。
最後に
至らぬ点やおかしな表記があれば是非コメントまで。
念願のLinux生活だやったー!