ここで、コマンドラインで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
を
実行する必要があります。