LoginSignup
3
2

More than 5 years have passed since last update.

raspiでramdisk

Last updated at Posted at 2016-09-26

はじめに

SDカードの延命の為、logをramdisk(tmpfs)に移したり色々した時のメモ

swap無効化

$ sudo swapoff --all
$ sudo apt-get remove dphys-swapfile

tmpfsにするには、下記の様に追記していく。

/etc/fstab
tmpfs           /var/log        tmpfs   defaults,size=16m,noatime,mode=0755 0 0
tmpfs           /lib/ufw        tmpfs   defaults,size=1m,noatime,mode=0755 0 0

自作の初期化script

/var/logとだけ設定すると、nginxが/var/log/nginxディレクトリが無いとエラーになって
サービスが上がらない。
設定ファイルnginx.confで場所を変更しても、起動直後〜設定を読みに行く間のlogは、
コンパイル時に指定された場所を見に行く為、エラーを回避できない。
(自前でコンパイルすれば場所を変えられるがpiでは辛い、クロスコンパイルもめんどい)
ということで、/var/logの下にディレクトリを掘るscriptを自作して、systemdで動かしてみる。

systemdの現状を確認

各サービスが、現在どういった順序で起動してるか確認してみる。
参考

$ systemd-analyze plot > /tmp/sys.svg

このファイルをブラウザで見てみる。

scriptの作成

/etc/systemd/system/var-log-init.service
[Unit]
Description=initialize '/var/log' directory
DefaultDependencies=no
Requires=var-log.mount
After=var-log.mount

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/var-log-init/var-log-init

[Install]
WantedBy=sysinit.target
/root/tool/var-log-init/var-log-init
#!/bin/bash

if [ ! -e /var/log/nginx ]; then
  mkdir /var/log/nginx
fi
chown www-data:adm /var/log/nginx

参考
参考
参考

ufwの設定

自宅と実家のIPを固定してないので、UFWで許可するIPを動的に変えられる様にCRONで定期的に設定を更新している。

これもSDカードにダメージを与えるので、設定ファイルの更新先/lib/ufwをtmpfsに置くことにする。
で、固定で保持しておきたい設定(ローカルエリアからのSSH許可等)は/lib/ufw.default.tgzに固めておいて、boot時に/lib/ufwに展開するようにしてみる。

/etc/systemd/system/pre-ufw.service
[Unit]
Description=LSB: start firewall
DefaultDependencies=no
Requires=lib-ufw.mount
After=lib-ufw.mount

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/systemd/pre-ufw

[Install]
WantedBy=sysinit.target
/root/tool/systemd/pre-ufw
#!/bin/bash

/bin/tar xfz /lib/ufw.default.tgz -C /lib/ufw/
/etc/systemd/system/post-ufw.service
[Unit]
Description=LSB: start firewall
DefaultDependencies=no
Requires=ufw.service
After=ufw.service

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/root/tool/systemd/post-ufw

[Install]
WantedBy=sysinit.target
/root/tool/systemd/post-ufw
/usr/sbin/ufw allow proto tcp from xxx.xxx.xxx.xxx/32 to any port 443
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2