プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

Ryzen5 1600にArch Linuxをインストールする

スポンサーリンク

構成

項目 型番
CPU AMD Ryzen5 1600
M/B MSI TOMAHAWK B350
RAM SanMax SMD4-U8GM-24R-D
サウンド Onkyo SE200PCI

Install

インストールガイド - ArchWikiに全部書いてあるので,コマンドのみ

$ ls /sys/firmware/efi/efivars
$ loadkeys jp106

...
$ parted /dev/sda
(parted)$ mklabel gpt
(parted)$ mkpart ESP fat32 1MiB 513MiB
(parted)$ set 1 boot on
(parted)$ mkpart primary xfs 513MiB 100%
(parted)$ print
Number Start  End   Size  File system Name Flags
 1     1049kB 538MB 537MB fat32            boot, esp
 2     538MB  120GB 119GB xfs
(parted)$ quit

$ mkfs.fat -F32 /dev/sda1
$ mkfs.xfs /dev/sda2

$ mount /dev/sda2 /mnt
$ mkdir /mnt/boot
$ mount /dev/sda1 /mnt/boot

$ ping archlinuxjp.org
...ok

$ timedatectl set-ntp true

$ vim /etc/pacman.d/mirrorlist
## Japan
http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
$ pacstrap /mnt base base-devel

$ genfstab -U /mnt >> /mnt/etc/fstab
$ arch-chroot /mnt
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc --utc

$ pacman -S vim

$ vim /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
$ locale-gen
Generating locales...
  en_US.UTF-8... done
    ja_JP.UTF-8... done
Generation complete.
$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ echo KEYMAP=jp106 > /etc/vconsole.conf
$ echo ホスト名 > /etc/hostname
$ vim /etc/hosts
127.0.1.1   ホスト名.localdomain    ホスト名

$ mkinitcpio -p linux
$ passwd

$ ls /sys/firmware/efi/efivars
...
$ bootctl --path=/boot Install
$ vim /boot/loader/loader.conf
default arch
timeout 3
editor 0

$ blkid -s PARTUUID -o value /dev/sda2
UUID文字列
$ vim /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=UUID文字列 rw

$ exit
$ umount -R /mnt
$ reboot

初期設定

ユーザ追加・sudo有効化

$ useradd ユーザ名
$ gpasswd -a ユーザ名 wheel
$ passwd ユーザ名

$ pacman -S sudo
$ EDITOR=vim visudo
%wheel ALL=(ALL) ALL    # コメント解除する

これ以降はユーザ権限で設定を行う

DHCP有効化

デフォルトで起動しているものと思っていたが,起動していなかったので

$ sudo systemctl start dhcpcd

yaourt

$ sudo vim /etc/pacman.conf
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

$ sudo pacman --sync --refresh yaourt

Xorg

あたりを参考に

$ pacman -S xorg-server xorg-server-utils xorg-xinit xorg-xclock xterm

$ lspci | grep -e VGA -e 3D
25:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde PRO [Radeon HD 7750/8740 / R7 250E]
$ sudo pacman -S xf86-video-amdgpu

グラフィックドライバをロードするために,再起動する

$ reboot

Xfce

Xfce - ArchWiki

$ sudo pacman -S xfce4 xfce4-goodies gamin

$ vim ~/.xinitrc
#!/bin/bash
exec startxfce4

キーボードレイアウトの設定

Xorg でのキーボード設定 - ArchWiki

$ sudo vim /etc/X11/xorg.conf.d/00-keyboard.conf
Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "jp,us"
    Option "XkbModel" "pc106"
    Option "XkbVariant" ",dvorak"
    Option "XkbOptions" "grp:alt_shift_toggle"
EndSection

$ sudo reboot

日本語入力

xprofile - ArchWiki

$ sudo pacman -S fcitx-mozc fcitx-im fcitx-configtool

$ vim ~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=”@im=fcitx”

$ vim ~/.xinitrc
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f ~/.xprofile ] && . ~/.xprofile
fcitx-autostart &

$ sudo reboot

ALSAの設定

alsa-utilsのインストール

$ sudo pacman -S alsa-utils

バイスの確認

サウンドボード(ice1724)から音を鳴らしたい

$ alsamixer
カード: ONKYO SE200PCI                      F1:  ヘルプ
チップ: ICE1724 - multitrack                F2:  システム情報
  表示: F3:[再生] F4: 録音  F5: 全て        F6:  サウンドカード選択
  項目: Front [dBゲイン: -18.00, -18.00]    Esc: 終了

ロードされているモジュールを確認する

$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_hda_intel
2 snd_ice1724

おそらく

  1. オンボード
  2. HDMI
  3. サウンドボード

snd_ice1724をデフォルト(0)のデバイスに設定する

UEFIオンボードを無効化(Disable)し、以下のファイルで読み込み順を指定する

$ sudo vim /etc/modprobe.d/alsa-base.conf
options snd slots=snd_ice1724,snd_hda_intel
options snd_ice1724 index=0
options snd_hda_intel index=1

再起動後,

$ cat /proc/asound/modules
0 snd_ice1724
1 snd_hda_intel

となり,無事に再生できた.

一応,失敗した設定例も下に乗せておく.

失敗1:snd_ice1724をデフォルト(0)に固定する

オンボードを有効にした状態

$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_hda_intel
2 snd_ice1724

では,snd_hda_intelが2つ存在し,

$ sudo vim /etc/modprobe.d/alsa-base.conf
options snd slots=snd_ice1724,snd_hda_intel
options snd_ice1724 index=0
options snd_hda_intel index=1

$ sudo vim /etc/modprobe.d/alsa-base.conf
options snd slots=snd_ice1724,snd_hda_intel,snd_hda_intel
options snd_ice1724 index=0
options snd_hda_intel index=1
options snd_hda_intel index=2

等を設定してもsnd_ice1724がデフォルトにならなかった

失敗2:環境変数を使ってデフォルトPCMを選択する

Select the default PCM via environment variable - ArchWikiの通りに設定するとice1724から音が出るようになったが複数同時再生(Firefox+SMPlayer)ができなかった

$ sudo vim /etc/asound.conf
pcm.!default {
    type plug
    slave.pcm {
        @func getenv
        vars [ ALSAPCM ]
        default "hw:2,0"
    }
}

ここで,hw:2,0

$ aplay -l
カード 2: SE200PCI [ONKYO SE200PCI], デバイス 0: ICE1724 [ICE1724]
  サブデバイス: 0/1
  サブデバイス #0: subdevice #0

でしらべた

失敗3:~/.asoundrcでデバイスを指定する

Alternative method - ArchWiki の通りに設定した場合も同時再生ができなかった

この設定では,はじめに音声再生を始めたソフトがハードウェアがデバイスを専有してしまうため同時再生できないらしい.

$ vim ~/.asoundrc
pcm.!default {
    type hw
    card 2
}

ctl.!default {
    type hw
    card 2
}