VAIO Z で Arch LinuxとWindows 10をデュアルブートする

  • 12
    いいね
  • 8
    コメント

VAIO Z (クラムシェルモデルのZ1311です)を購入しました。
Arch Linuxが好きで、かつ、たまに再インストールするので、インストール手順を残しておこうと思います。
Arch自体の詳細なインストール手順は公式インストールガイドがしっかりしているので、そちらも参照してください。

VAIO Z

  • Z1311
  • Windows 10 Home
  • 英字配列
  • NVMe対応SSD 256GB
  • Core i7-6567U
  • メモリー16GB
  • 13.3型ワイド(16:9) WQHD 2560×1440

ArchのUSBインストールメディアを用意する

Archlinux - DownloadからISOファイルをダウンロードして
Archwiki - USB インストールメディアを参考にUSBインストールメディアを作成する。

Windowsでやること

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

これを無効化していないとArchもWindowsも起動しないという悲しいことになる。
"コントロールパネル"→"ハードウェアとサウンド"→"電源オプション"→"カバーを閉じたときの動作を選択"
から無効化する。

2016/09/06追記
oruminさんから、切らなくても両方起動しないことはないというコメントをいただきました。
自分で検証はしていないので、誰かしてくれるとうれしいなあと思います。

パーティション操作

Windowsからみた初期パーティションはboot, C, Recoveryとなっている。
以下の手順でパーティションに変更を加える。

  1. Windowsのディスクの管理からパーティションを縮小する
  2. 縮小して空いた部分をLinuxのroot用とhome用の二つに分割
  3. フォーマットはarchでext4にするので、このときにフォーマットはしない

この時の、サイズなどはご自由に。

UEFI設定

F3 or F4を押しながら電源ボタンを押すと、UEFIの画面が出るので、そこから"BIOSの設定"(実際BIOSではない)を起動
以下を行う

  • Secure Bootを無効化
  • USB Device Bootをenableへ
  • 起動順序を変更し、USB deviceを最上位に

2016/09/07
BIOSはもう存在しないのだという意見を発見したのでUEFIに変更
ただし、VAIO Zの画面上は"BIOS設定"という表記になっていることに注意

Archのインストール

USBインストールメディアからブートして行う。

パーティションの設定

ルート、ブート、ホームで計3つのパーティションを使用する。
なお、ホームとルートを分ける必要は無い。
ホームを分けておくと、Linuxがぶっ壊れた時などに、ホームはそのままで、システムの再インストールだけで済むという利点がある。

Archからみたパーティション

$ lsblk
nvme0n1
|-nvme0n1p1 260M   - EFI システムパーティション
|-nvme0n1p2 128M   - Windowsのなんかしらが入ってる気がする(Windowsのディスクの管理では表示されない)
|-nvme0n1p3 80GB   - Windows 10本体
|-nvme0n1p4 64GB   - Archのroot
|-nvme0n1p5 93.1GB - Archのhome
|-nvme0n1p6 1G     - リカバリ領域

ext4でフォーマットして、マウントしてやる。
このときbootパーティションはWindowsと共用する。(ブートローダがうまいことやってくれる)
デバイスファイルの番号を間違わないように注意。

$ mkfs.etx4 /dev/nvme0n1p4
$ mkfs.etx4 /dev/nvme0n1p5 
$ mount /dev/nvme0n1p4 /mnt
$ mkdir /mnt/boot /mnt/home
$ mount /dev/nvme0n1p1 /mnt/boot
$ mount /dev/nvme0n1p5 /mnt/home

システムのインストール

インストールガイドにならって、ディスクにArchをインストールしていく。

$ wifi-menu
$ timedatectl set-ntp true
$ vim /etc/pacman.d/mirrorlist
$ pacstrap /mnt base base-devel zsh git dialog wpa_supplicant
$ # `wifi-menu`を使おうとすると、`dialog`と`wpa_supplicant`が無いと言ってうまく動かないので、それらも入れてやる
$ genfstab -p /mnt >> /mnt/etc/fstab

ここからインストールしたシステムに切り替えて操作する。

$ arch-chroot /mnt 
$ echo computer_name > /etc/hostname
$ ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ vi /etc/locale.gen
$ locale-gen
$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ mkinitcpio -p linux
$ passwd

これで、arch自体のインストールは終了

ブートローダのインストール

grubを使おうと思っていたら、grubはNVMeに対応していないようでブート出来ないらしい。
ふれめも - ArchLinuxをインストールしたにならって、systemd-bootを使うことにする。
詳細はArchwiki - systemd-bootを参照のこと

ここで、systemd-bootは、systemdに同梱されているらしいので、既にインストール済ということになる。

$ bootctl --path=/boot install
$ vi /boot/loader/loader.conf
$  # default  arch
$  # timeout  1
$  # editor  0
$ cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries/
$ pacman -S intel-ucode
$  # Intelのマイクロコード修正もここで入れておく
$ blkid -s PARTUUID -o value /dev/nvme0n1p4 >> /boot/loader/entries/arch.conf
$  # 手打ちは大変なので、rootパーティションのPARTUUIDを追記しておく
$ vi /boot/loader/entries/arch.conf
$  # title   Arch Linux
$  # linux   /vmlinuz-linux
$  # initrd  /intel-ucode.img
$  # initrd  /initramfs-linux.img
$  # options root=PARTUUID=hogehoge rw 

2016/10/31追記
詳細はコメントを参照
optionsnoefiを追加しないとうまく起動しないようです。

これで、Arch linuxのインストールは終了なので、再起動する。

exit
umount -R /mnt
shutdown -h now

これでデュアルブートされているはず!

Arch Linuxの設定

インストール後の設定も毎回ググっているので、ついでに書いておくことにしました。
大体は、Archwiki - 一般的な推奨事項をなぞっていけばいいはずです。

時刻の設定

詳細はArchwiki - 時刻を参照
Windowsとデュアルブートする場合は少し面倒くさい。
Wikiには、

Linux を使う時はハードウェアクロックを UTC 時刻系に設定するのが有益です。

とあるので、これに従い、ハードウェアクロックをUTCにする。

$ timedatectl set-local-rtc false

大抵、このあたりで時計がずれていたりするので、ntpを使って同期し、ハードウェアクロックに書き込みます。
ついでに、ntpdも自動起動するようにしておきましょう。

$ pacman -S ntp
$ ntpd -gq
$ hwclock --systohc
$ systemctl enable ntpd.service

Linuxの設定はこれで大丈夫そうです。
しかし、Windowsはハードウェアクロックをlocaltimeとして読む込むらしいので、レジストリに手をいれる必要があります。
Windows で UTC を使うに従い、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversalの値をDWORD値の1に設定します
また、"日付と時刻"の設定から"時刻を自動的に設定する"をオフにします。
これをしないと、Windowsがハードウェアクロックを変更してしまうようです。

Wifiの自動接続

netctlに自動接続をしてもらいます。
既知のネットワークに自動で接続するArchwiki - netctlを参照します。

$ ip link
$  # 無線インターフェース名を確認します。
$  # wlp5s0みたいな名前のはずです
$ pacman -S wpa_actiond
$ systemctl enable netctl-auto@wlp5s0.service 

ユーザの追加

デフォルトではrootユーザしかないので、自分でユーザを作成します。
その前に、sudoも入っていないのでインストールしておくとよいです。

$ pacman -S sudo
$ useradd -m -g users -G wheel -s /usr/bin/zsh mopp
$ passwd mopp
$ visudo

yaourt

Archwiki - yaourtにある通り、/etc/pacman.confに以下を追加します。

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
$ pacman --sync --refresh yaourt

GUI周り

色々とごちゃごちゃしてるので、気が向いたら追記します。

$ yaourt -S xf86-video-intel xorg-server xorg-xinit xf86-input-libinput i3-wm i3lock i3status dmenu rxvt-unicode ttf-ricty

HiDPI

今回のVAIO Zは13.3インチなのにWQHD(2560×1440)なので少し文字が窮屈です。
目が悪い人だとむしろ作業しづらいはずですので、HiDPIの設定も必要になりますね。
Archwiki - HiDPIに色々書いてありますが、~/.XresourcesXft.dpi: 144と書くだけで十分でした。
DPIが96なのが基本のようだったので、1.5倍の144に設定しました。
Windowsのデフォルトは175%みたいなので、1.75倍の168のはずです。

今の所、大体うまく動いていますが、chrome上でuim-mozcを使用すると変換候補リストが入力欄に重なってしまったり、あらぬところに表示されたりするので不便です。
どうやらchromeのバグのようで、2016/08/31現在まで修正はされていないようです。
Issue 475718 - The coordinates send to input method on Hi-DPI Linux environment are not scaled

Bluetoothマウス

今まで、logicoolのunifying無線マウスを使っていましたが、PCをケースにしまうときにレシーバが引っかかって邪魔だなあと思っていたのでbluetoothマウスに乗り換えました。
Archkiwi - Bluetoothの通りにやれば全く問題ありませんでした。

$ yaourt -S bluez bluez-utils
$ systemctl start bluetooth
$ systemctl enable bluetooth
$ bluetoothctl
[bluetooth]# power on
[bluetooth]# scan on
[bluetooth]# agent on
[bluetooth]# pair E3:C4:E5:DF:20:64
[bluetooth]# trust E3:C4:E5:DF:20:64
[bluetooth]# connect E3:C4:E5:DF:20:64
[bluetooth]# quit
$ sudo nvim /etc/udev/rules.d/10-local.rules
  # # Set bluetooth power up
  # ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"

ただし、

  • Windowsをブートして、そっちでペアリングすると、Linuxでペアリングされない
  • たまに起動してもマウス操作出来ず、上記手順を繰り返す必要がある

ことがあるので、少し不便です。

2016/12/17追記
systemctl status bluetooth.serviceするとSap driver initialization failed.というメッセージが赤く出ていました。
このSAPドライバ、調べてみるとSIM Access Profileの略称みたいです。
このPCにSIMカードは入りませんし不要ですね。
なので、/etc/systemd/system/bluetooth.target.wants/bluetooth.serviceExecStartExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=sapとして、Sap driverを読み込まなくしてやるといいみたいです。
bluetoothd sap driver issue

英単語辞書

Vimの英単語補完機能()で必要な辞書を/usr/share/dict/wordsにインストールします。
入れておくと捗るのでおすすめです。

$ yaourt -S words

参考記事

Archwiki - USB インストールメディア
Archwiki - インストールガイド
Archwiki - systemd-boot
Archwiki - 一般的な推奨事項
ふれめも - ArchLinuxをインストールした