25 August 2019

UEFIのWindows 10マシンにUbuntu 18.04を追加インストールしデュアルブート化する

Lenovo ThinkCentre M720qを購入し、1TB SATA HDDの全領域を用いているプリインストール版のWindows 10のパーティションを縮小し、Ubuntu 18.04を追加インストールした時の記録

UEFI BIOSでセキュア・ブートを無効化する

PC起動時にF1キー連打によりUEFI BIOS設定画面を表示し、Security - Secure Boot の設定ページでセキュア・ブートを有効から無効に変更する。

20190820-bios11-secureboot.jpg
Security - Secure Boot(この画面では初期値のEnabledになっているが、これをDisabledに変更する)

さらに、確認事項としてSATA HDDがSATAモードに設定されていることを再確認しておく。(RAIDの設定になっているときは、インストールを進められるかさらなる調査が必要)

20190820-bios04-sata.jpg
Devices - SATA Drive Setup(初期値ですでにSATAとなっている)

Google検索ではStartup設定のページにある「Compatibility Supported Module (CSM)」を有効化する必要があると書かれている資料も多いが、今回はUbuntu 18.04でEFI対応OSのため、ここは初期値の無効化のままインストール作業を進めてゆく

Windowsパーティションの縮小

現状は、Windows 10が1TB HDDの全領域を使っているため、これを必要最低限度の容量まで縮小する。

20190820-diskpart01.jpg
Windowsパーティション縮小前の状態

Windows 10のディスクの管理では、パーティションの縮小は可能だが、移動を行うことはできない。縮小したWindows 10のパーティションの後ろに、リカバリー・パーティションをくっつけるためには、パーティションの移動機能を持ったパーティション管理ソフトが必要。

今回は、EaseUS Partition Master (無償版)を用いて作業する

20190825-easeuspart.jpg

まずWindows 10パーティションの縮小を行い、PCが自動再起動したのちにリカバリー・パーティションを移動した。

Windows 10パーティションの容量は、既に使用済み容量として31GB、これにMicrosoftが推奨するWindows 10のアップデートに必要な空き容量32GBを足して、だいたい80GBを総容量と決めた。

20190825-partition01.jpg
Windowsパーティション縮小後の状態

Ubuntuインストール用の未フォーマットのパーティションを作成

メイン・メモリーと同容量程度のswapパーティションと、Ubuntuをインストールするための40GBのパーティションをWindows版「ディスクの管理」で作成した。

20190825-partition02.jpg
Ubuntuをインストールするための未フォーマットのパーティション作成後

Ubuntu 18.04セットアップ用のUSBで起動する

Ubuntu 18.04セットアップ用のisoファイルを、UNetbootinを用いてUSBメモリーに書き込み、それを用いて起動する

PCの起動時にF12連打してStartup Device Menuを表示させるか、F1連打で表示されるUEFI BIOS設定のStartup - Primary Boot SequenceでUSB HDDをWindows Boot Managerより上位に設定して再起動する

20190825-bootmenu.jpg
Startup Device Menu

UbuntuのLive版デスクトップが起動したら、右上の電源インジケータのメニューよりWifiの設定を行う。Lenovo ThinkCentre M720q TinyのIntel Dual Band Wireless-AC 3165はUbuntu 18.04にドライバが含まれているので、特に何もせずに認識が行われている。

ネットに接続する必要があるのは、セットアップ途中にネットから追加ソフトウエアなどが自動的にダウンロードされるため。

画面左上のセットアップ・プログラムを起動する

20190825-ubuntusetup01.jpg
「通常のインストール」を選択し、「サードパーティー製ソフトウエアをインストールする」を有効化する。

20190825-ubuntusetup02.jpg
インストールの種類(パーティションの設定・選択)では「それ以外」の手動設定を選択する

20190825-ubuntusetup03.jpg
パーティションの選択とgrubインストール先設定

「ブートローダをインストールするデバイス」は、SATA HDDの /dev/sda を選択する(EFI論理パーティションの/dev/sda1を選択するのではない)。

セットアップは、このPCがUEFI起動と自動的に認識し、UEFIに対応したインストールを行ってくれる。

UbuntuがUEFIのブートメニューに登録されていることを確認

Ubuntuインストールの完了後に再起動を行う。再起動時にF12キー連打によって表示されるStartup Device MenuにUbuntuが選択肢として加わっていれば正しくブートローダがインストールされている。

20190820-uefibootmenu-ubuntu.jpg
Ubuntuの起動メニューが追加されたUEFI Startup Device Menu

また、LinuxのGrubブートメニューはUEFI対応版がインストールされ、選択肢の最後にUEFI BIOS設定画面に移行する「System Setup」の選択肢が表示される

20190820-ubuntu-grub-uefi.jpg
UEFIでのGrubブートメニュー

Windows 10を起動して、UEFIのブートメニュー一覧を表示させてみる

C:\Windows\system32>bcdedit /enum firmware
 
ファームウェアのブート マネージャー
--------------------------------
identifier              {fwbootmgr}
displayorder            {a8496159-c6db-11e9-90ce-806e6f6e6963}
                        {bootmgr}
                        {a849615a-c6db-11e9-90ce-806e6f6e6963}
                        {c4903d7c-c3cd-11e9-90b3-806e6f6e6963}
                        {c4903d7d-c3cd-11e9-90b3-806e6f6e6963}
                        {fb328ac9-be9d-11e9-a789-806e6f6e6963}
                        {fb328aca-be9d-11e9-a789-806e6f6e6963}
timeout                 1
 
Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {current}
resumeobject            {b7fd96a9-be9d-11e9-8a04-98fa9b6acb1d}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 0
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {a8496159-c6db-11e9-90ce-806e6f6e6963}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\UBUNTU\SHIMX64.EFI
description             ubuntu
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {a849615a-c6db-11e9-90ce-806e6f6e6963}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\UBUNTU\GRUBX64.EFI
description             ubuntu
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {c4903d7c-c3cd-11e9-90b3-806e6f6e6963}
description             UEFI: PXE IPV4 Intel(R) Ethernet Connection (7) I219-V
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {c4903d7d-c3cd-11e9-90b3-806e6f6e6963}
description             UEFI: PXE IPV6 Intel(R) Ethernet Connection (7) I219-V
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {fb328ac9-be9d-11e9-a789-806e6f6e6963}
description             Generic Usb Device
 
ファームウェア アプリケーション (101fffff
--------------------------------
identifier              {fb328aca-be9d-11e9-a789-806e6f6e6963}
description             CD/DVD Device

Ubuntuインストール直後のこの設定では、GRUBX64.EFIが第1候補として自動起動される。2番目の選択肢はWindows 10ブートローダで、3番目にSHIMX64.EFIとなっている。

セキュアブートが有効化されている場合は、SHIMX64.EFIを用いる。SHIMX64.EFIはセキュリティ・キーをファームウエアに一時的に登録し、GRUBX64.EFIを呼び出すだけのプログラム。

次に、EFIパーティション内にSHIMX64.EFIやGRUBX64.EFIがどのように格納されているのか確認する。

C:\Windows\system32>diskpart
 
Microsoft DiskPart バージョン 10.0.18362.1
 
Copyright (C) Microsoft Corporation.
コンピューター: M720Q-WIN10
 
DISKPART> select disk 0
 
ディスク 0 が選択されました。
 
DISKPART> list volume
 
  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     C   Windows      NTFS   Partition     80 GB  正常         ブート
  Volume 1         WinRE_DRV    NTFS   Partition    995 MB  正常
  Volume 2                      RAW    Partition      8 GB  正常
  Volume 3                      RAW    Partition     40 GB  正常
  Volume 4         SYSTEM       FAT32  Partition    260 MB  正常         システム
 
DISKPART> select volume 4
 
ボリューム 4 が選択されました。
 
DISKPART> assign letter=z:
 
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
 
DISKPART> exit
 
DiskPart を終了しています...
 
C:\Windows\system32>z:
 
Z:\>dir /s
 ドライブ Z のボリューム ラベルは SYSTEM です
 ボリューム シリアル番号は 947F-F17C です
 
 Z:\ のディレクトリ
 
2019/08/25  09:36    <DIR>          EFI
2019/08/14  06:13    <DIR>          BOOT
               0 個のファイル                   0 バイト
 
 Z:\EFI のディレクトリ
 
2019/08/14  06:13    <DIR>          .
2019/08/14  06:13    <DIR>          ..
2019/08/14  06:13    <DIR>          Microsoft
2019/08/25  09:38    <DIR>          Boot
2019/08/25  09:38    <DIR>          ubuntu
               0 個のファイル                   0 バイト
 
~  省略 ~
 
 Z:\EFI\Boot のディレクトリ
 
2019/08/14  06:13    <DIR>          .
2019/08/14  06:13    <DIR>          ..
2015/05/14  09:49           379,992 LenovoBT.EFI
2012/06/18  10:24             1,523 License.txt
2012/08/06  13:49                74 ReadMe.txt
2019/08/25  09:38         1,213,032 fbx64.efi
2019/08/25  09:38         1,334,816 bootx64.efi
               5 個のファイル           2,929,437 バイト
 
 Z:\EFI\ubuntu のディレクトリ
 
2019/08/25  09:36    <DIR>          .
2019/08/25  09:36    <DIR>          ..
2019/08/25  09:36    <DIR>          fw
2019/08/25  09:36            75,992 fwupx64.efi
2019/08/25  09:38         1,116,024 grubx64.efi
2019/08/25  09:38               126 grub.cfg
2019/08/25  09:38         1,334,816 shimx64.efi
2019/08/25  09:38         1,269,496 mmx64.efi
2019/08/25  09:38               108 BOOTX64.CSV
               6 個のファイル           3,796,562 バイト
 
 Z:\EFI\ubuntu\fw のディレクトリ
 
2019/08/25  09:36    <DIR>          .
2019/08/25  09:36    <DIR>          ..
               0 個のファイル                   0 バイト
 
 Z:\BOOT のディレクトリ
 
2019/08/14  06:13    <DIR>          .
2019/08/14  06:13    <DIR>          ..
2019/03/18  20:46         3,170,304 BOOT.SDI
               1 個のファイル           3,170,304 バイト
 
C:\Windows\System32>diskpart
 
Microsoft DiskPart バージョン 10.0.18362.1
 
Copyright (C) Microsoft Corporation.
コンピューター: M720Q-WIN10
 
DISKPART> select disk 0
 
ディスク 0 が選択されました。
 
DISKPART> select volume 4
 
ボリューム 4 が選択されました。
 
DISKPART> remove letter=z:
 
DiskPart はドライブ文字またはマウント ポイントを正常に削除しました。

エラー修正

Ubuntu 18.04が正常に起動した後、ログファイル(/var/log/syslog)に大量のエラーが吐き出されているので、これを阻止するため起動時のカーネルパラメーターを変更する

/var/log/syslog に出力されている大量のエラーの一部
Aug 27 07:31:11 M720q-Ubuntu1804 kernel: [  346.199811] pcieport 0000:00:1c.0:  device [8086:a33d] error status/mask=00000001/00002000
Aug 27 07:31:11 M720q-Ubuntu1804 kernel: [  346.199816] pcieport 0000:00:1c.0:    [ 0] RxErr                 
Aug 27 07:32:01 M720q-Ubuntu1804 kernel: [  396.078634] pcieport 0000:00:1c.0: AER: Corrected error received: 0000:00:1c.0
Aug 27 07:32:01 M720q-Ubuntu1804 kernel: [  396.078650] pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
Aug 27 07:32:01 M720q-Ubuntu1804 kernel: [  396.078656] pcieport 0000:00:1c.0:   device [8086:a33d] error status/mask=00000001/00002000
Aug 27 07:32:01 M720q-Ubuntu1804 kernel: [  396.078660] pcieport 0000:00:1c.0:    [ 0] RxErr                 
Aug 27 07:32:07 M720q-Ubuntu1804 kernel: [  402.074646] pcieport 0000:00:1c.0: AER: Corrected error received: 0000:00:1c.0
Aug 27 07:32:07 M720q-Ubuntu1804 kernel: [  402.074658] pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)

PCI Expressの割り込み方法を、MSI(Message Signaled Interrupt)から従来のINTx(Legacy Interrupt Emulation)に変更するために、grub設定を書き換える

/etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'
 
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=nomsi"
GRUB_CMDLINE_LINUX=""
〜 以下省略〜

修正が終われば、コマンドラインで設定ファイルをシステムに反映する

$ sudo update-grub