2014年9月12日金曜日

PCG-SR1M/BP の tmpfs エラー(Puppy Linux 5.7.1 JP)

Puppy Linux 5.7.1 JP のフルインストールで稼働させている PCG-SR1M/BP の Puppy パッケージマネージャのデータベース更新がエラーになる件について原因が判明しました。また対策もできました。読者さんの中に同様の症状でお悩みの場合には参考にしてください。

Puppy パッケージマネージャがデータベースを更新するときには tmpfs を使って /tmp 上に作業ファイルを作成します。私の観察では概ね 50MB のファイルを作るようです。しかしこの /tmp ディレクトリのファイル容量が 45MB しか割り当ててありませんでした。このため容量不足となってエラーが発生していました。

tmpfs が作る一時作業領域は shmfs で作る RAM ディスクとハードディスクのスワップファイルの組み合わせで作ることができますが、PCG-SR1M/BP へフルインストールした状態では、192MB の RAM の容量の内、起動時の空き領域の 4 分の 1 を RAM ディスクとして shmfs が作成して、これと同一容量の一時ファイルを tmpfs が作成していました。

この tmpfs が作成する一時ファイルのディレクトリ容量を 500MB と固定をして作成させるように変更してみたところ、 Puppy パッケージマネージャのデータベース更新を正常に実行させることができました。

--- tmpfs の容量を変更する方法 ---

具体的には tmpfs を作成するところで shmfs と同じ ${DTRFREERAM}k の変数を使用せずに直接固定値 500m(500MBの意味)を入力しました。
修正ファイル /etc/rc.d/rc.sysinit

-- 219 行目 --
mount -t tmpfs -o size=${QTRFREERAM}k tmpfs /tmp ;STATUS=$((STATUS+$?))
           
           
mount -t tmpfs -o size=500m tmpfs /tmp ;STATUS=$((STATUS+$?))

ハードディスクには 1GB のスワップ領域が設けられているため、この半分を割り当てている感じになっています。スワップ領域が枯渇するようでしたら、この 500m の容量を見直してください。

--- tmpfs を無効にする方法 ---

別の方法として tmpfs による一時ディレクトリを設けないで、直接ハードディスクのディレクトリ /tmp を使用する場合には、上記の 219 行目をコメントアウト(行頭に # を付加する)すれば tmpfs による容量不足エラーは発生しなくなります。メモリ不足を理由にハードディスクへ フルインストール (Full Install) した場合には、中途半端にメモリを消費する tmpfs を無効にする方法が得策のようです。

参考ウェブサイト
How to use HD only for tempfs? (Slacko 5.6 Full Install)
http://ip-208-109-22-214.ip.secureserver.net/puppy/viewtopic.php?t=88538&sid=ba35f38836d83b87aa98ba14e0c7017a

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。