mattintosh note

どこかのエンジニアモドキの備忘録

Rasbian よりも Pidora よりも Arch

Raspberry Pi で Pidora を入れていた microSD が壊れました。ファイルの整理等で毎日数10GB以上転送していたのが原因かどうかはわかりませんが、rootfs 側の ext4 が壊れた模様。他のマシンに microSD を接続して dd でデータを吸い出そうと思ったものの 6.5 GB 中 4 GB 程度で止まる始末。

そういえば Arch Linux も Raspberry Pi に対応してたような…ということで Pidora を修復せずに Arch Linux に乗り換え。

microSD の作り方は http://archlinuxarm.org/platforms/armv6/raspberry-pi に書かれている通り。下調べの際に、パーティションサイズの制限云々みたいなのを見たけど rootfs は microSD の空き容量全体に割り当て可能だった。解凍の際に bsdtar が必要なので Linux の場合は事前にインストールしておく必要がある。

passwd

デフォルトだと root のパスワードが root になっているのですぐに変更。

passwd

useradd

ユーザを追加して wheel グループに追加。

useradd -m -g HOGE -p PASSWORD HOGE
gpasswd -a HOGE wheel

pacman

とりあえずアップデート。

pacman -Syu

localectl

キーボードを日本語配列に変更。

localectl set-keymap jp106

sudo

pacman -S sudo

wheel の sudo を有効にする。

visudo

%wheel ALL=(ALL) ALL 行のコメントを外す。

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

/etc/systemd/network/eth0.network

IP アドレスを固定。設定詳細は man systemd.network 参照。

[Match]
Name=eth0

[Network]
DHCP=none
Address=192.168.1.254/24
DNS=192.168.1.1
Gateway=192.168.1.1

sshd

ポートの変更やら root ログインの無効やら。ポート番号は適当。

Port 12345
Protocol 2
PermitRootLogin no
PubKeyAuthentication yes
systemctl restart sshd

クライアントから公開鍵を送る。

scp -P 12345 ~/.ssh/id_rsa.pub HOGE@192.168.1.254:
ssh -p 12345 HOGE@192.168.1.254
mkdir .ssh
cat id_rsa.pub >>.ssh/authorized_keys
rm id_rsa.pub
chmod 0700 .ssh
chmod 0600 .ssh/*

クライアント側で ~/.ssh/config を作成しておく。

Host rpi
    HostName 192.168.1.254
    Port 12345
    User HOGE

次回からは以下のコマンドだけで接続できる。

ssh rpi

vim

pacman -S vim

デフォルトだと /usr/bin/viex へのシンボリックリンクになっているので vim へのシンボリックリンクに変更する。

ln -sf vim /usr/bin/vi

fcron

cron を使おうと思ったら入ってなくて cronie とか fcron を使うんだそうな。fcron の方が使いやすそうだったので fcron をインストール。

pacman -S fcron
systemctl enable fcron
systemctl start fcron

色々スケジュールを追加。設定は /var/spool/fcron 以下に置かれる。

fcrontab -e

samba

インストールして /etc/samba/smb.conf を弄る。

pacman -S samba
systemctl enable smbd nmbd
systemctl start smbd nmbd

マスターブラウザのチェック。

nmblookup -M WORKGROUP

mediatomb

/etc/locale.gen

日本語ファイルが文字化けするのでロケールの設定をしておく。

--- locale.gen.default   2015-02-14 17:32:39.388737116 +0900
+++ locale.gen    2015-02-14 17:33:14.278296109 +0900
@@ -158,7 +158,7 @@
 #en_PH ISO-8859-1  
 #en_SG.UTF-8 UTF-8  
 #en_SG ISO-8859-1  
-#en_US.UTF-8 UTF-8  
+en_US.UTF-8 UTF-8  
 #en_US ISO-8859-1  
 #en_ZA.UTF-8 UTF-8  
 #en_ZA ISO-8859-1  
@@ -283,7 +283,7 @@
 #iw_IL.UTF-8 UTF-8  
 #iw_IL ISO-8859-8  
 #ja_JP.EUC-JP EUC-JP  
-#ja_JP.UTF-8 UTF-8  
+ja_JP.UTF-8 UTF-8  
 #ka_GE.UTF-8 UTF-8  
 #ka_GE GEORGIAN-PS  
 #kk_KZ.UTF-8 UTF-8  

locale-gen を実行。

locale-gen

/etc/conf.d/mediatomb

どうせ自分しか実行しないので MT_USERMT_GROUPMT_HOME を自分用に変更する。iconv が正しくファイル名を変換できるように LANG=ja_JP.UTF-8 を追加する。

--- mediatomb.default    2015-02-14 18:42:25.459639392 +0900
+++ mediatomb 2015-02-14 19:05:39.012248050 +0900
@@ -6,8 +6,8 @@
 MT_PORT='50500'
 
 # User and group to run as
-MT_USER='mediatomb'
-MT_GROUP='mediatomb'
+MT_USER='HOGE'
+MT_GROUP='HOGE'
 
 # Location of the PID file
 MT_PIDFILE='/var/run/mediatomb.pid'
@@ -16,8 +16,10 @@
 MT_LOGFILE='/var/log/mediatomb.log'
 
 # Location of the config file/database
-MT_HOME='/var/lib/mediatomb'
+MT_HOME='/home/MYNAME'
 MT_CFGDIR='.mediatomb'
 
 # User defined command line options
 MT_OPTIONS=''
+
+LANG=ja_JP.UTF-8
systemctl enable mediatomb
systemctl start mediatomb

postfix

ログをスマホに送るだけなのでインストールして起動するだけ。

pacman -S postfix
systemctl enable postfix
systemctl start postfix

fcron でスクリプトを実行させる。/opt/vc/bin に監視ツールが色々あるので温度をチェック。また、オーバクロックで CPU の動作周波数を可変にしているので現在の周波数もチェックしてみる。

#!/bin/sh

(
    date
    echo
    uptime
    printf '%d/%d kHz\n' `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_{cur,max}_freq`
    /opt/vc/bin/vcgencmd measure_temp
) | mail -s "$(
    curl -s httpbin.org/ip \
    | sed -n '/origin/s/.*: "\([0-9.]*\)"/\1/p'
)" HOGE@MYMAIL.COM

オーバクロック

Arch Linux の場合、/boot/config.txt にプリセットが書かれているのでコメントアウトを外すだけで良い。とりあえず Medium にセット。映像出力は行わないのでビデオメモリは 32 に減らす。

--- config.txt.default   2015-02-14 11:35:46.000000000 +0900
+++ config.txt    2015-02-14 11:36:14.000000000 +0900
@@ -154,10 +154,10 @@
 #over_voltage=0

 ##Medium
-#arm_freq=900
-#core_freq=333
-#sdram_freq=450
-#over_voltage=2
+arm_freq=900
+core_freq=333
+sdram_freq=450
+over_voltage=2

 ##High
 #arm_freq=950
@@ -171,4 +171,4 @@
 #sdram_freq=500
 #over_voltage=6

-gpu_mem=64
+gpu_mem=32

mlocate

高速検索用。

pacman -S mlocate
updatedb

更新は /usr/lib/systemd/system/multi-user.target.wants/updatedb.timer が行ってくれる(はず)。Timer 使ったことなくてよくわからないのでそのうち調べる。

[Unit]
Description=Daily locate database update

[Timer]
OnCalendar=daily
AccuracySec=12h
Persistent=true

参考:https://wiki.archlinux.org/index.php/Systemd/Timers_%28%E6%97%A5%E6%9C%AC%E8%AA%9E%29

/var/log/messages とか /var/log/syslog が無い

/var/log/journal 以下に生成されるらしい。journalctl コマンドで閲覧可能。

swap が無い

今のところ Raspberry Pi B+ の 512 MB で足りてるので様子見。microSD 作るときにパーティション切っておけばよかったかな。

試しに swapfile を作成して様子を見てみる(あまり使わなさそうだけど)。

dd if=/dev/zero of=/swapfile bs=1M count=512
chmod 0600 /swapfile
mkswap /swapfile
swapon /swapfile

/etc/fstab に追記。

/swapfile none swap defaults 0 0

truncate で作成したファイルだと it appears to have holes となり swapon 出来なかった。


microSD は東芝の 16 GB Class 10 から余り物の SanDisk 8 GB Class 4 に変更。古いけどこっちの方が引っかかりが少ないような気がする。Arch の軽さもあるんだろうけど。

Pidora のときは 6.5 GB も使ってたのに Arch Linux にしたら 1.3 GB で済んだ。デスクトップ環境用のファイルが少ないので当然だけど、これなら 4 GB の microSD でも余裕そうだ。

Samba のレスポンスも良くなったし、CPU 使用率も下がったので満足。

Raspberry Pi 2 Model B (1)

Raspberry Pi 2 Model B (1)

Raspberry Pi Model B+ (Plus)

Raspberry Pi Model B+ (Plus)