x11vncでXを起動していない状態でスタートし、MacOSからVNC接続するためのオプション

x11vnc -create -noxrecord -noxfixes -noxdamage -forever -passwd pi
XサーバとVNCサーバを個別に起動する場合
Xvfb -screen 0 1280x800x24 &
export DISPLAY=:0
x11vnc -create -noxrecord -noxfixes -noxdamage -forever -passwd pi &

ローカルホスト間での転送速度のメモ

条件など
CPUCore i7 860
計測プログラムiperf3
簡易測定結果
環境スループット (Gbps)
Linux bridge21.4

BridgeでForwardされるパケットをiptablesで制御する方法

nf_bridgeモジュールをロードし、sysctl.confに次の内容を追加。
net.bridge.bridge-nf-call-arptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
そして、設定を次のように有効化
$ sudo sysctl -p

CentOSで起動時にモジュールを自動ロードする設定例

$ cat /etc/modules-load.d/br_netfilter.conf 
br_netfilter

OpenVPNで強制的に暗号化を無効にする

configファイルに以下を記載
cipher none
ncp-disable

systemd-resolveのDNSを設定する

最近のLinuxディストリビューション (Ubuntu 17.10)では、systemd-resolveが使用されている。このDNSを静的に設定するためには/etc/systemd/resolved.confのDNS行を以下のように設定する
DNS=192.168.19.1
設定を有効にするには、systemd-resolvedを再起動する
systemctl restart systemd-resolved

MTUメモ

MTU

どちらもInterfaceのMTUは1500。LANでの差分28バイトの内訳は、IPヘッダ20B、ICMP echo requestヘッダ8バイト
送信元回線送信先回線MTU
LANLAN1472
フレッツ(PPPoE)フレッツ(PPPoE)1426
LTE(ドコモ)フレッツ(PPPoE)1472

調べ方

Linuxの場合
$ ping -M do -s 1472 -c 1 192.168.19.1
Macの場合
$ ping -D -v -s 1472 -c 1 192.168.19.1

TP-LINK Archer T4UをLinuxで使う方法

sudo apt install rtl8812au-dkms
ただし、DKMSの設定が間違っている。 /var/lib/dkms/rtl8812au/4.3.8.12175.20140902+dfsg/source/dkms.confのMake行を次のように修正する。
MAKE="'make' all KVER=${kernelver}"

Docker for Macのデフォルトのデータ保存場所

~/Library/Containers/com.docker.docker/Data

iOS11でiPadやMacにテザリングする方法

iOS10でのテザリング (Instant Hot spot)から、設定方法が変わったみたいなのでメモ。

テザリングの親機側でコントロールパネルを表示させます。
赤枠で囲った領域を長押しすると、次の画面が表示されます。

ここで、インターネット共有をクリックすると、テザリングが出来るようになります。

6.x系のNodejsをUbuntuにインストール

公式ページから引用
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

aptでインストール前にバージョンを確認する例

$ apt-cache policy nodejs
nodejs:
  Installed: (none)
  Candidate: 4.7.2~dfsg-1ubuntu3
  Version table:
     4.7.2~dfsg-1ubuntu3 500
        500 http://archive.ubuntu.com/ubuntu zesty/universe amd64 Packages

コンテナ内のUbuntu 17.04でカーネルのログを記録しない

デフォルトではカーネルのログもコンテナのロガーが記録します。これはホストでも記録されているので冗長です。 /etc/rsyslog.confの次の行を削除またはコメントアウトします。
module(load="imklog" permitnonkernelfacility="on")
そのご、rsyslogを再起動します。
# systemctl restart rsyslog

SSHでパスフレーズ認証ができなくなった場合の対処法

ある日、急にSSHのパスフレーズ認証ができなくなっていた。 理由は、誤って自ユーザー(以下の例ではfoo)のホームディレクトリのパーミッションが777にしていたため。
$ ls /home 
20K drwxrwxrwx 57 foo  20K  6月 26 17:00 foo
これを755に修正したら、正常にもどった。なお、ネットを検索すると701にするべきという情報もあるので、ディストロや設定によってはそうしなければならないのかもしれない。

Network namespaceの一覧表示

# ip netns

乃木坂三期生単独ライブ

1次先行、2次先行ともに落選。一般発売も数十秒でご覧のとおり。人気すごいなー。
 

Ubuntu 17.04にアップグレードした際のトラブル回避

1. 無線LANが使えない


対策: rfkillコマンドがデフォルトブロックしていたので、次のようにアンロック
# rfkill unblock all

2. python-jsonpatchとpython-oslo.configがアンインストールできない


python-oslo.config

以下のようにダミーのファイルdummyを作成し、それにリンクを貼る。この状態で削除(例えば、dpkg --purge python-oslo.config)

# touch dummy
# ln -s dummy /etc/alternatives/oslo-config-generator 

python-jsonpatch

こちらは、ファイルあるのだがそれがリンクでないのが悪いみたいなので、以下のように適当にリンクを作ってから削除
# mv /etc/alternatives/jsonpatch /tmp
# ln -s dummy /etc/alternatives/jsonpatch 
楽天でチケットを申し込む時、メールマガジンに関して 「不要な方はチェックをはずしてください」と表示されるものの、実際にはグレーアウトになっていてはずせない。極悪すぎる。

MacOS 10.13でのフォントのアンチエイリアスの具合調整

最後の数値を0 (なし)〜3 (強い)の間で調整する。 筆者の好みは1。
defaults -currentHost write -globalDomain AppleFontSmoothing -int 1

Zabbix 3.0のインストールではまったところ。

Zabbix 3.0のインストール方法を検索すれば、たくさん情報がでてきます。 しかし、なぜか、情報が少なくてハマったことがあるのでメモ。
  • 以下のファイルの$DB['PASSWORD']にもMySQL (MariaDB)に設定したパスワードを反映する必要あり
    • /etc/zabbix/web/zabbix.conf.php

LinuxでIPsecのコネクションをオンデマンドで開始する (Ubuntu 16.10)

/etc/ipsec.confでconnセクションにauto=addを指定します。なお、auto=startにした場合、ipsec (strongswan)の起動と共に接続が開始されます。
conn myconnection
(省略)
      auto=add
この状態でstatusを確認しても、何も表示されません。待機している接続(上記のmyconnection)はstatusallコマンドで確認できます。
# ipsec status
Security Associations (0 up, 0 connecting):
  none
接続を開始するにはupコマンドを使います。
# ipsec up myconnection
(省略)
connection 'myconnection' established successfully
接続の終了にはdownコマンドを使います。
# ipsec down myconnection

Linuxでデバイスの接続構造を見る

$ hwloc-ls
X11が使用可能だと以下のような画面が表示される。NUMA構成でメモリやデバイスがどう接続されているかを確かめるのにも使える。

ケースファンパワーアップ

今のPCにケースファンは付いているものの回転数がいささか小さい(Shassis2 Fan)。
 $ sensors
(略)
CPU Fan Speed:      2280 RPM  (min =  600 RPM, max = 7200 RPM)
Chassis1 Fan Speed:    0 RPM  (min =  600 RPM, max = 7200 RPM)
Chassis2 Fan Speed:  659 RPM  (min =  600 RPM, max = 7200 RPM)
Power Fan Speed:       0 RPM  (min =    0 RPM, max = 7200 RPM)
CPU Temperature:     +40.5 C  (high = +45.0 C, crit = +45.5 C)
MB Temperature:      +35.0 C  (high = +45.0 C, crit = +46.0 C)
(略)
もともと、回転数が低めで静音タイプを選んだもあるのだが起動時に回り出さないことがある。その場合、結構ケース内が熱くなる。先日、動画エンコードを数時間実行するとリブートしてしまった。そこでOWL-FY1225PWMを購入。 装着後、マザーボードの温度も下がった。このファン回転数は最大1600RPMほどだが、マザーボードASUS P7P55Dの4pinファンコネクタに接続するとPWM制御できるので、通常温度だと1100RPM程度。静音性も問題なし。
CPU Fan Speed:      2056 RPM  (min =  600 RPM, max = 7200 RPM)
Chassis1 Fan Speed: 1080 RPM  (min =  600 RPM, max = 7200 RPM)
Chassis2 Fan Speed:    0 RPM  (min =  600 RPM, max = 7200 RPM)
Power Fan Speed:       0 RPM  (min =    0 RPM, max = 7200 RPM)
CPU Temperature:     +37.0 C  (high = +45.0 C, crit = +45.5 C)
MB Temperature:      +31.0 C  (high = +45.0 C, crit = +46.0 C)


左上が今回購入したファン(右はCPUファン)。中央下の4pinパワーコネクタもこのファンの一部。おそらくPWM制御コネクタがなくても電源ピンにこれを繋げば動作するのではないか。

pulseaudioで再生中の音声を録音する

次のようにmonitorデバイスを調べる。何もデバイスがない場合でも、下記のようにnullデバイスがあるはず。
$ pactl list | grep monitor
        Monitor Source: auto_null.monitor
        Name: auto_null.monitor
                device.class = "monitor"
そのデバイスを指定して、次のようにparecコマンドを実行する。
$ parec -d auto_null.monitor > audio.raw

libvirt経由で起動したVMのIPアドレスを推測する

# cat /var/lib/libvirt/dnsmasq/virbr0.status 
[
    {
        "ip-address": "192.168.122.20",
        "mac-address": "00-00-5E-00-53:01",
        "hostname": "vm100",
        "expiry-time": 1488438486
    },
    {
        "ip-address": "192.168.122.224",
        "mac-address": "00-00-5E-00-53:02",
        "hostname": "vm-a2",
        "expiry-time": 1488439233
    }
]

macvtapのブリッジ先Interfaceを知る

ip linkコマンドを使う。veth pairでpair相手を知る方法と基本的に同じ。
$ ip link | grep macv
56: macvtap0@enp0s1:  mtu 1450 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500
参考: vethペアの作り方

Huge Pageを動的を確保する例

動的に確保する場合

# echo 512 > /proc/sys/vm/nr_hugepages
また、sysfs経由でも可能。上記はdefaultのHugeページサイズ(2MB)を確保するが、sysfsでは他のサイズ(例えば1GB)のページも確保できる。
# echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
また、デフォルトサイズ以外のページを使う場合、それに対応するhugetlbfsをmountしておく必要がある。以下はその例。
# mkdir /dev/hugepages1G
# mount -t hugetlbfs -o pagesize=1G none /dev/hugepages1G

起動時に確保する場合

Linuxカーネルのコマンドライン(grbu.confなど)に以下の設定をします。下記の例ではデフォルトのHugeページサイズを1GBにしています。
default_hugepagesz=1G hugepagesz=1G hugepages=1

NVidiaのグラボ + LinuxでTearingを解消する

次のコマンドを実行をする
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
なお、VSyncのチェックにはこのサイトが役立つ

また、上記の設定はリセットすると消えることに注意。

出典: https://bbs.archlinux.org/viewtopic.php?id=214645

NVidiaのグラボを使った時、pulseaudioがクラッシュする問題の回避策

GTX650搭載のグラボに交換した後、Ubuntu 16.10でpulseaudioがクラッシュしていた。
$ grep seg /var/log/syslog | tail -1
Feb  5 14:13:38 foo kernel: [ 2402.435970] pulseaudio[17820]: segfault at 0 ip 00007fb12b98b11b sp 00007ffc16868048 error 6 in libasound.so.2.0.0[7fb12b94b000+f9000]
/proc/asound以下の情報から、このカードにはIntel HD Audio用ドライバが使われていた。私は他のSoundカードにそのドライバを使用していない(USB audioやBlutoothを使用)ので、ドライバのロードを次のように抑止した。

/etc/modprobe.d/blacklist.confに次の行を追加して再起動
blacklist snd_hda_intel

SSH agentをForwardする

~/.ssh/configに以下の記述を追加する
ForwardAgent yes
これで、ログインするとSSH agentがフォーワードされる。 loginすると次のような環境変数が設定されている。
SSH_AUTH_SOCK=/tmp/ssh-6qafmTrfjF/agent.3055

IOMMUグループに含まれるデバイスを知る

/sys/bus/pci/devices/[device id]/iommu_group/devices以下を見ればよい。
$ ls -l /sys/bus/pci/devices/0000\:01\:00.1/iommu_group/devices/       
total 0
0 lrwxrwxrwx 1 root 0 Jan 20 17:25 0000:00:01.0 -> ../../../../devices/pci0000:00/0000:00:01.0
0 lrwxrwxrwx 1 root 0 Jan 20 17:25 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0
0 lrwxrwxrwx 1 root 0 Jan 20 17:25 0000:01:00.1 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.1

X11でマウスの割当を変更する

まず、マウスの名前を取得。以下の場合、青文字のLogitech M705がターゲット。
$ xinput       
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech M705                             id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ Topre Corporation HHKB Professional       id=8    [slave  keyboard (3)]
サイドのボタン(コード8)を真ん中ボタン(コード2)と入れ替えるには、次のようにする
$ xinput set-button-map "Logitech M705" 1 8 3 4 5 6 7 2 9
ちなみに現在の割当を確認するコマンド
$ xinput get-button-map "Logitech M705"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

MacOSのgitでinvalid action developer pathのエラーの対処

gitを使うと以下のエラーが表示された。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解決方法は、以下のコマンドを実行
xcode-select --install