Dell XPS15へManjaro導入後の最強環境構築

[Update: 2021/10/12] BIOS追加
[Update: 2021/04/24] メインテナンス追加
[Update: 2020/10/16] パフォーマンスチューニング追加
[Update: 2020/10/05]
少しずつ、Macで使い慣れてたアプリぽいのを探してます。PDFに関して、色々と試して、ようやく素晴らしいの見つけた！編集もできて、フリー版でも超強力です。ということで、[Master PDF Editor](https://code-industry.net/masterpdfeditor/)のインストールを追加。また、Themeも良いのみつけたので備忘録として更新！
[Update: 2020/08/10]
最近、開発機のMacbook Proがキーボードのキーの調子がまた悪くなり、修正プログラムで修理に出したら、前回と異なり２週間ほど修理に時間がかかり、その間、Manjaro入のXPS15をメインの開発機として使っていたら、色々と開発に使いやすいようチューニングして、Macよりも使いやすくなったので、開発メインをManjaroに切り替えてます。PPTなど一部のソフトは、Macを利用してますが、開発環境としては良いですね。これで、トラックパッド系がMac並に使えれば、ユーザ数バク増すると思います。あと、Evernote。。Web版でブラウザベースの使ってるけど、やはりアプリ版が使いやすい。

# はじめに
　Manjaroのインストールと基本的な設定は完了していることをベースに、その後の設定の備忘録です。インストール等に関しては他を参考にしてください。Dell XPS15 7590モデルを前提にしてます。よりベターな設定なんかあれば教えてくださいー。また、適宜更新します。
　<details><summary>背景としては、仕事マシンでMacBook ProとDell XPS15 7590をもらってたのだけど、MacBook Proをメインの開発マシンとしていたが昨晩、キーボド効かない問題が発生して、リペアプログラムで手元から離れてしまうので、急遽Dellマシンを開発環境に。今回はXPS15 7590へManjaro入れてからの忘れがちな設定を備忘録。</summary>
　因みに、Linux歴は約20年+で、個人用のdistro遍歴は、Redhat => Ubuntu => Mint => Manjaro => Archlinux => Manjaro（今ここ）だが、まだ何もわからない状況。。あかん。。
　Linuxは、自由度が高いので、色々なカスタマイズできるのですがGUIにこだわりだすと、何十時間という貴重な時間が溶けてしまうので注意しないと、本業そっちのけで私のように廃人になります。Conkyだめ絶対。</details>

　XPS15 7590のスペックは下記のハード改良済み。現時点では結構最強です。Eizoの外付け液晶とつなげて使っています。12コアは使い切れるのですが、メモリはまだかなり余裕あり。これからDockerとかこっちに移植してきたら、使い切れそうかな。コア数の方がネックかも。因みに新品に改良までしてスペックいいんですが、消費電力も高く、開発してるアプリケーション色々動かすとバッテリーは３時間ぐらいで切れます。。
- ストレージ: 1TB (1TB PCIe NVMe M.2)
- メモリ: 64GB（PC4-21300 DDR4-2666 32GBx2）

# 自戒
時間を溶かさないよう、仕事用クライアントマシンは、
- GUIカスタマイズしまくらない。特に**Conky**は危険
- カーネルいじりまくらない。特に**vanilla**は危険
- アプリはデフォルトのものを中心に使う
- Distro目移りしない。特に**Archlinux**は危険
- timeshift-launcherで適宜バックアップ
- もしものためにBoot USB準備。特に**X**周りをいじる際

#BIOS
　現在のXPSへLinuxをインストールしている環境は、別途ストレージとしてPCIe NVMe M.2を購入し、もともとWindowsが入っていたストレージと取り替えて使ってます。その際、BIOSの設定を変更しないと起動しないので、下記３つBIOS起動時にF2キーで変更が必要です。

### Linux
| No | 設定項目 | Linux設定値 |
|:-----------:|:------------|:------------:|
| 1 | System Configuration > SATA Mode|     AHCI     |
| 2 | Secure Boot|     disable     |
| 3 | POST Behaviour |     Thorough     |

### Windows
| No | 設定項目 | Windows設定値 |
|:-----------:|:------------|:------------:|
| 1 | System Configuration >SATA Mode |     RAID     |
| 2 | Secure Boot|     enable     |
| 3 | POST Behaviour |     Fastboot     |

### Bios 更新
Linuxマシンで、外付けUSB使ってBIOSの更新ができます。時折BIOSバージョンも上がっているので、たまにチェックして更新すれば良いかも。

1 Dell サイトからBIOS　EXEファイルダウンロード
[DellのDriverダウンロードサイト](https://www.dell.com/support/home/ja-jp/product-support/product/xps-15-7590-laptop/drivers)
2 外付けUSBフォーマットしてEXEコピー

```shell
$ lsblk #マウントポイントチェック
$ mkfs.vfat -v -c -F 32 /dev/sda #Format
# そしてEXE コピー
```
3 RebootしてBIOS起動時にF12ボタン押下して、BBOOT Menu画面を立ち上げて、BIOS Flash Updateから外付けUSBを選択すればおけー

# デスクトップ
　で、今の所は、こんな感じのデスクトップになってます。デスクトップをConkyで華やかにしたいのだけど、気持ちを抑えてます。会社のGoogle DriveもFuse使ってStreamで常時つながっているし、開発マシンもThunarのショートカットからマウントして扱いやすいし、visual studio code over sshで文句なし！EIZOの外部ディスプレイも問題なく利用できており、すばらしい！
![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341150/da524b76-52cc-7da3-235a-bf949b1780f9.png)

# コンパイルオプション
makepkgで、自分のマシンに最適なパッケージにコンパイルするための設定していきます。

```shell:terminal
$ sudo vim /etc/makepkg.conf
```
詳しいオプションの説明は[Gentoo Wiki](https://wiki.gentoo.org/wiki/GCC_optimization/ja)に詳しいので、そちらを参考に。アーキテクチャ名は[こちら](https://wiki.gentoo.org/wiki/Safe_CFLAGS)を参考に。簡単に引用すると、Oフラグは3以上やっても効果なし。2が推奨。

> -Oフラグ：これは全体の最適化レベルをコントロールしますが、特にこの最適化レベルを上げることによって、ソースコードのコンパイルの時間がいくらか増えたり、よりたくさんのメモリを使用するようになります。

> -pipeフラグ:このフラグは、生成されるバイナリ自体には何の影響もありませんが、コンパイル時間が短縮されます。これはコンパイルにおける各処理の間で一時ファイルを使う代わりにパイプを使うように指示します。これにより多くのメモリを使うことになります。メモリに余裕のないシステムの場合、GCCが強制終了するかもしれません。そのような場合はこのフラグを使わないでください。

```config:/etc/makepkg.conf
CFLAGS="-march=skylake -O2 -pipe"
CXXFLAGS=${CFLAGS}
MAKEFLAGS="-j$(($(nproc)+1))"
PACKAGER="<Name>"`
```

## keyの自動追加

```config:~/.gnupg/gpg.conf
keyserver-options auto-key-retrieve
auto-key-locate hkp://pool.sks-keyservers.net
```
## PKGBUILDS時の設定
yay経由のインストール時に、PKGBUILDSの上書きを聞かれるように設定

```shell:terminal
$ yay --editmenu --nodiffmenu --save
```

## カスタムカーネル インストール
例えば、カスタムなカーネル[^1]入れたい場合は、こんな感じです。今回は[xanmod](https://xanmod.org/)をインストール。ただし、オリジナルManjaroのほうが早いケースもあり、あまりカスタムカーネル入れる必要はないですが、時間に余裕があり遊びたい場合はどうぞ
[^1]: はまりに注意
![こんなロゴ](https://xanmod.org/_media/xanmod_wallpaper.png "xanmod kernel")


```shell:terminal
$ mkdir -p ~/opt/src #build用フォルダ作成
$ cd ~/opt/src #build用フォルダへ移動
$ yay -G linux-xanmod #xanmod kernelダウンロード
$ cd linux-xanmod #フォルダへ移動
```
そして、マイクロアーキテクチャに合わせてパラメタ変更

```conf:~/opt/src/linux-xanmod/PKGBUILDS
_microarchitecture=42
```
その後、コンパイル

```shell:terminal
$ makepkg -s
```

出来上がったパッケージをインストール

```console:terminal
$ tree -sh
.
├── [3.7K]  0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-CLONE_NEWUSER.patch
├── [4.1K]  choose-gcc-optimization.sh
├── [ 983]  linux-5.5.tar.sign
├── [106M]  linux-5.5.tar.xz
├── [828K]  patch-5.5.13-xanmod1.xz
├── [557K]  patch-5.5.13.xz
├── [ 12K]  PKGBUILD
└── [4.0K]  src

$ sudo pacman -U ./*.tar.xz
```


## ライブラリのビルド
自分のアーキテクチャに合ったパッケージを作り、オプティマイズを目論みます。

```shell:terminal
$ cd ~/opt/src
$ yay -G glibc
$ cd glibc
$ makepkg -si 
```
上記のパターン（yay -G）でソースをダウンロードして、下記のようなライブラリ/アプリをビルドしてインストール

```
atom dropbox glibc gtk2 gtkmm3 libglademm chromium glade gtk3 libglade libxml2
```

# 必要なパッケージインストール
pacmanで入れるパッケージ。ここらへんは、自分の必要なものでOK。

```shell:terminal
$ sudo pacman -Syu yay vim wget curl atom fcitx-im fcitx-mozc fcitx-configtool jq sysstat plank unrar p7zip unarchiver
```

yayで入れるパッケージ。ここらへんは、自分の必要なものでOK。

```shell:terminal
$ sudo yay　dropbox libglademm slack-desktop visual-studio-code-bin
```

## 日本語環境設定
Mozcが使えるように

```config:~/.xprofile
export XMODIFIERS="@im=fcitx"
export XMODIFIER="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx
```

```config:~/.zshrc
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
```

## GruvboxのColor Schemaを入手
色々なアプリ用スキーマをもらってきて、使うアプリに適用

```shell:terminal
$ git clone https://github.com/morhetz/gruvbox-contrib
```
## Font
これも好みで。とりあえずRicty入れてます。

```shell:terminal
$ git clone https://github.com/edihbrandon/RictyDiminished.git
$ cp RictyDiminished/*.ttf ~/.local/share/fonts/
$ fc-cache -f -v
```

## zsh設定
過去、いろいろな賢い人たちのページ等を参考に付け足してきたやつですが、色々なマシンがあり、環境依存は極力減らしたいので、できるだけ省いてシンプルにしつつ。。

```config:~/.zshrc

#Locale
export LC=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

#Mozc
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx

##################
#  Global setting
##################
export EDITOR=vim #エディタをvimに設定

# プロンプト設定
#PROMPT='[%~:%n] %# '
PROMPT='[%n@%m] %# '
RPROMPT='[%d]'

# history
HISTFILE=~/.zsh_hist
#メモリ上に保存される履歴の数
HISTSIZE=10000
#HISTFILEで指定したファイルに保存される履歴の数
SAVEHIST=10000
setopt extended_history #ヒストリに実行時間も保存
setopt hist_ignore_dups #直前と同じコマンドはヒストリに追加しない

#vi ライクな操作ができる
bindkey -v

#補完
autoload -Uz compinit
compinit

# cdした先のディレクトリをディレクトリスタックに追加
setopt auto_pushd

# pushdしたとき、ディレクトリがすでにスタックに含まれていればスタックに追加しない
setopt pushd_ignore_dups

# コマンドのスペルを訂正する
setopt correct

# <Tab>でパス名の補完候補を表示したあと、
# 続けて<Tab>を押すと候補からパス名を選択することができるようになる
zstyle ':completion:*:default' menu select=1

autoload colors
zstyle ':completion:*' list-lolors "${LS_COLORS}"

# cdの後にlsを実行

chpwd() { ls -ltrG  }

##################
##    Alias
##################
alias pac_list="pacman -Qqen"
alias yay_list="pacman -Qqem"
alias ug="sudo pacman -Syyu && yay"
alias ssdtrim="echo 'sudo fstrim -v /';sudo fstrim -v /"
alias io="iostat -x | awk '{if (NF>7){printf \"%-10s%10s%10s%10s%10s%10s%10s\n%-10s%10s%10s%10s%10s%10s%10s\n\",\$1,\$2,\$3,\$4,\$5,\$6,\$7,\"\",\$8,\$9,\$10,\$11,\$12,\$13,\$14}else print}'"
```
で、Function部分は長くなるので、ここで、一旦ブレークして、したはZshのFunction部分になります。

```shell:~/.zshrc
##################
##   Functions
##################
# ex - archive extractor
# usage: ex <file>
function ex() {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xjf $1   ;;
      *.tar.gz)    tar xzf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xf $1    ;;
      *.tbz2)      tar xjf $1   ;;
      *.tgz)       tar xzf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo "'$1' cannot be extracted via ex()" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

# fx - foreign exchange
# usage: fx <FROM CURRENCY> <TO CURRENCY>
function fx() {
  rate=`wget https://rate-exchange-1.appspot.com/currency\?from=$1\&to=$2 -q -O - | jq -r ".from,.rate,.to" | tr '\n' ',' | awk -F, '{print "1 "$1"="$2" "$3}'`
  echo "$rate"
}

# mem - Calcurate memory
# usage: mem
function mem() {
  free | awk -v param="$1" '
  BEGIN{
    total=0;used=0;available=0;rate=0;
  }

  /^Mem:/{
    total=$2;
    available=$7;
  }

  END{
    used=total-available;
    rate=100*used/total;
    totalG= total/1024/1024;
    usedG=used/1024/1024;
    availableG=available/1024/1024;

    switch(param){
      case "rate" :
        printf("%02.1f % \n",rate);
        break
      case "free" :
        printf("%2.2f GB\n",availableG);
        break
      case "used" :
        printf("%2.2f GB\n",usedG);
        break
      case "total":
        printf("%.2f GB\n",totalG);
        break
      default:
        printf("Used Rate: %02.1f % \n",rate);
        printf("Available: %2.2f GB\n",availableG);
        printf("Used:\t   %2.2f GB\n",usedG);
        printf("Total:\t   %.2f GB\n",totalG);
        break
    }
  }';
}

```

## vim設定
vimのGruvboxスキーマ等簡単な設定。パッケージマネジャ色々あるみたいだけど、とりあえず、大手のVundleで

```shell:terminal
$ mkdir -p .vim
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
```
設定

```config:~/.vimrc
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

" 導入したいプラグインを以下に列挙
" Plugin '[Github Author]/[Github repo]' の形式で記入
Plugin 'airblade/vim-gitgutter'
Plugin 'morhetz/gruvbox'

call vundle#end()
filetype plugin indent on

"その他のカスタム設定を以下に書く
syntax enable
set background=dark
colorscheme gruvbox
```
実行

```
$ vim +PluginInstall +qall 
```
するとこんな感じになる
![Screenshot_2020-04-05_15-27-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341150/75fd4ba7-5b2d-cb5d-cc7f-257e38ca35fc.png)

## plankの設定
やはり、Dock便利です。ということでさっさと設定。
自動スタート設定

```config:~/.config/autostart/Plank.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Plank
Comment=dock
Exec=plank
OnlyShowIn=XFCE;
RunHook=0
StartupNotify=false
Terminal=false
Hidden=false
```
その他、Plankを自分好みに

```shell:terminal
$ plank --preferences
```
するとこんな感じに
![Screenshot_2020-04-05_17-04-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341150/27d25ae0-bfeb-f643-59f6-5f22699876f7.png)


# XPS15 7590関連
## 電源管理
grubのカーネルパラメタの最適化

```config:/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet  apparmor=1 mem_sleep_default=deep security=apparmor udev.log_priority=3 acpi_backlight=native"
```
インテルコードインストール

```shell:terminal
sudo pacman -S intel-ucode
```

grub更新

```shell:terminal
$ sudo update-grub
```

## 電源管理最適化
powertopでバッテリー利用を最適化

```shell:terminal
$ pacman -S powertop
$ powertop --calibrate
$ powertop --auto-tune
```
そしてsysytemdで自動化

```config:/etc/systemd/system/powertop.service
[Unit]
Description=Powertop tunings

[Service]
Type=oneshot
ExecStart=/usr/bin/powertop --auto-tune

[Install]
WantedBy=multi-user.target
```
systemctlに有効化

```shell:terminal
$ systemctl enable powertop.service
```
さらにモード設定

```config:/etc/sysctl.d/laptop.conf
vm.laptop_mode = 5

```

## Nvidia Driver
これが、一番色々とハマった部分。Web上に色々なやり方があり、試して唯一nvidiaドライバを動かせたやつ。何十時間もとかしてもうた。。
1. nvidiaドライバがインストールされている場合、削除
2. nvidiaドライバのインストール
3. primeインストール
4. 今までいじった不要なX系configファイル削除

```shell:terminal
$ sudo mhwd -li #インストールされているドライバリスト
$ sudo mhwd -r xxx #ドライバ削除
$ sudo mhwd -i pci video-nvidia-440xx #ドライバインストール
$ sudo pacman -S nvidia-prime
# /etc/X11/xorg.conf.d/ や /etc/modprobe.d/にあるX関連の設定ファイル削除
```
そして、設定を入れてからの、再起動

```config:/etc/X11/xorg.conf.d/90-nvidia-intel-custom.conf
Section "Module"
    Load "modesetting"
EndSection

Section "Device"
  Identifier "iGPU"
  Driver "modesetting"
EndSection

Section "Screen"
  Identifier "iGPU"
  Device "iGPU"
EndSection

Section "Device"
  Identifier "dGPU"
  Driver "nvidia"
EndSection
```

上記で使っていたのですが、NvidiaとオンボードのIntelも切り替えたくなり、Optimus-managerを入れることにしました。
その場合は、

```shell:terminal
$ yay optimus-manager
$ systemctl enable optimus-manager.service
$ systemctl start optimus-manager.service
```

エラーがないか、ログチェック

```shell:terminal
journalctl -u optimus-manager.service
```

因みに設定ファイルはこんな感じ

```shell:terminal

$ tree /etc/X11/
.
├── imwheel
│   └── imwheelrc
├── xinit
│   ├── xinitrc
│   ├── xinitrc.d
│   │   ├── 40-libcanberra-gtk-module.sh
│   │   └── 50-systemd-user.sh
│   └── xserverrc
└── xorg.conf.d
    ├── 00-keyboard.conf
    ├── 10-optimus-manager.conf
    └── 90-nvidia-intel-custom.conf

$ cat /etc/X11/xorg.conf.d/90-nvidia-intel-custom.conf
Section "Module"
    Load "modesetting"
EndSection

Section "Device"
  Identifier "iGPU"
  Driver "modesetting"
EndSection

Section "Screen"
  Identifier "iGPU"
  Device "iGPU"
EndSection

Section "Device"
  Identifier "dGPU"
  Driver "nvidia"
#  Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection


$ cat /etc/X11/xorg.conf.d/10-optimus-manager.conf
Section "ServerLayout"
	Identifier "layout"
	Screen 0 "intel"
	Inactive "nvidia"
	Option "AllowNVIDIAGPUScreens"
EndSection

Section "Device"
	Identifier "intel"
	Driver "modesetting"
	BusID "PCI:0:2:0"
	Option "DRI" "3"
EndSection

Section "Screen"
	Identifier "intel"
	Device "intel"
EndSection

Section "Device"
	Identifier "nvidia"
	Driver "nvidia"
	BusID "PCI:1:0:0"
	Option "Coolbits" "28"
EndSection

Section "Screen"
	Identifier "nvidia"
	Device "nvidia"
EndSection


```


## LightDM 解像度変更
ログイン画面の解像度高すぎて、小さすぎなので、少し大きくします。

```/etc/lightdm/lightdm.conf
greeter-setup-script =/etc/lightdm/Xsetup
```

```config:/etc/lightdm/Xsetup
xrandr --output eDP-1 --mode 1920x1080 --dpi 96
```

## Bluetooh keyboard/mouseの設定
DellのBluetooh keyboardとマウスが安定的につながるように。不安定な場合は、一度bluemanのプロファイルを削除して登録し直したら安定したりします。

```shell:terminal
$ sudo pacman -S bluez-utils pulseaudio-bluetooth
$ bluetoothctl
agent KeyboardOnly
default-agent
power on
scan on
pair 00:12:34:56:78:90
connect 00:12:34:56:78:90
```
### Bluetooth設定

```config:/etc/bluetooth/main.conf
[General]
DiscoverableTimeout = 0
Discoverable=true

[Policy]
AutoEnable=true
```
### モジュールの設定

```config:/etc/pulse/system.pa
load-module module-bluetooth-policy
load-module module-bluetooth-discover
```

## Touchpad関連
Touchpadでスワイプとか、Macみたいにできるようにします。[Githubに開発者の説明があります](https://github.com/bulletmark/libinput-gestures)ので詳しく知りたい場合はそっちで

```shell:terminal
$ sudo pacman -S xdotool wmctrl libinput-gestures libinput-gestures-setup
$ sudo gpasswd -a $USER input

$ sudo libinput list-devices
$ libinput-gestures-setup autostart
$ libinput-gestures-setup start

```
で、マッピングファイル作ります。下記は、自分のWMの環境に合わせて変更。

```config:~/.config/libinput-gestures.conf

gesture swipe up    3 xdotool key ctrl+alt+d
gesture swipe down  3 xdotool key alt+Shift+Tab
gesture swipe left  3 xdotool key ctrl+Tab
gesture swipe right 3 xdotool key ctrl+Shift+Tab
```
その後、サービスリスタートもしくは再ログインで有効になります。

```shell:terminal
libinput-gestures-setup restart
```
## bluetooth mouse関連
今、Dell純正のBluetoothマウスを使ってるんですが、Wheelの感度が悪く、他のマウスに変えてみたりしたのですが、Wheelをころころ回転させても、少ししかスクロールしないという状況は変わらず。解決策を探してネットを巡っていると解決策が。これでスクロールも良い感じになりました。下記のスクリプトファイルを作成し、実行後、4ぐらいに設定すれば大丈夫です。

```shell:imwheel.sh
#!/bin/bash
# Version 0.1 Tuesday, 07 May 2013
# Comments and complaints http://www.nicknorton.net
# GUI for mouse wheel speed using imwheel in Gnome
# imwheel needs to be installed for this script to work
# sudo apt-get install imwheel
# Pretty much hard wired to only use a mouse with
# left, right and wheel in the middle.
# If you have a mouse with complications or special needs,
# use the command xev to find what your wheel does.
#
### see if imwheel config exists, if not create it ###
if [ ! -f ~/.imwheelrc ]
then

	cat >~/.imwheelrc<<EOF
".*"
None,      Up,   Button4, 1
None,      Down, Button5, 1
Control_L, Up,   Control_L|Button4
Control_L, Down, Control_L|Button5
Shift_L,   Up,   Shift_L|Button4
Shift_L,   Down, Shift_L|Button5
EOF

fi
##########################################################

CURRENT_VALUE=$(awk -F 'Button4,' '{print $2}' ~/.imwheelrc)

NEW_VALUE=$(zenity --scale --window-icon=info --ok-label=Apply --title="Wheelies" --text "Mouse wheel speed:" --min-value=1 --max-value=100 --value="$CURRENT_VALUE" --step 1)

if [ "$NEW_VALUE" == "" ];
then exit 0
fi

sed -i "s/\($TARGET_KEY *Button4, *\).*/\1$NEW_VALUE/" ~/.imwheelrc # find the string Button4, and write new value.
sed -i "s/\($TARGET_KEY *Button5, *\).*/\1$NEW_VALUE/" ~/.imwheelrc # find the string Button5, and write new value.

cat ~/.imwheelrc
imwheel -kill
```

で、下記を実行すると、ダイアログが出るので、そこで４ぐらいを設定して完了です。
```shell:terminal
$ ./imwheel.sh
```
![screenshot-20200810212224.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341150/389f880d-4a26-c90b-d982-1d306568eaf8.png)



## プリンター関係
EPSON EP-882A使ってます。CUPS使って設定します。

```shell:terminal
$ sudo yay epson-inkjet-printer-escpr2 
$ sudo gpasswd -a ${USER} sys
$ sudo systemctl enable --now org.cups.cupsd.service
$ lpinfo --include-schemes dnssd -v
$ network dnssd://EPSON%20EP-882A...
$ lpadmin -p home_epson -v "dnssd://EPSON%20EP-882A...
```

## スキャナー関係
EPSON EP-882A使ってます。Network経由でのスキャンも下記でOK

```shell:terminal
$ avahi-browse --all -t -r # NetworkスキャンでIP探索
$ yay imagescan imagescan-plugin-networkscan 
```
そして、スキャナのIPを設定ファイルに入れるとNetwork経由でのスキャンも可能

```config:/etc/utsushi/utsushi.conf
dev2.udi    = esci:networkscan://192.168.0.21:1865 #IPは上のavahi-browseでスキャナのもの
dev2.model  = EP-882A
dev2.vendor = EPSON
```
これで、ターミナルからutsushiと打てはフロントエンドのスキャナアプリが立ち上がります。Xfaceのメニューには表示されないので、下記の設定を入れて

```config:~/.local/share/applications/utsushi.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Utsushi EPSON Scanner
Comment=EPSON EP-802A Scanner FrontEnd
Exec=/usr/bin/utsushi
Icon=
Categories=Graphics
Terminal=false
```
リロードすれば表示されます。

```shell:terminal
$ xfdesktop --reload
```
## WiFi
 同じ環境化のMacが200Mbpsほど出てるのだけど、この子は40Mbpsほど。XPSのWiFiモジュールとLinuxの相性が良くないとのスレッドは色々とあるけど、通信は安定しているので、それぐらいで十分といえばそう。でもあと少し出ないかと試行錯誤。下記が試した内容。若干早くなったかなというぐらいの変化しか今の所なし。。原因を探る方法を調査して試したいが、仕事が忙しいため、とりあえずこれで。
> 一旦、WindowsのNVMeを指し直して、Windowsの最新ドライバーで速度を計ったところ、同じ位のスピードしか出ていないことがわかったので、これが多分チップの限界ぽいことがわかったので、とりあえずWiFi関連はこれで。

### ARPの設定

```config:/etc/dhcpcd.conf
# No ARP RFC2131
noarp
```
### DNSの設定
GoogleのDNSサーバ利用に関する設定

```config:/etc/resolv.conf.opendns 
#Google DNS
nameserver 8.8.8.8
nameserver 8.8.4.4

```

```config:/etc/NetworkManager/dispatcher.d/dns-servers-opendns
#!/bin/bash
# Use OpenDNS servers over DHCP discovered servers

cp -f /etc/resolv.conf.opendns /etc/resolv.conf
```

```shell:terminal
$ sudo chmod +x /etc/NetworkManager/dispatcher.d/dns-servers-opendns
```

```shell:terminal
$ sudo pacman -S dnsmasq
```

```config:/etc/NetworkManager/NetworkManager.conf
[main]
dns=dnsmasq
```
速度計ります。speedtest-cliだとターミナルから1コマンドで確認できて便利。測定時は帯域が混み合っているのか、少し遅い

```shell:terminal
$ sudo pacman -S speedtest-cli
$ speedtest 
Retrieving speedtest.net configuration...
Testing from NTT (153.214.xxx.xxx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by IPA CyberLab (Bunkyo) [x.87 km]: 12.68 ms
Testing download speed...................
Download: 19.84 Mbit/s
Testing upload speed.....................
Upload: 66.28 Mbit/s

```

# 見た目
なお、私の環境はXfceなので、それ用のものになります。

## Theme
最小化等のボタンが押しやすく、ウィンドウの境界がはっきりわかるものを探していて、行き着いたのが[BaZik](https://www.xfce-look.org/p/1304241/)です。すこし大きめのボタンも押しやすくGood。因みにBaZikではDark Orangeを利用してます。下な感じ
![window.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341150/db8d5de8-09b1-a7e9-fdbb-3c339008174a.png)



# アプリケーション関係
## PDF Editor
これが今の所最強です。1のaur/masterpdfeditor 5.6.49-1 をインストールしてアプリのpreferenceでPDF開くさいは、このアプリを指定すれば、編集も含めかなり使い心地よし。余裕があれば商用ライセンスも買ってあげましょう。

```shell:terminal
% yay masterpdfeditor                                                                                           [/home/nori] - 22:00
3 aur/masterpdfeditor-libs-included 5.6.49-1 (+1 0.86) 
    A complete solution for creation and editing PDF files (with libs and qt5 included)
2 aur/masterpdfeditor-free 4.3.89-1 (+50 2.94) 
    A complete solution for creation and editing PDF files - Free version without watermark
1 aur/masterpdfeditor 5.6.49-1 (+166 2.98) (Installed)
    A complete solution for viewing, creating and editing PDF files
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
```

# パフォーマンスチューニング

## TUNEDによる自動化
パフォーマンスチューニング設定を簡易に行うための仕組みである tuned を利用すると下記のような設定を自動でやってくれます。

* 計算スループットが重要で、イベントに対するレイテンシはあまり重要ではない場合
* 省電力が重要なノートPCでのデスクトップ用途の場合
* ネットワークのレイテンシを重視する場合

### インストール
```shell:terminal
$ yay tuned-git
$ sudo systemctl enable --now tuned
```
### 利用可能なtunedのプロファイル一覧表示
```shell:terminal
$ tuned-adm list 
Available profiles:
- accelerator-performance     - Throughput performance based tuning with disabled higher latency STOP states
- atomic-guest                - Optimize virtual guests based on the Atomic variant
- atomic-host                 - Optimize bare metal systems running the Atomic variant
- balanced                    - General non-specialized tuned profile
- cpu-partitioning            - Optimize for CPU partitioning
- default                     - Legacy default tuned profile
- desktop                     - Optimize for the desktop use-case
- desktop-powersave           - Optmize for the desktop use-case with power saving
- enterprise-storage          - Legacy profile for RHEL6, for RHEL7, please use throughput-performance profile
- hpc-compute                 - Optimize for HPC compute workloads
- intel-sst                   - Configure for Intel Speed Select Base Frequency
- laptop-ac-powersave         - Optimize for laptop with power savings
- laptop-battery-powersave    - Optimize laptop profile with more aggressive power saving
- latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
- mssql                       - Optimize for MS SQL Server
- network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- optimize-serial-console     - Optimize for serial console use.
- oracle                      - Optimize for Oracle RDBMS
- postgresql                  - Optimize for PostgreSQL server
- powersave                   - Optimize for low power consumption
- realtime                    - Optimize for realtime workloads
- realtime-virtual-guest      - Optimize for realtime workloads running within a KVM guest
- realtime-virtual-host       - Optimize for KVM guests running realtime workloads
- sap-hana                    - Optimize for SAP HANA
- sap-netweaver               - Optimize for SAP NetWeaver
- server-powersave            - Optimize for server power savings
- spectrumscale-ece           - Optimized for Spectrum Scale Erasure Code Edition Servers
- spindown-disk               - Optimize for power saving by spinning-down rotational disks
- throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest               - Optimize for running inside a virtual guest
- virtual-host                - Optimize for running KVM guests
Current active profile: desktop
```

### 自分の環境に合ったプロファイルを設定
```shell:terminal
$ sudo tuned-adm profile desktop
$ tuned-adm active #現在設定されているプロファイル確認
Current active profile: desktop
```
### トラブルシューティング
python3.9がリリースされて、今までのpython3.8だとtuned.serviceでエラーがでていました。簡単なFix方法です。
下記のコマンドからtuned.serviceが起動していないことがわかります。

```shell:terminal
% systemctl --failed
  UNIT          LOAD   ACTIVE SUB    DESCRIPTION                 
● tuned.service loaded failed failed Dynamic System Tuning Daemon

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.
1 loaded units listed.
```
下記のコマンドからpythonのtunedがないと怒られてるので、インストールされているtunedを3.9 から3.8へコピーすると大丈夫です。

```shell:terminal
% sudo systemctl status tuned
● tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Sat 2021-04-24 12:23:04 JST; 13min ago
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)
    Process: 598 ExecStart=/usr/sbin/tuned -l -P (code=exited, status=1/FAILURE)
   Main PID: 598 (code=exited, status=1/FAILURE)

Apr 24 12:23:04 at-partners-nori systemd[1]: Starting Dynamic System Tuning Daemon...
Apr 24 12:23:04 at-partners-nori tuned[598]: Traceback (most recent call last):
Apr 24 12:23:04 at-partners-nori tuned[598]:   File "/usr/sbin/tuned", line 27, in <module>
Apr 24 12:23:04 at-partners-nori tuned[598]:     import tuned.logs
Apr 24 12:23:04 at-partners-nori tuned[598]: ModuleNotFoundError: No module named 'tuned'
Apr 24 12:23:04 at-partners-nori systemd[1]: tuned.service: Main process exited, code=exited, status=1/FAILURE
Apr 24 12:23:04 at-partners-nori systemd[1]: tuned.service: Failed with result 'exit-code'.
Apr 24 12:23:04 at-partners-nori systemd[1]: Failed to start Dynamic System Tuning Daemon.
```

```shell:terminal
# まずは、3.8のをバックアップ
$ sudo mv /usr/lib/python3.8/site-packages/tuned /home/<YOUR_DIR>/Downloads
# 3.9のtunedを3.8へコピー
$ sudo cp -Rp /usr/lib/python3.9/site-packages/tuned /usr/lib/python3.8/site-packages
# tuned起動
$ sudo systemctl start tuned 
# チェック
% sudo systemctl status tuned       
● tuned.service - Dynamic System Tuning Daemon
     Loaded: loaded (/usr/lib/systemd/system/tuned.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2021-04-24 13:06:04 JST; 8min ago
       Docs: man:tuned(8)
             man:tuned.conf(5)
             man:tuned-adm(8)
   Main PID: 13037 (tuned)
      Tasks: 4 (limit: 76700)
     Memory: 16.8M
     CGroup: /system.slice/tuned.service
             └─13037 /usr/bin/python3 -Es /usr/sbin/tuned -l -P
```
# メインテナンス
システムが問題なく動いているか、たまに確認しましょう。先ずは、確認コマンド
## systemdで失敗しているものを確認
```shell:terminal
$ systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
```
## systemdで失敗しているものを確認
```shell:terminal
$  sudo journalctl -p 3 -xb    
-- Journal begins at Fri 2020-09-25 00:01:32 JST, ends at Sat 2021-04-24 13:42:26 JST. --
Apr 24 12:23:03  kernel: ioremap error for 0x6e110000-0x6e111000, requested 0x2, got 0x0
Apr 24 12:23:04  systemd[1]: Failed to start Dynamic System Tuning Daemon.
░░ Subject: A start job for unit tuned.service has failed
░░ Defined-By: systemd
░░ Support: https://forum.manjaro.org/c/support
```
## システムにインストールされていないpacmanやyayのCacheを削除
```shell:terminal
$  sudo pacman -Sc                                                                [/usr/lib] - 13:56
Packages to keep:
  All locally installed packages

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove all other packages from cache? [Y/n] 
removing old packages from cache...

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n] 
removing unused sync repositories...

$ sudo yay -Sc                                                                   [/usr/lib] - 13:56
 -> Avoid running yay as root/sudo.
Packages to keep:
  All locally installed packages

Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove all other packages from cache? [Y/n] 
removing old packages from cache...

Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n] 
removing unused sync repositories...

Build directory: /root/.cache/yay
==> Do you want to remove all other AUR packages from cache? [Y/n] 
removing AUR packages from cache...
==> Do you want to remove ALL untracked AUR files? [Y/n] 
removing untracked AUR files from cache...
```
## すべてのPacman/yay Cacheを削除
よりアグレッシブにCacheすべてを消します。通常は、上記で十分ですが、デスク容量が逼迫していたりしたときに使えなくもないです。

```shell:terminal
$  sudo pacman -Scc     
$ sudo yay -Scc
```
## 不要な依存関係のアプリを削除
```shell:terminal   
$ sudo yay -Yc
checking dependencies...
warning: dependency cycle detected:
warning: python-jupyter_client will be removed after its python-ipykernel dependency

Packages (88) autoconf-archive-1:2019.01.06-4  cmake-3.20.1-1  cracklib-2.9.7-2  docbook2x-0.8.8-18  doxygen-1.9.1-1
              electron5-5.0.13-7  extra-cmake-modules-5.81.0-1  gendesk-1.0.8-1  glib2-docs-2.68.1-1  gnome-common-3.18.0-4
              gperf-3.1-3  gtk-doc-1.33.2-1  itstool-1:2.0.6-2  js60-60.9.0-2  js68-68.12.0-1  jsoncpp-1.9.4-1
              kvantum-theme-matcha-20190810-1  lib32-alsa-oss-1.1.8-2  lib32-at-spi2-atk-2.38.0-1  lib32-at-spi2-core-2.40.0-1
              lib32-atk-2.36.0-2  lib32-brotli-1.0.9-1  lib32-colord-1.4.5-2  lib32-dconf-0.40.0-1  lib32-fluidsynth-2.1.8-1
              lib32-gdk-pixbuf2-2.42.6-1  lib32-glib-networking-2.68.0-1  lib32-gnutls-3.7.1-1  lib32-gstreamer-1.18.4-1
              lib32-gtk3-3.24.27-2  lib32-json-glib-1.6.2-1  lib32-libcanberra-0.30+2+gc0620e4-3
              lib32-libcanberra-gstreamer-0.30+2+gc0620e4-3  lib32-libcanberra-pulse-0.30+2+gc0620e4-3  lib32-libcups-2.3.3-1
              lib32-libepoxy-1.5.5-1  lib32-libgusb-0.3.6-1  lib32-libltdl-2.4.6+42+gb88cebd5-1  lib32-libproxy-0.4.17-1
              lib32-librsvg-2.50.4-1  lib32-libsoup-2.72.0-1  lib32-libxcomposite-0.4.5-1  lib32-libxcursor-1.2.0-1
              lib32-libxinerama-1.1.4-1  lib32-libxkbcommon-1.2.1-1  lib32-libxrandr-1.5.2-1  lib32-lz4-1.9.3-1
              lib32-openal-1.21.1-1  lib32-polkit-0.118-1  lib32-rest-0.8.1-3  lib32-sdl2-2.0.14-1  lib32-tdb-1.4.3-1
              libev-4.33-1  libunique-1.1.6-8  lld-11.1.0-1  mallard-ducktype-1.0.2-6  maven-3.6.3-1  meson-0.57.2-1
              mhwd-nvidia-340xx-340.108-1  mozilla-common-1.4-6  ninja-1.10.2-1  openjade-1.3.2-6  openjpeg-1.5.2-3
              opensp-1.5.2-9  patchelf-0.12-1  perl-sgmls-1:1.1-7  perl-xml-namespacesupport-1.12-4  perl-xml-sax-1.02-1
              perl-xml-sax-base-1.09-4  perl-xml-sax-expat-0.51-7  python-anytree-2.8.0-3  python-asn1crypto-1.4.0-3
              python-ipykernel-5.5.0-1  python-jade-application-kit-3.5.6-3  python-jupyter_client-6.1.12-1
              python-jupyter_core-4.7.1-1  python-pyzmq-22.0.3-1  python-sip4-4.19.25-1  python-tornado-6.1.0-3
              python2-xcb-proto-1.14-1  rhash-1.4.1-1  sgml-common-0.6.3-7  software-center-web-jak-1.0.2-1  tracker3-3.1.1-1
              vala-0.52.2-1  yasm-1.3.0-4  yelp-tools-40.0-1  zinnia-0.06-6

Total Removed Size:  469.23 MiB

:: Do you want to remove these packages? [Y/n] 
:: Running pre-transaction hooks...
(1/1) Removing old entries from the info directory file...
:: Processing package changes...
( 1/88) removing zinnia                                                        [---------------------------------------------] 100%
...
...
:: Running post-transaction hooks...
(1/5) Arming ConditionNeedsUpdate...
(2/5) Updating 32-bit GIO module cache...
(3/5) Updating icon theme caches...
(4/5) Updating the desktop file MIME type cache...
(5/5) Updating the MIME type database...
```

## Orphanパッケージを削除
```shell:terminal 
# Orphanパッケージがあるかチェック
$ pacman -Qtdq                                                                   [/usr/lib] - 14:03
lib32-lcms2
lib32-libgudev
lib32-libinstpatch
lib32-libusb
lib32-nettle
lib32-pango
lib32-portaudio

# Orphanパッケージの削除
$ sudo pacman -Rns $(pacman -Qdtq)                                               [/usr/lib] - 14:06
checking dependencies...
:: lib32-alsa-plugins optionally requires lib32-jack: for pcm_jack plugin
warning: dependency cycle detected:
warning: lib32-harfbuzz will be removed after its lib32-freetype2 dependency

Packages (25) lib32-cairo-1.17.4-5  lib32-db-5.3.28-4  lib32-fontconfig-2:2.13.93-4  lib32-freetype2-2.10.4-1
              lib32-fribidi-1.0.10-1  lib32-glib2-2.68.1-1  lib32-gmp-6.2.1-1  lib32-harfbuzz-2.8.0-1  lib32-jack-0.125.0-3
              lib32-libdatrie-0.2.13-1  lib32-libjpeg-turbo-2.0.6-1  lib32-libpng-1.6.37-3  lib32-libthai-0.1.28-1
              lib32-libtiff-4.2.0-1  lib32-libxft-2.3.3-1  lib32-libxrender-0.9.10-2  lib32-pcre-8.44-1  lib32-pixman-0.40.0-1
              lib32-lcms2-2.12-1  lib32-libgudev-236-1  lib32-libinstpatch-1.1.6-1  lib32-libusb-1.0.24-1  lib32-nettle-3.7.2-1
              lib32-pango-1:1.48.4-1  lib32-portaudio-1:19.7.0-1

Total Removed Size:  20.11 MiB

:: Do you want to remove these packages? [Y/n] 
:: Processing package changes...
( 1/25) removing lib32-portaudio                                               [---------------------------------------------] 100%
...
...
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
```

## 不要なCacheやログの削除
```shell:terminal
# ローカルのCacheディレクトリのサイズ確認
$ du -sh ~/.cache
56G	/home/xxx/.cache

# ローカルのCacheディレクトリのクリーンアップ
$ rm -rf ~/.cache/*

# journal logディレクトリのサイズ確認
$ du -sh /var/log/journal   
457M	/var/log/journal

# journal logディレクトリで2週間以前のデータをクリーンアップ
$ sudo journalctl --vacuum-time=2weeks      
Vacuuming done, freed 0B of archived journals from /var/log/journal.
Vacuuming done, freed 0B of archived journals from /run/log/journal.
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-0000000000059212-0005b01079c5c8c5.journal (72.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-0000000000059214-0005b0107f582a61.journal (16.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-000000000006de61-0005b2750d084246.journal (64.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-000000000006de7b-0005b27565df6c6d.journal (16.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-0000000000081757-0005b4d9829cc189.journal (48.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-0000000000081758-0005b4d9abd7ac9a.journal (16.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-000000000008e8a4-0005b73df32a52cd.journal (64.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-000000000008e928-0005b73e50052f8e.journal (16.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-00000000000a0d4f-0005b9a248f80864.journal (32.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-00000000000a0dc5-0005b9a24a8eaec1.journal (8.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/system@8a4505f59c80465c84530b70149d9175-00000000000a8852-0005bbc06eb8ed49.journal (32.0M).
Deleted archived journal /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76/user-1000@a4f9f0272fb2443d84f39487827e0195-00000000000a886f-0005bbc07fd26176.journal (16.0M).
Vacuuming done, freed 400.0M of archived journals from /var/log/journal/868e7be5b04348a9bba2d3dabfaffd76.

# かなりサイズが小さくなりました！
$ du -sh /var/log/journal                                                        [/usr/lib] - 14:16
57M	/var/log/journal

```

## 色々エラー等出てるのを解決していく
下記のページを参考に、あたりをつけながらカーネルパラメタを変更して試すかんじで、泥臭い作業になりそうです。下記、いくつか例を上げてますが、治ったり、再発したりと、一筋縄で解決はできてないので、色々と試してみてください。
[Kernel Parameter List](https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html)

### snd_hda_codec_hdmi
```shell:terminal   
$ sudo journalctl -p 3 -xb
kernel: snd_hda_codec_hdmi hdaudioC0D2: Monitor plugged-in, Failed to power up codec ret=[-13]

# Grubに「snd_hda_codec_hdmi.enable_silent_stream=0」でstream機能を無効に
$ sudo vim /etc/default/grub
--
GRUB_CMDLINE_LINUX_DEFAULT="apparmor=1 mem_sleep_default=deep security=apparmor udev.log_priority=3 acpi_backlight=native snd_hda_codec_hdmi.enable_silent_stream=0"
--
# grub設定ファイル更新、そして再起動してエラーログ出ていないことを確認
$ sudo update-grub
```

### ioremap error
```shell:terminal   
$ sudo journalctl -p 3 -xb
ioremap error for 0x6e110000-0x6e111000, requested 0x2, got 0x0

# Grubに「pci=noats」でstream機能を無効に
$ sudo vim /etc/default/grub
--
GRUB_CMDLINE_LINUX_DEFAULT="apparmor=1 mem_sleep_default=deep security=apparmor udev.log_priority=3 acpi_backlight=native snd_hda_codec_hdmi.enable_silent_stream=0 pci=noats"
--
# grub設定ファイル更新、そして再起動してエラーログ出ていないことを確認
$ sudo update-grub
```