Estarei o utilizando o livro LFS-Development segue o link para acompanhamento:
http://www.linuxfromscratch.org/lfs/view/development/
Estarei utilizando uma máquina virtual para a criação de um Livecd baseado no LFS.
O software utilizado é o Virtual Box.
Façam o download do Live CD lfslivecd-x86-6.3-r2160.iso, sistema que será utlizado como base para a construção de nosso sistema.
Abaixo segue o link:
ftp://anduin.linuxfromscratch.org/LFS-LiveCD/lfslivecd-x86-6.3-r2160.iso
Após a conclusão do Download, crie uma máquina virtual com o live cd LFS.
Crie uma partição, no meu caso criei uma partição de 8g e uma swap de 512mb.
Após a criação da máquina siga os passos abaixo:
#mke2fs -jv /dev/hda1
#mkswap /dev/hda2
#swapon /dev/hda2
#export LFS=/mnt/lfs
#mkdir -pv $LFS
#mount -v -t ext3 /dev/hda1 $LFS
#mkdir -p $LFS/sources
#chmod -v a+wt $LFS/sources
Vamos fazer o download dos soucers e patches:
#cd $LFS/sources
#wget http://www.linuxfromscratch.org/lfs/view/development/wget-list
#wget -i wget-list
# mkdir $LFS/tools
#ln -sv $LFS/tools /
#groupadd lfs
#useradd -s /bin/bash -g lfs -m -k /dev/null lfs
#passwd lfs (insira a senha para o usuário lfs.)
#chown -v lfs $LFS/toolsNo diretório $LFS/sources descompacte o binutils conforme abaixo:
#chown -v lfs $LFS/sources
#su - lfs
Agora como usuário LFS crie o arquivo bash_profile e o
.bashrc conforme abaixo:
lfs: ~$cat > .bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u: \w\$ '
/bin/bash
EOF
Crie o .bashrc:
lfs: ~$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
lfs: ~$source .bash_profile
Para que tem processadores com 2 núcleos ou mais:
lfs: ~$set MAKEFLAGS='-j 2'
lfs: ~$cd $LFS/sourceslfs: ~$tar -jxvpf binutils-2.20.tar.bz2
lfs: ~$ cd binutils-2.20/lfs: ~$mkdir ../binutils-build
lfs: ~$cd ../binutils-2.20/
lfs: ~$../binutils-2.20/configure --target=$LFS_TGT
--prefix=/tools --disable-nls --disable-werror
lfs: ~$make
lfs: ~$make install
Agora vamos para o GCC:
lfs: ~$cd ../sources
lfs: ~$tar -jxvpf gcc-4.4.3.tar.bz2
Um detalhe muito importante para poder compilar o gcc,
é necessário ter mpfr e o gmp.
Para que a nossa compilação prossiga corretamente
faremos desta maneira:
Dentro do diretório $LFS/sources descompacte o mpfr e o
gmp para dentro da pasta do GCC.
lfs: ~$tar -jxvpf mpfr-2.4.2.tar.bz2 -C gcc-4.4.3/
lfs: ~$tar -jxvpf gmp-5.0.0.tar.bz2 -C gcc-4.4.3/
lfs: ~$cd gcc-4.4.3/
lfs: ~$mv mpfr -2.4.2 mpfr
lfs: ~$mv gmp-5.0.0 gmp
lfs: ~$mkdir ../gcc-build
lfs: ~$cd ../gcc-build
lfs: ~$../gcc-4.4.3/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
lfs: ~$make
lfs: ~$make install
lfs: ~$ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name
| sed 's/libgcc/&_eh/`
lfs: ~$cd ../sources
lfs: ~$tar -jxvpf linux-2.6.32.6.tar.bz2
lfs: ~$cd linux-2.6.32.6/
lfs: ~$make mrproper
lfs: ~$make headers_check
lfs: ~$make INSTALL_HDR_PATH=dest headers_install
lfs: ~$cp -rv dest/include/* /tools/include
lfs: ~$cd ../sources
lfs: ~$tar -jxvpf glibc-2.11.1.tar.bz2
lfs: ~$cd glibc-2.11.1/
lfs: ~$mkdir -v ../glibc-build
lfs: ~$cd ../glibc-build
lfs: ~$case `uname -m` in
i?86) echo "CFLAGS += -march=i486
-mtune=native" > configparms ;;
esac
lfs: ~$../glibc-2.11.1/configure --prefix=/tools --host=$LFS_TGT
--build=$(../glibc-2.11.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
lfs: ~$make
lfs: ~$make install
lfs: ~$SPECS=`dirname $($LFS_TGT-gcc
-print-libgcc-file-name)`
/specs $LFS_TGT-gcc -dumpspecs | sed \
-e 's@/lib\(64\)\?/ld@/tools&@g' \
-e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}"
> $SPECS
echo "New specs file is: $SPECS"
unset SPECS
Após a execução do ajuste da Tollchain acima vamos
aplicar um teste para ver se esta tudo ok com o
nosso compilador:
lfs: ~$echo 'main(){}' > dummy.c
$LFS_TGT-gcc -B/tools/lib dummy.c
readelf -l a.out | grep ': /tools'
O resultado do comando acima tem quer ser este:[Requesting program interpreter: /tools/lib/ld-linux.so.2]
rm -v dummy.c a.out
Caso contrário reveja os passos anteriores.
lfs: ~$
Este é o fim da primeira parte deste artigo.
Na segunda parte desta série começaremos a construir um
sistema temporário.
Ótima iniciativa.
ResponderExcluirParabéns pelo artigo.
Vou continuar seguindo quando você lançar a continuação.