Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save yoggy/8ddd630005d012635706f6813e10b334 to your computer and use it in GitHub Desktop.
Save yoggy/8ddd630005d012635706f6813e10b334 to your computer and use it in GitHub Desktop.

Raspberry Piにroot-roを適用する手順メモ (2018/3/26)

今回使用したイメージは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/serial-getty@ttyAMA0.service.d/
$ sudo vi /etc/systemd/system/serial-getty@ttyAMA0.service.d/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をコメントアウトする
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment