EMFSは、読み出し専用のファイルを、ルーターのコマンドとして保存できるファイルシステムです。ファイルの内容が内蔵不揮発性メモリーに保存される点ではRTFSと同じですが、RTFSとは異なりファイルの内容がコマンドとしてconfigの中に保存されているので、他の設定と同様に一つのconfigファイルとして扱えることが大きな違いです。
ヤマハルーターでは以下の機種およびファームウェアで、EMFSをサポートしています。
| 機種 | ファームウェア |
|---|---|
| vRXシリーズ | すべてのリビジョン |
| RTX840 | |
| RTX3510 | |
| RTX1300 | |
| RTX1220 | |
| RTX830 | Rev.15.02.03以降 |
| NVR510 | Rev.15.01.13以降 |
| NVR700W | Rev.15.00.14以降 |
| RTX1210 | Rev.14.01.26以降 |
| RTX5000 | Rev.14.00.26以降 |
| RTX3500 |
EMFSは、読み出し専用のファイルをルーターのコマンドとして保存できるファイルシステムです。ファイルは、embedded fileコマンドで作成、保存され、その他の設定と同様にshow configコマンドで表示されます。EMFS上のファイルシステムはTFTPやSCPを使ってconfigファイル内のコマンドの一部として送受信が可能です。読み出し専用のファイルとして、Luaスクリプトファイルを保存したり、callコマンドで呼び出すマクロを保存するのに利用できます。
EMFSは読み出し専用のファイルシステムであり、LuaスクリプトのAPI等からはファイルを読み出すことしかできず、ファイルの作成、変更、削除は行えません。また、あまり大きなファイルは保存できないことや、ディレクトリは作成できないことに注意が必要です。
EMFS上のファイルを読み出すためには、パスの先頭に"emfs:"を指定します。また、EMFSにはディレクトリの概念がないため、すべてのファイルはEMFSのルートディレクトリ上に存在することになります。
show file listコマンドでEMFSを表示する場合、このコマンドを実行した時点の日時が表示されます。
# embedded file test.txt <<EOF This is a test file. EOF # show file list emfs:/ 2018/01/01 16:26:49 21 test.txt # # embedded file cat <<EOF f=io.open(arg[1]) for l in f:lines() do print(l) end f:close() EOF # show file list emfs:/ 2018/01/01 16:32:32 65 cat 2018/01/01 16:32:32 21 test.txt # # show config ... login password * ip lan1 address 192.168.100.1/24 ... embedded file test.txt <<EOF This is a test file. EOF embedded file cat <<EOF f=io.open(arg[1]) for l in f:lines() do print(l) end f:close() EOF # # lua emfs:/cat emfs:/test.txt This is a test file. # # set PWD=emfs:/ # lua cat test.txt This is a test file. # # alias cat='lua emfs:/cat' # @cat test.txt This is a test file. #
EMFSのファイル名には、半角文字での英大文字、英小文字、数字、ハイフン(-)、アンダースコア(_)、ピリオド(.)が使用できます。その他の文字は使えません。英大文字と英小文字は区別されます。また、ファイル名の長さに制限はありませんが、入力するコマンドの文字数がコマンドラインの最大長(4095文字)を超えることはできません。
EMFSのファイルに保存できるのは、コマンドラインから入力できる文字のみです。したがって、バイナリーファイルを保存する場合は、BASE64形式で保存する必要があります。
# embedded file -b cert1.p12 <<EOF MIIKYQIBAzCCCicGCSqGSIb3DQEHAaCCChgEggoUMIIKEDCCBw8GCSqGSIb3DQEHBqCCBwAwggb8 AgEAMIIG9QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIBVoyOiRil50CAggAgIIGyEBby8bZ ... ZdM61lXlMSUwIwYJKoZIhvcNAQkVMRYEFPOEFIlwBvnvsoTfUDuWphr8gdfcMDEwITAJBgUrDgMC GgUABBQOD2ZRWqCcWC5sEwwhwFw46zkN+AQIcwN9T98mMc4CAggA EOF #