今回使用したイメージはRaspian Lite 2018-03-13版。 まずEtcherを使ってイメージをmicroSDへ書き込む。
イメージ書き込み後、PCからmicroSDにあるconfig.txtを編集する。
※以下の行を末尾に追加する
dtoverlay=pi3-miniuart-bt
Raspberry Pi本体ピンヘッダのUARTにこれを接続してRaspberry Piを起動する。
いちばん初めに、ttyAMA0の自動ログインを設定する。
$ sudo mkdir -p /etc/systemd/system/[email protected]/
$ sudo vi /etc/systemd/system/[email protected]/autologin.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin pi --noclear %I 115200,38400,9600 vt102
一度リブートして、ttyAMA0が自動ログインされることを確認する。
$ sudo reboot
ブロックデバイスの設定を/dev/mmcblk0p~に書き換える。これを設定しないとroot-roが設定できない様子。
$ sudo vi /boot/cmdline.txt
※root=PARTUUID=~の部分を root=/dev/mmcblk0p2 に書き換える
$ sudo vi /etc/fstab
※/bootに /dev/mmcblk0p1、/に /dev/mmcblk0p2 をマウントするように書き換える
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
一度リブートして、fstabの内容を正しく設定できているかどうかを確認する。
$ sudo reboot
raspi-configの設定
$ sudo raspi-config
1 Change User Password → (パスワードを変更しておく)
2 Network Options → N1 Hostname → (ホスト名の変更)
2 Network Options → N2 Wi-fi → (wifi接続設定)
3 boot options → Desktop/CLI→B2 Console Autologin Text console, automatically logged in as 'pi' user → 有効
4 Localisation Options → I2 Change Timezone → Tokyo
5 Interfacing Options → P2 SSH → 有効
5 Interfacing Options → P5 I2C → 有効
設定を終えたら、一度リブートする
root-roで説明されている手順を実行。
$ sudo bash
# apt-get install git rsync gawk busybox bindfs
※ここを少しアレンジ。参考→https://github.com/adafruit/Raspberry-Pi-Installer-Scripts/blob/master/read-only-fs.sh
# apt-get remove -y --purge triggerhappy cron logrotate dphys-swapfile fake-hwclock rsyslog
# apt-get -y autoremove --purge
# apt-get -y install busybox-syslogd
$ cd ~pi
# git clone https://github.com/josepsanzcamp/root-ro.git
# rsync -va root-ro/etc/initramfs-tools/* /etc/initramfs-tools/
# mkinitramfs -o /boot/initrd.gz
# echo initramfs initrd.gz >> /boot/config.txt
# reboot
config.txtの最終行が"initramfs initrd.gz"だった場合に、ReadOnly化が実行される。
ReadOnly状態で起動すると、ファイルシステムは次のようにマウントされる。
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 210M 0 210M 0% /dev
tmpfs 44M 1.4M 43M 4% /run
/dev/mmcblk0p2 15G 1.2G 13G 9% /mnt/root-ro
tmpfs 218M 344K 217M 1% /mnt/root-rw
tmpfs 218M 0 218M 0% /mnt/boot-rw
/dev/mmcblk0p1 42M 28M 14M 68% /mnt/boot-ro
/mnt/boot-ro 42M 28M 14M 68% /mnt/boot-ro2
overlay 218M 344K 217M 1% /
overlay 218M 0 218M 0% /boot
tmpfs 218M 0 218M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 218M 0 218M 0% /sys/fs/cgroup
tmpfs 44M 0 44M 0% /run/user/1000
ReadOnly状態を解除する場合は、config.txtの最終行"initramfs initrd.gz"をコメントアウトする。
$ sudo mount -o rw,remount /mnt/boot-ro
$ sudo vi /mnt/boot-ro/config.txt
※最終行のinitramfs initrd.gzをコメントアウトする