LinuxSir.cn,穿越时空的Linuxsir!

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

还是第六章不能chroot的问题,env的问题。

[复制链接]
发表于 2004-2-21 08:45:53 | 显示全部楼层 |阅读模式
用系统的ldd命令检查chroot,好像看起来没问题。
结果为
libc.so.6 => /tools/lib/libc.so.6 (0x40016000)
/tools/lib/ld-linux.so.2 => /tools/lib/ld-linux.so.2 (0x40000000)

加上这一行就有问题了。
#chroot /static/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin/static/bin/bash --login

用ldd检查/static/bin下的命令。
#ldd /static/bin/env
not a dynamic executable


之前有位网友他的问题和我一样,我猜他的解决办法是只打开lfs用户的登陆端口编译。我试这做,问题还是这样。

测试chroot命令.
#chroot static
这样是可以挂载,加上bin或env后报错,错误为不能改变根目录到...。如果只挂载static不知以后是否会有问题。
发表于 2004-2-21 09:04:42 | 显示全部楼层
“原文引用”
成为root后运行下列命令进入chroot环境:

chroot $LFS /static/bin/env -i \
    HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
    /static/bin/bash --login


是不是打错命令了!$LFS
 楼主| 发表于 2004-2-22 09:51:04 | 显示全部楼层

你说的前面加$LFS也试过,错误是一样的。

补充一点,我用的是lfs4.0。
发表于 2004-2-22 12:12:12 | 显示全部楼层
echo $LFS
我看你是在不经意间没设$LFS
 楼主| 发表于 2004-2-22 20:15:08 | 显示全部楼层

设置变量$LFS了。

更正一点错误。
用系统的ldd命令检查系统chroot,好像看起来没问题。
结果为
#ldd /usr/bin/chroot
显示了一些软链接

ldd 新编译的软件包生成的命令
#ldd $lfs/static/bin/env

not a dynamic executable
发表于 2004-2-23 01:31:13 | 显示全部楼层
那就是env没编译好了,这个好像是coreutils里面的。
 楼主| 发表于 2004-2-23 08:37:59 | 显示全部楼层

我也用同样的方法测试了/static/bin下的其他命令,结果也是一样的。

我想,是不是我在编译bash之前就做错了?
 楼主| 发表于 2004-2-23 10:07:21 | 显示全部楼层

补充,我把做的每一步写出来,请帮我看看。

rh8.0  +  lfs4.0

rh8.0为完全安装,lfs分区的文件系统为ext3,。

#export LFS=/mnt/lfs
#mkdir -p $LFS
#mount /dev/hda5 $LFS

#cp lfs-packages-cvs-20021023-1707.tar /mnt/lfs
#tar xvf lfs*
#mv lfs-packages-cvs-20021021707 src
#mkdir $LFS/static
#mv src $LFS/static
#useradd -s /bin/bash -m lfs
#passwd lfs

#chown -R lfs $LFS/static
#exit

用lfs登陆
$cat > ~LFS/.bash_profile << "EOF"
>umask 022
>LFS=/mnt/lfs
>LC_ALL=POSIX
>CC='gcc -s'
export LFS LC_ALL CC
EOF
$source ~/.bash_profile
$cd /mnt/lfs/static/src
$tar jxvf bash*
$cd bash*
$./configure --enable-static-link --prefix=$LFS/static --with-curses
$make
$make install
//   做完这一步后用root登陆,用ldd测试bash ,结果为:
//   #ldd $LFS/static/bin/bash
//   not a dynamic executable

$cd ..
$tar jxvf binutils-2.13.tar.bz2
$mv binutils-2.13 binutils-build
$cd binutils-build
$./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-all-static
$make install
$d ..
$tar jxvf bzip*
$cd bzip2*
$make CC="gcc -static -s"
$make PREFIX=$LFS/static install
$cd ..
$tar jxvf diffutils-2.8.1.tar.bz2
$cd diffutils-2.8.1
$LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static --disable-nls
$make
$make install
$cd ..
$tar jxvf fileutils-4.1.tar.bz2
$cd fileutils-4.1
$patch -Np1 -i ../fileutils-4.1.patch
$LDFLAGS=-static ./configure --disable-nls --prefix=$LFS/static
$make
$make install
$cd ..
$tar jxvf findutils-4.1.tar.bz2
$cd findutils-4。1
$patch -Np1 -i ../findutils-4.1.patch
CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf gawk-3.1.1.tar.bz2
$cd gawk-3.1.1
$CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf gcc-core-3.2.tar.bz2
$mv gcc-3.2 gcc-build
$cd gcc-build
$patch -Np1 -i ../gcc-3.2.patch
$patch -Np1 -i ../gcc-3.2-nofixincludes-2.patch
$./configure --prefix=/static --disable-nls --disable-shared
$echo "#define HAVE_GAS_HIDDEN 1" >> gcc/auto-host.h     //  此处为数字1
$make BOOT_LDFLAGS=-static bootstrap
$make prefix=$LFS/static install
$ln -s gcc $LFS/static/bin/cc
$cd ..
$tar jxvf grep-2.5.tar.bz2
$cd grep-2.5
$LDFLAGS=-static CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static --disable-nls --disable-perl-regexp
$make
$make install
$cd ..
$tar jxvf gzip-1.2.4a.tar.bz2
$cd gzip-1.2.4a
$./configure --prefix=$LFS/static
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf make*
$cd make*
$./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf patch*
$cd patch*
$CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=$LFS/static
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf sed*
$cd sed*
$CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf sh-utils-2.0.tar.bz2
$cd sh-utils-2.0
$patch -Np1 -i ../sh-utils-2.0.patch
$./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf tar-1.13.tar.bz2
$cd tar-1.13
$patch -Np1 -i ../tar-13.patch
$./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf texinfo-4.2.tar.bz2
$cd texinfo-4.2
$LDFLAGS=-static ./configure --prefix=$LFS/static --disable-nls
$make
$make install
$cd ..
$tar jxvf textutils-2.1.tar.bz2
$cd textutils-2.1
$CPPFLAGS=-Dre_max_failures=re_max_failures2 ./configure --prefix=$LFS/static --disable-nls
$make LDFLAGS=-static
$make install
$cd ..
$tar jxvf util-linux*
$cd util-linux*
$./configure
$make -C lib
$make -C mount LDFLAGS=-static mount umount
$cp mount/{mount,umount} $LFS/static/bin
发表于 2004-2-23 10:14:13 | 显示全部楼层
// 做完这一步后用root登陆,用ldd测试bash ,结果为:
// #ldd $LFS/static/bin/bash
// not a dynamic executable
4.0要早说,4.0里,bash这些都是静态连接,当然不是dynamic executable
 楼主| 发表于 2004-2-23 14:35:24 | 显示全部楼层

原来是这样. 帮我看看我的步骤应该没错吧 .

我chroot时,问题还是不能改变根目录到....

#chroot $LFS/static/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin/static/bin/bash --login

要不只好试试5.0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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