20万アクセス達成してました。

このブログを自分のメモとして作って早4年(うち2年はほぼサボりだけど)、20万アクセスを達成したようです。

一応見に来た人にもわかりやすいように心がけて書いてますが、
まぁたまに「だ・である」口調になってるのは、実はそちらのほうが書きやすいからですね。
Linuxというのは中々面白いOSなので、今後もいろいろ試して継続してメモしていきたい所存。

【Raspberry Pi】PulseAudioでオーディオ出力を転送

現状、ラズパイ、小型PCといくつか持ってますが、流石にその都度スピーカーを買うのもアレなので、出力を一箇所に集中するべく、PulseAudioでの音の出力転送をします。

【参考サイト】
bluewidz.blogspot.com

今回はラズパイ3(クライアント側)→ラズパイ2(サーバ側。こちらにスピーカーを装着)

1.ラズパイ2(サーバ側)のセッティング

PulseAudioが入っていない場合もあるので、この場合はインストールから始める。

$ sudo apt update
$ sudo apt install pulseaudio

セッティングファイルをコピーしてホームディレクトリ配下に配置。
ホームディレクトリにPulsaAudioディレクトリが元々ある場合は不要だけど、無い場合は作成する。

$ mkdir ~/.config/pulse
$ cp /etc/pulse/default.pa ~/.config/pulse

コピーしたセッティングファイルは以下のように設定変更する。

$ vi ~/.config/pulse/default.pa

#load-module module-native-protocol-tcp

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.11.0/24

コメントアウトを解除して、authから先を記述。転送対象のローカルネットワークを指定

PulseAudioを再起動。ラズパイ2を再起動してもいい。

$ pulseaudio --kill
$ pulseaudio --start

2.ラズパイ3(クライアント側)のセッティング

以下のコマンドで1.で設定したサーバのIPアドレス環境変数に登録すればいい。

$ export PULSE_SERVER=192.168.1.81

しかし、これだけだと再起動したときにもしかしたら消えるかもなので、
ちゃんと設定しておく。

$ cp /etc/pulse/client.conf ~/.config/pulse
$ vi ~/.config/pulse/client.conf

;default-server =

default-server = 192.168.11.81
コメントアウトを外して、ラズパイ2のIPアドレスを設定

あとはラズパイ3でaplayなどで再生したファイルの音がラズパイ2で流れるのを確認すればOK。

【Ubuntu18.04】【LIVA Z】systemdの自動起動設定

追記

↓でグダグダ書いたけど、サーバ起動時のiptablesの自動設定はiptables-persistentをインストールするだけで解決しました・・・。
まぁsystemdの勉強ができたということで・・・。

$ sudo apt install iptables-persistent


・設定保存
sudo /etc/init.d/netfilter-persistent save

・設定読み込み
sudo /etc/init.d/netfilter-persistent reload

以下は無視してください。

ーーーーーーーーーーーーーーーーーーーー

記載が前後するけど、systemdにて自動起動する設定。
engetu21.hatenablog.com

今回はiptablesの構築ファイル。
※こちらの詳細は別途記載予定。

サーバ起動時に自動で起動したい場合、Ubuntu18.04ではsystemdを利用するらしい。
昔はinit.dに設定していたけど、時代は変わったということらしい・・・。
engetu21.hatenablog.com

1.Unitファイルの作成

iptablesの設定を記載したシェルファイルはどこに置いてもいいけど、それを起動するためにsystemdに読み込ませる設定ファイルが必要になる。
設定ファイルはUnit設定ファイルと呼ばれ、例えば、以下のように作成して、/etc/systemd/system配下に格納しておけばいいらしい。
詳細は以下のブログで。
qiita.com

$ sudo vi /etc/systemd/system/iptables.service

[Unit]
Description = iptables deamon
After=network.target

[Service]
ExecStart = /home/hogehoge/iptables.sh
Restart = always
Type = oneshot

[Install]
WantedBy = multi-user.target


※適用
$ sudo systemctl daemon-reload

自動起動の設定
$ sudo systemctl enable iptables deamon

iptables.shを置く場所は自由。ExecStartでその場所を指定してあげればいい。
起動時のみ設定したいようなファイルは、Typeの指定をoneshotにしておけばいいらしい。(今回のiptables.shのような、一回設定しとけばいいや、ってものはType = simpleに設定すると妙な挙動になるので注意)
また、Afterにnetwork.targetを指定することでネットワークが立ち上がってから動作するように指定できる。

もっと確実にネットワーク後に起動させたい場合は以下のブログのようにしてあげるといいらしいですよ。
kernhack.hatenablog.com

【Ubuntu18.04】【LIVA Z】systemctlの自動起動をOFF(disable)するとエラー

最近のUbuntuは自動実行をsystemdで管理してるらしい。で、systemdというかsystemctlで作成したshellファイルを自動起動に登録したのはいいけど、再起動したらdisableでエラーを吐いた。
ちなみに作ったのはiptablesの構築ファイル。

$ sudo systemctl disable iptables.service
[ 3234.919067 ] systemd-gpt-auto-generator[16015] : Failed to dissect: Input/output error

理由が全然わからん・・・。
で、ググってみると、以下のブログで詳しく書かれてました。
mitsu-ksgr.hatenablog.com

LIVA ZはeMMCだし、systemdのバージョンは237だし、これですかね。

$ systemd-cat --version
systemd 237

ブートローダの設定を変えればいいとのことなので、
昨日書いたGRUBの設定↓をさらに変える。
engetu21.hatenablog.com

$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target quiet nosplash"

GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target quiet nosplash systemd.gpt_auto=0"

変更を適用する。

$ sudo update-grub
$ sudo shutdown -r now

【Ubuntu18.04】【LIVA Z】ネットワーク設定で固定IP化(CUI)

書いてなかったけど、LIVA Z(N3350)買いました!
今のところはルータにする予定。あとDocker入れていろいろ試したい。
www.links.co.jp


で、Ubuntu18.04ではネットワーク設定方法が変わったらしく、/etc/network/interfacesは使われないらしい。
どうやらUbuntu17?以降はnetplanというので管理しているらしく、Desktop版の場合はnetplan01-network-manager-all.yamlというyamlファイルで設定されているとのこと。
と言っても実際の記載としてはNetworkManagerを定義しており、そちらで管理されているっぽい。
このyamlファイルは拡張子を変えて、コピーしておいてyamlファイルを作っておく。
※拡張子が変わっていれば読み込まれないらしい
※Server版は50-cloud-init.yamlというファイル名で管理されているらしい

$ sudo mv /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.old
$ sudo cp -a  /etc/netplan/01-network-manager-all.old /etc/netplan/01-network.yaml
$ sudo vi /etc/netplan/01-network.yaml

# Let NetworkManager manage all devices on this system
network:
     version: 2
     ethernets:
       enp3s0:
         dhcp4: no
         addresses: [192.168.11.40/24]
         gateway4: 192.168.11.38
         nameservers:
           addresses: [8.8.8.8,8.8.4.4]
           search: []
         optional: true


$ sudo netplan --debug generate
DEBUG:command generate: running ['/lib/netplan/generate']
** (generate:3132): DEBUG: 20:09:58.577: Processing input file //etc/netplan/01-network-manager-all.yaml..
** (generate:3132): DEBUG: 20:09:58.578: starting new processing pass
** (generate:3132): DEBUG: 20:09:58.578: enp3s0: setting default backend to 1
** (generate:3132): DEBUG: 20:09:58.578: Generating output files..
** (generate:3132): DEBUG: 20:09:58.578: NetworkManager: definition enp3s0 is not for us (backend 1)

$ sudo netplan apply
※問題がなければ何も表示されずに即時適用される

なお、NetworkManagerは以下のコマンドで自動起動を無効にできる。


$ sudo systemctl disable network-manager
$ echo "manual" | sudo tee /etc/init/network-manager.override

また、IPv6は今の所使う予定がないので、無効化しておく。

$ cat /proc/net/if_inet6
XXXXXXXXXXXXXXXXXXXXXX 02 40 20 80 enp1s0
00000000000000000000000000000001 01 80 10 80 lo
XXXXXXXXXXXXXXXXXXXXXX 02 40 00 00 enp1s0

$ sudo vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

※設定の適用
$ sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

$ cat /proc/net/if_inet6
※設定が反映されていれば何も表示されない

【Ubuntu18.04】【LIVA Z】CUIでの起動方法

Ubuntu18.04では昔ながらのGRUBへの設定に「text」が効かないので、以下の設定で変更する。

$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash"

GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target quiet nosplash"

変更を適用する。

$ sudo update-grub
$ sudo shutdown -r now

【Raspberry Pi】Vimでマウス範囲指定時のうざいビジュアルモードを抑止する

Raspberry PiでRaspbianを入れると普通にviが使えますが、vimのほうが使いやすいので私はvimを入れます(大体そうだと思うけど)。
engetu21.hatenablog.com

が、vimを入れた後、別マシンのSSH画面からvimで編集してる際、マウスで選択範囲をすると「ビジュアルモード」になります。これがとてもうざい。
ビジュアルモードだと指定した範囲をCtrl+Shift+Cなどで文章コピーできない状態になります。

解決策としては、vimの設定ファイル(.vimrc)をユーザディレクトリ直下において、「set mouse=」としておけばいいです。

sudo vi時に関しては/root直下に.vimrcを置く

$ sudo vi /root/.vimrc

または

$ sudo su -
# vi /root/.vimrc

set mouse=
※↑を一行目に書くだけ

/etc/vim/vimrcに設定入れてもできるようだけど、反映されないこともあるらしい?まぁその場合はユーザごとに設定すればいいかと。