Cross-compiling e compilação distribuída para ARM: mudanças entre as edições

De Área31 Hackerspace
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

Cookies nos ajudam a entregar nossos serviços. Ao usar nossos serviços, você concorda com o uso de cookies.