LoginSignup
0
0

Arch Linux インストール備忘録 for DELL G15 5515 ryzen edition

Last updated at Posted at 2023-04-21

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 に入力メソッド関連の環境変数を定義する

~/.xprofile
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS='@im=fcitx'

i3 起動時に fcitx5 が起動する様にする

~/.config/i3/config
# 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行をコメントアウトする。

/etc/pacman.conf
# 変更前
#[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 に変更したりする。

/etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "us"
    Option "XkbModel" "pc104"
    Option "XkbOptions" "ctrl:nocaps"
EndSection

touchpad

タッチパッドの挙動設定

/etc/X11/xorg.conf.d/30-touchpad.conf
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 モジュールを読み込まない様にする

/etc/mkinitcpio.conf
# 削除前
# 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 ファイルへの書き込みを許可する。

/etc/udev/rules.d/81-backlight.rules
# 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 に追加する。

/etc/default/grub
# 変更前
# 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

/etc/default/grub
# 変更前
# 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 キーバインド設定

~/.config/i3/config
# 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 が起動する様にする

~/.config/i3/config
# Screenshot
bindsym --release Print exec --no-startup-id xfce4-screenshooter

計算機

この記事では galculator を用いる事とする

galculator のインストール

$ sudo pacman -S galculator

計算機キーで galculator が起動する様にする

~/.config/i3/config
# 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

下記はさしあたって必要になった時のための、最小限の設定。

~/.config/nvim/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 をベースにしている。

使わないが、オプションなどの備忘録として残しておく。

~/.zshrc
# 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

pavuaudio.png

イヤフォンとマイクを利用するには、プロファイルを 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
~/.zshrc
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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0