😎

ArchLinux + KDE Plasmaでイケてる機械学習環境を作りたい

2024/06/11に公開

背景

ローリングリリースなOSで機械学習(深層学習)環境を作りたいと思い四苦八苦したので、自分用の備忘録ついでに物好きな方用に公開。
Garuda LinuxやAlter Linuxなども試したが、インストール自体は簡単なもののpacman -Syuでエラー吐いたり不愉快な挙動をすることもあったため自力で構築することに。
デスクトップ環境はKWinとDolphinが好みだったのでKDE Plasmaを採用した。
今回はX11とWaylandでちゃんとデスクトップ環境が使える状態まで行う。
デスクトップやブートローダーのカスタマイズは次回の予定。
Waylandで動くようにしたものの明らかにX11のほうが安定しているけど気にしない

ハードウェア構成

  • CPU: Core i7-13700K
  • RAM: 32GB
  • GPU: NVIDIA RTX 3090

インストールメディアから行う設定

ネットワークの確認

ping archlinux.jp

無線LANで接続

iwctl
[iwd]# device list
[iwd]# station [deviceName(wlan0など)] get-networks
[iwd]# station [deviceName] connect [WifiName]
[iwd]# exit

ミラーサーバの設定

reflector --country Japan --age 12 --protocol http,https --sort rate --save /etc/pacman.d/mirrorlist

archinstall

pacman -Sy archinstall
archinstall

設定

  • Mirrors: Japan
  • Disk configuration: Use a best-effort default partition layout
    • ext4 → no
  • Bootloader: Grub
  • Root password: 何かしら入力
  • User account: 自分のユーザを作成
  • Profile
    • Type: Desktop → KDE
    • Graphics driver: Nvidia (open kernel module for newer GPUs, Turing+)
  • Audio: Pipewire
  • Additional packages: firefox zsh zsh-completions
  • Network configuration: Use NetworkManager
  • Timezone: Asia/Tokyo
  • Optional repositories: multilib
    上記の設定でインストール。
    btrfsだとWayland環境が全然動かなかったためext4を選択している。
    (たまにインストール失敗するけど設定を/に保存したり、再度行うと問題なくできた)

ロケールの設定

vim /etc/locale.gen

en_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8をコメントアウト。 → locale-gen
日本語キーボードの場合以下を設定。

echo KEYMAP=jp106 > /etc/vconsole.conf

コンソール設定

vim /etc/pacman.conf

# Misc options部分に以下を記載。

Color
CheckSpace
ParallelDownloads = 5
ILoveCandy

コンピュータ名の設定

/etc/hostsに以下を記載。
archinstallのデフォルト設定では、[myhostname]=archlinux

127.0.0.1 localhost
::1       localhost
127.0.1.1 [myhostname].localdomain [myhostname]

GRUB + rEFInd

pacman -S dosfstools os-prober mtools refind
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB_UEFI
grub-mkconfig -o /boot/grub/grub.cfg
refind-install

プロセッサ用マイクロコード

Intel

pacman -S intel-ucode
grub-mkconfig -o /boot/grub/grub.cfg

AMD

pacman -S amd-ucode
grub-mkconfig -o /boot/grub/grub.cfg

ネットワーク設定

有線の場合

ip aコマンドでアダプタのデバイス名(enpxxxxみたいなの)を確認した後、

systemctl enable dhcpcd@[デバイス名].service

無線の場合

systemctl enable NetworkManager

再起動

exitreboot

再起動後に行う設定

  • NVIDIAの設定が終わっていないので、X11で起動する
  • ログインしたらネットワークに接続する

アップデート

pacman -Syu

OpenSSH

インストールと設定の反映

pacman -Syu openssh
systemctl enable sshd
systemctl restart sshd

IPアドレスの確認

ip a

(セキュリティ的によろしくないが)これでroot@[ip_adress]で別のPCからログイン可能。

AURヘルパーのインストール

yayの場合

sudo pacman -S --needed git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ../
rm -rf yay

yayの更新

yay -Syu

paruの場合

sudo pacman -S --needed git rustup
rustup default stable
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
cd ../
rm -rf paru

シェルの設定

chsh -s $(which zsh)

NVIDIA設定

grub設定

# vim /etc/default/grub
-GRUB_TIMEOUT=5
+GRUB_TIMEOUT=1
-GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
+GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nvidia-drm.modeset=1"
grub-mkconfig -o /boot/grub/grub.cfg

mkinitcpio設定

# vim /etc/mkinitcpio.conf
-MODULES=()
+MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
mkinitcpio -p linux

pacman hook

mkdir /etc/pacman.d/hooks
vim /etc/pacman.d/hooks/nvidia.hook

以下をコピペ

[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
# Uncomment the installed NVIDIA package
#Target=nvidia
Target=nvidia-open
#Target=nvidia-lts
# If running a different kernel, modify below to match
Target=linux

[Action]
Description=Updating NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'

これでWayland環境でも使用可能になるはず。

GUI環境の設定

日本語環境

sudo pacman -S fcitx5-mozc fcitx5-configtool fcitx5-im
sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

fcitxの設定

# /etc/environment
...
↓以下の3行を、ファイル中に追記する。
export XMODIFIERS=@im=fcitx
# export GTK_IM_MODULE=fcitx
# export QT_IM_MODULE=fcitx

Bluetooth

sudo pacman -S bluez bluez-utils bluedevil
sudo systemctl enable bluetooth

参考文献

[1] https://qiita.com/Hayatann/items/09c2fee81fcb88d365c8
[2] https://qiita.com/ekzemplaro/items/6714469c1fb1ae06b80f
[3] https://blog.livewing.net/install-arch-linux-2021
[4] https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744

Discussion