Dell new XPS 13 (9300) 2020年モデルを買ったのでUbuntuを入れてみた
Dell new XPS 13 (9300)を買いました
こちらの32GBメモリモデルを最近買いました。4月下旬に購入して5月下旬に届いて大体2ヶ月ぐらい使っていました。 感想は最高っていう感じです。
新MBP 13インチやSurface Book 3でも32GBメモリを積めるようになりましたが、購入時点では13インチのノートPCで32GBメモリ搭載可能なのはXPS 13 2 in 1とこのモデルのみだったはずです。
ちょっと大きい14インチで32GBが載るPCはあったんですけどね。
20%オフクーポンとLINEショッピング経由で10%ポイント付与、Visa LINE Payカード決済による3%ポイント還元などで大体20万円弱でこのスペックのマシンが手に入るのはなかなかすごいと思います。
LINEショッピング
Visa LINE Payカード
LINEショッピングのポイント還元は数カ月の遅延があるっぽいけど、本当に還元されるかなw ちなみに今の所還元されそうな気配はありません。
Ubuntuをインストールする
ここ数年はずっとMac機を使っていたので、久しぶりのWindows機です。
数年ぶりにWindows機にUbuntuをインストールしました。
軽く手順を残しておきます。
実際には途中紆余曲折しているのでこの手順と全く同じ手順でインストールしたわけではないので、ちゃんといかなかったら悪しからずです。
また、メーカーサポートなども受けられなくなるのでDo it at your own riskでお願いします。
基本的には
を参考にしました。
Ubuntuインストールメディアを用意する
Windowsのセットアップが完了したらUbuntuをダウンロードしてきてインストールメディアを作成します。
最終的に、今回はUbuntu 18.04を利用しました。
Ubuntu 20.04も試したのですが、XmonadとGnomeの相性が良くなくて諦めました。
Ubuntu 20.04ならOut of boxでWiFiに繋げられたので、Xmonadを使わないならUbuntu 20.04を使ったほうが良いです。
Ubuntu 18.04を利用する場合は有線でインターネットに接続する手段を用意しておいてください。
日本語Remixが好きなのでここからisoイメージをダウンロードします。
インストールメディアにはUSBメモリを用いました。
インストールメディアの書き込みはLinuxLive USB Creatorを用いました。
パーティションを切る
100GBをWindows側に残して、残りの840GB程度をLinuxに使えるようにパーティションを切りました。
BitLockerを解除する
BitLockerというディスク暗号化が行われています。
これが有効のままで後に行うUEFI Secure Bootを解除すると、Windowsを起動するたびにディスク復号のために復号キーの入力を求められます。
超面倒くさいので暗号化自体を解除します。
これを無効にするとPCが盗難されたときにSSDからデータを引き抜くことが容易にできるようになるので、Do it at your own riskでお願いします。
コマンドラインを管理者モードで起動して次のコマンドを入力します。
manage-bde -off c:
manage-bde -status
で暗号化が解除されるのを待ちます。
RAID、Intel RSTを解除するAHCI
このままだとUbuntuのインストールができないのでRAIDを解除してAHCIに変更します。
このプロセスは手順を間違えるとWindowsの起動ができなくなるので手順に注意してください。
起動できなくなったらRAID構成に戻すと起動できるようになるかも・・・
こちらで紹介されている手順を行ってBIOS設定を変更します。
ポイントはBIOSで設定を変更する前にWindowsで行う処理があります。
- Windows Start Menuを右クリックして「コマンドプロンプト(管理者)」を起動します
- 「bcdedit /set {current} safeboot minimal」と入力してエンターを押下します
- 上記のコマンドが動かない場合は、「bcdedit /set safeboot minimal」を試してみて下さい
- コンピュータを再起動してBIOS設定に入ります。(BIOS設定に入るために押下するキーは機種によって異なります)
- SATA OperationモードをIDEやRAIDからAHCIに変更します(重ね重ね、表記は機種により異なります)
- 変更を保存して、BIOS設定を終了すると、Windowsがセーフモードで自動的に起動します
- Windowsスタートメニューを右クリックしてコマンドプロンプト(管理者)を選択します
- 「bcdedit /deletevalue {current} safeboot」を入力してエンターキーを押します
- 上記で別のコマンドを入力した場合は、「bcdedit /deletevalue safeboot」を試してみてください
- もう一度再起動するとAHCIドライバが有効になった状態でWindowsが自動的に起動するはずです
Secure Bootを無効にして、Boot SequenceをUbuntuインストールメディアが優先されるように変更する
ここまで来たらあとはいつもの手順です。
Ubuntuを起動して、Ubuntuをインストールする
この辺はいつもと同じ手順なので省略します。 初めてインストールする方は他のブログやウェブページなどを参考にしてください。
僕は「それ以外」を選択して、さっき作ったパーティションをマウントポイント/で初期化してそこにgrubブートローダを入れてます。
なんとかしてインターネットに接続して、パッケージをアップデートする
パッケージ(主にkernelバージョン)をアップデートするとWiFiが使えるようになります。
この時点ではWiFiが使えないので、USBテザリングや有線LAN接続をするなどしてインターネットに接続して、以下のコマンドをターミナルから実行します。
sudo apt update sudo apt upgrade
(必要に応じて)Linux Kernelをダウングレードする
GPUがハングしてクラッシュするバグが報告されています。
実際に5.3.0-53でも同様の事象が起きました。 5.3.0-45ならこの問題は起きないようなので、Linux Kernelをダウングレードします。
より新しいバージョンを利用していて既に修正されている場合はこれは必要ありません。
sudo apt install linux-image-5.3.0-45-generic linux-headers-5.3.0-45 linux-modules-extra-5.3.0-45-generic
grub-customizerでgrubメニューを変更して、再起動するといい感じに5.3.0-45が起動するはずです。
(必要に応じて)Mesaをアップグレードする
IntelliJ IDEAやgnome terminalを使用しているとGPUがハングしてクラッシュする問題が報告されています(主にスクロール時にハングが発生します)。
グラフィックスドライバの問題のようで、バージョンアップすると治るようです。
sudo add-apt-repository ppa:kisak/kisak-mesa sudo apt-get update sudo apt upgrade
(必要に応じて)IntelliJ IDEAの設定を変更する
IntelliJ IDEA 2020を使っていると、Mesaをアップグレードしてもクラッシュする問題が残ります。
https://youtrack.jetbrains.com/issue/JBR-2310
cat /proc/cpuinfo | grep microcode
の結果が150でないとこの問題があります。
% cat /proc/cpuinfo | grep microcode microcode : 0x78 microcode : 0x78 microcode : 0x78 microcode : 0x78 microcode : 0x78 microcode : 0x78 microcode : 0x78 microcode : 0x78
この場合は120なのでこの問題が発生します。
Macだとアップデートが提供されだしているようですが、Linuxだとまだっぽいので、Workaroundでしのぎます。 サムライズムさんのブログの回避策1と2両方適用していて、今の所クラッシュは起きていません。
-Xms4096m -Xmx4096m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true -Dawt.useSystemAAFontSettings=lcd -Dsun.tools.attach.tmp.only=true -XX:-TieredCompilation -XX:TieredStopAtLevel=1 -XX:+UnlockExperimentalVMOptions -XX:hashCode=0
今の所こんな感じ。
(必要に応じて) throttledをインストールする
CPUのサーマルスロットリングがかなりコンサバティブに設定されています。 CPUパワーが必要な処理をしている場合でも3GHzを超えたと思ったら2GHzを切るというような挙動をして十分なパワーを持続的に得られないような設定になっています。 もっとパワーを持続的に出したい場合はthrottledをインストールすると良いようです。
sudo apt install git build-essential python3-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev python3-venv python3-wheel git clone git@github.com:erpalma/throttled.git sudo ./throttled/install.sh sudo systemctl stop thermald.service sudo systemctl disable thermald.service sudo systemctl mask thermald.service
あとはお好みの設定をする
僕はこんな感じでアプリケーションとか設定を管理してます。
基本的にはこのスクリプトを適宜実行していけば設定とかが完了します。 リンクとかが古くなっているものがあるのでそれも随時直しながら・・・
github.com Xmonadの設定はこんな感じです。
残りの問題
Apple MagicTrackpad2の接続断がたまに発生する。
この方が追記で言及されている問題と同じ問題です。
Linux Kernelにパッチを当ててみましたが解決した印象は無いです。
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git cd ubuntu-bionic git checkout tags/Ubuntu-hwe-5.3.0-45.37_18.04.1
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index dea9cc65bf80..94fbdc4411f3 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -310,6 +310,15 @@ static const struct hid_device_id hid_battery_quirks[] = { { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI), HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGICMOUSE), + HID_BATTERY_QUIRK_IGNORE }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGICTRACKPAD), + HID_BATTERY_QUIRK_IGNORE }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, + USB_DEVICE_ID_APPLE_MAGICTRACKPAD2), + HID_BATTERY_QUIRK_IGNORE }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084), HID_BATTERY_QUIRK_IGNORE },
static int hidinput_setup_battery(struct hid_device *dev, unsigned report_type, struct hid_field *field) { return 0; }
hidinput_setup_batteryでどのデバイスに対しても何もしないというのも試していますが、問題は起き続けています。