ぶうううん's Cafe

ぶうううんの気ままなブログです。

Surface LaptopをDual Boot環境にした。

 Surface Laptop購入当初からSurface LaptopをDual Bootで運用したいと考えていたのですが、数あるSurfaceの中でもLaptopは以前からキーボードが動かないという致命的な欠点を抱えていました。SurfaceシリーズでDual Bootを行うために、以前からSurfaceLinuxカーネルGitHub上で公開されていました。しかしながら、昨年それを使用してもLaptopの欠点は改善されませんでした。そのため、私はSurface LaptopでのDual Bootを諦めておりました。

 しかしながら、数ヶ月ぶりにカーネルの更新状況を見てみると、その欠点が改善されているではありませんか...! (issueを見る限り、今年1月に対応した模様)というわけでUbuntuWindowsのDual Boot環境を構築したので構築方法を載せておきます。Dual Bootしたい方は自己責任でどうぞ。といっても、基本的に該当GitHubに書いてありますが...。

 使用するカーネルは、Jake Day氏が公開しているカーネルです。また、用意するものとして、Ubuntu16.04 LTS(18.04LTSだと不具合多数の模様)のインストール用USB、外付けキーボードが必要です。ここで外付けキーボードが必要となる理由ですが、Ubuntuのインストール後にカーネルをインストールする為、それまではLaptopのキーボードが使用不可となるからです。

1. SecureBootの変更とBitLockerの無効化

 Windowsの設定→更新とセキュリティ→PCの起動をカスタマイズで再起動します。再起動後、UEFIが表示されるはずなので、Secure BootをMicrosoft & 3rd party CAに変更。必要に応じてBootの順番も変更してください。また、Windows上でBitLockerを無効化してください。

2. パーティションを作成

 Ubuntuのインストール用にパーティションを作成します。間違ってもWindows関連のパーティションを吹き飛ばさないように注意。

3. Ubuntuのインストール

 Windowsの設定→更新とセキュリティ→PCの起動をカスタマイズで再起動します。再起動後、Ubuntuのインストールメディアから起動します。インストール時は前述の通り、Laptopのキーボードが使用できません。ソフトウェアキーボードと外付けキーボードで頑張るしかありません。一時の辛抱です。インストール先は先程作成したパーティションです。フォーマットはext4

4. カーネルのインストール

 インターネットに接続し、カーネルをインストールします。aptを最新の状態にして、以下のコマンドを順に叩いていく。

$ sudo apt install git curl wget sed
$ git clone --depth 1 https://github.com/jakeday/linux-surface.git ~/linux-surface
$ cd ~/linux-surface
$ sudo sh setup.sh
$ sudo dpkg -i linux-headers-[VERSION].deb linux-image-[VERSION].deb linux-libc-dev-[VERSION].deb


 再起動すれば、Laptopのキーボードが動くようになります。Ubuntuの起動時にTPMのErrorが吐かれますが、気になる方はUEFIからEnable TPMをOFFにしてください。また、起動時に多少気になるホワイトノイズとポップノイズが発生します。これらは次のコマンドで小さくすることができます。完全に発生を抑えることは現在のところ難しい様です。

$ amixer -c 0 sset 'Auto-Mute Mode' Disabled && sudo alsactl store


 Windowsをデフォルトで使用する方は、起動時に行うOS選択の標準をWindowsに設定すると良いでしょう。まずはWindowsのブートマネージャーの名前を探します。私の場合は"Windows Boot Manager (on /dev/nvme0n1p1)"でした。

$ cat /boot/grub/grub.cfg


続いてgrubを編集します。

$ sudo nano /etc/default/grub

grubを開き、

GRUB_DEFAULT=0

から

GRUB_DEFAULT='Windows Boot Manager (on /dev/nvme0n1p1)'

に変更します。ここでは私のブートマネージャーを例にしていますが、もしかしたら個人個人で変わっている可能性もあるので' 'の中はそれぞれのものに変更してください。

 OSの選択時間を変更したい方は

GRUB_TIMEOUT=10

のようにGRUB_TIMEOUTの値を変更すると良いでしょう。私は10秒に設定しています。

 grubの編集後は

$ sudo update-grub

を忘れずに実行して設定変更を適用してください。

 これで完成となります。気になる点も多少ありますが、これだけ使えれば個人的に満足です。あとは使いやすくカスタマイズしたり、好みの開発環境を整えましょう。Mr. Jake Dayに感謝します。



引用元

https://github.com/jakeday/linux-surface
https://github.com/jakeday/linux-surface/issues/5
https://github.com/jakeday/linux-surface/issues/101
https://github.com/jakeday/linux-surface/issues/344
https://www.milkmemo.com/entry/surface_ubuntu_install
https://robotics4society.com/2016/06/15/ubuntu-boot/