[Armadillo:05548] Re: romfsインストールツールについて

nakai email@hidden
2010年 8月 3日 (火) 18:53:48 JST


nakaiです。

> ただ、例えば/etc/passwdを/etc/configへ移動し、/etcにpasswdのシンボリック
> リンクを作成する場合
> プロダクト内で、上記の処理をしてmakeしても、/etc/passwdへのリンクが
> passwdの実態で上書きされて
> しまいます。

どのように作成しましたか?

> cd atmark-dist/vendors/AtmarkTechno/Armadillo-240.[Recover/Base]/etc
> cp passwd default/
> rm -f passwd
> ln -s /dec/config/passwd

上記のようにですか?
passwdファイルが上書きとは、ちょっと予想できません。。


> rm /etc/passwd
> $(ROMFSINST) -s /etc/config/passwd /etc/passwd

このように書いてしまうとシステム上の/etc/passwdを消そうとします。
そのため一般ユーザでは権限が無く、エラーになります。
上記、コードは

	*非常に危険なため、絶対に書かない*

でください。
もし、特権ユーザ(root)で実行するとシステム(ビルドマシン)が *破壊* されてしまいます。




(2010/08/03 18:39), Aspect wrote:
> nakaiさま、ご指導、ありがとうございます。
> 
> 動的か静的か
> 初期化スクリプトで、オーナー、グループなどを変更する とのこと理解いたし
> ました。
> 
> ただ、例えば/etc/passwdを/etc/configへ移動し、/etcにpasswdのシンボリック
> リンクを作成する場合
> プロダクト内で、上記の処理をしてmakeしても、/etc/passwdへのリンクが
> passwdの実態で上書きされて
> しまいます。
> たぶん、passwdのMakefileあたりで、/etc/passwdが新規に作成されているので
> しょうが、
> そこで、Armadillo-240.Base内のMakefileのromfsターゲットに
> 
> rm /etc/passwd
> $(ROMFSINST) -s /etc/config/passwd /etc/passwd
> 
> を追加してみたんですが、
> 
> rm: remove write-protected 通常ファイル '/etc/passwd'? y
> rm: cannot remove '/etc/passwd': 許可がありません
> make[1]: ***[romfs] エラー1
> になってしまいます。
> 
> どのように対処したら良いでしょうか?
> よろしく、お願い致します。
> 
> 
>> nakaiです。
>>
>>> この、ROMFSINSTをつかって、Makefileでファイルやフォルダを作る方法と、直
>>> 接プロダクト内に
>>> 必要なファイルを作成するのは、どのような違いがあり、どのように使い分けれ
>>> ば良いのでしょうか?
>>>
>> 動的に作り出す必要のあるもの ... Makefile
>> 静的なもの ... プロダクト内に置いておく
>>
>> くらいでしょうか?
>> これといって、ルール化していないうような気がしています。
>>
>> ちなみに、起動時の初期化時にファイルを生成する場合、
>> ファイルシステムリソース(inode, block)を消費するので、
>> あらかじめ余計に大きくしておくなど考慮が必要ですね。
>>
>>> また、ROMFSINSTでは、パーミッションの指定はできるようですが、オーナー、
>>> グループの変更は
>>> 出来ないんでしょうか?
>>>
>> romfs-inst.shでは、オーナー/グループの指定はできなかったと思います。
>> atmark-dist/romfs以下をgenext2fsを使用してファイルシステムイメージを
>> 作り出すときに、uidを指定していないため、すべてのファイルがroot:rootで
>> 作成されます。このgenext2fsするときに個々のファイルのuidを指定できないようです。
>>
>> そのため、初期化スクリプトでオーナー/グループを変更しています。
>>




armadillo メーリングリストの案内