ThinkPad T460sでArch LinuxとWinをデュアルブートしたい

  • このエントリーをはてなブックマークに追加

T460sのManjaro Linux環境を、操作ミスでデュアルブートしてたWindowsごと破壊してしまったので、WindowsとArch Linuxのデュアルブート環境をもう一度作ることにします。

コマンドを打つ時は何回か確認しようね。

環境

ThinkPad T460s

  • NVMe SSD 512GB
  • dGPU(930M)
  • 英語配列
  • Windows10もデュアルブートしたい

まあ、Windows環境も破壊してしまったので、いくらでもやり直しは効きます。

Windows側

Windows10をインストールする

インストールメディアを作る

Windows 10 のダウンロード

Windows10メディア作成ツールで作ったインストールメディアを使用し、インストールを行います。

また、このページを参考にテキストファイルをUSB直下に入れておきましょう。

CreatePartitions.txt

rem == CreatePartitions-UEFI.txt ==
rem == These commands are used with DiskPart to
rem    create five partitions
rem    for a UEFI/GPT-based PC.
rem    Adjust the partition sizes to fill the drive
rem    as necessary. ==
select disk 0
clean
convert gpt
rem == 1. Windows RE tools partition ===============
create partition primary size=300
format quick fs=ntfs label="Windows RE tools"
assign letter="T"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
rem == 2. System partition =========================
create partition efi size=260
rem    ** NOTE: For Advanced Format 4Kn drives,
rem               change this value to size = 260 ** 
format quick fs=fat32 label="System"
assign letter="S"
rem == 3. Microsoft Reserved (MSR) partition =======
create partition msr size=128
rem == 4. Windows partition ========================
rem ==    a. Create the Windows partition ==========
create partition primary 
rem ==    b. Create space for the recovery image ===
shrink minimum=15000
rem       ** NOTE: Update this size to match the size
rem                of the recovery image           **
rem ==    c. Prepare the Windows partition ========= 
format quick fs=ntfs label="Windows"
assign letter="W"
rem === 5. Recovery image partition ================
create partition primary
format quick fs=ntfs label="Recovery image"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit

 

ESPパーティションをいい感じにする

Windowsの初期設定で割り当てられる100MBではGRUBにとってすくないようで、インストールのときに文句を言われてしまうようなので、いい感じにしましょう。

  1. インストールメディアを起動し以下に変更
    • キーボードまたは入力方法:US
    • キーボードの種類:英語キーボード
  2. 次へ -> 「コンピューターを修復する」
  3. 「トラブルシューティング」->「コマンド プロンプト」
  4. 「DiskPart /s “(ドライブレター):\CreatePartitions.txt”」を実行
  5. 再起動し、パーティションをいじらずにインストール

Lenovo Vantageをインストール

Lenovo Vantage

ドライバーとか勝手に入れてくれたり更新とかしてくれます。すごく便利。他の日本メーカーも見習ってほしいですね。

高速スタートアップを無効化

高速スタートアップを無効化させます。

Windows 8 以上には高速スタートアップという新しい機能が含まれており、シャットダウンを実際に行う代わりにハイバネートをすることで起動時間を短縮します。Windows がハイバネートを行なっているときに、他の OS にデュアルブートしてファイルに変更を加えてしまうと、ファイルシステムのデータを消失してしまう可能性があります。ファイルシステムを共有する予定がない場合でも、EFI 環境では ESP が破壊されるおそれが存在します。- ArchWiki

だそうです。

  1. 「powercfg.cpl」を実行し、
  2. 左上の「電源ボタンの動作を選択する」
  3. 「現在利用可能ではない設定を変更します」
  4. 「高速スタートアップを有効にする(推奨)」のチェックボックスを外す。
  5. 「設定の保存」

RTC修正

これをしないと、時間がおかしくなるので修正

  1. 「regedit」を実行し、
  2. 「HKEY_LOCALMACHINE/SYSTEM/ControlSet001/Control/TimeZoneInformation」まで降りて
  3. 「新規」->「DWORD(32ビット)値」
    1. 名前「RealTimeIsUniversal」
    2. データ「1」

パーティション分け

Windows側でわけないと悲しいことになるので

  1. 「diskmgmt.msc」を実行し、
  2. 「Windows (C:)」からLinuxに割り当てる分だけボリュームを縮小
    1. 今回は200GB分の204,800MBを縮小しました。

Arch Linuxのインストールメディア作成

Windows側の設定も終わりなので、インストールメディアを作ります。

Arch Linux をダウンロード からisoをダウンロードします。

今回は、Rufusいうソフトを使ってインストールメディアを作ります。

注意点はddイメージモードで書き込まないといけないそうです。

その他の設定

細かい設定はお好みでどうぞ。

UEFI側の設定

SecureBootの無効化

SecureBootの無効化をせずともインストールはできますが、それをするほどの価値はないでしょう。

  1. Shiftキー押しながら再起動
  2. 「トラブルシューティング」
  3. 「詳細オプション」
  4. 「UEFI ファームウェアの設定」->「再起動」
  5. 「Security」
  6. 「Secure Boot」
  7. Secure Boot 「Enabled」->「Disabled」
  8. F10キー ->「Yes」

 

ArchLinuxをインストール

先程作ったArch Linuxのインストールメディアを指して起動させます。

今回の目的環境は以下の通り

  • NVMe SSDにインストール
  • インストール時はSSH経由
  • dGPUはめんどくさいのでパス
  • デスクトップ環境はGNOME-Shell
  • ブートローダーはGRUB

SSHにつなぐまで

無線もしくは有線で接続します。
有線接続の場合、wifi-menuは飛ばしてください。

# wifi-menu
# passwd #SSHで接続させるためのパスワード
# systemctl start sshd
# ip addr #IPアドレスを表示させる

ip addrを実行すると下記のように出力されると思います。
loがループバック・デバイス、enp0s31f6(enpなんちゃら)は有線デバイス、wlp4s0(wlpなんちゃら)は無線デバイスです。

そこら辺の話はCentOS 7のネットワーク名「enp1s0」という文字列の謎に迫る – Qiita が詳しいでしょう。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.8/24 brd 192.168.1.255 scope global noprefixroute wlp4s0
       valid_lft forever preferred_lft forever
    inet6 XX:XX:XX:XX:XX:XX:XX:XX/64 scope global dynamic mngtmpaddr
       valid_lft 13664sec preferred_lft 13664sec
    inet6 XX::XX:XX:XX:XX/64 scope link
       valid_lft forever preferred_lft forever

今回、無線で接続したためwlp4s0の項目のIPアドレスを探し、そこへ接続します。

ユーザ名はrootです。

パーティション編集

# fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CD886D7D-60C8-4401-A6E8-C060E1CE1789

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     616447    614400   300M Windows recovery environment
/dev/nvme0n1p2    616448    1148927    532480   260M EFI System
/dev/nvme0n1p3   1148928    1411071    262144   128M Microsoft reserved
/dev/nvme0n1p4   1411072  550064127 548653056 261.6G Microsoft basic data
/dev/nvme0n1p5 969494528 1000214527  30720000  14.7G Windows recovery environment

NVMe SSDだと/dev/nvme0n1と認識されるようです。
EFIシステムは/dev/nvme0n1p2です。

Linux用のパーティションを作成します。

# cgdisk /dev/nvme0n1

/dev/nvme0n1p6に割り当てられました。

XFSで作って再起動したら壊れたのでおとなしくext4にします。

# mkfs.ext4 /dev/nvme0n1p6

ベースシステムをインストール

ベースをインストールしていきます。

# mount /dev/nvme0n1p6 /mnt
# mkdir /mnt/boot/EFI -p
# mount /dev/nvme0n1p2 /mnt/boot/EFI
# nano /etc/pacman.d/mirrorlist #ミラーリストの一番上に日本を追加(執筆時現在筑波が調子悪いのでjaistで対応)
# pacstrap /mnt base base-devel
# genfstab -U -p /mnt >> /mnt/etc/fstab
# arch-chroot /mnt

基本設定

以下ごちゃごちゃ細かいのが続きます。基本的にインストールガイドと同じです。

# nano /etc/locale.gen
## >> Comment out
# >en_US.UTF-8 UTF-8
# >ja_JP.UTF-8 UTF-8

# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc
# echo JO3QMA-T460s > /etc/hostname
# nano /etc/hosts #ホストネーム記述
# passwd
# > Root Password

InitRAMfs

# mkinitcpio -p linux

マイクロコードアップデート

# pacman -S intel-ucode

他のブートローダーではこのあといろいろしないといけないみたいなんですけど、GRUBは勝手にしてくれるそうなので楽です。

ブートローダー

GRUBを使います。

# pacman -S dosfstools efibootmgr grub
# grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=arch_grub --recheck
# grub-mkconfig -o /boot/grub/grub.cfg

WARNING: Failed to connect to lvmetad. Falling back to device scanning.とエラー出るようですけどLVM使わないなら大丈夫みたいです。
この状態ではデュアルブートの設定がされていませんが、今は設定できないため後回しにします。
とりあえず、ここで、最低限のArch Linuxと呼べるような環境は作れました。あとはユーザ追加したりX追加したりです。

 

ネットワーク関係

NetworkManagerなんてクソだ!俺はnetctlにする!!という意気込みでやっていきます。
NetworkManagerには勝てなかったよ。。。

# pacman -S networkmanager
# systemctl enable NetworkManager.service 

 

ユーザ追加

# useradd -m -G wheel jo3qma
# passwd jo3qma ## ログイン用のパスワード
# export EDITOR=nano
# visudo
##以下をアンコメント
Defaults env_keep += "HOME"
%wheel ALL=(ALL) ALL

 

XとGNOME-Shellインストール

# pacman -S xorg-server xorg-apps xorg-xinit xorg-xclock xterm
# pacman -S xf86-video-intel
# pacman -S gnome gnome-initial-setup  gnome-extra chrome-gnome-shell gdm
# systemctl enable gdm
# pacman -S otf-ipafont

再起動

一旦chrootを抜けて再起動します。

# exit
# umount -R /mnt
# reboot

再起動し、GNOME-Shellが起動すればここまで成功です。

AURヘルパー

知らん間にYaourtが開発終了してた。
aurmanっていういい感じ物があるのでそれを使うことに。

# nano /etc/pacman.conf
## 以下を追記
[pnsft-pur]
SigLevel = Optional TrustAll
Server = https://osdn.net/projects/ponsfoot-aur/storage/pur/$arch
## 以下をアンコメント
[multilib]
Include = /etc/pacman.d/mirrorlist
$ sudo pacman --sync --refresh 
$ sudo pacman -S git base-devel
$ gpg --keyserver hkp://ipv4.pool.sks-keyservers.net:11371 --recv-key 465022E743D71E39
$ git clone https://aur.archlinux.org/aurman.git
$ cd aurman
$ makepkg -si

細かいもの

$ sudo nano /etc/locale.conf
## 以下に書き換え
LANG=ja_JP.UTF-8
LC_NUMERIC=ja_JP.UTF-8
LC_TIME=ja_JP.UTF-8
LC_MONETARY=ja_JP.UTF-8
LC_PAPER=ja_JP.UTF-8
LC_MEASUREMENT=ja_JP.UTF-8
$ aurman -S tlp
$ sudo systemctl enable tlp
$ sudo pacman -S lm_sensors
$ sudo sensors-detect
$ aurman -S thinkfan
$ sudo nano /etc/thinkfan.conf
## 以下を記述
tp_fan /proc/acpi/ibm/fan

hwmon /sys/devices/virtual/thermal/thermal_zone0/temp

(0,     0,      45)
(1,     43,     50)
(2,     48,     55)
(3,     53,     60)
(4,     58,     65)
(5,     63,     70)
(6,     68,     75)
(7,     73,     80)
(127,  78,     32767)
$ sudo systemctl enable thinkfan
$ sudo pacman -S bluez bluez-utils blueberry 
$ sudo systemctl enable bluetooth
$ aurman -S xdg-user-dirs-gtk google-chrome ttf-koruri 
$ sudo pacman -S gnome-screenshot alsa-utils gufw gthumb gimp firefox firefox-i18n-ja wget
$ LANG=C xdg-user-dirs-update

インプットメソッド

iBus1.5はクソらしいのでfcitxにします。uimでもいいかもしれません。

$ sudo pacman -S fcitx fcitx-mozc fcitx-configtool fcitx-im
$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'GTK/IMModule':<'fcitx'>}"
$ nano ~/.xprofile
## 以下を記述
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”
fcitx-autostart &

$ sudo nano /etc/environment
## 以下を追記
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”

これで再起動したら動くはず。

デュアルブート設定

# pacman -S os-prober
# os-prober
# chmod u+x /etc/grub.d/30_os-prober
# grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=arch_grub --recheck
# grub-mkconfig -o /boot/grub/grub.cfg

おわり

# reboot

再起動しておわり。
後は好きなように煮るなり焼くなりしてください。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す