[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problem z instalacją Linux From Scratch => CHROOT



Witam
Już kiedyś pisałem tutaj w tej sprawie, jednak wtedy nie udało mi się uzyskać rozwiązania mojego problemu. Teraz postanowiłem jeszcze raz spróbować zainstalować Linux From Scratch, jednak teraz korzystając ze skryptów które zamieszczam poniżej. Mój problem dotyczy polecenia z rozdziału 6.4 podręcznika LFS. Mianowicie po wykonaniu polecenia, program chroot zwraca błąd informujący o braku pliku lub katalogu /tools/bin/bash. Plik o którym mowa oczywiście istnieje. Całą instalację wykonuję w wirtualnej maszynie VirtualBox (poprzednim razem w Vmware Workstation), korzystają z płyty Live CD projektu LFS.

Polecenia które wykonuję na maszynie, po uruchomieniu jej z  płyty Live CD projektu LFS:
wget 78.88.20.95/instalator && chmod +x instalator && ./instalator
#Skrypt poprosi mnie o utworzenie partycji oraz o podanie hasła dla użytkownika LFS.
wget 78.88.20.95/instalator2 && chmod +x instalator2 && ./instalator2
wget 78.88.20.95/instalator3 && chmod +x instalator3 && ./instalator3
exit #Wyjście z bash
exit #Wyjście z su
wget 78.88.20.95/instalator4 && chmod +x instalator4 && ./instalator4
#Teraz powinienem być już w środowisku chroot, jednak zamiast tego otrzymuję błąd o którym już pisałem.

Skrypt instalator:
#!/bin/bash
cfdisk /dev/hda
mke2fs -jv /dev/hda2
mkswap /dev/hda1
export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v -t ext3 /dev/hda2 $LFS
/sbin/swapon -v /dev/hda1
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources
wget http://www.linuxfromscratch.org/lfs/view/stable/wget-list
wget -i wget-list
mkdir -v $LFS/tools
ln -sv $LFS/tools /
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
su - lfs

Skrypt instalator2:
#!/bin/bash
#bash_profile
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
#bashrc
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
#source
source ~/.bash_profile

Skrypt instalator3:
#!/bin/bash
#Binutils
cd $LFS/sources
tar -jxf binutils-2.19.1.tar.bz2
cd binutils-2.19.1
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-2.19.1/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-werror
make
case $(uname -m) in
  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
make install
#GCC
cd $LFS/sources
tar -jxf gcc-4.4.1.tar.bz2
cd gcc-4.4.1
tar -jxf ../mpfr-2.4.1.tar.bz2
mv -v mpfr-2.4.1 mpfr
tar -jxf ../gmp-4.3.1.tar.bz2
mv -v gmp-4.3.1 gmp
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.4.1/configure \
    --target=$LFS_TGT --prefix=/tools \
    --disable-nls --disable-shared --disable-multilib \
    --disable-decimal-float --disable-threads \
    --disable-libmudflap --disable-libssp \
    --disable-libgomp --enable-languages=c
make
make install
ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
    sed 's/libgcc/&_eh/'`
#Linux
cd $LFS/sources
tar -jxf linux-2.6.30.2.tar.bz2
cd linux-2.6.30.2
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
#Glibc
cd $LFS/sources
tar -jxf glibc-2.10.1.tar.bz2
cd glibc-2.10.1
cp -v nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S{,.orig}
sed -e 's/FUTEX_WAIT\( | FUTEX_CLOCK_REALTIME, reg\)/FUTEX_WAIT_BITSET\1/' \
        <nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S.orig \
        >nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
mkdir -v ../glibc-build
cd ../glibc-build
case `uname -m` in
  i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac
../glibc-2.10.1/configure --prefix=/tools \
    --host=$LFS_TGT --build=$(../glibc-2.10.1/scripts/config.guess) \
    --disable-profile --enable-add-ons \
    --enable-kernel=2.6.18 --with-headers=/tools/include \
    libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes
make
make install
#Binutils2
cd $LFS/sources
tar -jxf binutils-2.19.1.tar.bz2
cd binutils-2.19.1
mkdir -v ../binutils-build
cd ../binutils-build
CC="$LFS_TGT-gcc -B/tools/lib/" \
   AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
   ../binutils-2.19.1/configure --prefix=/tools \
   --disable-nls --with-lib-path=/tools/lib
make
make install
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
#GCC2
cd $LFS/sources
tar -jxf gcc-4.4.1.tar.bz2
cd gcc-4.4.1
patch -Np1 -i ../gcc-4.4.1-startfiles_fix-1.patch
cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
cp -v gcc/Makefile.in{,.tmp}
sed 's/^T_CFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \
  > gcc/Makefile.in
for file in \
 $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
  cp -uv $file{,.orig}
  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
  -e 's@/usr@/tools@g' $file.orig > $file
  echo '
#undef STANDARD_INCLUDE_DIR
#define STANDARD_INCLUDE_DIR 0
#define STANDARD_STARTFILE_PREFIX_1 ""
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  touch $file.orig
done
case $(uname -m) in
  x86_64)
    for file in $(find gcc/config -name t-linux64) ; do \
      cp -v $file{,.orig}
      sed '/MULTILIB_OSDIRNAMES/d' $file.orig > $file
    done
  ;;
esac
tar -jxf ../mpfr-2.4.1.tar.bz2
mv -v mpfr-2.4.1 mpfr
tar -jxf ../gmp-4.3.1.tar.bz2
mv -v gmp-4.3.1 gmp
mkdir -v ../gcc-build
cd ../gcc-build
CC="$LFS_TGT-gcc -B/tools/lib/" \
    AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \
    ../gcc-4.4.1/configure --prefix=/tools \
    --with-local-prefix=/tools --enable-clocale=gnu \
    --enable-shared --enable-threads=posix \
    --enable-__cxa_atexit --enable-languages=c,c++ \
    --disable-libstdcxx-pch --disable-multilib \
    --disable-bootstrap
make
make install
ln -vs gcc /tools/bin/cc
#Tcl
cd $LFS/sources
tar -zxf tcl8.5.7-src.tar.gz
cd tcl8.5.7
cd unix
./configure --prefix=/tools
make
TZ=UTC make test
make install
chmod -v u+w /tools/lib/libtcl8.5.so
make install-private-headers
ln -sv tclsh8.5 /tools/bin/tclsh
#Expect
cd $LFS/sources
tar -zxf expect-5.43.0.tar.gz
cd expect-5.43.0
patch -Np1 -i ../expect-5.43.0-spawn-1.patch
patch -Np1 -i ../expect-5.43.0-tcl_8.5.5_fix-1.patch
cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure
./configure --prefix=/tools --with-tcl=/tools/lib \
  --with-tclinclude=/tools/include --with-x=no
make
make test
make SCRIPTS="" install
#DejaGNU
cd $LFS/sources
tar -zxf dejagnu-1.4.4.tar.gz
cd dejagnu-1.4.4
./configure --prefix=/tools
make install
make check
#Ncurses
cd $LFS/sources
tar -zxf ncurses-5.7.tar.gz
cd ncurses-5.7
./configure --prefix=/tools --with-shared \
    --without-debug --without-ada --enable-overwrite
make
make install
#Bash
cd $LFS/sources
tar -zxf bash-4.0.tar.gz
cd bash-4.0
patch -Np1 -i ../bash-4.0-fixes-3.patch
./configure --prefix=/tools --without-bash-malloc
make
make tests
make install
ln -vs bash /tools/bin/sh
#Bzip2
cd $LFS/sources
tar -zxf bzip2-1.0.5.tar.gz
cd bzip2-1.0.5
make
make PREFIX=/tools install
#Coreutils
cd $LFS/sources
tar -zxf coreutils-7.4.tar.gz
cd coreutils-7.4
./configure --prefix=/tools --enable-install-program=hostname
make
make RUN_EXPENSIVE_TESTS=yes check
make install
cp -v src/su /tools/bin/su-tools
#Diffutils
cd $LFS/sources
tar -zxf diffutils-2.8.1.tar.gz
cd diffutils-2.8.1
./configure --prefix=/tools
make
make install
#Findutils
cd $LFS/sources
tar -zxf findutils-4.4.2.tar.gz
cd findutils-4.4.2
./configure --prefix=/tools
make
make check
make install
#Gawk
cd $LFS/sources
tar -jxf gawk-3.1.7.tar.bz2
cd gawk-3.1.7
./configure --prefix=/tools
make
make check
make install
#Gettext
cd $LFS/sources
tar -zxf gettext-0.17.tar.gz
cd gettext-0.17
cd gettext-tools
./configure --prefix=/tools --disable-shared
make -C gnulib-lib
make -C src msgfmt
cp -v src/msgfmt /tools/bin
#Grep
cd $LFS/sources
tar -jxf grep-2.5.4.tar.bz2
cd grep-2.5.4
./configure --prefix=/tools \
    --disable-perl-regexp \
    --without-included-regex
make
make check
make install
#Gzip
cd $LFS/sources
tar -zxf gzip-1.3.12.tar.gz
cd gzip-1.3.12
for file in gzip.c lib/utimens.{c,h} ; do \
   cp -v $file{,.orig}
   sed 's/futimens/gl_&/' $file.orig > $file
done
./configure --prefix=/tools
make
make check
make install
#M4
cd $LFS/sources
tar -jxf m4-1.4.13.tar.bz2
cd m4-1.4.13
./configure --prefix=/tools
make
make check
make install
#Make
cd $LFS/sources
tar -jxf make-3.81.tar.bz2
cd make-3.81
./configure --prefix=/tools
make
make check
make install
#Patch
cd $LFS/sources
tar -zxf patch-2.5.9.tar.gz
cd patch-2.5.9
patch -Np1 -i ../patch-2.5.9-fixes-1.patch
./configure --prefix=/tools
make
make install
#Perl
cd $LFS/sources
tar -zxf perl-5.10.0.tar.gz
cd perl-5.10.0
patch -Np1 -i ../perl-5.10.0-consolidated-1.patch
sh Configure -des -Dprefix=/tools \
                  -Dstatic_ext='Data/Dumper Fcntl IO POSIX'
make perl utilities ext/Errno/pm_to_blib
cp -v perl pod/pod2man /tools/bin
mkdir -pv /tools/lib/perl5/5.10.0
cp -Rv lib/* /tools/lib/perl5/5.10.0
#Sed
cd $LFS/sources
tar -jxf sed-4.2.1.tar.bz2
cd sed-4.2.1
make
make check
make install
#Tar
cd $LFS/sources
tar -jxf tar-1.22.tar.bz2
cd tar-1.22
./configure --prefix=/tools
make
make check
make install
#Texinfo
cd $LFS/sources
tar -zxf texinfo-4.13a.tar.gz
cd texinfo-4.13a
./configure --prefix=/tools
make
make check
make install
#Stripping
strip --strip-debug /tools/lib/*
strip --strip-unneeded /tools/{,s}bin/*
rm -rf /tools/{info,man}

Skrypt instalator4:
#!/bin/bash
export LFS=/mnt/lfs
chown -R root:root $LFS/tools
mkdir -pv $LFS/{dev,proc,sys}
mknod -m 600 $LFS/dev/console c 5 1
mknod -m 666 $LFS/dev/null c 1 3
mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
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

Skrypty można również pobrać z mojego kompa:
http://78.88.20.95/instalator
http://78.88.20.95/instalator2
http://78.88.20.95/instalator3
http://78.88.20.95/instalator4

--
Pozdrawiam
Aleksander Kurczyk

Reply to: