[deleted]
- Edited
-
Introduction
Dans ce didacticiel nous allons:
L'arborescence sera la suivante:
[$HOME]
|
|---[ 00-Obarunbuild ] # # Dossier de travail avec pour indicatif '00' histoire de bien le demarquer des autres dossiers.
|
|----- [ worklxc ] # # Dossier qui contiendra les conteneurs LXC.
|----- [ sources ] # # Dossier qui contiendra les paquets ARCH.
|----- [ target ] # # Dossier qui contiendra les sources PKGBUILD.
|----- [ savepkg ] # # Dossier qui contiendra les outils LXC-*.
Creez les repertoires:
Nous utilisons GIT pour recuperer l'ensemble des documents. C'est dans le dossier sources que nous allons cloner le repo linux-rt.git.
Executez les commandes suivantes:
Examinons et configurons pas a pas la section 'Main variable'.
Cette variable sert uniquement pour faire des hotfix et des testes avant de faire une release, l'utilisateur en regle generale n'est pas un testeur.
Nous pouvons conserver la valeur par defaut de 0
Cette variable sert au debogage du programme en cas de problemes. Pour un report de bug il conviendra de passer cette variable a la valeur '1'.
Nous pouvons conserver la valeur par defaut de 0
Cette variable symbolise l'url vers le dépôt obarun-build.git utilisee en complement a la variable UPDATE lorsque celle-ci a pour valeur 'yes'.
Nous pouvons conserver la valeur par defaut de github.com/Obarun/obarun-build.git
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant un ensemble de clefs gpg.
Nous pouvons conserver la valeur par defaut de /var/lib/obarun/gnupg
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le container.
Nous pouvons conserver la valeur par defaut de /usr/share/obarun/obarun-build/templates
Pour une meilleur visualisation des variables contenus dans le fichier build.conf nous allons tout de meme completer la variable TEMPLATE.
Assignez la valeur de /usr/share/obarun/obarun-build/templates pour la variable TEMPLATE.
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant les outils lxc-*
Nous pouvons conserver la valeur par defaut de /var/lib/lxc
Cependant souvent solicite en ecriture, si vous utilisez un disque dur de type SSD, peut-etre est-il preferable de redefinir la variable.
Dans ce didactiel la valeur sera de $HOME/00-Obarunbuild/worklxc pour la variable WORKLXC.
[color=# cd7900]NOTE:La variable $HOME correspond au chemin qui mene a la racine du repertoire utilisateur.[/color]
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les PKGBUILD.
Assignez la valeur de $HOME/00-Obarunbuild/sources pour la variable SOURCES.
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les conteneurs.
Assignez la valeur de $HOME/00-Obarunbuild/target pour la variable TARGET.
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les paquets binaires.
Assignez la valeur de $HOME/00-Obarunbuild/savepkg pour la variable SAVE_PKG.
Nous pouvons conserver la valeur par defaut ou bien librement redefinir la variable.
Dans ce didacticiel la valeur sera de BaseContainer pour la variable MAIN_SNAP.
Examinons et configurons pas a pas la section 'Container user configuration variables'.
Cette variable symbolise le nom d'hôte utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou bien librement redefinir la variable.
Dans ce didacticiel la valeur sera de basecontainer pour la variable HOSTNAME.
Cette variable symbolise l'environnement linguistique utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou redefinir la variable en fonction de votre langue.
Dans ce didacticiel la valeur sera de en_US.UTF-8 pour la variable LOCALE.
Cette variable symbolise le fuseau horaire utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou bien redefinir la variable en fonction de votre position geographique.
Dans ce didacticiel la valeur sera de Europe pour la variable ZONE.
Dans ce didacticiel la valeur sera de Warsaw pour la variable SUBZONE.
Cette variable symbolise la disposition des touches utilisee pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou redefinir la variable pour l'adapter a la disposition des touches de votre clavier.
Dans ce didacticiel la valeur sera de us pour la variable KEYMAP.
Cette variable symbolise le nom de l'utilisateur ayant acces au systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou librement redefinir la variable.
Dans ce didacticiel la valeur sera celle par defaut de userbuild pour la variable NEWUSER.
Cette variable symbolise le mot de passe assigne a l'utilisateur et administrateur du systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou librement redefinir la variable.
Dans ce didacticiel la valeur sera de rootbuild pour la variable PASSW_ROOT.
Dans ce didacticiel la valeur sera de userbuild pour la variable PASSW_USER.
Examinons et configurons pas a pas la section 'Network configuration variables'.
Cette variable sert a creer un pont reseau pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut de 1
Dans un terminal, notre dossier courant $HOME, executez la commande suivante pour afficher les options de l'outil obarun-build.
Executez la commande suivante:
Selection du container avec les commandes suivantes:
La premiere methode consiste a se connecter au container avec la commande 'console'.
La seconde methode consiste a utiliser l'option 'attach -- ' suivi d'une commande.
Methode 1 avec la commande console:
Ces clefs installees dans le conteneur principal seront disponibles a chaque nouveau snapshot.
Executez les commandes suivantes en tant qu'utilisateur userbuild pour recuperer l'ensemble des clefs gpg:
Executez la commande suivante:
Nous utilisons la methode de snapshot pour compiler le noyau linux-rt. Executez la commande suivante pour demarrer la compilation:
Introduction
Dans ce didacticiel nous allons:
- Installer les outils de travail.
- Preparer l'hote.
- Configurer le fichier build.conf.
- Construire, configurer le conteneur.
- Executer la compilation du noyau linux-rt.
- Vérifier le résultat obtenu.
- 1) INSTALLATION DES OUTILS DE TRAVAIL
sudo sh -c "pacman -Syu"
Installez le logiciel 'obarun-build':
sudo sh -c "pacman -S obarun-build"
- 2) PREPARATION DE L'HOTE
- 2a) Obarun-build
L'arborescence sera la suivante:
[$HOME]
|
|---[ 00-Obarunbuild ] # # Dossier de travail avec pour indicatif '00' histoire de bien le demarquer des autres dossiers.
|
|----- [ worklxc ] # # Dossier qui contiendra les conteneurs LXC.
|----- [ sources ] # # Dossier qui contiendra les paquets ARCH.
|----- [ target ] # # Dossier qui contiendra les sources PKGBUILD.
|----- [ savepkg ] # # Dossier qui contiendra les outils LXC-*.
Creez les repertoires:
mkdir 00-Obarunbuild
mkdir 00-Obarunbuild/worklxc
mkdir 00-Obarunbuild/sources
mkdir 00-Obarunbuild/target
mkdir 00-Obarunbuild/savepkg
[color=# cd7900]NOTE: Vous etes libre du nom et de la disposition des dossiers. N'oubliez pas cependant d'adapter en consequence le fichier de configuration.[/color]- 2b) PKGBUILD
Nous utilisons GIT pour recuperer l'ensemble des documents. C'est dans le dossier sources que nous allons cloner le repo linux-rt.git.
Executez les commandes suivantes:
cd $HOME/00-Obarunbuild/sources
git clone https://aur.archlinux.org/linux-rt.git
[color=# FF0000]IMPORTANT ![/color]
Ne compilez pas un pkgbuild provenant de AUR sans avoir pris connaissance, lu et compris l'ensemble des documents fournis pour construire le paquet binaire.
- 3) CONFIGURATION DU FICHIER BUILD.CONF
sudo sh -c "cp /etc/obarun/build.conf /etc/obarun/build.conf.orig"
Le fichier build.conf.# ###########################################################################################
# # Main variables
# ###########################################################################################
# allow you to update the script when it launched [yes|no]
# this is install the package from git if a new commit exist.
UPDATE="no"
# Be more/less verbose
# 1 for more, 0 for less
DEBUG=0
# git source of obarun-build package
GIT_ADDR="https://github.com/Obarun/obarun-build.git"
# gpg directory used during the installation
GPG_DIR="/var/lib/obarun/gnupg"
# directory to use as template to build the container
# if not defined /usr/share/obarun/obarun-build/templates is taken by default
TEMPLATES=""
# working directory for lxc-* tools
# if not set /var/lib/lxc is taken by default
WORKLXC=""
# source directory to find PKGBUILD for building the package
SOURCES=""
# Place where container are saved
# if not defined /var/cache/obarun/pkgbuild is taken by default
TARGET=""
# Place where the builded packages are saved
# if not defined /var/cache/obarun/pkg is taken by default
SAVE_PKG=""
# name of the main container to use with snap option
MAIN_SNAP="base"
# ###########################################################################################
# # Container user configuration variables
# ###########################################################################################
# Hostname of the system onto the container
HOSTNAME="contbuild"
# locale of the system onto the container
LOCALE="en_US.UTF-8"
# zone/subzone of the system onto the container
ZONE="GMT"
SUBZONE=""
# Keymap the system onto the container
KEYMAP="us"
# Name of the newuser onto the container
NEWUSER="userbuild"
# Password for user and root user onto the container
PASSW_ROOT="toor"
PASSW_USER="toor"
# ###########################################################################################
# # Network configuration variables
# ###########################################################################################
# Allow script to create a bridge automaticaly
# 0 for no, 1 for yes
CREATE_BRIDGE=1
Examinons et configurons pas a pas la section 'Main variable'.
[color=# cd7900]NOTE: Traduction > # vous permet de mettre à jour le script 'obarun-build' lors de son execution [oui|non]. En presence d'un nouveau commit, installe le paquet 'obarun-build' a partir de git.[/color]# allow you to update the script when it launched [yes|no]
# this is install the package from git if a new commit exist.
UPDATE="no"
Cette variable sert uniquement pour faire des hotfix et des testes avant de faire une release, l'utilisateur en regle generale n'est pas un testeur.
Nous pouvons conserver la valeur par defaut de 0
[color=# cd7900]NOTE: Traduction > # debogueur plus/moins bavard. 1 pour plus, 0 pour moins[/color]# Be more/less verbose
# 1 for more, 0 for less
DEBUG=0
Cette variable sert au debogage du programme en cas de problemes. Pour un report de bug il conviendra de passer cette variable a la valeur '1'.
Nous pouvons conserver la valeur par defaut de 0
[color=# cd7900]NOTE: Traduction > # source git du paquet obarun-build[/color]# git source of obarun-build package
GIT_ADDR="https://github.com/Obarun/obarun-build.git"
Cette variable symbolise l'url vers le dépôt obarun-build.git utilisee en complement a la variable UPDATE lorsque celle-ci a pour valeur 'yes'.
Nous pouvons conserver la valeur par defaut de github.com/Obarun/obarun-build.git
[color=# cd7900]NOTE: Traduction > # repertoire gpg utilise pendant l'installation[/color]# gpg directory used during the installation
GPG_DIR="/var/lib/obarun/gnupg"
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant un ensemble de clefs gpg.
Nous pouvons conserver la valeur par defaut de /var/lib/obarun/gnupg
[color=# cd7900]NOTE: Traduction > repertoire a utiliser comme modele pour construire le conteneur. Si la variable n'est pas definie alors '/usr/share/obarun/obarun-build/templates' sera utilise comme valeur par defaut.[/color]# directory to use as template to build the container
# if not defined /usr/share/obarun/obarun-build/templates is taken by default
TEMPLATES=""
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le container.
Nous pouvons conserver la valeur par defaut de /usr/share/obarun/obarun-build/templates
Pour une meilleur visualisation des variables contenus dans le fichier build.conf nous allons tout de meme completer la variable TEMPLATE.
Assignez la valeur de /usr/share/obarun/obarun-build/templates pour la variable TEMPLATE.
[color=# cd7900]NOTE: Traduction > Repertoire de travail pour les outils lxc-*.[/color]# working directory for lxc-* tools
# if not set /var/lib/lxc is taken by default
WORKLXC=""
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant les outils lxc-*
Nous pouvons conserver la valeur par defaut de /var/lib/lxc
Cependant souvent solicite en ecriture, si vous utilisez un disque dur de type SSD, peut-etre est-il preferable de redefinir la variable.
Dans ce didactiel la valeur sera de $HOME/00-Obarunbuild/worklxc pour la variable WORKLXC.
[color=# cd7900]NOTE:La variable $HOME correspond au chemin qui mene a la racine du repertoire utilisateur.[/color]
[color=# cd7900]NOTE: Traduction > Repertoire source contenant le/les PKGBUILD necessaires a la construction du/des paquets binaires.[/color]# source directory to find PKGBUILD for building the package
SOURCES=""
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les PKGBUILD.
Assignez la valeur de $HOME/00-Obarunbuild/sources pour la variable SOURCES.
[color=# cd7900]NOTE: Traduction > Le dossier ou sont sauvegardes les conteneurs. Si la variable n'est pas definie alors '/var/cache/obarun/pkgbuild' est utilise comme valeur par defaut.[/color]# Place where container are saved
# if not defined /var/cache/obarun/pkgbuild is taken by default
TARGET=""
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les conteneurs.
Assignez la valeur de $HOME/00-Obarunbuild/target pour la variable TARGET.
[color=# cd7900]NOTE: Traduction > Emplacement ou les paquets binaires sont sauvegardes. Si la variable n'est pas definie alors '/var/cache/obarun/pkg' est utilise comme valeur par defaut[/color]# Place where the builded packages are saved
# if not defined /var/cache/obarun/pkg is taken by default
SAVE_PKG=""
Cette variable symbolise le chemin a suivre pour atteindre le dossier contenant le/les paquets binaires.
Assignez la valeur de $HOME/00-Obarunbuild/savepkg pour la variable SAVE_PKG.
[color=# cd7900]NOTE: Traduction > Nom du container principal utilise avec l'option snap[/color]# name of the main container to use with snap option
MAIN_SNAP="base"
Nous pouvons conserver la valeur par defaut ou bien librement redefinir la variable.
Dans ce didacticiel la valeur sera de BaseContainer pour la variable MAIN_SNAP.
Examinons et configurons pas a pas la section 'Container user configuration variables'.
[color=# cd7900]NOTE: Traduction > nom d'hôte du systeme dans le container[/color]# Hostname of the system onto the container
HOSTNAME="contbuild"
Cette variable symbolise le nom d'hôte utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou bien librement redefinir la variable.
Dans ce didacticiel la valeur sera de basecontainer pour la variable HOSTNAME.
[color=# cd7900]NOTE: Traduction > locale du systeme dans le container[/color]# locale of the system onto the container
LOCALE="en_US.UTF-8"
Cette variable symbolise l'environnement linguistique utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou redefinir la variable en fonction de votre langue.
Dans ce didacticiel la valeur sera de en_US.UTF-8 pour la variable LOCALE.
[color=# cd7900]NOTE: Traduction > fuseau horaire du systeme dans le conteneur[/color]# zone/subzone of the system onto the container
ZONE="GMT"
SUBZONE=""
Cette variable symbolise le fuseau horaire utilise pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou bien redefinir la variable en fonction de votre position geographique.
Dans ce didacticiel la valeur sera de Europe pour la variable ZONE.
Dans ce didacticiel la valeur sera de Warsaw pour la variable SUBZONE.
[color=# cd7900]NOTE: Traduction > disposition des touches pour le systeme dans le conteneur[/color]# Keymap the system onto the container
KEYMAP="us"
Cette variable symbolise la disposition des touches utilisee pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou redefinir la variable pour l'adapter a la disposition des touches de votre clavier.
Dans ce didacticiel la valeur sera de us pour la variable KEYMAP.
[color=# cd7900]NOTE: Traduction > nom du nouvel utilisateur dans le conteneur[/color].# Name of the newuser onto the container
NEWUSER="userbuild"
Cette variable symbolise le nom de l'utilisateur ayant acces au systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou librement redefinir la variable.
Dans ce didacticiel la valeur sera celle par defaut de userbuild pour la variable NEWUSER.
[color=# cd7900]NOTE: Traduction > mot de passe pour l'utilisateur et l'administrateur du systeme dans le conteneur[/color].# Password for user and root user onto the container
PASSW_ROOT="toor"
PASSW_USER="toor"
Cette variable symbolise le mot de passe assigne a l'utilisateur et administrateur du systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut ou librement redefinir la variable.
Dans ce didacticiel la valeur sera de rootbuild pour la variable PASSW_ROOT.
Dans ce didacticiel la valeur sera de userbuild pour la variable PASSW_USER.
Examinons et configurons pas a pas la section 'Network configuration variables'.
[color=# cd7900]NOTE: Traduction > Autorise le script a creer automatiquement un pont[/color]# Allow script to create a bridge automaticaly
# 0 for no, 1 for yes
CREATE_BRIDGE=1
Cette variable sert a creer un pont reseau pour le systeme dans le conteneur.
Nous pouvons conserver la valeur par defaut de 1
- 4) CONSTRUIRE, CONFIGURER LE CONTENEUR
Dans un terminal, notre dossier courant $HOME, executez la commande suivante pour afficher les options de l'outil obarun-build.
sudo obarun-build
Obarun-build propose differentes methodes pour la compilation. Dans ce didacticiel nous allons utiliser la methode utilisant le snaphot.Usage: /usr/bin/obarun-build [General options] [Sub options] name
e.g obarun-build Create create container
obarun-build C c container
obarun-build B b cups
obarun-build M container
General options :
C, Create : create a container
B, Build : build a package onto a container
M, Manage : open an interactive shell to manage a named container
Sub options :
for Create :
c, create : create a container
for Build :
b, build : build a package onto a container
s, snap : build a package onto a snapshot container
r, remake : build a package onto an archived container
- 4a) La creation du conteneur principal.
Executez la commande suivante:
sudo sh -c "obarun-build C c BaseContainer"
- 4b) Connection au shell interactif lxc
Selection du container avec les commandes suivantes:
sudo sh -c "obarun-build M BaseContainer"
ou via le menu interactif sudo sh -c "obarun-build M"
Vous l'avez remarque, nous avons change de shell. C'est le shell lxc et sa liste de commandes obtenu avec la commande help.Type help to see option
Type quit for exit
Manage BaseContainer > help
attach start a process inside a running container
autostart start/stop/kill auto-started containers
cgroup start a process inside a running container
checkconfig start a process inside a running container
checkpoint checkpoint a container
config query LXC system configuration
console launch a console for the specified container
copy copy an existing container
create creates a container
destroy destroy a container
device manage devices of running containers
execute run an application inside a container
freeze freeze all the container's processes
info query information about a container
ls list the containers existing on the system
monitor monitor the container state
quit exit from this menu
snapshot snapshot an existing container
start start a container
stop stop a container
switch manage the named container
top monitor container statistics
unfreeze thaw all the container's processes
unshare run a task in a new set of namespaces
usernsexec run a task as root in a new user namespace
wait wait for a specific container state
- 4c) Demarage et acces a la console de BaseContainer
start
Il existe deux methodes pour travailler dans le container.La premiere methode consiste a se connecter au container avec la commande 'console'.
La seconde methode consiste a utiliser l'option 'attach -- ' suivi d'une commande.
Methode 1 avec la commande console:
console
A present utilisez l'indentifiant utilisateur defini dans le fichier build. conf pour se loger.- 4d) Configuration du conteneur pour la compilation de linux-rt.
Ces clefs installees dans le conteneur principal seront disponibles a chaque nouveau snapshot.
Executez les commandes suivantes en tant qu'utilisateur userbuild pour recuperer l'ensemble des clefs gpg:
gpg --keyserver "hkp://keys.gnupg.net/" --recv-keys ABAF11C65A2970B130ABE3C479BE3E4300411886
gpg --keyserver "hkp://keys.gnupg.net/" --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E
gpg --keyserver "hkp://keys.gnupg.net/" --recv-keys 64254695FFF0AA4466CC19E67B96E8162A8CF5D1
gpg --keyserver "hkp://keys.gnupg.net/" --recv-keys 5ED9A48FC54C0A22D1D0804CEBC26CDB5A56DE73
gpg --keyserver "hkp://keys.gnupg.net/" --recv-keys E644E2F1D45FA0B2EAA02F33109F098506FF0B14
- 4e) Revenir au shell de l'hote
exit
pour quitter la console du conteneur effectuez la combinaison de touches suivantes:
dans notre shell interactif lxc pour stopper le conteneur BaseContainer utilisons la methode avec l'option attach --[ CTRL+a ] puis presser la touche [ q ]
Executez la commande suivante:
attach -- poweroff
et pour quitter le shell lxc executez la commande:
quit
- 5) DEMARRER LA COMPILATION DU NOYAU LINUX-RT
Dans notre cas present, c'est PKGBUILD qui s'occupe de creer ou d'importer le fichier config selon les options utilisees dans le fichier PKGBUILD.[color=# FF0000]IMPORTANT ![/color]
Il est vivement recommande de savoir compiler un noyau linux manuellement et de comprendre les options et leurs fonctionnement. Compiler un noyau linux c'est la possibilite de configurer et d'optimiser le noyau pour sa station de travail. La configuration est enregistree dans un fichier cache nomme .config present a la racine du repertoire du noyau linux
Nous utilisons la methode de snapshot pour compiler le noyau linux-rt. Executez la commande suivante pour demarrer la compilation:
sudo sh -c "obarun-build B s linux-rt"