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

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

Arch Linuxのインストール 2019年6月版

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

rootパスワードの設定

$ 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 --create-home ユーザ名
$ gpasswd -a ユーザ名 wheel
$ passwd ユーザ名

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

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

DHCP有効化

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

$ sudo systemctl start dhcpcd

yay

yaourtが開発停止になったため代わりのyayを入れる

$ sudo pacman -S git

$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

$ type yay
yay is /usr/bin/yay
$ yay --version
yay v9.2.0 - libalpm v11.0.3

AURを追加する

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

$ yay -Syy

GUIのインストール

Xorg、LightDM、Xfceをインストールする

$ sudo pacman -S \
    xorg-server xorg-xclock xterm \
    lightdm lightdm-gtk-greeter \
    xfce4 xfce4-goodies

$ sudo systemctl enable lightdm

グラフィックスドライバを入れる

$ lspci | grep -e VGA -e 3D
%%%%%
%%%%%
%%%%%
$ sudo pacman -S xf86-video-intel

xf86-video-*は環境に合わせてamdgpuとかnouveauに変える。

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

$ sudo reboot

再起動後はLightDMが動いてGUIログインできる。

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

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 \
    noto-fonts-cjk

$ 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 &

ログインし直して、タスクバーのキーボードアイコンから、
Configureを選択し、+アイコンからMozcを追加する。

Ubuntu16.04でVirtualBoxを動かす

実行環境

  • OS : Ubuntu16.04.4 LTS
  • CPU: Ryzen Threadripper 1950X
  • M/B: ASUS PRIME-X399-A

インストール

$ sudo apt-get -y install virtualbox

仮想マシンを起動してみる

$ virtualbox

別マシンで作成したWindows7の仮想HDD(Win7Test)を指定して起動すると、ポップアップで下記内容が表示されて起動に失敗する

Failed to open a session for the virtual machine Win7Test.

AMD-V is disabled in the BIOS (or by the host OS) (VERR_SVM_DISABLED).

Result Code: NS_ERROR_FAILURE (0x80004005)
Component : ConsoleWrap
Interface : IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

AMD-Vが無効になっている

仮想化機能の確認

ハードウェアがサポートしているか

されている

$ LC_ALL=C lscpu | grep Virtualization
Virtualization:        AMD-V

OSからAMD-Vが利用可能か

Intelでやったときkvm_intelが出てきていたが,kvm_amdみたいなのが無いのでBIOSカーネルかで無効になっている?

$ lsmod | grep kvm
kvm                   552960  0
irqbypass              16384  1 kvm

マザーボードで有効化されているか

Advanced -> CPU Configuration -> SVM Modeで有効化(Disabled -> Enabledに変更)する必要があった

再起動するとkvm_amdが追加された

$ lsmod | grep kvm
kvm_amd                65536  0
kvm                   552960  1 kvm_amd
irqbypass              16384  1 kvm

kvm_amdが追加された状態ならエラーなしで仮想マシンを起動できた

Ubuntu16.04にsambaサーバを立てる

インストール

$ sudo apt-get -y install samba

設定ファイル編集

$ sudo vim /etc/samba/smb.conf

で設定ファイルを編集する

globalセクション

[global]
        unix charset = UTF-8
        dos charset = CP932
        writable = yes
        guest ok = no
        vfs objects = recycle
        recycle:repository = .recycle
        recycle:keeptree = no
        recycle:touch = yes
        recycle:versions = yes
        recycle:maxsize = 0

homesセクション

# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home directory as \\server\username
[homes]
   comment = Home Directories
   browseable = yes
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes
    read only = no
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
;   create mask = 0700
# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
;   directory mask = 0700
# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \\server\username
# This might need tweaking when using external authentication schemes
    valid users = %S

プリンタ

不要なので無効にする

;[printers]
;   comment = All Printers
;   browseable = no
;   path = /var/spool/samba
;   printable = yes
;   guest ok = no
;   read only = yes
;   create mask = 0700
;
;# Windows clients look for this share name as a source of downloadable
;# printer drivers
;[print$]
;   comment = Printer Drivers
;   path = /var/lib/samba/printers
;   browseable = yes
;   read only = yes
;   guest ok = no

サービス起動

$ sudo systemctl start smbd nmbd
$ sudo systemctl enable smbd nmbd

Sambaユーザの追加

下記コマンドでユーザを追加できる。
追加後にサービスを再起動する必要はない。

$ sudo smbpasswd -a ユーザ名
New SMB password: パスワード入力
Retype new SMB password: パスワード再入力
Added user ユーザ名.

Debian9にGeForceのドライバをインストールする

リポジトリの追加

$ sudo vim /etc/apt/sources.list
deb http://httpredir.debian.org/debian/ stretch main contrib non-free

インストール

$ sudo apt update
$ sudo apt -y install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver

この段階ではまだ有効になっていないので、再起動してnouveauのblacklistを適用する必要がある

$ sudo reboot

その他

$ sudo apt -y install nvidia-smi
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.82                 Driver Version: 375.82                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 0000:41:00.0     Off |                  N/A |
| 29%   43C    P0    59W / 250W |      0MiB / 11158MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

動いてそう

Debian9をX2Goサーバーにする

Xfceのインストール

GUI環境がインストールされていないのでXfceをインストールする

$ sudo apt -y install --no-install-recommends task-xfce-desktop

dirmngrのインストール

X2Goインストール時に

gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory

と言われるので、dirmngrをインストールしておく

$ sudo apt -y install dirmngr

X2Goサーバのインストール

wiki:repositories:debian [X2Go - everywhere@home]に載っている通りGPGキー、リポジトリを追加

$ apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
Executing: /tmp/apt-key-gpghome.5cBT7DkF8w/gpg.1.sh --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
gpg: key E1F958385BFE2B6E: public key "X2go Debian/Ubuntu Packaging <debian@x2go.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

$ sudo bash -c "echo 'deb http://packages.x2go.org/debian stretch extras main' >> /etc/apt/sources.list.d/x2go.list"
$ cat /etc/apt/sources.list.d/x2go.list
deb http://packages.x2go.org/debian stretch extras main

aptのキャッシュの更新

$ sudo apt update
$ sudo apt install x2go-keyring
$ sudo apt update

X2Go本体のインストール

$ sudo apt -y install x2goserver x2goserver-xsession

X2Goクライアントのインストール

Windows10にインストールする

doc:installation:x2goclient [X2Go - everywhere@home]のリンクDownload X2Go for MS Windowsからexeをダウンロードしてインストール

インストールが完了したら

  • Host: サーバのIP
  • Login: SSHログインするユーザ名

を指定して、Session typeXFCEにすればとりあえず接続できた


references

Ubuntu16.04でのbondingとWake on Lanの設定

NIC冗長化

設定前

eno1の方のIPを固定してそっちを使ってる

$ sudo nmcli device
DEVICE   TYPE      STATE         CONNECTION
eno1     ethernet  connected     eno1
enp14s0  ethernet  disconnected  --
lo       loopback  unmanaged     --

設定

bondingデバイスの作成

$ sudo nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup
Connection 'bond0' (d1619bdf-38b7-4f20-8a0d-fa9f419951ad) successfully added.

$ nmcli connection show
NAME                UUID                                  TYPE            DEVICE
eno1   bcd81468-59c2-401e-bfb8-33b23c2b7d57  802-3-ethernet  eno1
bond0  d1619bdf-38b7-4f20-8a0d-fa9f419951ad  bond            --

enp14s0をスレーブに追加する

$ sudo nmcli connection add type bond-slave ifname enp14s0 master bond0
Connection 'bond-slave-enp14s0' (3405d7d6-6e5a-4f8f-82c9-f4c386feae85) successfully added.

$ nmcli connection show
NAME                UUID                                  TYPE            DEVICE
eno1                bcd81468-59c2-401e-bfb8-33b23c2b7d57  802-3-ethernet  eno1
bond-slave-enp14s0  3405d7d6-6e5a-4f8f-82c9-f4c386feae85  802-3-ethernet  --
bond0               d1619bdf-38b7-4f20-8a0d-fa9f419951ad  bond            --

bond0の設定

$ sudo nmcli connection modify bond0 ipv4.addresses 192.168.1.12/24
$ sudo nmcli connection modify bond0 ipv4.method manual
$ sudo nmcli connection modify bond0 ipv4.gateway 192.168.1.1
$ sudo nmcli connection modify bond0 ipv4.dns 192.168.1.1

enp14s0だけをつないだbond0を起動する

$ sudo nmcli connection modify bond-slave-enp14s0 connection.autoconnect yes
$ sudo nmcli connection modify bond0 connection.autoconnect yes
$ sudo nmcli connection up bond0

これで,bond0を使ってSSH等で接続できるようになったのでeno1も追加する

$ sudo nmcli connection delete eno1
$ sudo nmcli connection add type bond-slave ifname eno1 master bond0
$ sudo nmcli connection modify bond-slave-eno1 connection.autoconnect yes

$ sudo nmcli connection down bond0 && sudo nmcli connection up bond0

接続状態を確認する

$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eno1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 38:d5:47:c7:c0:ad
Slave queue ID: 0

Slave Interface: enp14s0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 38:d5:47:c7:c0:ae
Slave queue ID: 0

Wake on Lan

Wake on Lanは実デバイス(eno1enp14s0)で有効になっている必要がある
以下のように1 (default)となっていれば何も設定する必要はない

$ nmcli -f "802-3-ethernet.wake-on-lan" con show bond-slave-eno1
802-3-ethernet.wake-on-lan:             1 (default)

MACアドレスを調べる

$ nmcli -f "GENERAL.HWADDR" device show eno1
GENERAL.HWADDR:                         38:D5:47:C7:C0:AD

enp14s0で調べても同じMACアドレスが表示された. 本当は38:d5:47:c7:c0:aeのはずなので,bodingしていることと関係がある?

$ nmcli -f "GENERAL.HWADDR" device show enp14s0
GENERAL.HWADDR:                         38:D5:47:C7:C0:AD

とりあえずeno1Wake on Lanができれば良いことにしておく

これで,クライアントから以下のコマンドを実行すれば起動できる

$ sudo ether-wake -i eno1 38:D5:47:C7:C0:AD

もし起動できない場合はUEFIWake by PCIeみたいな項目をEnableにする

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
}