Arch Linux を Windowsマシンに同居させた時のメモ
メモです
環境によってこの通りうまくいくこともいかないこともありますのでご注意ください。メモです。
前提:
- 有線
- 別にLinux機がある
- グラボはNvidia
環境と方針
今回の環境を作るにあたっての佳境と方針。
Windowsとの同居を慎重に
変なことしないように一応復習しておくとよい。
パーティションの方針
とりあえず、デカイドライブ積んでるわけでもないので、rootのみのシングルパーティションで良かろ。
空き地に入れる。
トラブった時のコピペ
さすがに検索するのが辛いので、オンラインにテキストを簡単に貼れるサービスで共有する
command |& curl -F 'f:1=<-' ix.io
環境(後出し)
# uname --all
Linux kyoh86-desktop 5.11.11-zen1-1-zen #1 ZEN SMP PREEMPT Tue, 30 Mar 2021 14:10:21 +0000 x86_64 GNU/Linux
# lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse Device 24: Function 7
01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse Switch Upstream
02:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
03:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
04:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
04:00.1 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
04:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
06:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
07:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1)
07:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
08:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
09:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
09:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
09:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
09:00.4 Audio device: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller
USBインストールメディアを作る
作るときはLinuxで作るのが楽
差して lsblk
を叩くと、パスがわかる。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.9G 0 disk
├─sda1 8:1 1 623M 0 part /run/media/kyoh86/ARCH_201909
└─sda2 8:2 1 64M 0 part
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot
└─nvme0n1p2 259:2 0 476.4G 0 part
└─volume 254:0 0 476.4G 0 crypt
└─volume-root 254:1 0 476.4G 0 lvm /
まずアンマウントする
$ umount /run/media/kyoh86/ARCH_201909
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.9G 0 disk
├─sda1 8:1 1 623M 0 part
└─sda2 8:2 1 64M 0 part
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot
└─nvme0n1p2 259:2 0 476.4G 0 part
└─volume 254:0 0 476.4G 0 crypt
└─volume-root 254:1 0 476.4G 0 lvm /
imageをダウンロードしておく
dd
で焼き込む
$ sudo su -
[sudo] password for kyoh86:
[root@kyoh86-thinkpad ~]# dd bs=4M if=/home/kyoh86/Downloads/archlinux-2021.04.01-x86_64.iso of=/dev/sda status=progress && sync
187+1 レコード入力
187+1 レコード出力
786771968 bytes (787 MB, 750 MiB) copied, 0.303474 s, 2.6 GB/s
BIOS設定をする
BIOSでセキュアブートをOFFにする
OSが正常に起動しているならこちらの手順でBIOSを起動させることがオススメです。
Windowsメニュー歯車アイコンをクリックして、設定を開き「更新とセキュリティ」を選択します。
左サイドメニューから「回復」を選択し、右画面にある「PCの起動をカスタマイズする」項目の「今すぐ再起動」を選択します。
再起動後、オプションの選択が起動します。「トラブルシューティング」を選択してください。ここはマウスもキーボードも動きます。
「詳細オプション」を選択します。
「UEFI ファームウェアの設定」を選択します。
「再起動」を選択します。
これで再起動後にBIOSが起動します。
ASUSのUEFIだと、詳細設定→起動タブに設定項目があった``
Windows 10 の高速スタートアップもOFFにする
「電源オプション」の「電源の追加設定」から、設定を変更します。
高速スタートアップとは、Windows の起動を高速化するための機能です。
Windows の標準設定では有効になっています。
- 「スタート」ボタンを右クリックし、表示されるメニューから「電源オプション」をクリックします。
- 「電源オプション」をクリック
- 「電源とスリープ」が表示されます。
- 画面右、または画面下の「電源の追加設定」をクリックします。
- 「電源の追加設定」
- アドバイス
- 「電源プランの選択またはカスタマイズ」が表示された場合は、次の手順に進みます。
- 「電源オプション」が表示されます。
- 「電源ボタンの動作を選択する」をクリックします。
- 「電源ボタンの動作を選択する」をクリック
- 「システム設定」が表示されます。
- 「現在利用可能ではない設定を変更します」をクリックします。
- 「現在利用可能ではない設定を変更します」をクリック
- 「シャットダウン設定」にある、「高速スタートアップを有効にする(推奨)」をクリックし、チェックを外します。
- 「高速スタートアップを有効にする(推奨)」をクリックし、チェックを外す
- 「変更の保存」ボタンをクリックします。
- 「変更の保存」ボタンをクリック
- 「電源オプション」に戻ります。
- 「×」ボタンをクリックし、画面を閉じます。
ディスクパーティションを空ける
方法1:Windows 10の内蔵ディスク管理ツールでパーティションサイズを変更
もちろん、Windows 10の内蔵ディスク管理ツールでパーティションを拡張/縮小することができます。「コンピュータ」>「管理」を順次にクリックして、ポップアップウィンドウの左側のメニューで「ディスクの管理」を選択して、次のようなハードディスク状態が見えます。EaseUS Partition Master
そして、縮小したいパーティションを右クリックし、「ボリュームの縮小」解放したいディスクの容量を入力してください。
Boot可能ディスクにUSBドライブを追加する
UEFIに入って設定しておく。
やらないとUSBのLinuxインストールイメージから起動できない
install環境のネット接続を確認
# ping archlinux.jp
通ってた。やっぱり有線できると本当に楽。
NTP
# timedatectl status
...
System clock synchronized: no
NTP service: inactive
...
NTP有効にする。面倒くさいので。
# timedatectl set-ntp true
# timedatectl status
...
System clock synchronized: yes
NTP service: active
...
## パーティションを切る
```console
# parted
...
(parted) print free
...
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 106MB 105MB fat32 EFI system partition boot, esp
2 106MB 123MB 16.8MB Microsoft reserved partition msftres
3 123MB 240GB 240GB ntfs Basic data partition msftdata
240GB 480GB 240GB Free Space
5 480GB 480GB 566MB ntfs hidden, diag
480GB 480GB 1908kB Free Space
あってそう。コマイのみれないとパーティションを切れないので、fdisk
# fdisk /dev/sda
...
Command (m for help): F
Unpartitioned space /dev/sda: 223.24GiB, 239707430400 bytes, 468178575 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Start End Sectors Size
468418560 936593407 468174848 223.2G
937699328 937703054 3727 1.8M
パーティションの方針
とりあえず、デカイドライブ積んでるわけでもないので、rootのみのシングルパーティションで良かろ。
空き地に入れる。
実際作る
数字ミスるのいやなので cfdisk
でパーティションを作る
Linux root (arm-64)で。
ファイルシステムは未だext4でいいや。作ったパーティションを初期化。
# mkfs.ext4 /dev/sda4
インストール対象デバイスのマウント
EFIと合わせてマウントしていく。
当然さっき作ったパーティション (/dev/sda4
) を指定するし、efiはどのパーティションか (/dev/sda1
) 間違えないように注意。
# mount /dev/sda4 /mnt
# mkdir /mnt/efi
# mount /dev/sda1 /mnt/efi
インストール
~どうせならlinux -zenカーネルをインストールしちゃおう…~ : Nvidia周りがおかしくなるのでおとなしくカスタムカーネルじゃなくて通常のカーネルを使う
# pacstrap /mnt base linux linux-firmware vim
fstabしてroot切り替え。
# genfstab -U /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
諸々システム設定
Timezone設定
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロックがUTCであることを確認
timedatectl status
...
Time zone: UTC (UTC, +0000)
時刻合わせを設定
# hwclock --systohc
日本語化の準備
/etc/locale.gen の ja-JP.UTF-8
と en_US.UTF-8
のコメントアウトを外して、Localeの生成
# grep /etc/locale.gen -ve '^#'
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
# locale-gen
/etc/locale.conf ~を日本語に~ するとConsole Fontsに日本語がなくて豆腐ばかりになるので、ここではen_US.UTF-8にしておく
echo "LANG=en_US.UTF-8" > /etc/locale.conf
ホスト名
適当
echo "kyoh86-desktop" > /etc/hostname
/etc/hosts にも localhostと合わせて設定しておく
127.0.0.1 localhost
::1 localhost
127.0.1.1 kyoh86-desktop.localdomain kyoh86-desktop
ルートパスワードの設定
# pacman -S sudo
# passwd
ブートローダーに設定
Windows側のEFIに放り込んでいく。ともあれブートローダー周りのあれこれをインストールする
# pacman -S amd-ucode dosfstools efibootmgr grub
grubをbootに放り込む
# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=arch_grub --recheck --debug
windowsをgrubに認識させる
# pacman -S os-prober
# grub-mkconfig -o /boot/grub/grub.cfg
再起動して、Arch LinuxとWindowsともにBootの選択肢に出てきて、実際どっちでも起動できることを確認。
# exit
# reboot
systemd-networkdでDHCPの設定
Network I/Fの名前を確認する
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP>...
...
2: enp3s0: <BROADCAST,MULTICAST> mtu ...
...
/etc/systemd/network/ に適当な設定ファイルを作って、確認したI/FにMatchするときのDHCP設定を書く
/etc/systemd/network/20-wired.network
[Match]
Name=enp3s0
[Network]
DHCP=ipv4
サービスを有効化
# systemctl enable systemd-networkd
DNSの設定
/etc/resolv.conf
に書き込んでおく。ルーターに解決させる場合はルーターのIPと、まあGoogleDNSで良いだろう。
nameserver 192.168.11.1
nameserver 8.8.8.8
グラフィック関連
WMにしろDEにしろ、Fontだのなんだのに依存するのでいいのを入れておく。
# sudo pacman -S noto-fonts noto-fonts-emoji nvidia nvidia-utils
カーネルパラメータをいじる
ref: https://wiki.archlinux.jp/index.php/カーネルパラメータ#GRUB
目的:
- nvidiaを有効に
- nouveau(nvidia互換のfree driver)を無効に
-
/etc/default/grub
を開きカーネルオプションをGRUB_CMDLINE_LINUX_DEFAULT
に以下の2つを追加:
nvidia-drm.modeset=1 nouveau.modeset=0
- grub.cfg ファイルを自動生成する
grub-mkconfig -o /boot/grub/grub.cfg
nouveauをblocklistに入れる
/etc/modprobe.d/
に適当な設定ファイルを作って、blacklist入りさせる。
/etc/modprobe.d/ignore-nouveau.conf
blacklist nouveau
options nouveau modeset=0
nvidiaを起動時のDRMカーネルモードに設定しておく
起動時点で読んでおいてもらわんと、Display Managerなんかで使う場合に読み込まれてなくて苦労したりするので
/etc/mkinitcpio.conf
...
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
...
を書いて、
# mkinitcpio -p linux
pacman hook
nvidia をアップグレードした後に initramfs をアップデートすることを忘れないように、以下のような pacman フックを書く
/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
[Action]
Depends=mkinitcpio
When=PostTransaction
Exec=/usr/bin/mkinitcpio -P
今回はnvidiaドライバを使ってるので、Targetもnvidia
rebootしてモジュール確認
rebootして、
# lsmod | grep -e 'nvidia\|nouveau'
nvidiaは読み込まれていて、nouveauは読み込まれてないはず
DE
GNOMEでいいや
# pacman -S jack2 gnome
HiDPI対応
HiDPIの場合、ユーザー自身とログイン時のユーザー(gdm)のscale-factorを2倍にしておく。
# sudo su - gdm -s /bin/bash
$ dbus-launch gsettings set org.gnome.desktop.interface scaling-factor 2
$ exit
ユーザ作成
# useradd -m kyoh86
# passwd kyoh86
sudoerに入れておく
# EDITOR=/usr/bin/vim visudo
して、以下を追記
kyoh86 ALL=(ALL) ALL
exitしてkyoh86でログインし直す
GDM自動起動
# systemctl enable gdm
# reboot
これでGDMが上手く動かないときは、tty2に切り替え (Shift+Alt+F2
) したりしてjournalみて調べる羽目になる。辛い。
setup dotfiles
github.com/kyoh86/dotfiles で自分用環境をセットアップする
Discussion