ここで、コマンドラインでflatfsdを操作しながら、flatfsdの動作は実際にどうなっているのかを見てみましょう。 Armadillo-220のBaseイメージを例に使います。
デフォルトでArmadillo-220のIPアドレスがDHCPで設定されるようになっています。
[root@armadillo (ttyAM0) /etc/config]# cat interfaces # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
ネットワークインターフェースの設定ファイルが/etc/config
の下にあるので、テストに使えます。
viエディタを使って、固定IPに変更してみましょう。
root@armadillo (ttyAM1) /etc/config]# vi interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255 gateway 192.168.10.1
flatfsdコマンドに-s
オプションを指定して、/etc/config
の下にあるファイルを
フラッシュメモリのconfig領域に保存します。
[root@armadillo (ttyAM1) /etc/config]# flatfsd -s Saving configuration flatfsd: Wrote 9516 bytes to flash in 2 seconds
再起動しても、変更内容が消えないことを確認してみましょう。
[root@armadillo(ttyAM1) /etc/config]# reboot
起動時に、romfsイメージのファイルシステムがマウントされます。
この時点で、/etc/config
の内容はromfsイメージに含まれているものとまったく同じです。
その後、flatfsd -r
が実行されて、すでにマウントされている/etc/config
ディレクトリの下にフラッシュメモリのconfig領域のファイルデータがロードされます。もし同じファイル名があれば、上書きされます。
atmark-dist v1.6.0 (AtmarkTechno/Armadillo-220.Base) Linux 2.6.12.3-a9-6 [armv4tl arch] armadillo login: root Password: [root@armadillo (ttyAM1) ~]# cd /etc/config/ [root@armadillo (ttyAM0) /etc/config]# cat interfaces # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255 gateway 192.168.10.1
期待した通りに、ファイルが正しく保存されていました。また、設定が反映されていることを確認しましょう。
[root@armadillo (ttyAM0) /etc/config]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:11:0C:00:00:02 inet addr:192.168.10.100 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::211:cff:fe00:2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:139 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:39
flatfsdコマンドに-w
オプションを指定して、/etc/config
の内容を初期化してみましょう。
初期化を行う時、/etc/config
の下にあるファイルが削除されて、/etc/default
の内容が /etc/config
の下にコピーされます。そして、この内容がフラッシュメモリの
config領域に保存されます。
[root@armadillo (ttyAM1) /etc/config]# ls ../default [root@armadillo (ttyAM1) /etc/config]# flatfsd -w flatfsd: Nonexistent or bad flatfs (119), creating new one... flatfsd: Wrote 80 bytes to flash in 2 seconds flatfsd: Created 1 configuration files (16 bytes) [root@armadillo(ttyAM1) /etc/config]# cat interfaces cat: interfaces: No such file or directory [root@armadillo (ttyAM1) /etc/config]# ls
今回は/etc/default
の下にファイルがなかったため、/etc/config
も空になりました。
もう1回再起動してみましょう。
[root@armadillo (ttyAM1) /etc/config]# reboot
消されたsshキーの再生成に時間がかかります。。。
atmark-dist v1.6.0 (AtmarkTechno/Armadillo-220.Base) Linux 2.6.12.3-a9-6 [armv4tl arch] armadillo login: root Password: [root@armadillo (ttyAM1) ~]# cd /etc/config/ [root@armadillo (ttyAM0) /etc/config]# ls HOSTNAME ssh_host_dsa_key ssh_host_key.pub interfaces ssh_host_dsa_key.pub ssh_host_rsa_key resolv.conf ssh_host_key ssh_host_rsa_key.pub [root@armadillo(ttyAM1) /etc/config]# cat HOSTNAME a220-0
生成されたファイルとromfsイメージに含まれているファイルがあります。
flatfsd -r
をが実行される時、/etc/config
の内容は削除されません。
フラッシュメモリに入っているデータで上書きされるだけです。
ということで、romfsイメージの/etc/config
の下に入っているファイルは
romfsイメージを変更しないかぎり、Armadilloから削除できません。
また、romfsイメージを違うものに置き換えても、フラッシュメモリのデータが
そのまま残るため、完全に/etc/config
の更新するには、flatfsd -w
を
実行する必要があります。