Arch Linux インストール備忘録 for DELL G15 5515 ryzen edition
この記事は何?
DELL G15 5515 ryzen edition に Arch Linux をインストールする際の備忘録。
ゆくゆくは、この記事だけで、一通りの設定が完了できる記事にするつもりではあるが、
現時点では、次項で紹介する動画の補足だけに留めておく。
余談ではあるが、私の G15 はかなり強引な方法で、キーボードをUS配列の物に換装してある。
願わくば、日本からでもUS配列のキーボードを発注できるようになって欲しい。
Lenovo製品はもうこりごりだ。
本記事の前提
本記事では、下記の動画に沿って構築された環境で作業する事を前提としている。
この動画では、下記の項目についての基本的な設定を行い、i3-gaps が起動する所までを紹介している。
- GRUB2
- BTRFS
- zramd
- timeshift
- lightdm-slick-greeter
- i3-gaps
- Xfce4
日本語環境
さしあたっては、日本語を扱える様にしないと、
この記事も文字化けだらけで読めないので、日本語環境の設定から始めよう。
noto-fonts のインストール
$ sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-hack-nerd
fcitx5 のインストール
$ sudo pacman -S fcitx5 fcitx5-mozc fcitx5-configtool fcitx5-gtk fcitx5-qt
.xprofile に入力メソッド関連の環境変数を定義する
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS='@im=fcitx'
i3 起動時に fcitx5 が起動する様にする
# fcitx5
exec --no-startup-id fcitx5 -d
デスクトップ起動時に自動起動する様にする
※この工程は i3 の config に fcitx5 を起動させる設定している場合は不要であるが、他のデスクトップ環境では必要になるものだと思われるので、記載している。
不要ならば、飛ばしてしまってもかまわない。
$ cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/
入力メソッドに mozc を追加する
$ fcitx5-configtool
<入力メソッドに mozc を追加し適用して閉じる>
時刻関連
NTPサーバを ntp.nict.jp に変更
$ sudo echo 'NTP=ntp.nict.jp' >> /etc/systemd/timesyncd.conf
NTPサーバ との同期の有効化
$ sudo timedatectl set-ntp true
設定の確認
$ timedatectl status
Windows とデュアルブートしている場合の設定
Windows は hwclock をローカルタイムで上書きしてしまうため、Linux の挙動をそちらに合わせる様にする。
ハードウェアクロックにローカルタイムを用いる
$ sudo hwclock --systohc --localtime --verbose
multilib の有効化
multilib レポジトリが不要な人はこの工程を飛ばしてしまってもかまわない。
pacman.conf の編集
下記の2行をコメントアウトする。
# 変更前
#[multilib]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
パッケージリストの更新
下記のコマンドを実行する。
$ sudo pacman -Syy
multilib パッケージの一覧表示
適切にパッケージリストが更新された事を下記のコマンドで確認する。
$ pacman -Sl multilib
パッケージリストが表示される事を確認する。
pacman-contrib
pactree などの一部の機能が pacman-contrib というパッケージに別れた為、インストールしている。
$ sudo pacman -S pacman-contrib
また、下記の pacman の wiki には、pacman で運用するにあたって注意しなければならない事も解説されているので、一読する事をおすすめする。
keyboard
キーボードの挙動設定
ここでキーボードの Caps-Lock を Ctrl に変更したりする。
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us"
Option "XkbModel" "pc104"
Option "XkbOptions" "ctrl:nocaps"
EndSection
touchpad
タッチパッドの挙動設定
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Option "Tapping" "on"
Option "TappingButtonMap" "lrm"
Option "DiableWhileTyping" "on"
Option "ClickMethod" "clickfinger"
Option "ScrollMethod" "twofinger"
Option "NaturalScrolling" "on"
Option "TwoFingerScrolling" "on"
Option "HorizontalScrolling" "on"
Option "TappingDrag" "on"
Option "TappingDragLock" "off"
EndSection
Nvidia driver
プロプライエタリなドライバをインストールし、
既存の noveau モジュールを利用しない様に設定する。
nvidia ドライバのインストール
$ sudo pacman -S nvidia nvidia-utils nvidia-settings nvtop
HOOKS から kms を削除し noveau モジュールを読み込まない様にする
# 削除前
# HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block filesystems fsck)
HOOKS=(base udev autodetect modconf keyboard keymap consolefont block filesystems fsck)
初期RAM を再作成して再起動する
$ sudo mkcpioinit -p linux
$ reboot
Display brightness control
ディスプレイの明るさ調整をキーボードから行える様に設定する。
この記事では一番簡単な light コマンドを用いる。
light コマンドのインストール
$ sudo pacman -S light
light コマンドの設定
ディレクトリ作成
$ mkdir -p ~/.config/light/targets/sysfs/backlight/auto/
最小光度の定義
$ echo 5 > ~/.config/light/targets/sysfs/backlight/auto/minimum
udev ルールの定義
起動時に chmod コマンドを実行し、
一般ユーザに brightness ファイルへの書き込みを許可する。
# Change other users permittion for control display brightness.
# %k: DEVICE'S KERNEL NAME(amdgpu_l0 or nvidia_wmi_ec_backlight...)
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod o+w /sys/class/backlight/%k/brightness"
udev - ArchWiki
udev ルールの書き方など
ユーザを video グループに追加
$ sudo gpasswd --add $USER video
カーネルパラメータ変更
acpi_backlight=native を
GRUB_CMDLINE_LINUX_DEFAULT に追加する。
# 変更前
# GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet acpi_backlight=native"
現在のカーネルパラメータを確認する場合は下記のコマンドを実行する。
$ cat /proc/cmdline
場合によっては、下記のパラメータも追記する必要がある模様。
この辺りは、kernel のバージョン次第で、ちょくちょく変わる様なので、都度調べる事をオススメする。
nvidia_wmi_ec_backlight.force=1
# 変更前
# GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet acpi_backlight=native nvidia_wmi_ec_backlight.force=1"
GRUB 設定ファイル再作成
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
i3 キーバインド設定
# Control display brightness
bindsym XF86MonBrightnessUp exec --no-startup-id light -A 5
bindsym XF86MonBrightnessDown exec --no-startup-id light -U 5
再起動
$ reboot
再起動したら、ログインし、キーボードから、ディスプレイの明るさ調整を行える事を確認する。
トラブルシューティング
strace のインストール
$ sudo pacman -S strace
strace を用いて light コマンドをトレースする
$ strace light -U 50
どこで何に失敗しているかが判るはずなので、あとは頑張れ。
スクリーンショット
この記事では xfce4-screenshooter を用いる事とする。
xfce4-screenshooter のインストール
$ sudo pacman -S xfce4-screenshooter
PrintScreen キーで xfce4-screenshooter が起動する様にする
# Screenshot
bindsym --release Print exec --no-startup-id xfce4-screenshooter
計算機
この記事では galculator を用いる事とする
galculator のインストール
$ sudo pacman -S galculator
計算機キーで galculator が起動する様にする
# Launch galculator from keyboard
bindsym XF86Calculator exec --no-startup-id galculator
WYSIWYG テキストエディタ
この記事では mousepad を利用する事とする。
私は WYSIWYG をたまに使うので、インストールしているが、
不要な人はこの工程を飛ばしてしまってもかまわない。
mousepad のインストール
$ sudo pacman -S mousepad
Libre office
office ソフトがないと何かと不便という人は Libre office をインストールすると良いかもしれない。
もちろん、他の製品でも良いのだが、個人的には Libre office をお勧めしたいので、そうする事にする。
2023/04/24 現在では、下記の2つのブランチが存在している。
- libreoffice-fresh
- libreoffice-still
上記のリリースノートを読んで判断して貰うのが本来だが、大まかな違いとしては下記の表の通りだ。
branch | pros | cons |
---|---|---|
libreoffice-fresh | 新しい機能を利用できる | バグが潜在している可能性が比較的高い |
libreoffice-still | 企業利用に耐えうる実績がある | 新しい機能の利用はできない |
libreoffice-fresh のインストール
$ sudo pacman -S libreoffice-fresh libreoffice-fresh-ja
libreoffice-fresh-ja は日本語の言語パッケージ
libreoffice-still のインストール
$ sudo pacman -S libreoffice-still libreoffice-still-ja
どちらをインストールしても構わないと思う。
仮に fresh をインストールしてバグに悩まされたとしても、下記を参考にアンインストールを行えば良い。
Microsoft Edge
もしかしたら、何らかの事情で Microsoft Edge を使いたい人もいるかもしれない。
Arch Linux では下記の3種類の選択肢がある。
- microsoft-edge-dev-bin
- microsoft-edge-beta-bin
- microsoft-edge-stable-bin
dev が最も更新頻度が高く、beta は中間、stable は最も安定している模様。
Ubuntu パッケージの紹介ページではあるが、これを参考に自分に適したものを選択すればいいと思う。
Dev と Beta の違い
Microsfot Edge のインストール
私はなんとなく、dev をインストールしたので、dev バージョンをインストールするコマンドだけを記載しておく。
$ sudo pacman -S microsoft-edge-dev-bin
VirtualBox
virtualbox と モジュール と ゲスト用ISO のインストール
$ sudo pacman -S virtualbox virtualbox-host-modules-arch virtualbox-guest-iso
ユーザを vboxusers に追加
$ sudo gpasswd -a $USER vboxusers
再起動
$ reboot
arch-audit
$ sudo pacman -S arch-audit
ClamAV
基本的には下記のページの手順に沿ってインストールすればよい。
clamav のインストール
$ sudo pacman -S clamav
ウィルス定義ファイルの更新
$ sudo freshclam
clamav-freshclam.service の起動と有効化
$ sudo systemctl enable --now clamav-freshclam.service
clamav-daemon.service の起動と有効化
$ sudo systemctl enable --now clamav-daemon.service
clamav 動作確認
$ curl https://www.eicar.org/download/eicar.com.txt | clamscan -
Fangfrisch のインストール
$ paru -S python-fangfrisch
データベースの構築
$ sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb
fangfrisch.timer の起動と有効化
$ sudo systemctl enable --now fangfrisch.timer
clamtk のインストール
$ paru -S clamtk
thunar-sendto-clamtk のインストール
$ paru -S thunar-sendto-clamtk
何故か thunar-sendto-clamtk のダウンロードが完了せず、インストールできなかった。
VLC media player
VLC メディアプレイヤーとライブラリのインストール
$ sudo pacman -S vlc libdvdnav libdvdread libdvdcss
これらは映画の DVD などを観たりしないのであれば、特段必要はないと思う。
シリアル通信
tmux などでもいいが、ここでは screen コマンドをインストールする。
screen コマンドのインストール
$ sudo pacman -S screen
uucp グループにユーザを追加
$ sudo gpasswd --add $USER uucp
screen コマンドの使い方
USB Utils
usbutils のインストール
$ sudo pacman -S usbutils
動作確認
$ lsusb
NeoVim
neovim と xclip のインストール
$ sudo pacman -S neovim xclip
ディレクトリ作成
$ mkdir -p ~/.config/nvim
AstroNvim
これをインストール
init.vim
下記はさしあたって必要になった時のための、最小限の設定。
" Set basicaly options
set ruler " 右下に表示される行・列の番号を表示
set autoindent " 自動インデントを有効にする
set expandtab " タブではなくスペースを入れる
set tabstop=4 " タブを表示する時の幅
set shiftwidth=4 " 自動で挿入されるインデントの幅
set softtabstop=4 " タブ入力時の幅を4に設定
set showmatch " 閉じ括弧入力時に対応する括弧の強調
set matchtime=4 " showmatch設定の表示秒数(0.1秒単位)
set incsearch " インクリメンタルサーチを行う(検索文字入力中から検索)
set ignorecase " 文字列検索で大文字・小文字を区別しない
set hlsearch " 文字列検索でマッチするものをハイライト表示する
set smartcase " 検索文字に大文字が含まれる場合にignorecaseをOFFにする
set wildmenu " コマンドラインにおける補完候補の表示
set t_kD=^? " Deleteキーを有効にする
" Enable share clipboard: depends xclip
set clipboard=unnamedplus
" Set Syntax highlight
syntax enable " Enable syntax highlighting
" Set Backspace-key
set backspace=indent,eol,start " Behave as other WYSIWYG editors
" Set cursor behave as WYSIWYG editors
nnoremap j gj
nnoremap k gk
" Define encoding
set encoding=utf8 " Set encoding to utf8
set fileencoding=utf-8 " Set file's encoding to utf8
" Display informations
set title " Set Display editing filename
set wrap " Set Enable wrap longline
" Change TAB-key behave on Makefile
let _curfile=expand("%:r")
if _curfile == 'Makefile'
set noexpandtab
endif
" Change language when leave insert mode
if executable('fcitx5')
augroup fcitx_savestate
autocmd!
autocmd InsertLeave * call system('fcitx5-remote -c')
augroup END
endif
vim script 引用元
Visual Studio Code
$ paru -S visual-studio-code-bin
$ mkdir -p ~/.config/Code/User
$ touch ~/.config/Code/User/settings.json
$ cat << EOF
{
"terminal.integrated.shell.linux": "/usr/bin/zsh",
"terminal.integrated.shellArgs.linux": [
"-l"
]
}
EOF > ~/.config/Code/User/settings.json
$ code
<とりあえず起動する事を確認>
zsh
zsh と zsh-completions のインストール
$ sudo pacman -S zsh zsh-completions
Optional: zsh-autosuggestions のインストール
oh-my-zsh をインストール後に必要に応じてインストールした方がよいかもしれないので、記載を分けておく。
$ sudo pacman -S zsh-autosuggestions
zsh の設定
oh-my-zsh を使う事をおすすめする。
下記の .zshrc は blackarch-config-zsh をベースにしている。
使わないが、オプションなどの備忘録として残しておく。
# Load colours and then set prompt
# Prompt preview:
# [user@hostname]-[~]
# >>>
autoload -U colors && colors
PS1="%{$fg[blue]%}%B[%b%{$fg[cyan]%}%n%{$fg[grey]%}%B@%b%{$fg[cyan]%}%m%{$fg[blue]%}%B]-%b%{$fg[blue]%}%B[%b%{$fg[white]%}%~%{$fg[blue]%}%B]%b
%{$fg[cyan]%}%B>>>%b%{$reset_color%} "
# ZSH history file
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.zsh_history
# ZSH options
setopt list_packed
setopt list_types
setopt hist_ignore_all_dups
setopt hist_ignore_dups
setopt share_history
setopt append_history
setopt inc_append_history
setopt hist_no_store
setopt hist_reduce_blanks
setopt print_eight_bit # Display Multibytes file names
# Fancy auto-complete
autoload -Uz compinit
zstyle ':completion:*' menu select=0
zmodload zsh/complist
zstyle ':completion:*' format '>>> %d'
compinit
_comp_options+=(globdots) # hidden files are included
# Keybindings section
bindkey -e
bindkey '^[[7~' beginning-of-line # Home key
bindkey '^[[H' beginning-of-line # Home key
if [[ "${terminfo[khome]}" != "" ]]; then
bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
fi
bindkey '^[[8~' end-of-line # End key
bindkey '^[[F' end-of-line # End key
if [[ "${terminfo[kend]}" != "" ]]; then
bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
fi
bindkey '^[[2~' overwrite-mode # Insert key
bindkey '^[[3~' delete-char # Delete key
bindkey '^[[C' forward-char # Right key
bindkey '^[[D' backward-char # Left key
bindkey '^[[5~' history-beginning-search-backward # Page up key
bindkey '^[[6~' history-beginning-search-forward # Page down key
# Navigate words with ctrl+arrow keys
bindkey '^[Oc' forward-word #
bindkey '^[Od' backward-word #
bindkey '^[[1;5D' backward-word #
bindkey '^[[1;5C' forward-word #
bindkey '^H' backward-kill-word # delete previous word with ctrl+backspace
bindkey '^[[Z' undo # Shift+tab undo last action
export LD_PRELOAD=""
export EDITOR="nvim"
export PATH="$HOME/bin:$HOME/.local/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/bin:/usr/bin/core_perl:/usr/games/bin:$PATH"
# Aliases
alias c="clear"
alias cd..="cd .."
#alias r="reset"
alias shred="shred -zf"
alias sl="ls --color=auto"
alias vi="vim"
alias ls="ls --color=auto"
alias l="ls -ahls --color=auto"
alias dir="dir --color=auto"
alias vdir="vdir --color=auto"
alias grep="grep --color=auto"
alias fgrep="fgrep --color=auto"
alias egrep="egrep --color=auto"
alias curl="curl --user-agent 'noleak'" #
alias wget="wget -c --user-agent 'noleak'" #
alias dd="dd status=progress" # Display progress
alias cp="cp -i" # Confirm before overwrite
alias rm="rm -i" # Confirm before delete
alias mv="mv -i" # Confirm before move
alias df="df -h" # Display human-readable unit
alias free="free -h" # Display human-readable unit
alias du="du -h" # Display human-readable unit
alias hexedit="hexedit --sector --color"
# Define Load zsh plugins
plugins=(
zsh-autosuggestions
)
# Enable zsh-autosuggestions
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
Bluetooth イヤホン&マイク
bluez-hid2hci と pulseaudio-bluetooth と pavucontrol のインストール
$ sudo pacman -S bluez-hid2hci pulseaudio-bluetooth pavucontrol
再起動
$ reboot
bluetoothctl
<MAC-ADDR> はタブ補完が効くので使うと便利。
$ bluetoothctl
[bluetoothctl]# scan on
[bluetoothctl]# devices
[bluetoothctl]# pair <MAC-ADDR>
[bluetoothctl]# trust <MAC-ADDR>
[bluetoothctl]# connect <MAC-ADDR>
[DEVICE NAME]# exit
pavucontrol
$ pavucontrol
イヤフォンとマイクを利用するには、プロファイルを Handsfree Head Unit(HFP) に変更する。
日本語 man-pages-ja
$ paru -S man-pages-ja
RDP client
$ sudo pacman -S remmina freerdp easy-rsa
その他
あると便利
$ sudo pacman -S github-cli clang lld cmake fzf binwalk lsof strace neofetch socat netcat nmap openvpn traceroute tcpdump wireshark libusb htop wget p7zip unzip zip bash-completion jq fq accountsservice tree whois bind gawk conntrack-tools ethtool
バイナリエディタ: hexedit
imhex や wxHexEditor なども用途によっては良さそう。
$ sudo pacman -S hexedit
登録しておくと便利な alias
alias hexedit="hexedit --sector --color"
qemu-full
$ sudo pacman -S qemu-full
docker
$ sudo pacman -S docker docker-compose
$ sudo gpasswd -a $USER docker
Vagrant
$ sudo pacman -S vagrant
Zoom
$ paru -S zoom
Display Power Management Signaling(DPMS)
自動的にディスプレイのバックライトが消灯されたりするタイミングの制御。
とりあえずここまで
一時的なメモ
kubernetes
$ sudo pacman -S containerd
$ sudo pacman -S kubectl kubelet kubeadm cni-plugins helm helmfile kube-linter
$ paru -S etcd kubernetes-control-plane
$ sudo nvim /etc/modules-load.d/k8s.conf
---
overlay
br_netfilter
---
$ sudo nvim /etc/sysctl.d/k8s.conf
---
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
---
$ sudo gpasswd -a $USER kube
$ reboot
or
$ sudo sysctl --system
$ lsmod | grep -iE 'overlay|br_netfilter'
---
br_netfilter 32768 0
bridge 438272 1 br_netfilter
overlay 200704 0
---
$ sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
---
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
---
$ paru -S nerdctl-full-bin
$ containerd-rootless-setuptool.sh install
セキュリティ推奨事項 - ArchWiki
BlackArch repository
systemd-nspawn - ArchWiki
systemd-nspawn
いまから「あえて」systemdのコンテナ機能を使ってみる
マルチディスプレイ
TimeshiftによるLinuxシステムバックアップ
Getting Started with zsh