[linux]Raspberry PiでUSBメモリを刺すだけでフォーマットしてくれる装置を作る。
顕微鏡やDNAシーケンサーなど高価な装置の制御には未だにWindows XPやWindows 7などが使われている。これらの装置にコンピュータウィルスが感染すると、装置の制御ができなくなるだけでなく、ハブとなって利用者全体にウィルスをまき散らしてしまう。また情報リテラシー教育を施しても、一部にはフォーマットやウィルス対策について理解できない人もいるので注意を徹底してもリスクは必ず存在する。そこで装置に付属するPCにUSBメモリを刺す前に、完全にフォーマットして内容を自動で消去する装置を作製した。
OSはウィルス感染のリスクが低いLinux OSが動き、かつ安価なRapsberry Pi 3A+を利用した。3A+は発熱量も少なく、筐体自体がヒートシンクとなる金属ケースも使えるので静穏でファンの無駄な電力も消費しない。ほぼ待機するだけの装置なので本来は立派なCPUは必要なく、フルサイズのUSBが入るようにできるのであれば、”Zero”も良いと思う。
OSはRaspberry Pi Imagerで”Raspberry Pi OS Lite (32-bit)”を選択する。SDカードは4GBもあれば十分である。OSのアップデートにはそれほど神経質になる必要はないが、一応、sudo raspi-configでネットワーク設定とアップデートを行う。また、自動ログインの設定も忘れずにやっておく。
肝心なUSBメモリを刺した際のトリガーにはudevという仕組みを使用する(https://www.raspberrypirulo.net/entry/usb-scriptを参考にした)。とにかくUSBメモリであれば何でもフォーマットするという仕組みなので下記のようなコードを/etc/udev/rules.dに置く。
rulesファイルの作成。
sudo nano /etc/udev/rules.d/10-usbmem.rules
このファイルの中身は下記のようにする。USBが刺さるとホームフォルダ直下に置いた”formatter.sh”というシェルスクリプトが動く仕組みである。
10-usbmem.rules
ACTION=="add", \
SUBSYSTEMS=="usb", \
RUN+="/bin/bash /home/pi/formatter.sh"
ホームフォルダ下に”formatter.sh”を作る。
sudo nano ~/formatter.sh
スクリプトの中身は下記のようにする。
10-usbmem.rules
#!/bin/bash
StandardOutput = tty1
sudo umount /media/pi/*
echo "start formatting"
sudo mkfs -t ntfs -Q -L usbdisk /dev/sda1
echo "finnished formatting"
さらにファイルに実行権限を与える。
sudo chmod 774 formatter.sh
あとはrebootすればすぐに使える。本当にどんなメモリ(含むHDD)も消去してしまうので迂闊にUSBを指さないようすべし。