diary/Kojima/2006-01-04
の編集
http://plamo.linet.gr.jp/?diary/Kojima/2006-01-04
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・cpio のこと 最近は initrd の機能が initramfs という形で実装され,initrd みたいにあ らかじめファイルシステムを作っておかなくても cpio + gzip 形式で固めるだ けで自動展開してくれるそうなので,ちょっと試してみようかとイジってみた ら cpio でハマってしまった.. Plamo のインストーラを,ファイルシステムではなくあるディレクトリ以下に展開して, そこを cpio で固めようと find . | cpio -ov -H newc > plamo_installer.cpio みたいに作ってみたのだけど,何かサイズがデカいし,以前の initrd に比べ て読み込みも目に見えるくらい時間がかかっている. あれれ? と plamo_installer.cpio の中身を確認したら,シンボリックリック が,指す先の実体ファイルに展開されてしまっている模様.cpio にシンボリックリンクを保存するような オプション指定あったっけ? と思いながら man や info 等を見ても シンボリックリンクを展開するオプション(-L)はあるものの,保存する方法は発見できず. かといって,find を使ったファイル名の指定の仕方で変るわけでも無さそうだし, google とかで調べてもあまり意味のある記述は見つからないし.. かと言って cpio がシンボリックリンクを保存しないのかと言うと,fedora core4 で作った環境の initrd イメージは initramfs 用の cpio + gzip の形式なのだけど 眺めてみるとちゃんとシンボリックリンクが保存されている. kojima@vm42[~/Init]% cpio -tv < initrd_centos.cpio drwx------ 10 root root 0 Nov 22 16:30 . drwxr-xr-x 2 root root 0 Nov 22 16:30 loopfs drwxr-xr-x 2 root root 0 Nov 22 16:30 sys ... lrwxrwxrwx 1 root root 3 Nov 22 16:30 sbin -> bin drwxr-xr-x 2 root root 0 Nov 22 16:30 bin lrwxrwxrwx 1 root root 4 Nov 22 16:30 bin/udevstart -> udev -rwxr-xr-x 1 root root 37960 Nov 22 16:30 bin/nash lrwxrwxrwx 1 root root 10 Nov 22 16:30 bin/modprobe -> /sbin/nash -rwxr-xr-x 1 root root 541716 Nov 22 16:30 bin/udev lrwxrwxrwx 1 root root 10 Nov 22 16:30 bin/hotplug -> /sbin/nash cpio のバージョンも 2.6 で同じなのに何が違うのだろう,,あれこれ試行錯誤をしたところ, 結局 cpio-2.6 の configure スクリプトのバグで,lstat 機能が有効になっていないことが原因だった模様. これも結局 fc4のSRPMからパッチを引っぱり出すところまでかかってしまった.. 多分,Plamo デフォルトの cpio だと % mkdir test && cd test % touch file1 ; ln -s file1 file2 % find . | cpio -o > ../test1.cpio とやると kojima@xeon[~/tmp/test]% less ../test1.cpio drwxr-xr-x 2 kojima users 0 Jan 5 01:41 . -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file1 -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file2 こんな感じになってしまうハズ.一応,lstat 機能を有効にしてやった cpio では kojima@xeon[~/tmp/test]% find . | ../cpio-lstat -o > ../test2.cpio kojima@xeon[~/tmp/test]% less ../test2.cpio drwxr-xr-x 2 kojima users 0 Jan 5 01:41 . -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file1 lrwxrwxrwx 1 kojima users 5 Jan 5 01:41 file2 -> file1 という形でリンクが保存されることを確認. Plamo の上だと cpio なんて rpm ファイルを展開するときくらいしか使ったこ とが無いので,こんな問題が内在しているとは全然気がつかなかった,,(^^: #comment
タイムスタンプを変更しない
[[diary/Kojima]] ・cpio のこと 最近は initrd の機能が initramfs という形で実装され,initrd みたいにあ らかじめファイルシステムを作っておかなくても cpio + gzip 形式で固めるだ けで自動展開してくれるそうなので,ちょっと試してみようかとイジってみた ら cpio でハマってしまった.. Plamo のインストーラを,ファイルシステムではなくあるディレクトリ以下に展開して, そこを cpio で固めようと find . | cpio -ov -H newc > plamo_installer.cpio みたいに作ってみたのだけど,何かサイズがデカいし,以前の initrd に比べ て読み込みも目に見えるくらい時間がかかっている. あれれ? と plamo_installer.cpio の中身を確認したら,シンボリックリック が,指す先の実体ファイルに展開されてしまっている模様.cpio にシンボリックリンクを保存するような オプション指定あったっけ? と思いながら man や info 等を見ても シンボリックリンクを展開するオプション(-L)はあるものの,保存する方法は発見できず. かといって,find を使ったファイル名の指定の仕方で変るわけでも無さそうだし, google とかで調べてもあまり意味のある記述は見つからないし.. かと言って cpio がシンボリックリンクを保存しないのかと言うと,fedora core4 で作った環境の initrd イメージは initramfs 用の cpio + gzip の形式なのだけど 眺めてみるとちゃんとシンボリックリンクが保存されている. kojima@vm42[~/Init]% cpio -tv < initrd_centos.cpio drwx------ 10 root root 0 Nov 22 16:30 . drwxr-xr-x 2 root root 0 Nov 22 16:30 loopfs drwxr-xr-x 2 root root 0 Nov 22 16:30 sys ... lrwxrwxrwx 1 root root 3 Nov 22 16:30 sbin -> bin drwxr-xr-x 2 root root 0 Nov 22 16:30 bin lrwxrwxrwx 1 root root 4 Nov 22 16:30 bin/udevstart -> udev -rwxr-xr-x 1 root root 37960 Nov 22 16:30 bin/nash lrwxrwxrwx 1 root root 10 Nov 22 16:30 bin/modprobe -> /sbin/nash -rwxr-xr-x 1 root root 541716 Nov 22 16:30 bin/udev lrwxrwxrwx 1 root root 10 Nov 22 16:30 bin/hotplug -> /sbin/nash cpio のバージョンも 2.6 で同じなのに何が違うのだろう,,あれこれ試行錯誤をしたところ, 結局 cpio-2.6 の configure スクリプトのバグで,lstat 機能が有効になっていないことが原因だった模様. これも結局 fc4のSRPMからパッチを引っぱり出すところまでかかってしまった.. 多分,Plamo デフォルトの cpio だと % mkdir test && cd test % touch file1 ; ln -s file1 file2 % find . | cpio -o > ../test1.cpio とやると kojima@xeon[~/tmp/test]% less ../test1.cpio drwxr-xr-x 2 kojima users 0 Jan 5 01:41 . -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file1 -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file2 こんな感じになってしまうハズ.一応,lstat 機能を有効にしてやった cpio では kojima@xeon[~/tmp/test]% find . | ../cpio-lstat -o > ../test2.cpio kojima@xeon[~/tmp/test]% less ../test2.cpio drwxr-xr-x 2 kojima users 0 Jan 5 01:41 . -rw-r--r-- 1 kojima users 0 Jan 5 01:41 file1 lrwxrwxrwx 1 kojima users 5 Jan 5 01:41 file2 -> file1 という形でリンクが保存されることを確認. Plamo の上だと cpio なんて rpm ファイルを展開するときくらいしか使ったこ とが無いので,こんな問題が内在しているとは全然気がつかなかった,,(^^: #comment
テキスト整形のルールを表示する