【EV3 x Python】スワップ領域を作成する方法


概要

ev3に搭載されているRAMは合計で64MBで,freeコマンドでメモリーの容量はすでに作られているスワップ領域と合わせメモリー量は152MB.これでは少なすぎるapt-get installなどで落ちることがしばしば・・・)のでもっと増やしてやりましょう.

スワップ領域とは

スワップ領域とは,搭載されている物理メモリがいっぱいになったときに,使っていないデータを退避させるための領域.本記事ではスワップ領域はSDカード上に作成します.

実際に作ってみる

今回は512MBのスワップ領域作ってみたいと思います.

まずはスワップ領域となるファイルを作る

sudo dd if=/dev/zero of=/var/swap bs=1M count=512

実行権限をつける

sudo chmod 644 /var/swap

スワップ領域の作成

sudo mkswap /var/swap

スワップ領域を有効にする

sudo swapon /var/swap

Before → After

freeコマンドのTotalに表示されている数値がメモリの容量です.

Before

robot@ev3dev:~$ free -h -t
              total        used        free      shared  buff/cache   available
Mem:            56M         15M        1.9M         16K         38M         36M
Swap:           95M        7.7M         88M
Total:         152M         23M         90M

After

robot@ev3dev:~$ free -h -t
              total        used        free      shared  buff/cache   available
Mem:            56M         16M        1.6M         16K         38M         36M
Swap:          601M        7.7M        594M
Total:         658M         23M        595M

再起動後にもスワップ領域がマウントされるように・・・(追記:2020/01/17)

スワップ領域を再起動後に自動でマウントされるように/etc/fstabを編集します.
まずはev3のターミナルで下のコマンドを入力してテキストエディタを開きます.

ev3上のターミナル
sudo nano /etc/fstab
/etc/fstab
#<file system>  <mount point>   <type> <options>                           <dump> <pass>
/dev/mmcblk0p1  /boot/flash     vfat   defaults,errors=remount-ro,noatime  0      2
/dev/mmcblk0p2  /               ext4   defaults,errors=remount-ro,noatime  0      1
proc            /proc           proc   defaults                            0      0
tmpfs           /run            tmpfs  nosuid,noexec,size=20M,nr_inodes=4096 0    0
#↓ここから下を追記
/var/swap   swap        swap    defaults            0   0
#↑ここまで

nanoエディタはCtrl+oで保存,Ctrl+xで終了することができます.詳しい説明方法はGoogleで調べてください.