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/vi
は ex
へのシンボリックリンクになっているので 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_USER
、MT_GROUP
、MT_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 使用率も下がったので満足。
サンディスク Sandisk microSDHC 8GB Class4 UHS-1対応30MB/S バルク品
- 出版社/メーカー: SanDisk
- メディア: エレクトロニクス
- この商品を含むブログを見る
- 出版社/メーカー: 梅本合同会社, RS Components
- メディア: その他
- この商品を含むブログ (2件) を見る
- 出版社/メーカー: raspberrypi.org
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る