OpenIndianaから脱出してUbuntuに戻った話(その2:ソフトウェアの準備)

この記事はぴょこりんクラスタ:Re Advent Calendar 2016 - Adventarのために書いたものです。

サマリ

  • ひよってUbuntu 16.04 LTSをいれてしまった。
  • サーバの名前は食べ物の名前にするという伝統を受け継ぎ、新NASのhostnameはmochiにした。

OSは何を入れたか

半年くらい前にマウスコンピュータで安めのノートPCを買って、Arch Linuxを放り込んで遊んでいたらすっかり慣れてしまったし*1、困ることも特段なかったのでArch Linuxでもよいかなと思ったけども、安定稼働という幻想が頭をよぎってUbuntu 16.04にした。基本的にはインストーラに従っていけばよいのは楽でいい。標準+OpenSSHサーバでインストールした。

どうせmdでソフトウェアRAIDにするし、今思えばArch Linuxにしてもよかったのではという感じだ。 CentOSDebianはちょっと古めなのが気になるし、Fedoraは常に崩壊しているという偏見がある。GUIがいらなかったのでManjaroとMintは選外となった。

サーバの名前はmochiにした。

必需品のインストール

このあたりは淡々と進めればよい。

# 必需品。vimは入っていた
% sudo apt install zsh tmux vim nmap sysstat git

# dotfilesのcloneとインストール
% git clone git@github.com:bisco/dotfiles.git
% cd dotfiles
% ./install.sh


# 引越用にcifs-utils
% sudo apt install cifs-utils

# 最近はntpdを使わないらしい
% sudo apt install chrony
% sudo vim /etc/chrony/chrony.conf

chrony.confの変更抜粋。nictはsinet経由になるから遅延がちょっと大きい、だそうだ。

<20行目付近>
#pool 2.debian.pool.ntp.org offline iburst
server ntp1.jst.mfeed.ad.jp offline iburst
server ntp2.jst.mfeed.ad.jp offline iburst
server ntp3.jst.mfeed.ad.jp offline iburst

<70行目付近>
#allow foo.example.net
#allow 10/8
#allow 0/0 (allow access by any IPv4 node)
#allow ::/0 (allow access by any IPv6 node)
allow 192.168.0.0/24

chrony.confを変更後、リブートしても起動するようにしておく。

% chronyc sources # 一応同期
% sudo systemctl restart chrony
% sudo systemctl enable chrony

mdでソフトウェアRAID

ZFSほどではないが、mdでソフトウェアRAIDするもの十分簡単。 mdでデバイス作ったあとはinitramfsを更新しておかないと、次回/dev/md0にならなくて/dev/md127になってしまい、 fstabに不用意に書いてると泣くことになるので注意。 仮に忘れたとしても、/dev/md0じゃなくて/dev/md/<hostname>:0みたいに名前でfstabへ書いておけばOK。

# まずはドライブをGPTでフォーマット。fdiskはMBRでフォーマットしてしまい、2TB以降を認識できなくなるので注意。
# sdaとsdbあわせて2回分やる
% sudo parted /dev/sda
(parted) mklabel gpt
(parted) mkpart primary 1M 4001GB
(parted) p # 念のため確認
(parted) q

# mdでRAID1にする
% sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sd[ab]1

# 設定を保存する
% sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf  

# ちゃんとinitramfsを更新する(僕は忘れてひどいめにあった)
% sudo update-initramfs -u

# かたそうなXFSにする
% sudo mkfs.xfs /dev/md0

# マウントポイントを用意
% sudo mkdir /mnt/md0

# ユーザが直接さわれるように777にしておく
% sudo chmod 777 /mnt/md0

# fstabに書き込む。 nofailにしておくと仮にこけてもブートしてくれる
echo "/dev/md/mochi:0 /mnt/md0 xfs nofail 0 0"  | sudo tee -a /etc/fstab 

Chinachu + Mirakurun on Docker

最初は普通に入れようと思ったけど、nodejsのバージョンが複雑怪奇でつらかったのでDocker版を入れた。 Dockerもaptで入るものだと古くてダメだったという落とし穴があった。 Chinachu on Dockerのインストール方法は以下を見てね。 qiita.com

受信できるチャンネル番号がわからない、そんなときは脳筋棍棒ソリューションで何とかしよう。 recpt1コマンドをぶん回して、受信できたっぽいものを設定すればよいのだ。

% docker exec -it mirakurun /bin/bash
bash-4.3# for i in {10..64}
do
echo "Channel $i" && recpt1 --b25 --strip --device /dev/pt3video2 $i 1 "/dev/null" && echo ""
done

なお、自分の環境だと、Chinachu + Mirakurun on Dockerを使ってTVtestでテレビを見ようとすると 途中で接続が途切れてしまうんだけどなんでだろう・・・ Windowsから見てるとMirakurunからパケットが飛んでこなくなってるように見えるけど・・・ BonDriver_Mirakurunをちゃんとビルドしなきゃダメかな・・・

Sambaの設定

Windowsとしか共有しないので、Sambaを入れる。 unix password = syncにすると勝手にユーザを同期してくれるかと思いきやそんなことはなく、手動でいれる必要があった。

% sudo apt install samba

# 設定ファイルを更新する
% sudo vim /etc/samba/smb.conf

# Sambaにユーザを追加する
% sudo smbpasswd -a <ユーザ名>

smb.conf(以下、一部抜粋)はこんな感じにした。インターネット各地に設定項目がちらばってたので結構苦労した。 面倒でもmanを読むべきだった。

[global]
# Character encoding
    unix charset = UTF-8
    dos charset = CP932

# Windowsから\\mochiでアクセスできるように
    netbios name = mochi

# bindするnetworkは固定し、さらに自宅内からのみアクセス可にする
interfaces = 127.0.0.1 192.168.0.0/24
bind interfaces only = yes
hosts allow = 192.168.0.0/24 127.0.0.1

# Sambaユーザのパスワード変更とLinuxユーザのパスワード変更を連動させる
unix password sync = yes

# 自分だけ入れる共有フォルダを作る
[share]
  path = /mnt/md0/share
  writable = yes
  create mode = 0644
  directory mode = 0775
  valid users = bisco
  force group = bisco
  force user = bisco
  acl allow execute always = yes

まとめ

mochiは今もちゃんと動いています。いまだにChinachu + Mirakurun on Dockerでのリアルタイム視聴はできないけど、録画はできているっぽいのでよしとする。 なんかいつの間にか直って困惑しているがともかく直ったのでよしとしよう!!

*1:常に最新に近いものが使えるのはとてもよかった