Dell new XPS 13 (9300) 2020年モデルを買ったのでUbuntuを入れてみた

Dell new XPS 13 (9300)を買いました

www.dell.com

こちらの32GBメモリモデルを最近買いました。4月下旬に購入して5月下旬に届いて大体2ヶ月ぐらい使っていました。 感想は最高っていう感じです。

 新MBP 13インチやSurface Book 3でも32GBメモリを積めるようになりましたが、購入時点では13インチのノートPCで32GBメモリ搭載可能なのはXPS 13 2 in 1とこのモデルのみだったはずです。

ちょっと大きい14インチで32GBが載るPCはあったんですけどね。

f:id:bitter_fox:20200521001924p:plain

20%オフクーポンとLINEショッピング経由で10%ポイント付与、Visa LINE Payカード決済による3%ポイント還元などで大体20万円弱でこのスペックのマシンが手に入るのはなかなかすごいと思います。

LINEショッピング

ec.line.me

Visa LINE Payカード

www.smbc-card.com

LINEショッピングのポイント還元は数カ月の遅延があるっぽいけど、本当に還元されるかなw ちなみに今の所還元されそうな気配はありません。

Ubuntuをインストールする

ここ数年はずっとMac機を使っていたので、久しぶりのWindows機です。

数年ぶりにWindows機にUbuntuをインストールしました。

軽く手順を残しておきます。

実際には途中紆余曲折しているのでこの手順と全く同じ手順でインストールしたわけではないので、ちゃんといかなかったら悪しからずです。

また、メーカーサポートなども受けられなくなるのでDo it at your own riskでお願いします。

 

基本的には

wiki.archlinux.org

を参考にしました。

Ubuntuインストールメディアを用意する

Windowsのセットアップが完了したらUbuntuをダウンロードしてきてインストールメディアを作成します。

最終的に、今回はUbuntu 18.04を利用しました。

Ubuntu 20.04も試したのですが、XmonadGnomeの相性が良くなくて諦めました。

Ubuntu 20.04ならOut of boxでWiFiに繋げられたので、Xmonadを使わないならUbuntu 20.04を使ったほうが良いです。

Ubuntu 18.04を利用する場合は有線でインターネットに接続する手段を用意しておいてください。

僕はスマホのUSBテザリングを用いました。

 

日本語Remixが好きなのでここからisoイメージをダウンロードします。

www.ubuntulinux.jp

インストールメディアにはUSBメモリを用いました。

 

インストールメディアの書き込みはLinuxLive USB Creatorを用いました。

www.linuxliveusb.com

パーティションを切る

Windows側で予めパーティションを切ります。

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で暗号化が解除されるのを待ちます。

RAIDIntel RSTを解除するAHCI

SSDRAIDで構築されてます。

このままだとUbuntuのインストールができないのでRAIDを解除してAHCIに変更します。

このプロセスは手順を間違えるとWindowsの起動ができなくなるので手順に注意してください。

起動できなくなったらRAID構成に戻すと起動できるようになるかも・・・

triplescomputers.com

こちらで紹介されている手順を行ってBIOS設定を変更します。

ポイントはBIOSで設定を変更する前にWindowsで行う処理があります。

  • Windows Start Menuを右クリックして「コマンドプロンプト(管理者)」を起動します
    • コマンドプロンプトが一覧にない場合、すでに最新のWindowsにバージョンアップされている可能性があります。その場合は、次の手順でコマンドプロンプトを起動します。
      • Startボタンをクリックして、cmdと入力します
      • 結果を右クリックして「管理者として実行」を選択します
  • 「bcdedit /set {current} safeboot minimal」と入力してエンターを押下します
  • 上記のコマンドが動かない場合は、「bcdedit /set safeboot minimal」を試してみて下さい
  • コンピュータを再起動してBIOS設定に入ります。(BIOS設定に入るために押下するキーは機種によって異なります)
  • SATA OperationモードをIDERAIDから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がハングしてクラッシュするバグが報告されています。

bugs.launchpad.net

 

実際に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が起動するはずです。 f:id:bitter_fox:20200809182736p:plain

(必要に応じて)Mesaをアップグレードする

IntelliJ IDEAやgnome terminalを使用しているとGPUがハングしてクラッシュする問題が報告されています(主にスクロール時にハングが発生します)。

gitlab.freedesktop.org

グラフィックスドライバの問題のようで、バージョンアップすると治るようです。

sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt-get update

sudo apt upgrade

(必要に応じて)IntelliJ IDEAの設定を変更する

IntelliJ IDEA 2020を使っていると、Mesaをアップグレードしてもクラッシュする問題が残ります。

support.samuraism.com

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をインストールすると良いようです。

github.com

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

基本的にはこのスクリプトを適宜実行していけば設定とかが完了します。 リンクとかが古くなっているものがあるのでそれも随時直しながら・・・

github.com Xmonadの設定はこんな感じです。

残りの問題

Apple MagicTrackpad2の接続断がたまに発生する。

blog.hanhans.net

この方が追記で言及されている問題と同じ問題です。

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でどのデバイスに対しても何もしないというのも試していますが、問題は起き続けています。