FAQ

flatfsdはどのように動作しますか?

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