Cross-compiling e compilação distribuída para ARM: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 64: | Linha 64: | ||
crossdev --stable armv6j-hardfloat-linux-gnueabi --gcc 4.6.2-r1 --libc 2.15-r4 --binutils 2.21.1-r1 | crossdev --stable armv6j-hardfloat-linux-gnueabi --gcc 4.6.2-r1 --libc 2.15-r4 --binutils 2.21.1-r1 | ||
É possível compilar o kernel do Kankin Linux de forma distribuída. | |||
== Prepare o ambiente == | |||
Configure o arquivo de configuração do distccd conforme exemplo abaixo: | |||
vi /etc/conf.d/distccd | |||
<pre> | |||
DISTCCD_OPTS="-j2" | |||
DISTCCD_EXEC="/usr/bin/distccd" | |||
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" | |||
DISTCCD_OPTS="${DISTCCD_OPTS} -N 15" | |||
</pre> | |||
== Obtenha o kernel == | |||
Obtenha o kernel oficial do raspberry pi foundation: | |||
=== Instale o Kernel Linux e os modulos === | |||
A Fundação Raspberry Pi mantém uma árvore do kernel do Linux que pode ser executado no Raspberry Pi (hardware), incluindo uma versão pré-compilada que usamos aqui. siga os passos abaixo: | |||
cd /tmp/ | |||
git clone --depth 1 git://github.com/raspberrypi/firmware/ | |||
cp firmware/boot/* /tmp/funtoo-raspberrypi/boot | |||
cp -r firmware/modules /tmp/funtoo-raspberrypi/lib | |||
==== Atualize para uma versão específica do kernel (opcional) ==== | |||
Para atualizar para um ramo em específico da árvore do kernel do projeto oficial do raspberry pi: | |||
cd /opt | |||
git clone --branch rpi-3.11.y git://github.com/raspberrypi/linux.git | |||
== Compile o kernel == | |||
=== Configure o distccd === | |||
Exporte as variáveis do distcc: | |||
<pre> | |||
export DISTCCD_OPTS="-j2" | |||
export DISTCCD_EXEC="/usr/bin/distccd" | |||
export DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" | |||
export DISTCCD_OPTS="${DISTCCD_OPTS} -N 15" | |||
</pre> | |||
Exporte as variáveis de definição dos nós do cluster: | |||
export DISTCC_HOSTS="192.168.254.254" | |||
ou | |||
export DISTCC_HOSTS="localhost 192.168.254.254" | |||
Acesse o diretório do kernel que você obteve a partir do repositório oficial raspberry pi: | |||
cd /usr/src/linux | |||
nohup make CC="distcc gcc" -j4 > /root/nohup.make & | |||
ou | |||
nohup make CC="distcc armv6j-hardfloat-linux-gnueabi-gcc" -j2 > /root/nohup.make & | |||
== Instale o kernel == | |||
make install && make modules_install | |||
Seja feliz! :D | |||
Edição das 15h25min de 27 de outubro de 2013
Configure o Cross-Compiling no Gentoo/Funtoo
Utilizaremos o overlay ambro-cross, visto que é bem estável. Mais infos:
https://code.google.com/p/ambro-cross-overlay/wiki/Instructions
Server/node cluster distcc (compilação distribuída)
Configure o ambiente para compilação cruzada:
cd /usr/local
svn checkout https://ambro-cross-overlay.googlecode.com/svn/trunk/ ambro-cross-overlay
Adicione ao seu make.conf:
PORTDIR_OVERLAY=" /usr/local/portage-crossdev /usr/local/ambro-cross-overlay"
Converta o diretório /etc/portage
Crie um script para converter o /etc/portage para o padrão de diretórios
vi ~/convert-profile-to-files.sh
#!/bin/bash PROFILE_DIR="/etc/portage" if [ ! -e ${PROFILE_DIR} ]; then mkdir ${PROFILE_DIR}; fi; for PACK_DIR in package.accept_keywords package.keywords package.use package.unmask package.mask; do CUR_DIR="${PROFILE_DIR}/${PACK_DIR}" if [ ! -e ${CUR_DIR} ]; then mkdir ${CUR_DIR} fi if [ -e ${CUR_DIR} -a ! -d ${CUR_DIR} ]; then mv ${CUR_DIR} ${CUR_DIR}.moving mkdir ${CUR_DIR} mv ${CUR_DIR}.moving ${CUR_DIR}/monolithic fi done echo "Completed!"
Execute o script criado
chmod +x ~/convert-profile-to-files.sh
bash ~/convert-profile-to-files.sh
Instale o crossdev
Desmascare a última versão do crossdev:
echo "sys-devel/crossdev" >> /etc/portage/package.keywords/monolithic
Construa a ferramenta de compilação cruzada
mkdir /usr/local/portage-crossdev
Compile o ambiente armv6j-hardfloat-linux-gnueabi usando o crossdev:
crossdev --ov-output /usr/local/portage-crossdev --stable armv6j-hardfloat-linux-gnueabi
ou
crossdev --stable armv6j-hardfloat-linux-gnueabi --gcc 4.6.2-r1 --libc 2.15-r4 --binutils 2.21.1-r1
É possível compilar o kernel do Kankin Linux de forma distribuída.
Prepare o ambiente
Configure o arquivo de configuração do distccd conforme exemplo abaixo:
vi /etc/conf.d/distccd
DISTCCD_OPTS="-j2" DISTCCD_EXEC="/usr/bin/distccd" DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"
Obtenha o kernel
Obtenha o kernel oficial do raspberry pi foundation:
Instale o Kernel Linux e os modulos
A Fundação Raspberry Pi mantém uma árvore do kernel do Linux que pode ser executado no Raspberry Pi (hardware), incluindo uma versão pré-compilada que usamos aqui. siga os passos abaixo:
cd /tmp/
git clone --depth 1 git://github.com/raspberrypi/firmware/
cp firmware/boot/* /tmp/funtoo-raspberrypi/boot
cp -r firmware/modules /tmp/funtoo-raspberrypi/lib
Atualize para uma versão específica do kernel (opcional)
Para atualizar para um ramo em específico da árvore do kernel do projeto oficial do raspberry pi:
cd /opt
git clone --branch rpi-3.11.y git://github.com/raspberrypi/linux.git
Compile o kernel
Configure o distccd
Exporte as variáveis do distcc:
export DISTCCD_OPTS="-j2" export DISTCCD_EXEC="/usr/bin/distccd" export DISTCCD_PIDFILE="/var/run/distccd/distccd.pid" export DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632" export DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical" export DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.254.0/24" export DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"
Exporte as variáveis de definição dos nós do cluster:
export DISTCC_HOSTS="192.168.254.254"
ou
export DISTCC_HOSTS="localhost 192.168.254.254"
Acesse o diretório do kernel que você obteve a partir do repositório oficial raspberry pi:
cd /usr/src/linux
nohup make CC="distcc gcc" -j4 > /root/nohup.make &
ou
nohup make CC="distcc armv6j-hardfloat-linux-gnueabi-gcc" -j2 > /root/nohup.make &
Instale o kernel
make install && make modules_install
Seja feliz! :D