[Abandon] Au sujet de la compilation noyau svp

Hello !

Sous une Debian Jessie à architecture ARM, (la machine est celle-ci) :

olimex.com/Products/OLinuXi … e-hardware

Je cherche à compiler un noyau pour ce micro-pc Olimex Lime2. Dans le dossier [mono]/usr/src[/mono] j’ai (d’origine) un dossier appelé : « linux-headers-3.4.105-lime2 »

Il doit faire dans les 34 mo. Il ne comporte pas le mot “source” en son nom, j’ai donc voulu télécharger sur le site des Kernel pour A20 la version du noyau qui est embarquée d’origine sur cette Debian Jessie pour Olimex-Lime2 (et qui est en version 3.4.105 actuellement), mais cette version n’est plus listée, je n’ai pu télécharger que les sources du noyau 3.4.106.

Je cherche à compiler le noyau pour y intégrer Apparmor et le module Yama (un LSM : Linux Security Module), ainsi qu’à les activer par défaut ainsi que le module ip_conntrack. (peut-être d’autres choses viendront je n’ai pas encore tout étudié, mais je dois me fier aussi à ce que vous me donnerez comme infos ici.)

En téléchargeant donc le Kernel 3.4.106 et en le décompressant dans un dossier, j’ai vu qu’il était complet (au niveau des dossiers Apparmor et Yama).

Je n’ai jamais compilé de noyau, ma référence est donc la page de doc d’Ubuntu qui me paraît bien faîtes de prime abord, les gars disent que ça marche comme ça donc je pense qu’elle est ok, je n’en sais pas plus à vrai dire…

Voilà les liens et les infos que j’ai récolté (ainsi que les liens de téléchargement).

La Doc Ubuntu pour compiler son Kernel : doc.ubuntu-fr.org/tutoriel/compiler_linux

J’ai trouvé le Kernel 3.4.106 ici : kernel.org/

La page qui m’a conduit au lien du dessus (Kernel.org) : github.com/dan-and/linux-sunxi

Où j’en suis :

J’ai ajouté mon user “bambou” au groupe “src”. J’ai téléchargé l’archive du Kernel 3.4.106 et l’ai décompressé dans un dossier classique sur mon /home (juste pour voir ce qu’il y avait dedans), si vous m’apprenez qu’il peut tout à fait convenir pour l’olimex lime2 je le copierai-collerai dans le dossier [mono]/usr/src[/mono].

Voilà je ne sais pas si tout ce que j’ai fait jusqu’à présent est normal, et si le mode d’emploi d’Ubuntu semble respecter la bonne logique de compilation, si vous jugez que ça semble correct je peux attaquer la compilation(avec vos derniers conseils), merci beaucoup de votre aide, ce message s’arrête ici Jim, Good Luck.

C’est correct pour un noyau i686 compilé sur un système i686, pour un noyau arm ça devrait être un peu différent.

Tout d’abord, ça dépendra de la machine depuis laquelle tu comptes compiler. Sur la machine au processeur ARM ou sur un PC ?
L’architecture de la cible et celle du système devraient concorder sauf à pratiquer ce qui est appelé cross compile

Si le processeur ARM est d’une puissance ridicule, ça prendrait des heures à compiler in situ.
Voir [mono]$ cat /proc/cpuinfo[/mono] pour avoir une idée des capacités du processeur ARM, fréquence, bogomips …
Sur un PC contemporain à la puissance moyenne, ça prendrait des minutes.
Compiler sur un PC un noyau pour ARM, exemple de cross compile:
balau82.wordpress.com/2012/03/3 … with-qemu/

Où la compilation est précédée de :

export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabi

Hello et merci, ça va me faire avancer, c’est un petit arm double coeur, pas très puissante cette version là, il faudra donc que je compile avec la solution que tu me donnes oui, le cross-compil va êtres plus sûr. Je repasse ces jours-ci dès que j’ai avancé (ou suis bloqué), à toute

Bonjour à tous, et bonjour Etxeberrizahar. J’avance un petit peu, la version de Debian Jessie que j’utilise est une version téléchargée à ce lien (de mon côté j’ai pris une Jessie en version du noyau 3.4.105) : igorpecovnik.com/2014/11/18/ … -sd-image/

Sur cette page il y parle “d’updater le noyau”, mais c’est en Anglais et je n’ai pas réussi à comprendre ce qu’il fallait faire (même en passant par un traducteur en ligne), quelqu’un peut m’aider à comprendre cette toute petite partie de texte sur sa page svp ?

Cette partie de texte sur laquelle je bute est celle-ci :

[mono]Unzipped images can be written with supplied imagewriter.exe on Windows XP/2003/Win7 or with DD command in Linux/Mac (dd bs=1M if=filename.raw of=sd card device). Kernel can be updated only manual way and if you run newer version of image (kernel is packed as vmlinuz). Download a tar pack below, unpack and install all .deb files. If the numbers / name of kernel is different than your current one, you only need to alter boot script (boot.cmd / boot-next.cmd). When you match the name and numbers with the new kernel you need to convert that .cmd file to boot.scr with: mkimage -C none -A arm -T script -d boot.cmd boot.scr and reboot.[/mono]

PS :

La commande : [mono]$ cat /proc/info[/mono] me donne ça sur l’Olimex (mais les deux processeurs sont en train d’être utilisés je viens de m’en rendre compte et les bogomips fluctuent pas mal entre deux : [mono]$ cat /proc/info[/mono]) :

[code]bambou@lime2:~$ cat /proc/cpuinfo
Processor : ARMv7 Processor rev 4 (v7l)
processor : 0
BogoMIPS : 1052.12

processor : 1
BogoMIPS : 915.20

Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 4

Hardware : sun7i
Revision : 0000
Serial : 0000000000000000
Chipid : 1651480a-8539788-50552648-08c26960
bambou@lime2:~$[/code]

Ouais, des bogomips faiblardes, des bogomips boggueuses.

[quote]
BUGS/LIMITATIONS
Le terme “Bogo” dans BogoMIPs dérive de l’anglais bogus
(bidon).[/quote]

On peut essayer de traduire, d’interpréter pour t’aider mais il vaudrait mieux que tu demandes sur un forum où ceux qui répondent connaissent les engins et leur comportement sous debian parce que nous ne sommes pas au jus de ces spécificités et nous ne faisons qu’interpréter au lieu de répondre d’expérience.
[mono]Unzipped images can be written with supplied imagewriter.exe on Windows XP/2003/Win7 or with DD command in Linux/Mac (dd bs=1M if=filename.raw of=sd card device).[/mono]
Les images zip décompressées (déZIPpées) peuvent se transférer au moyen du programme fourni imagewriter.exe sur [strike]Windows[/strike]Fenêtres XP/2003/Win7, ou sur linux et MacOS au moyen de la commande [mono]dd[/mono] (dd bs=1M if=nom_du_fichier.brut.raw of=périphérique carte sd).

Note : ça implique deux étapes, d’abord décompresser l’image, puis la transférer.
Nous croyons comprendre que ces images zip contiennent TOUT le système debian. Il ne s’agit pas seulement de transférer le noyau, tout le système debian est compris.
[mono]Kernel can be updated only manual way and if you run newer version of image (kernel is packed as vmlinuz).[/mono]
Le noyau ne peut être mis à jour que manuellement et seulement si vous utilisez une image de version plus récente (le noyau se présente sous la forme de vmlinuz).

Note :
nous croyons comprendre qu’il s’agit d’appliquer dpkg -i sur le paquet deb prêt à l’emploi. Il ne s’agit plus
de compilation du noyau à sa main mais d’une banale installation de paquet deb contenant le noyau.
Plus récente : nicht comprendo … manque de précision, image plus récente que quoi ? $VERSION ? Image $DE_QUOI ? Du système ou du noyau ?
Les versions plus récentes qui appellent le noyau vmlinuz ?

[mono]Download a tar pack below, unpack and install all .deb files[/mono]
Télécharger l’un des (deux) paquets tar ci dessous, extraire («déTARer» ? Des tarés …), installer tous les paquets deb.

[mono]If the numbers / name of kernel is different than your current one, you only need to alter boot script (boot.cmd / boot-next.cmd).[/mono]
Si la version ou le nom du noyau est différent du noyau courant, il suffit de modifier le script de démarrage (boot.cmd / boot-next.cmd)

Note : nous ne savons pas ce que contient boot.cmd ou boot-next.cmd et en quoi consistent les modifications. À creuser auprès de connaisseurs.

[mono]When you match the name and numbers with the new kernel you need to convert that .cmd file to boot.scr with: mkimage -C none -A arm -T script -d boot.cmd boot.scr and reboot.[/mono]
Quand la version et le nom (en .cmd) concordent avec le nouveau noyau, il faut convertir le fichier .cmd en boot.scr

Note : Nous ne savons pas ce que contiennent boot.scr, boot.cmd et boot-next.cmd, nous ne savons pas comment il faut faire concorder les modifications.

Merci déjà pour tout cela, mine de rien cela me fait beaucoup avancer. Plus qu’à trouver le forum adéquate, @ bientôt :slightly_smiling:)

Bonjour ici :slightly_smiling:

Je décide de repasser par ici car en laissant décanter un peu le tout, et en m’y recollant aujourd’hui, j’ai compris plusieurs choses, j’ai surtout bien relu ton message Etxeberrizahar :blush:

Difficile de présenter les choses que j’ai assimilé, et de répondre aux questionnements formulés jusqu’ici, et qui m’ont donc beaucoup aidé.

Je suis retourné à cette adresse : igorpecovnik.com/2014/11/18/ … -sd-image/ afin d’y récupérer les paquets .deb(du noyau qui m’intéresse), en cliquant sur : [mono]Kernel 3.4.106 .deb - 20.3.2015[/mono] J’ai détarrtré l’Art Chive, et j’y ai des couverts une fourchette, un couteau et une petite cuillère à neuneus (dont je dois être, quelque part, un sous-chef ou un couvre chef) et quatre paquets deb que l’on voit sur cette image (j’arrête ici mes vieux jeux de mots cul-cul sur ce message entier si ça peut rassurer le lecteur gêné :030 ) :

pix.toile-libre.org/upload/origi … 944179.png

La copie d’écran est pour moi un moyen de faire des messages brefs au niveau du texte, je continue donc avec ce système :

Tout ce qui se trouve dans le dossier /boot/ (en dans les copies d’écran suivantes, on trouvera les détails de ce qu’il y a dans certains des fichiers qui se trouvent dans /boot/ ) :

pix.toile-libre.org/upload/origi … 944078.png

Intérieure du fichier “boot.cmd” :

pix.toile-libre.org/upload/origi … 944111.png

Intérieure du fichier “boot.scr” (ouvert avec le logiciel “Kate” qui n’affiche pas les caractères spéciaux, donc le fichier vous sera en partie visible seulement, comme à moi malheureusement) :

pix.toile-libre.org/upload/origi … 944132.png

Et j’ai fait la commande suivante dans un terminal pour savoir ce qu’il y a en matière de sécurité informatique d’activé sur ce noyau au démarrage :

pix.toile-libre.org/upload/origi … 944162.png

Sur cette dernière copie d’écran, on voit la ligne nommée CONFIG_DEFAULT_SECURITY_DAC=y (positionnée donc sur Yes), si j’interprète bien seulement, mais sur la ligne qui en dessous je ne vois rien entre les deux “” concernant la sécurité par défaut. Ma question est relativement simple pour cette ligne :

_Est-ce que vous savez si cela suffit à mettre en route ce que l’on pourrait traduire comme “une activation d’un quelqconque logiciel ou une partie du noyau” qui va se charger de protéger le noyau au niveau de la règle de sécurité appelée : Discretionary Access Control (que l’on peut découvrir ici : fr.wikipedia.org/wiki/Contr%C3% … 9tionnaire ) svp ? Ou bien non, cela ne suffit pas, et il faut autre chose svp ?

Merci beaucoup Etxeberrizahar si tu es motivé pour m’aider un peu plus, et j’en ai bien besoin à vrai dire. Aussi, je crois toucher au but, c’est pourquoi j’ai préféré poursuivre ici, il me restera à comprendre la partie que l’on mettait au dessus (et qui semble comporter une ligne de commande) :

[mono]When you match the name and numbers with the new kernel you need to convert that .cmd file to boot.scr with: mkimage -C none -A arm -T script -d boot.cmd boot.scr and reboot.[/mono]
Quand la version et le nom (en .cmd) concordent avec le nouveau noyau, il faut convertir le fichier .cmd en boot.scr

Comme j’ai compris que je n’avais pas de fichier appelé « boot-next.cmd » (mais que j’avais à la place le fichier appelé “boot.cmd”), je me demandais si la ligne de commande que proposait l’auteur de l’article était juste celle-ci :

mkimage -C none -A arm -T script -d boot.cmd boot.scr (and reboot). Mais d’où la lancer ?? C’est le seul point noir à mon tableau, au vôtre aussi sûrement si vous avez décidé de lire jusque ici, et je vous en remercie. Je prends toutes infos la concernant, même purement théorique.

ps : j’ai oublié de dire que je ne mets pas de photos dans ce message pour ne pas casser les liens SSL du forum lors de la lecture de ce thread, vous n’y trouverai donc que les liens menant aux shootscreen énoncés…

Merci et à+.

Après avoir installé les paquets linux-image, linux-headers, linux-firmware pour la version 3.4.106-lime, tu remplaces /boot/vmlinuz-3.4.105-lime2 par /boot/vmlinuz-3.4.106-lime en boot.cmd.

Pour le mkimage du boot.scr, voir

packages.debian.org/fr/wheezy/u-boot-tools

[quote]
companion tools for Das U-Boot bootloader

This package includes the mkimage program, which allows generation of U-Boot images in various formats, and the fw_printenv and fw_setenv programs to read and modify U-Boot’s environment. [/quote]

Quand tu auras installé le fatras et démarré le noyau linux voulu sur l’engin ARM, il sera temps de se tourner vers les questions de sources, de compilation, de modules … Tu partiras sur cette base réputée saine pour retoucher le noyau. Tu auras un config, les sources, les headers.

Je te renvoie à ton premier message :

[quote]
Je cherche à compiler le noyau pour y intégrer Apparmor et le module Yama (un LSM : Linux Security Module), ainsi qu’à les activer par défaut ainsi que le module ip_conntrack. [/quote]
Où nous en sommes : installer un paquet deb du noyau linux prêt à l’emploi et le démarrer. Il reste de la route avant de toucher au but.

S’il te plait, un sujet à la fois et un problème à la fois sans se disperser. Faire simple. Une étape après l’autre sans entreprendre tout de front. Ne pas dévier vers DAC et autres sujets. Nous en sommes loin.

Disons aussi qu’ici tu peux ouvrir autant de sujets que tu veux et que tout le monde peut répondre (du moins ceux qui en ont envie). Outre l’interlocuteur qui te répond, nous savons qu’il y a ici des membres qui auraient l’expérience de ce type d’engin qui ne se sont pas manifestés dans le fil qui interviendraient peut-être sur un nouveau sujet posé différemment.

Bonjour ici.

Entier succès de l’application des paquets .deb du noyau, et aussi de la création du boot.scr, le boot se fait depuis le nouveau noyau : pix.toile-libre.org/upload/origi … 010423.png

Merci pour ton aide Etxeberrizahar et ok pour le système de création d’un nouveau thread si la discussion évolue, je vais appliquer cette façon de faire à l’avenir.

Concernant la compilation (croos-compilation), je peux donner ce que j’ai remarqué sur l’Olimex.

Dans le dossier [mono]/usr/src/[/mono] j’ai ceci concernant Apparmor (le chemin du dossier exact est sur la copie d’écran dans la barre d’adresse de Thunar) : pix.toile-libre.org/upload/origi … 010954.png

Ce qui est différent de ce que j’ai après avoir téléchargé les sources du noyau 3.4.106 sur le site kernel.org, et les avoir décompressées dans mon [mono]/home/bambou[/mono] (concernant Apparmor toujours) : pix.toile-libre.org/upload/origi … 011004.png

Je suis près à compiler maintenant, enfin, à recevoir votre aide maintenant que je peux booter sur le nouveau noyau, je peux partir pour la cross-compil (je débute, je ne l’ai jamais fait si cela peut vous aider), à bientôt :blush:

Regarde les config du noyau,le nouveau, /boot/config-3.4-106-lime et l’ancien, /boot/config-3.4-105-lime2.

Inspecte les options de config du noyau, les modules chargés ([mono]lsmod[/mono]) et repère ce que tu voudrais ajouter, ce qui manque ou ce que tu voudrais retrancher,ce qui est superflu.
Lire le retour de
[strike]make --help[/strike]

pour voir les choix offerts pour produire .config. Quand tu auras obtenu un fichier .config qui te satisfasse, transfère-le vers la machine qui te servira à la compilation cross compile.
Illustration : Cyclo-cross compile du parapluie.
.

Dans les sources, lire les Kconfig, les dépendances des options et les sélections automatiques sont inscrites de manière transparente (select, depends, default) et un entrefilet help résume en langage plus ou moins clair et compréhensible.
Lire les indications dans les différents Kconfig qui t’intéressent et ne pas hésiter à lire les lectures complémentaires indiquées, la documentation des sources comme linux*/Documentation/security/Yama.txt et les renvois extérieurs comme apparmor.wiki.kernel.org.

linux-3.*/security/apparmor/Kconfig

[code]
config SECURITY_APPARMOR
bool "AppArmor support"
depends on SECURITY && NET
select AUDIT
select SECURITY_PATH
select SECURITYFS
select SECURITY_NETWORK
default n
help
This enables the AppArmor security module.
Required userspace tools (if they are not included in your
distribution) and further information may be found at
http://apparmor.wiki.kernel.org

  If you are unsure how to answer this question, answer N.

config SECURITY_APPARMOR_BOOTPARAM_VALUE
int "AppArmor boot parameter default value"
depends on SECURITY_APPARMOR
range 0 1
default 1
help
This option sets the default value for the kernel parameter
’apparmor’, which allows AppArmor to be enabled or disabled
at boot. If this option is set to 0 (zero), the AppArmor
kernel parameter will default to 0, disabling AppArmor at
boot. If this option is set to 1 (one), the AppArmor
kernel parameter will default to 1, enabling AppArmor at
boot.

  If you are unsure how to answer this question, answer 1.

config SECURITY_APPARMOR_HASH
bool "SHA1 hash of loaded profiles"
depends on SECURITY_APPARMOR
depends on CRYPTO
select CRYPTO_SHA1
default y

help
  This option selects whether sha1 hashing is done against loaded
      profiles and exported for inspection to user space via the apparmor
      filesystem.[/code]

Outils de la distribution à installer. Le noyau seul n’y suffit pas.
Où il apparait que l’argument [mono]apparmor[/mono] peut imposer le chargement d’apparmor au démarrage du noyau. SECURITY_APPARMOR_BOOTPARAM_VALUE à 1 en la compilation, tout ce que tu y gagneras sera le chargement d’apparmor sans argument au démarrage,par défaut, il est défini à default 1, activé.

linux-3.*/security/yama/Kconfig

[code]config SECURITY_YAMA
bool "Yama support"
depends on SECURITY
select SECURITYFS
select SECURITY_PATH
default n
help
This selects Yama, which extends DAC support with additional
system-wide security settings beyond regular Linux discretionary
access controls. Currently available is ptrace scope restriction.
Further information can be found in Documentation/security/Yama.txt.

  If you are unsure how to answer this question, answer N.

config SECURITY_YAMA_STACKED
bool "Yama stacked with other LSMs"
depends on SECURITY_YAMA
default n
help
When Yama is built into the kernel, force it to stack with the
selected primary LSM.[/code]
SECURITY_YAMA à Y (Y comme yes ) contrairement à
«If you are unsure how to answer this question, answer N» et default n(N/n comme No).

Édith
erratum make --help -> [mono]make help[/mono]
make --help affiche l’aide générale de make
make help affichera l’aide help à l’endroit des sources.

Je te remercie beaucoup et suis très emballé par ta réponse, je ne savais pas où regarder pour voir ce qu’il y avait sur le noyau existant sur l’olimex ! Merci…

J’ai plusieurs projets en route, je ne peux pas donner de date pour ma future réponse, tout ce que je sais, c’est que je vais tenter de faire la compil oui, je repasse dès que possible (j’aimerai attaquer dès aujourd’hui, mais je crois que cela ne va pas être possible, tant pis). à bientôt néanmoins.

Hello, j’ai décidé de compiler sur l’olimex directement, il faut environ 3 heures pour finaliser une compil, mais elle n’a pas fonctionné la première fois (javais utilisé l’option [mono]# make oldconfig[/mono], j’ai eu deux messages d’erreur en toute fin de compil concernant le “make modules_install”, je n’ai pas pu les lire car j’ai eu un des deux messages me disant que je n’avais pas mis en fonction la journalisation pour les lire. J’ai fait ceci après :

Re-télécharger les sources du noyau 3.4.106 ici : kernel.org/

J’ai décompressé cette archive contenant les sources ici : [mono]/usr/src[/mono]

(Pour la suite des lignes de commandes que je vais donner ci-après, je les ai prises ici : doc.ubuntu-fr.org/tutoriel/compiler_linux )

[code]# cd /usr/src

ln -sfn linux-source-3.4.106 linux

cd /usr/src/linux[/code]

J’ai copié un fichier [mono].config[/mono] du noyau fonctionnel que j’ai sous L’olimex et qui se trouve dans le dossier [mono]/boot[/mono] vers le dossier [mono]/usr/src/linux[/mono]

J’ai fait :

De là j’ai juste mis en route Apparmor (avec l’option lancement au boot de la machine) et j’ai activé aussi le LSM (Linux Security Module) Yama. (tout ça avec des * pas des M comme ça ils sont “build” d’office(comme ils disent)).

Après avoir jeter un oeil, depuis le dossier source, à [mono]make help[/mono], j’ai lancé la compil comme ça :

Mais je n’ai pas encore lancé :

Dois-je le faire après [mono]# make all[/mono] svp ?

Edit : deuxième compil avec le mode d’emploi ci-dessus et copie d’écran de cette fin de deuxième compil :

pix.toile-libre.org/upload/origi … 002330.png

J’ai tenté de faire un :

Mais j’ai tout un tas de “no such file or directory”, voilou, merci à vous…

Hello !

Je m’y suis remis aujourd’hui, mais j’ai procédé un peu différement, j’ai copié-collé les sources dans [mono]/etc/src[/mono], ensuite j’ai fait :

[code]# cd /usr/src

ln -sfn linux-source-3.4.106 linux

cd /usr/src/linux[/code]

Comme hier, mais aujourd’hui je suis parti depuis un fichier config créé fraichement avec :

Et après :

Et là je me suis basé sur le fichier de config du noyau actuel (que j’ai trouvé dans le dossier [mono]/boot[/mono] de l’Olimex). Mais j’ai rencontré des socuis en chemin, il y a des options dans le fichier [mono].config[/mono] actuel de l’Olimex, (ce fichier construit autour du même noyau 3.4.106), que je n’ai pas trouvé en faisant [mono]# make menuconfig[/mono] , du coup je ne pense pas que cela va marcher non plus (et je ne sais pas comment le constructeur de cette Debian pour Olimex les y a insérées ?) Mais j’aurai essayé différemment, mais ça m’a pris du temps de tout faire à la main, au moins 7 heures aujourd’hui. (c’est la première fois que je fais tout à la main, et que je compile un noyau aussi).

Si vous avez des idées, mêmes des constatations sur ma mauvaise façon de faire détaillée ici, et surtout là dessus, je suis demandeur+++, merci…

Cela n’a pas fonctionné non plus, j’abandonne la compilation pour cette machine, en la faisant, j’ai vu que ce que je voulais faire (mettre Apparmor et Yama) n’était finalement pas si vital que cela, car la sécurité DAC est en route quand même d’origine, donc cela m’est suffisant, je tiens à jour les paquets et puis le noyau (à la main sur cette machine, mais ça marche bien c’est le principal), voilou, merci pour l’aide, à plus…