LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 668|回复: 7

lfs6.0 chroot的时候出现问题

[复制链接]
发表于 2005-1-18 13:05:19 | 显示全部楼层 |阅读模式
6.3. Entering the Chroot Environment

  1. [root@localhost root]# chroot "$LFS" /tools/bin/env -i     HOME=/root TERM="$TERM" PS1='\u:\w\$ '     PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin     /tools/bin/bash --login +h

  2. /tools/bin/env: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

  3. [root@localhost root]# /tools/bin/env
  4. /tools/bin/env: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

  5. [root@localhost root]# ls /lib/libc.so.6 -ls
  6.    0 lrwxr-xr-x    1 root     root           13 11? 13 03:10 /lib/libc.so.6 -> libc-2.3.2.so

  7. [root@localhost root]# ls /lib/libc-2.3.2.so -ls
  8. 1480 -rwxr-xr-x    1 root     root      1508307  5? 14  2004 /lib/libc-2.3.2.so
复制代码

  1. [root@localhost root]# env
  2. HOSTNAME=localhost
  3. TERM=xterm
  4. SHELL=/bin/bash
  5. HISTSIZE=1000
  6. QTDIR=/usr/lib/qt-3.2
  7. LC_ALL=zh_CN.GB18030
  8. USER=root
  9. LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
  10. GDK_USE_XFT=1
  11. LFS=/mnt/lfs
  12. USERNAME=root
  13. MAIL=/var/spool/mail/root
  14. PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin
  15. INPUTRC=/etc/inputrc
  16. PWD=/root
  17. XMODIFIERS=@im=rfinput
  18. LANG=zh_CN.GB18030
  19. SHLVL=1
  20. HOME=/root
  21. LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
  22. LD_ASSUME_KERNEL=2.4.19
  23. BASH_ENV=/root/.bashrc
  24. LOGNAME=root
  25. LESSOPEN=|/usr/bin/lesspipe.sh %s
  26. DISPLAY=:1.0
  27. G_BROKEN_FILENAMES=1
  28. XAUTHORITY=/root/.xauthkDEDZI
  29. _=/bin/env
复制代码

  1. lfs:/mnt/lfs/sources$ env
  2. TERM=xterm
  3. LC_ALL=POSIX
  4. LFS=/mnt/lfs
  5. PATH=/tools/bin:/bin:/usr/bin
  6. PWD=/mnt/lfs/sources
  7. PS1=\u:\w\$
  8. SHLVL=1
  9. HOME=/home/lfs
  10. _=/tools/bin/env
  11. OLDPWD=/mnt/lfs/sources/glibc-build
复制代码

明明有libc.so.6这个文件怎么找不到呢?
好像跟我昨天的问题有异曲同工之处,想 :comp 了
发表于 2005-1-18 13:18:06 | 显示全部楼层
chroot "$LFS" /tools/bin/env -i     
当你chroot "$LFS"后,以下的命令都是使用你$LFS环境中的了,和主系统没有关系。
出现这个问题说明你的lfs系统的glibc出了问题。可能是没有正确安装。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-18 14:38:32 | 显示全部楼层
用lfs用户 执行 env 命令没问题,如我帖子最后一段所示。他就是/tools/bin里的
显示写明路径也没问题

  1. lfs:/mnt/lfs/sources$ /tools/bin/env
  2. TERM=xterm
  3. LC_ALL=POSIX
  4. LFS=/mnt/lfs
  5. PATH=/tools/bin:/bin:/usr/bin
  6. PWD=/mnt/lfs/sources
  7. PS1=\u:\w\$
  8. SHLVL=1
  9. HOME=/home/lfs
  10. _=/tools/bin/env
  11. OLDPWD=/mnt/lfs/sources/glibc-build
复制代码

这应该说明安装是正确的吧
回复 支持 反对

使用道具 举报

发表于 2005-1-18 18:41:52 | 显示全部楼层
你可以用ldd /tools/bin/env
看看共享库是链接到哪里的。
这里不应该是链接到/lib的。而是/tools/lib
你在主系统执行/tools/bin/env是正常的,无论它链接到/lib还是/tools/lib
但是当你chroot时,就完全看不到主系统了。所以如果这个是链接到/lib的就会出问题
正确应该是链接到/tools/lib的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-19 11:34:51 | 显示全部楼层

  1. lfs:/mnt/lfs$ ldd /tools/bin/env
  2.         linux-gate.so.1 =>  (0xffffe000)
  3.         libc.so.6 => /tools/lib/libc.so.6 (0xb7ed2000)
  4.         /tools/lib/ld-linux.so.2 => /tools/lib/ld-linux.so.2 (0xb7fe9000)
复制代码

奇怪的地方是: 只有lfs用户可以执行/tools/bin/env 其他用户,如root,ahr执行/tools/bin/env 均抱错:
/tools/bin/env: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
回复 支持 反对

使用道具 举报

发表于 2005-1-19 11:41:24 | 显示全部楼层
看看#ls -l /mnt/lfs/source/usr/lib
回复 支持 反对

使用道具 举报

发表于 2005-1-19 13:10:53 | 显示全部楼层
链接也没错,真是奇怪的问题 :ask
对root来说也没有权限问题阿。
帮顶一下了。
试试root能不能执行其他程序,重新安装下包含env的包。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-19 15:12:53 | 显示全部楼层
多写2位,我又加 LDFLAGS="-static" 把coreutils编译安装了一遍,现在可以了   

  1. lfs:/mnt/lfs/sources/coreutils-5.2.1$ make clean
  2. lfs:/mnt/lfs/sources/coreutils-5.2.1$ make LDFLAGS="-static"
  3. lfs:/mnt/lfs/sources/coreutils-5.2.1$ make install
  4. lfs:/mnt/lfs/sources/coreutils-5.2.1$ ldd /tools/bin/env
  5.         not a dynamic executable
复制代码


编译成静态连接,他就不会找那个该死的库了,呵呵 ;)
我宿主机的 /lib/libc.so.6 -> libc-2.3.2.so
而 lfs里      /tools/lib/libc.so.6 -> libc-2.3.4.so
可能是这里版本不对的原因。 :ask
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表