PDF de programación - Kube RPI

Imágen de pdf Kube RPI

Kube RPIgráfica de visualizaciones

Publicado el 8 de Abril del 2019
260 visualizaciones desde el 8 de Abril del 2019
231,4 KB
47 paginas
Creado hace 2a (18/06/2017)
Kube-RPI

Antonio Luis Luna Márquez

18 de junio de 2017

2

Índice general

1. Introducción

1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Crossbuild toolchain

2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Creación del crossbuild root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Instalación de las dependencias de compilación . . . . . . . . . . . . . . . . . . . . . .
2.4. Binutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
2.5. GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1. Descarga, compilación e instalación de las GCC . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4.1. Descarga y compilación del código fuente de binutils

2.6. Añadir binarios a la variable ’PATH’

3. Kernel

3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Descarga del kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Configuración del kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Compilación del kernel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Creación de la imagen base del sistema operativo

4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Instalación de las dependencias necesarias . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Buildroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1. Creación y mapeo del fichero de imagen . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Particionado del fichero de imagen . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3. Creación de los sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.4. Montaje de los sistemas de ficheros . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Debootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1. Debootstrap - First Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2. Debootstrap - Second Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Instalación del kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Instalación de los módulos del kernel
4.7. Instalación de la imagen del kernel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8. Instalación del firmware de la Raspberry Pi 3 . . . . . . . . . . . . . . . . . . . . . . . .
4.8.1. Descarga del firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8.2. Instalación del firmware en el buildroot . . . . . . . . . . . . . . . . . . . . . . .
4.9. Copia de la imagen a la tarjeta SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

5
5

7
7
7
8
8
8
9
9
9

11
11
11
12
15

17
17
17
18
18
19
20
21
22
22
23
24
24
24
25
25
25
26

4

5. Paquetería del clúster

ÍNDICE GENERAL

5.1. Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1. Modificación de las dependencias originales del paquete . . . . . . . . . . . .
5.2. Etcd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Network-preconfigure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Instalación de los paquetes modificados . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1. Docker.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.2. Etcd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.3. Network-preconfigure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5. Kubernetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6. Aprovisionamiento del clúster

6.1. Ansible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1. Kubernetes Master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2. Kubernetes Minion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.3. Plantillas de configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
27
28
29
30
30
30
32
32
32

33
33
36
39
41

Capítulo 1

Introducción

1.1. Objetivos

Usar un Sistema Operativo de 64 bits en los dispositivos Raspberry Pi 3

Configurar un clúster Kubernetes en los dispositivos Raspberry Pi 3

5

6

CAPÍTULO 1. INTRODUCCIÓN

Capítulo 2

Crossbuild toolchain

2.1.

Introducción

Para poder compilar el kernel en ARM 64 vamos a utilizar una técnica denominada çross buil-
ding". A grandes rasgos hacer cross building es compilar el código fuente de un software en una
arquitectura distinta a la arquitectura que usará el sistema que va a ejecutar dicho software.

Este procedimiento se suele usar en máquinas con más potencia que los dispositivos en los

que se va a usar el software y de este modo ahorrar tiempo a la hora de compilar el código.

2.2. Creación del crossbuild root

El primer paso es configurar nuestro sistema de desarrollo para poder compilar el código que
después se ejecutará en los dispositivos Raspberry. Para ello necesitaremos el siguiente software:

Binutils

Las GNU Binutils son un conjunto de herramientas destinadas a la manipulación de código
objeto. Este software es indispensable para poder compilar el kernel en arquitectura ARM 64

Gcc

La GNU Compiler Collection son un conjunto de compiladores de distintos lenguajes y de-
penden directamente de las binutils. Las utilidades de GCC serán las encargadas de crear los
objetos que después enlazarán las binutils, creando el conjunto de elementos que confor-
marán nuestro kernel.

7

8

CAPÍTULO 2. CROSSBUILD TOOLCHAIN

2.3.

Instalación de las dependencias de compilación

El primer paso será instalar las dependencias necesarias para poder compilar el software bi-

nutils:

root@cross:~# sudo apt -get install build -essential \

libgmp -dev \
libmpfr -dev \
libmpc -dev \
bc \
libncurses5 \
libncurses5 -dev \
git

2.4. Binutils

2.4.1. Descarga y compilación del código fuente de binutils

debian@cross:~$ curl -L https://ftp.gnu.org/gnu/binutils/binutils -2.28.tar.bz2 \

-o ’binutils -2.28. tar.bz2 ’

% Total

% Received % Xferd

100 25.3M

100 25.3M

0

0

Average Speed
Dload
Upload
1566k

0

Time
Total
0:00:16

Time
Spent

Time
Left

Current
Speed

0:00:16 --:--:-- 3494k

debian@cross:~$ tar xf binutils -2.28.tar.bz2
debian@cross:~$ cd binutils -2.28/
debian@cross :~/binutils -2.28$ ./configure --prefix=/opt/aarch64 \

--target=aarch64 -linux -gnu

debian@cross :~/binutils -2.28$ make -j 3
debian@cross :~/binutils -2.28$ sudo make install

2.5. GCC

2.5. GCC

9

El siguiente paso es instalar las GCC para poder compilar nuestro kernel más adelante. Para

ello seguiremos los siguientes pasos:

2.5.1. Descarga, compilación e instalación de las GCC

debian@cross:~$ curl -L ’https://ftp.gnu.org/gnu/gcc/gcc -6.3.0/gcc -6.3.0. tar.bz2 ’ \

-o ’gcc -6.3.0. tar.bz2 ’

% Total

% Received % Xferd

100 95.2M

100 95.2M

0

0

Average Speed
Dload
Upload
2527k

0

Time
Total
0:00:38

Time
Spent

Time
Left

Current
Speed

0:00:38 --:--:-- 3835k

debian@cross:~$ tar xf gcc -6.3.0. tar.bz2

debian@cross :~/gcc -out$ ../gcc -6.3.0/ configure \

--prefix=/opt/aarch64 \
--target=aarch64 -linux -gnu \
--with -newlib \
--without -headers \
--disable -shared \
--enable -languages=c

debian@cross :~/gcc -out$ make all -gcc -j3

debian@cross :~/gcc -out$ sudo make install -gcc

2.6. Añadir binarios a la variable ’PATH’

Los sistemas operativos tipo Unix usan la variable ’PATH’ para indicar al sistema operativo los
directorios donde se encuentran los ficheros binarios de los distintos programas que están insta-
lados en el sistema. Para añadir nuestros nuevos binarios recién compilados e instalados ejecuta-
remos el siguiente comando:

root@cross:~# echo "export PATH=$PATH:/opt/aarch64/bin/" >> /etc/profile

Este comando inserta el nuevo directorio al fichero ’/etc/profile’, donde se encuentran las con-

figuraciones globales de los usuarios del sistema.

10

CAPÍTULO 2. CROSSBUILD TOOLCHAIN

Capítulo 3

Kernel

3.1.

Introducción

El kernel de un sistema operativo es el encargado de administrar los recursos hardware de los
distintos dispositivos que se encuentren conectados a la máquina que ejecuta el sistema operativo.

En nuestro caso, usaremos una versión modificada específicamente para funcionar en los dis-
positivos Raspberry Pi del kernel Linux. Este kernel va a ser compilado en arquitectura ARM de 64
bits, que en la fecha de la realización de este documento se encuentra en estado de pruebas.

3.2. Descarga del kernel

Este proceso se realizará mediante el clonado del repositorio oficial de la fundación Raspberry
Pi en Github. La versión del kernel que nos interesa es la ’4.9.y’, ya que es la más parecida a la ver-
sión de kernel que tiene el SO base que usaremos más adelante.

Para clonar el repositorio, usaremos el siguiente comando:

debian@cross:~$ git clone \
--depth=1 \
-b rpi -4.9.y \
https:// github.com/raspberrypi/linux.git

Cloning into ’linux ’...
remote: Counting objects: 60248, done.
remote: Compressing objects: 100% (56615/56615) , done.
remote: Total 60248 (delta 5262), reused 16408 (delta 2738), pack -reused 0
Receiving objects: 100% (60248/60248) , 158.96 MiB | 7.04 MiB/s, done.
Resolving deltas: 100% (5262/5262) , done.
Checking connectivity ... done.
Checking out files: 100% (56749/56749) , done.

11

12

CAPÍTULO 3. KERNEL

3.3. Configuración del kernel

En este apartado configuraremos la compilación
  • Links de descarga
http://lwp-l.com/pdf15683

Comentarios de: Kube RPI (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad