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

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

CentOS Stream9でdockerを動かす

Dockerのインストール

Podmanとかを削除

$ sudo dnf remove podman runc

ここからは公式の情報dnfに置き換えて実行していく。

リポジトリを追加

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

インストール

$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

$ docker --version
Docker version 20.10.18, build b40c2f6

サービスの起動

$ sudo systemctl enable docker
$ sudo systemctl start docker

dockerグループにユーザを追加する

$ sudo gpasswd -a ユーザ名 docker

ログインし直すと

$ docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

docker-composeのインストール

最新バージョンをdocker/compose - GitHubで確認してcurlでコピーする

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose

パーミッションを設定

$ sudo chmod 0755 /usr/local/bin/docker-compose

確認

$ docker-compose --version
Docker Compose version v2.10.2

UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" insertedの原因

OpenLDAPサーバーにうまくつながらず、調べてみると

$ sudo slapcat > /dev/null
6226d131 UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" inserted.

と警告文が出ていた。

9.4.4. LDAP を使用した自動マウント機能マップの格納 Red Hat Enterprise Linux 6 | Red Hat Customer Portal を見る限りおそらくAutoFS(使っていない)の設定が原因っぽい。

とりあえずAutoFS関連のパッケージを削除するとつながるようになった。

$ sudo apt purge autofs autofs-ldap

警告文の仕方はわからなかった...

RTX3090+Ubuntu20.04でPyTorchを動かす

RTX3090 + Ubuntu20.04でPyTorch-1.7.0が動いたので、メモ.

ドライバのインストール

$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update
$ sudo apt install nvidia-driver-455

インストール後に再起動

$ sudo reboot

CUDA-11.1のインストール

RTX3000シリーズはCUDA11にしか対応してない?

CUDA Toolkit 11.1 Update 1 Downloads | NVIDIA Developerの通りにコマンドを実行する

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda

cuDNN-8.0.5のインストール

NVIDIA cuDNN | NVIDIA DeveloperDownload cuDNNからダウンロードしてきたlibcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.debをインストールする。

$ sudo apt install -y ./libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb

PyTorchのインストール

PyTorchのGet Startedページ

を選んで出てきたコマンドを実行する

$ pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

これでRTX3090+Ubuntu20.04+PyTorch1.7.0が動いた。

FreeBSD 12.1の初期設定

suを使えるようにする

suを使いたいユーザをwheelグループに追加する

$ vi /etc/group
- wheel:*:0:root
+ wheel:*:0:root,kento

パッケージのアップデート、必須パッケージのインストール

$ su
# pkg update
# pkg install sudo bash vim

sudoの設定

$ su
# visudo
- # %wheel ALL=(ALL) ALL
+ %wheel ALL=(ALL) ALL

デフォルトシェルをbashに変更

$ chsh -s /usr/local/bin/bash

IP固定

DHCPで下のように設定されていたものを固定割当に変更する

$ ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
    ether 08:60:6e:6e:d5:27
    inet 192.168.1.6 netmask 0xffffff00 broadcast 192.168.1.255
    media: Ethernet autoselect (1000baseT <full-duplex,master>)
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

rcファイルを編集する

$ sudo vim /etc/rc.conf
- ifconfig_re0="DHCP"
+ ifconfig_re0="inet 192.168.1.6 netmask 255.255.255.0 broadcast 192.168.1.255
+ defaultrouter="192.168.11.1"

DNSはインストール時のまま変更する必要がなかった

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.1.1

Arch LinuxでKVMを動かす

環境

  • CPU: Ryzen 3600
  • Kernel: 5.8.13-arch1-1
$ LC_ALL=C lscpu | grep Virtualization
Virtualization:                  AMD-V

の通り、AMD-Vで仮想化がサポートされている

インストール

$ sudo pacman -S qemu libvirt virt-manager virt-viewer

自動起動

$ sudo systemctl start libvirtd
$ sudo systemctl enable libvirtd

IOMMUの有効化

bootオプションにamd_iommu=oを追加する

$ sudo vim /boot/loader/entries/arch.conf
- options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw
+ options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw amd_iommu=on

編集後に再起動する

$ sudo reboot

dmesgを確認し下のような出力が出てこればIOMMUが有効化されている

$ dmesg | grep IOMMU
[    0.395281] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[    0.395282] AMD-Vi: AMD IOMMUv2 functionality not available on this system

virt-managerの起動

$ sudo virt-manager

とするとroot権限でVirtManagerが起動できるはず。

Yamaha NVR510に静的DNSレコードを追加する方法

administratorに昇格できる一般ユーザでNVR510にSSH接続する。

$ ssh user@192.168.1.1

ログインできたらadministratorコマンドで管理者に昇格する。 (administratorのパスワードはWebUIのユーザ名無しのパスワードと同じ)

> administrator

静的DNSレコードを追加する

下のようにip host ホスト名 IPアドレスとすることで追加できる、

# ip host smbserver 192.168.1.10

これにより,正引き登録(dns static a)と逆引き登録(dns static ptr

# dns static a smbserver 192.168.1.10
# dns static ptr 192.168.1.10 smbserver

を同時に行える。

smbserverに別のホスト名を追加で与えたい場合は以下のコマンドでできる.

# dns static cname anotherhost smbserver

静的DNSレコードの確認

静的DNSレコードの一覧を確認するコマンドは無いようなので、下のようにshow configgrepするしかない.

# show config | grep "ip host"
Searching ...
ip host smbserver 192.168.1.10

# show config | grep "dns static"
dns static cname anotherhost smbserver

DNSキャッシュの削除

DNSレコードの追加後に以下のコマンドでDNSキャッシュをクリアしなければ名前解決できない可能性がある。

$ clear dns cache

静的DNSレコードの削除

コマンドの先頭にnoをつけて以下のように実行する

# no ip host smbserver
# no dns static cname anotherserver

references

NeoVimでvim-lspの環境を構築する

ArchLinux (5.8.9-arch2-1) + Neovim v0.4.4の環境でvim-lspを使える様にする。

~/.config/nvim/init.vimの編集

asyncomplete.vim+vim-lspの環境に必要なプラグイン4つと

  • prabirshrestha/asyncomplete.vim
  • prabirshrestha/vim-lsp
  • prabirshrestha/async.vim
  • prabirshrestha/asyncomplete-lsp.vim

vim-lspの設定を勝手にやってくれる

  • mattn/vim-lsp-settings

をインストールするぐらい。

プラグインマネージャにvim-plugを使っている場合は、

" Install vim-plug
if has('vim_starting')
  let s:plug_dir = expand('~/.local/share/nvim/site/autoload/plug.vim')
  if !filereadable(s:plug_dir)
    execute '!curl -fLo ' . s:plug_dir . ' --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
  endif
endif
" Init vim-plug
let s:plugged_dir = expand('~/.local/share/nvim/plugged')
if !isdirectory(s:plugged_dir)
  call mkdir(s:plugged_dir)
endif

call plug#begin(s:plugged_dir)
Plug 'prabirshrestha/asyncomplete.vim'      " Auto complete
Plug 'prabirshrestha/vim-lsp'               " LSP
Plug 'prabirshrestha/async.vim'             " Execute in asynchronous
Plug 'prabirshrestha/asyncomplete-lsp.vim'  " Add LSP support
Plug 'mattn/vim-lsp-settings'               " Auto configure vim-lsp
call plug#end()

let g:lsp_diagnostics_enabled = 0           " Disable Linter comments (warning, error) from vim-lsp

lsp_diagnostics_enabledはインラインでメッセージが出てきて見にくいので、無効にする。

LanguageServerのインストール

基本的にはmattn/vim-lsp-settings:LspInstallServerを使って問題ないが、システムにインストールする必要があるものや仮想環境との関係で自分でインストールしたほうが良さそう?なものは別にインストールする。

C++

$ sudo pacman -S clangd

CMakeを使っている場合は

$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

して生成されたcompile_commands.jsonCMakeLists.txtと同じディレクトリに置く。具体的には

$ mkdir build
$ cd build
$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
$ mv compile_commands.json ../
$ cd ..

する。

Python

仮想環境内にLanguageServerを入れたくないので別で入れる。

$ pip3 install python-language-server
$ type pyls
pyls is /home/vild/.local/bin/pyls

Ruby

:LspInstallServerでインストールしても補完が動かなかったので、手動でインストールする。

$ gem install solargraph

Ruby2.7系の場合は~/.local/gem/のため~/.bashrc等で

$ export PATH=${PATH}:${HOME}/.local/gem/ruby

しておくと

$ type solargraph
solargraph is /home/vild/.local/ruby/2.7.0/gems/bin/solargraph

となり使用できるようになる。