これまでは 2013/11 に購入したノートPC Thinkpad e440 に Fedora を入れて使っていた。 いよいよ古さを感じてきたのと、AMD CPU が盛り上がっているのを見て使ってみたくなったので、第3世代 Ryzen を CPU にして新しいメインPCを組んでみた。

今回も OS は Fedora にした。

1. ハードウェア構成

パーツ一式

1.1. Motherboard

  • GIGABYTE B450 AORUS PRO WIFI (rev.1.0)

B450 AORUS PRO WIFI (rev. 1.0) | マザーボード - GIGABYTE Japan

ネットワークカード周りで Linux の相性が結構出てこれまで苦労してきたので、 今回は Intel チップのものを選んだ。

このマザーには PS/2 端子が付いていない。購入してから気付いた。 うちには PS/2 キーボードならたくさんあるものの、なぜか USB キーボードが無かったため操作できなかった。

Ainex の PS/2 変換ケーブルを買い足した。

ADV-108B | Ainex

1.2. CPU

  • AMD Ryzen 7 3700X
  • AM4/3.6/36M/C8/T16/65W

AMD Ryzen™ 7 3700X | AMD

いま買うなら Ryzen 一択か。8コア16スレッド。

BOX の購入で CPU クーラー Wraith Prism with RGB LED が付いてくるのでそれを利用した。 色が七色にグラデーションするので綺麗である。

Ryzen5 3700X CPU

1.3. RAM

  • ADATA DDR4 PC4-21300 16GB 2枚組
  • AD4U26666316G19-D

計32GBになった。値段で選択した。

Premier シリーズ DDR4 2666 288 ピンアンバッファー DIMM メモリ | 説明 | ADATA コンシューマー

1.4. SSD

  • CFD CG3VS 960GB
  • CSSD-S6B960CG3VX

CSSD-S6B960CG3VX:CFD CG3VX シリーズ SATA接続 SSD 960GB | CFD販売株式会社 CFD Sales INC.

約 1TB の SSD の金額が1万円を切っていたので驚いた。3D NAND 採用の商品から選択。

NAS があるのでディスク容量は 500 GB でも困らないのだけど、Docker とかが結構容量食うようになっていくことを見越して少し多めに積んでおくことにした。

1.5. VGA

  • PowerColor Red Dragon Radeon RX 460 2GB GDDR5
  • TUL-AXRX 460 2GBD5-DH/OC

RED DRAGON RX 460 2GB GDDR5|PowerColor

秋葉原のパソコン工房にて中古を購入。

RoCMが最低限動きそうなスペックのものを選んだ。

今後 NVIDIA 製品のバージョンがもう少し進んだら新しいものを購入し、いまニューラルネット専用機に差している GTX1060 をこっちの PC に移植する予定。

1.6. Power supply

  • ANTEC NeoECO GOLD
  • NE750 GOLD

NeoECO GOLD | 株式会社リンクスインターナショナル

実績のあるものを素直に購入。

この電源はニューラルネット専用機に使い、いまそれに入っている 500W Platinum をこっちに持ってくる予定。

1.7. PC case

  • JONSBO U4R

JONSBO U4 シリーズ | 株式会社アイティーシー

Mini-ATX 級のコンパクトサイズだが ATX が入る面白い製品。赤を選んだ。赤は秋葉原の店舗ではかなり売り切れており、人気を感じられた。 前面の 12cm をケースファンを背面に移動して利用。

安さも魅力だが、ねじがしょぼいとか少し安っぽさも隠せない。

1.8. Main monitor

  • Mitsubishi 23インチワイド LED 液晶モニタ
  • RDT234WLM 1920x1080

秋葉原のドスパラにて中古を購入。

1.9. Sub monitor

  • Samusung SyncMasteer
  • B2330H 1920x1080

4年くらい前に秋葉原にて中古を購入。前の PC のサブディスプレイを転用。

1.10. 完成

組み上がったのが以下の記念写真。

完成

実は SSD を SATA で繋ぎ忘れている。ちゃんと差さないと OS インストールの時に怒られる。

2. Fedora OS のインストール

2.1. Fedora インストール

Fedora Workstation の Live イメージの iso を公式サイトからダウンロードする。

Fedora Workstationのダウンロード

それを USB メモリに書き込み、起動 USB ドライブを作成する。

$ sudo mkfs.vfat /dev/sdb -I
$ sudo dd if=~/Downloads/Fedora-Workstation-Live-x86_64-30-1.2.iso of=/dev/sdb

それを新しい PC に差して、UI で言われるままにインストールしていく。 今回、なぜかエラー等は出ず流れるようにインストール成功した。 いつもはブートオプションをチマチマいじってやっと起動にこぎつけるのと、それが OS インストールの醍醐味だと思っているので、うまくいきすぎると少し物足りなく感じる。

間違えて /dev/sdb1 にイメージを書き込むと GRUB とだけ表示されて進めなくなる。 /dev/sdb に書くのが正しい。

2.2. システム情報

OS:

$ uname -a
Linux fg-ryz 5.2.15-200.fc30.x86_64 #1 SMP Mon Sep 16 15:17:36 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

CPU:

$ head -27 /proc/cpuinfo
processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 23
model		: 113
model name	: AMD Ryzen 7 3700X 8-Core Processor
stepping	: 0
microcode	: 0x8701013
cpu MHz		: 2195.513
cache size	: 512 KB
physical id	: 0
siblings	: 16
core id		: 0
cpu cores	: 8
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 16
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba sev ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
bugs		: sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips	: 7186.88
TLB size	: 3072 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]

RAM:

> cat /proc/meminfo
MemTotal:       32947256 kB
MemFree:        23153828 kB
MemAvailable:   29041884 kB
Buffers:          242304 kB
Cached:          5837620 kB
SwapCached:            0 kB
Active:          3401972 kB
Inactive:        4624508 kB
Active(anon):    1932016 kB
Inactive(anon):   214760 kB
Active(file):    1469956 kB
Inactive(file):  4409748 kB
Unevictable:          48 kB
Mlocked:              48 kB
SwapTotal:      16543740 kB
SwapFree:       16543740 kB
Dirty:                68 kB
Writeback:             0 kB
AnonPages:       1946732 kB
Mapped:           719480 kB
Shmem:            217084 kB
KReclaimable:     472844 kB
Slab:             757680 kB
SReclaimable:     472844 kB
SUnreclaim:       284836 kB
KernelStack:       17168 kB
PageTables:        40000 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    33017368 kB
Committed_AS:   10836048 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:            37632 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:     1228032 kB
DirectMap2M:    11304960 kB
DirectMap1G:    22020096 kB

Disk:

$ sudo fdisk /dev/sda
コマンド (m でヘルプ): p
ディスク /dev/sda: 894.3 GiB, 960197124096 バイト, 1875385008 セクタ
ディスク型式: CSSD-S6B960CG3VX
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 0BECA10C-EB16-4EA2-9E16-DB68FA6C53CF

デバイス   開始位置   終了位置     セクタ サイズ タイプ
/dev/sda1      2048     411647     409600   200M EFI システム
/dev/sda2    411648    2508799    2097152     1G Linux ファイルシステム
/dev/sda3   2508800 1875384319 1872875520 893.1G Linux LVM

VGA:

$ lspci | grep VGA
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (rev cf)

Ethernet:

$ lspci | grep Ethernet
03:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)

3. 環境整備

3.1. DNF パッケージのアップデート

とりあえず更新しておく。

$ sudo su - 
# passwd
# dnf update

3.2. DNF レポジトリの設定

いつか使うと思うので RPM Fusion を追加しておく。

$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
$ sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Configuration - RPM Fusion

3.3. Vim のインストール

頻繁に使うので先にインストールしておく。

$ sudo dnf install vim

vimrc はいじらない派なのでこのままにする。

3.4. Ctrl と CapsLock の入れ替え

これもやっておかないと作業中ストレスになるから早めにやっておく。 GUI で設定できた。

$ sudo dnf install gnome-tweaks

Tweaks の Keyboard & Mouse から、 Additional Layout Option に入り、それっぽい項目を変更する。設定反映のためには Gnome の再起動が必要である。

3.5. 日本語キーボードの設定

iBus + Mozc で設定した。

$ sudo dnf install ibus-mozc

Gnome の設定>地域と言語>入力ソースで 日本語 (Mozc) を追加。

さらに日本語 (Mozc) のプロパティでキー設定を編集し、変換キー、無変換キーでひらがな入力と直接入力を切替えられるようにした。

  • 入力文字なし Henkan ひらがなに入力切替
  • 入力文字なし Muhenkan IMEを無効化

このままではキーボードが US レイアウトになっているので、これを JP レイアウトになるようにする。 iBus 設定の mozc.xml で <layout>jp</layout> とすればよい。

$ sudo vim /usr/share/ibus/component/mozc.xml
$ grep -A3 -B8 layout /usr/share/ibus/component/mozc.xml
<engine>
  <description>Mozc (Japanese Input Method)</description>
  <language>ja</language>
  <symbol>&#x3042;</symbol>
  <rank>80</rank>
  <icon_prop_key>InputMode</icon_prop_key>
  <icon>/usr/share/ibus-mozc/product_icon.png</icon>
  <setup>/usr/libexec/mozc/mozc_tool --mode=config_dialog</setup>
  <layout>jp</layout>
  <name>mozc-jp</name>
  <longname>Mozc</longname>
</engine>

設定を反映させるため、Gnome からログアウトし、再ログインする。

iBus+kkc では日本語キーボード設定にすると Ctrl+[ が Escape にならず困った。 iBus+mozc を使うようにしてみたところ、今度は特別な設定は何もしなくても期待通り、Ctrl+[ が Escape として機能するようになった。

Windows キー

キーボード周りは Windows キーが効かない問題が残った。押しても全く反応せず、まるでおもちゃのキートップみたいである。 本当は Windows キーを Super キーとして利用し、Gnome の検索画面が出るようにしたい。

evtest コマンドで調べてみても Windows キーについては何も出力されないので、ドライバとかそっちからうまくいっていないのかもしれない。

特別なキーボードキー - ArchWiki

3.6. ネットワークディレクトリのマウント

LAN 内のホストを設定する。

$ sudo vim /etc/hosts
...
192.168.0.100  hoge.xaxxi.net

fstab を編集して NAS を CIFS でマウントする設定を入れる。

$ cat /etc/fstab
//hoge.xaxxi.net/library /home/fujii/House/Library cifs  defaults,user,rw,username=fujii,password=****,iocharset=utf8,uid=1000,gid=1000 0 2
//hoge.xaxxi.net/living /home/fujii/House/Living cifs  defaults,rw,username=fujii,password=****,iocharset=utf8,uid=1000,gid=1000 0 2
//hoge.xaxxi.net/entrance /home/fujii/House/Entrance cifs  defaults,rw,username=fujii,password=****,iocharset=utf8,uid=1000,gid=1000 0 2

手動でマウントしてみる。

$ cd ~/House
$ mkdir Library Living Entrance
$ sudo mount Library
$ sudo mount Living
$ sudo mount Entrance

3.7. SSHクライアント設定の移行

面倒だったので rsync で前の PC から全部コピーした。

$ cd ~/.ssh
$ rsync -av fujii@192.168.0.24:/home/fujii/.ssh/ .

3.8. Webブラウザのインストール

Opera 最強伝説なので Vivaldi を使う。

Vivaldi Sync

設定等は Vivaldi Sync で同期した。 一部の設定は同期されないが、項目数も多くないので手で一つ一つやればいいと思う。

タブの同期

開いているタブは Vivaldi Sync で同期されなかった。 そこでセッションとして保存し、そのファイルを新しい PC に移動して Vivaldi で開いた。 Vivaldi で保存したセッションは ~/.config/vivaldi/Default/Sesssions/ 配下に *.bin として作られる。 それを新しい PC の同じディレクトリに配置し、Vivaldi で復元すればよい。

libffmpeg の置き換え

インストール直後の状態では YouTube とかを見ようとするとエラーになってしまう。 libffmpeg.so を別途拾ってきて Vivaldi のものを置き換えると改善した。

以下のページより最新の libffmpeg.so をダウンロードし、 そのファイルを展開して得られた libffmpeg.so を Vivaldi にコピーする。

2019/9/20 現在では 0.39.2-linux-x64.zip が最新だった。

Release 0.39.2 · iteufel/nwjs-ffmpeg-prebuilt · GitHub

$ sudo cp libffmpeg.so /opt/vivaldi/lib/libffmpeg.so

3.9. プログラミングフォントのインストール

Ricty にしたり、Cica にしたりしてみた。

miiton/Cica: プログラミング用日本語等幅フォント Cica(シカ)

$ ls ~/.fonts
Cica-Bold.ttf        Cica-Regular.ttf        Inconsolata.otf*  Ricty-Regular.ttf*  migu-1m-regular.ttf*
Cica-BoldItalic.ttf  Cica-RegularItalic.ttf  Ricty-Bold.ttf*   migu-1m-bold.ttf*

3.10. Emacs

メインのテキストエディタは Emacs を使う。Emacs は DNF でインストールした。

$ sudo install emacs

楽しいので Spacemacs にして使う。 まず .emacs.d を Spacemacs のものにする。より楽しみを求めるので develop ブランチを使う。

$ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
$ git -C ~/.emacs.d checkout develop

設定ファイルは前の PC から持ち越しで使う。

$ cp .spacemacs ~/
$ cp .skk-jisyo ~/
$ cp framesize.el skk-azik.el ~/.emacs.d

3.10. Thunderbird

メーラーは Thunderbird を DNF インストールした。

$ sudo dnf install thunderbird

全てのメールアカウントが IMAP だったので、それぞれ新規に設定し直した。 はじめは Profile ディレクトリを丸ごと移行する手法を採用したが、Thunderbird が起動しなくなってしまったので諦めた。

Rainloop とかを利用して Web ベースにするのも今後試してみたい。

3.11. cmus

cmus はターミナル上で動作する CUI の音楽プレイヤーである。

キーボードで操作しやすいのが魅力的である。 前まではソースコンパイルで利用していたが、とりあえず DNF でインストールした。

$ sudo dnf install cmus

プレイリストデータとかが .cmus に保存されているので、ディレクトリごとコピーした。

$ cd
$ rsync -av fujii@192.168.0.24:/home/fujii/.cmus .

C* Music Player

3.12. USB Audio

DENON のオーディオアンプ PMA-50 があるので USB Audio で接続する。

USB で接続すると Gnome の Sound 設定から GUI に PMA-50 が表示されたので、それを選択するだけであった。

Denon公式 | PMA-50の仕様・特長 | USB-DAC / プリメインアンプ

3.13. Rust

ちょうど Rust で作業中だったのでこれも流れで構築してしまう。

Rust のインストール。Rust 言語自体の開発がまだ日進月歩な状態のため、DNF で入れるよりは公式の rustup で導入した方が色々と捗る。

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust programming 
language, and its package manager, Cargo.

It will add the cargo, rustc, rustup and other commands to Cargo's bin 
directory, located at:

  /home/fujii/.cargo/bin

This can be modified with the CARGO_HOME environment variable.

Rustup metadata and toolchains will be installed into the Rustup home 
directory, located at:

  /home/fujii/.rustup

This can be modified with the RUSTUP_HOME environment variable.

This path will then be added to your PATH environment variable by modifying the
profile files located at:

  /home/fujii/.profile
  /home/fujii/.bash_profile

You can uninstall at any time with rustup self uninstall and these changes will
be reverted.

Current installation options:

   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

Emacs で補完とか効かせるために、racer をインストールする。racer を入れるためには rustc を nightly にしないと成功しない。

$ ~/.cargo/bin/rustup install nightly
$ ~/.cargo/bin/rustup default nightly
$ ~/.cargo/bin/cargo install racer
$ cd ~/Download/src
$ git clone https://github.com/rust-lang/rust.git

Emacs の設定に下記を追記:

  (custom-set-variables
   '(racer-cmd (expand-file-name "~/.cargo/bin/racer"))
   '(racer-rust-src-path (expand-file-name "~/Download/src/rust/src")))

auto-complete source for Rust - syohex’s diary

3.14. SELinux

本当はちゃんと設定した方がよいのはわかっているが、サーバーでもないし自分しか使わないので面倒臭いから無効にしてしまう。

$ sudo vim /etc/sysconfig/selinux
$ grep permissive /etc/sysconfig/selinux
#     permissive - SELinux prints warnings instead of enforcing.
SELINUX=permissive

3.15. Docker

Docker もよく使うのでやはり流れで入れておいた。 docker グループにユーザーを追加しておくと、ユーザー権限で Docker が実行でき便利である。

$ sudo dnf install docker docker-compose
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo groupadd docker
$ sudo usermod -aG docker fujii
$ sudo shutdown -r now

3.16. ディスプレイバックライト調整

画面が明るいと深夜に目が疲れてくるのでこの設定は必須である。 Wayland のままではどうしてもバックライトを調整できなかったのだが、Xorg に切り替えて試してみたところ xrandr であっさりできた。

Wayland ではうまくいかず

ACPI が有効になり ls /sys/class/backlight に何かが表示されていないとバックライトの調整は出来ないものと思い、ひたすら Boot オプションを変更しては再起動を繰り返したが成就せず。

こんな設定とか、

# grubby --update-kernel $(grubby --default-kernel) --args="ro resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet video.use_native_backlight=1"

こんな設定とかその他いろいろ試した。

# grubby --update-kernel $(grubby --default-kernel) --args="ro resume=/dev/mapper/fedora_localhost--live-swap rd.lvm.lv=fedora_localhost-live/root rd.lvm.lv=fedora_localhost-live/swap rhgb quiet acpi_osi=Linux acpi_backlight=vendor"

バックライト - ArchWiki

Xorg ならできた

駄目元で Xorg でログインし直しところ、xrandr で普通に明るさ調整できるようになった。

$ xrandr | grep " connected"  | cut -f1
HDMI-1 connected 1080x1920+0+0 right (normal left inverted right x axis y axis) 160mm x 90mm
DVI-D-1 connected primary 1920x1080+1080+556 (normal left inverted right x axis y axis) 509mm x 286mm

当面は以下のようなスクリプトを置いておくことにする。

#!/bin/sh

help() {
        cat <<EOF
$1 [0.0-1.0]
EOF
}

if [ $# != 1 ]; then
        help
        exit 1
fi

brightness=$1

for d in $(xrandr | grep " connected" | cut -d" " -f1); do
        xrandr --output $d --brightness $brightness;
done

次のようにして使う。

$ set_brightness.sh 0.8

今なお /sys/class/backlight には何も無い。無くてもいいんかい。

3.17. Gnome3 拡張

  • gTile: ウィンドウを 8x6 グリッドに合わせて配置できる。入れたばかりであるが役立ちそう。

4. まとめ

全体的に簡単に移行できてしまい時代の進歩を感じた。 反面「どうしよう…」みたいな感にならなくて刺激が足りなかった。

Windows キーがまだ動いていないので、ここを楽しみたい。

PC も新しくなったし、OS 周りも掃除できたので日々が明るい。