[FreeBSD-users-jp 91200] Re: zfs root すると ports の bash が起動しない

2007-11-13 スレッド表示 Yusuke.Baba

不思議ですね。

ld-elf.so.hints のアクセス権は、一般ユーザでも読み込めるように
なっていますか?

内容も教えていただけるとうれしいです。

% ls -l /var/run/ld-elf.so.hints
% cat /var/run/ld-elf.so.hints

-- 
Yusuke.Baba 
<[メールアドレス保護]>




[FreeBSD-users-jp 91199] Re: zfs root すると ports の bash が起動しない

2007-11-13 スレッド表示 TOGAWA Satoshi
戸川です.

すみません.一部解決しました.

件のページ
http://www.ish.com.au/solutions/articles/freebsdzfs
の手順どおりにやると,なぜか /var/run が
drwx--  4 rootwheel   22 Nov 13 15:13 run
となって,パーミッションがおかしくなっていたようです.

ちなみに,ZFSにコピーする前のコピー元(UFS)である /bootdir/var/run は
drwxr-xr-x  4 root  wheel  512 Nov 12 15:50 /bootdir/var/run
となっており,なぜこのディレクトリだけパーミッションが落ちているかは
現在の所不明です.
件のページでのコピー方法は「# find -x / | cpio -pmd /tank」でした.

# chmod 755 /var/run
することで,一般ユーザーでのbashの起動を確認できました.

今夜は遅いのでこれ以上の追試は出来ませんが,明日の夜にでも
「本当にあのコピー方法でいいのか?」
ということを検証したいと思います.


-- 
[メールアドレス保護] 戸川聡士


[FreeBSD-users-jp 91198] Re: zfs root すると ports の bash が起動しない

2007-11-13 スレッド表示 TOGAWA Satoshi
戸川です.

On Tue, 13 Nov 2007 22:40:44 +0900
"Yusuke.Baba" 
<[メールアドレス保護]> 
wrote:

> 環境変数 LD_LIBRARY_PATH は設定されていますか?

設定していません.
$ echo ${LD_LIBRARY_PATH}

$
suでrootになってからも試してみましたが
# echo ${LD_LIBRARY_PATH}
LD_LIBRARY_PATH: Undefined variable.
だそうです.

> % ldconfig -rv
> % grep ^ldconfig /etc/defaults/rc.conf
> % grep ^ldconfig /etc/rc.conf

# ldconfig -rv | grep libintl
92:-lintl.8 => /usr/local/lib/libintl.so.8
# grep ^ldconfig /etc/defaults/rc.conf
ldconfig_insecure="NO"  # Set to YES to disable ldconfig security checks
ldconfig_paths="/usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg"
ldconfig32_paths="/usr/lib32" # 32-bit compatibility shared library search paths
ldconfig_paths_aout="/usr/lib/compat/aout /usr/local/lib/aout"
ldconfig_local_dirs="/usr/local/libdata/ldconfig"
ldconfig_local32_dirs="/usr/local/libdata/ldconfig32"
# grep ^ldconfig /etc/rc.conf
#

です.

あと,某所で指摘されたのですが,bashでは
$ readelf -d /usr/local/bin/bash | grep RPATH
では何も出ないのですが,動作するxgettextでは
$ readelf -d /usr/local/bin/xgettext | grep RPATH
 0x000f (RPATH)  Library rpath: [/usr/local/lib]
となり,bashのビルド時固有の問題? という気がしています.
(もっともこれに関しては「ldconfigがちゃんと動いてれば関係ない」という意見も)

他に何か確認する所があれば教えて頂けるとありがたいです.
よろしくお願いします.


-- 
[メールアドレス保護] 戸川聡士


[FreeBSD-users-jp 91197] Re: zfs root すると ports の bash が起動しない

2007-11-13 スレッド表示 Yusuke.Baba

環境変数 LD_LIBRARY_PATH は設定されていますか?

% echo $LD_LIBRARY_PATH

設定されていないようでしたら、つぎのコマンドの
実行結果があると、回答を得られやすくなると思います。

% ldconfig -rv
% grep ^ldconfig /etc/defaults/rc.conf
% grep ^ldconfig /etc/rc.conf

-- 
Yusuke.Baba 
<[メールアドレス保護]>




[FreeBSD-users-jp 91196] zfs root す ると ports の bash が起動しない

2007-11-13 スレッド表示 TOGAWA Satoshi
戸川です.

話題のML115を買ったので,7.0-BETA2/amd64をインストールしてみました.
これはうまくいきました.

次に,portsからbashをインストールしてみました.
これも動作しました.

で,せっかくなので,zfs rootするぜ,ということで,
http://www.ish.com.au/solutions/articles/freebsdzfs
に従って, /usr, /var, /tmp をzfs領域に移しました.

すると,起動などはうまくいくのですが,bashが起動しなくなりました.
エラーメッセージはこうです.
/libexec/ld-elf.so.1: Shared object "libintl.so.8" not found, required by "bash"

確かに ldd bashすると
libintl.so.8 => not found (0x0)
とか言われます.

しかしながら,/usr/local/lib/libintl.so.8 は存在します.
-r--r--r--  1 root  wheel  47076 Nov 13 20:00 /usr/local/lib/libintl.so.8

また,おかしなことに,suでrootになると,正常に実行できます.

また,同じくlibintl.so.8を参照しているコマンドとして
/usr/local/bin/xgettextがあるのですが,これは正常に起動します.
ldd xgettext すると
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x8008fe000)
となって,参照できているようです.

また,ktrace + kdump でbashの起動過程を見てみたのですが,
どうも /lib と /usr/lib だけしか見ていないようなのです.

   779 bash NAMI  "/lib/libintl.so.8"
   779 bash RET   access -1 errno 2 No such file or directory
   779 bash CALL  access(0x8005b4000,F_OK)
   779 bash NAMI  "/usr/lib/libintl.so.8"
   779 bash RET   access -1 errno 2 No such file or directory
   779 bash CALL  write(0x2,0x7fffe070,0x16)
   779 bash GIO   fd 2 wrote 22 bytes
   "/libexec/ld-elf.so.1: "
   779 bash RET   write 22/0x16
   779 bash CALL  write(0x2,0x7fffe150,0x3a)
   779 bash GIO   fd 2 wrote 58 bytes
   "Shared object "libintl.so.8" not found, required by "bash""


他に何か確認する項目はあるでしょうか?
よろしければ教えて下さい.

以上です.

-- 
[メールアドレス保護] 戸川聡士