[Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Reconnaissance et configuration du matériel / kernel linux
Répondre
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

[Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Bonsoir,

Je voudrais simplement savoir s'il était possible de patcher le kernel avec grsec ?
J'ai ArchLinux-ARM sur mon Raspberry Pi actuellement. :D

Code : Tout sélectionner

$ uname -a
Linux arkonberry 3.12.19-2-ARCH #1 PREEMPT Wed May 14 19:43:14 MDT 2014 armv6l GNU/Linux
J'imagine que je n'aurai qu'à appliquer le .patch pour la version 3.12.19 et recompiler le kernel avec Pacman ?
Je ne suis pas sûr de comment m'y prendre finalement. :?

Merci d'avance
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

Il suffit de récupérer le PKGBUILD et tout ce qui va avec (yaourt -G linux), de modifier le PKGBUILD pour inclure le patch que tu veux ajouter, et finalement lancer makepkg.
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Merci pour cette réponse rapide :)
C'est un peu flou pour le moment (distrib installée hier) mais je reviendrais si j'ai un problème.
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Me voila de retour:

Dans /var/cache/pacman/pkg j'ai:

Code : Tout sélectionner

linux-api-headers-3.14.1-1-armv6h.pkg.tar.xz
linux-raspberrypi-3.12.19-2-armv6h.pkg.tar.xz
linux-raspberrypi-3.12.19-3-armv6h.pkg.tar.xz
Le dernier patch Grsec est:

Code : Tout sélectionner

grsecurity-3.0-3.2.58-201405112002.patch
J'ai extraits linux-raspberrypi-3.12.19-2-armv6h.pkg.tar.xz qui correspond à la version de mon système (c'est pas la dernière mais je mettrais à jour à la fin de l'opération).

Voici l'architecture:

Code : Tout sélectionner

[arkon@arkonberry linux-raspberrypi-3.12.19-2-armv6h]$ ls
boot  usr
Dans usr il y a :
ls lib/modules/
3.12.19-2-ARCH/ extramodules-3.12.19--raspberrypi/
Dans boot il n'y a que kernel.img.

Code : Tout sélectionner

sudo mount -t fusectl -o loop kernel.img  /mnt/kernel/
$tree /mnt/kernel/
.
└── 22
    ├── abort
    ├── congestion_threshold
    ├── max_background
    └── waiting

1 directory, 4 files
Je peux pas appliquer un patch là dessus.

Code : Tout sélectionner

patch -p1 < ../grsecurity-3.0-3.2.58-201405112002.patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/Documentation/dontdiff b/Documentation/dontdiff
|index dfa6fc6..ccbfbf3 100644
|--- a/Documentation/dontdiff
|+++ b/Documentation/dontdiff
--------------------------
File to patch: 

Bref, problème. Je m'y prend sûrement mal.
Toute aide est la bienvenue s'il vous plaît :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

Pour obtenir les fichiers permettant de compiler tu as plusieurs moyen.
Le plus simple de mon point de vue est d'utiliser : yaourt -G linux, par contre je ne sais pas si cela fonctionne pour ARM.
Sinon tu peux utiliser ABS.

Bref une fois que tu as ton dossier linux, avec dedans le fichier PKGBUILD, il te suffit de lancer makepkg pour lancer une compilation de ce dernier. Voir man de makepkg pour n'extraire que les sources, ou pour compiler les sources déjà extraites et déjà patchées...

Pour comprendre les PKGBUILD tu as le Wiki : PKGBUILD. Il te suffiras d'inclure le patch dans le PKGBUILD téléchargé précédemment...

Ceci est la méthode pour ArchLinux i686 / x86_64, mais il est vrai que cela doit être différent pour ARM si tu veux faire une cross compilation : c'est à dire que tu créé le paquet avec ton PC fixe et non avec ton processeur ARM.
Pour faire une cross compilation il "suffit" de suivre le guide : http://archlinuxarm.org/developers/dist ... -compiling.
Mais après je pense que si tu lances la compilation depuis le processeur ARM rien ne doit changer question méthode par rapport à un processeur "classique". Sauf que cela risque de prendre une nuit entière pour compiler et quelques Go...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Le problème c'est qu'en faisant

Code : Tout sélectionner

 yaourt -G linux 
je n'obtiens pas de répertoire linux à l'endroit où je suis.
Sur IRC on m'a redirigé vers ce fameux /var/cache/pacman/pkg/.

Code : Tout sélectionner

ssh arkon@192.168.1.22
arkon@192.168.1.22's password: 
Welcome to Arch Linux ARM

     Website: http://archlinuxarm.org
       Forum: http://archlinuxarm.org/forum
         IRC: #archlinux-arm on irc.Freenode.net

Last login: Sat May 17 13:40:05 2014 from 192.168.1.15
[arkon@arkonberry ~]$ yaourt -G linux
[arkon@arkonberry ~]$ ls
Help_Arch                                 linux-raspberrypi-3.12.19-2-armv6h
grsecurity-3.0-3.2.58-201405112002.patch
[arkon@arkonberry ~]$ 
J'ai mon repertoire linux-raspberry qui est juste une copie de ce que j'ai trouvé dans /var/cache/pacman/pkg/ sinon rien.
A la limite j'ai un dossier vide apparu dans /tmp qui s'appelle /tmp/yaourt-tmp-arkon/.
J'ai toujours la conf par défaut de yaourt.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

En effet car le paquet s'appelle linux-raspberrypi et non linux... Pour information je ne sais pas trop comment est foutu ArchLinux ARM, mais je connais bien la théorie, il faut donc beaucoup interpréter mes propos. Sinon, je ne sais pas si yaourt -G linux-raspberrypi fonctionne... ==> Non...

Sinon il y a toujours la méthode manuelle : http://mirror.archlinuxarm.org/arm/core/core.abs.tar.gz mais je ne trouve pas le PKGBUILD pour le paquet linux-raspberrypi...

Edit: J'ai trouvé une piste pour trouver les PKGBUILD... http://archlinuxarm.org/developers/contributing

Donc tout est ici : https://github.com/archlinuxarm/PKGBUIL ... aspberrypi
Tu peux donc télécharger tous les PKGBUILD via ce zip : https://github.com/archlinuxarm/PKGBUIL ... master.zip
Ou pour ne récupérer que ce qui t’intéresse via :

Code : Tout sélectionner

svn co https://github.com/archlinuxarm/PKGBUILDs/trunk/core/linux-raspberrypi
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Rebonjour,

Donc j'ai bien un PKGBUILD, dans le prepare() à la fin de l'application des patchs j'ai rajouté:

Code : Tout sélectionner

patch -f -p1 < "${srcdir}/grsecurity-3.0-3.2.58-201405112002.patch"
Et j'obtiens dessus inévitablement

Code : Tout sélectionner

==> ERROR: A failure occurred in prepare().
    Aborting...
Je ne comprend pas: c'est bien dans les patchs dans le prepare() qu'il faut ajouter le grsec et il s'applique sur le kernel comme je l'ai fait non ?

D'ailleurs j'ai rajouté un

Code : Tout sélectionner

 -f 
 sur toutes les commandes patchs parce qu'il me proposait de repatcher des fichiers déjà patchés.
Enfin, même si ce n'est pas ça le problème je pense, tu m'as dit de mettre à jour mon bootloader. Or un pacman -Syu && yaourt -Syu ne le mettent pas à jour. Comment faire ?
Merci d'avance :)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

pacman (yaourt n'est qu'une surcouche de pacman pour AUR), ne touche jamais aux fichiers de configuration, c'est à toi de les mettre à jour. Bref voir la page Wiki de ton bootloader...
Si les fichiers sont déjà patchés, cela veut dire qu'il ne faut pas appliquer les patchs... Cela est du à l'utilisation de la dernière version du git de aufs3-standalone...
Pour l'application du patch grsecurity, il faudrait voir le message d'erreur complet... Mais si tu utilises le paquet linux-raspberrypi-latest et non linux-raspberrypi, il te faudra le patch grsecurity-3.0-3.14.4-201405141623.patch


Pour information "s'amuser" à recompiler un kernel n'est pas donné à n'importe qui, il faut un minimum de connaissance en programmation... De plus je ne vois pas vraiment l’intérêt de toute ces manipulations pour un raspberrypi... Je veux bien comprendre pour un serveur public utilisé par des milliers de personnes et contenant des données sensibles...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Okay merci, ça avance :)
C'est surtout que je découvre ArchLinux et son système de package avec AUR, entre autre. J'ai déjà patché Debian par exemple.
C'est principalement pour apprendre, toucher un peu à tout.
Pour les prochains qui liraient ce topic: il faut passer par rpi-update pour mettre à jour le firmware du Raspberry Pi.

Sinon, pourquoi est-ce que tu me dis de prendre la version "test kernel patch" et non "stabke kernel patch" de grsecurity?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

Je peux me tromper mais je ne pense pas que le patch (3.0-3.2.58) soit compatible avec le kernel 3.14.4.
Sinon je n'ai pas compris de quelle manière cela avance... Tu n'as pas non plus donné l'erreur lors du patch...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Alors, j'ai fais pas mal de tests pour m'assurer que l'erreur dans le prepare() venait bien du patch grsec. C'est le cas.

Ensuite, j'ai vérifié si ça passait sans le patch en lancant un makepkg de base. Après des heures et des heures ( :mrgreen: ) de compilation j'obtiens ça:

Code : Tout sélectionner

  CC [M]  drivers/net/wireless/rt2x00/rt2x00crypto.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00firmware.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00leds.o
  LD [M]  drivers/net/wireless/rt2x00/rt2x00lib.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00usb.o
  CC [M]  drivers/net/wireless/rt2x00/rt2800lib.o
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://github.com/archlinuxarm/PKGBUILDs/issues> for instructions.
scripts/Makefile.build:314: recipe for target 'drivers/net/wireless/rt2x00/rt2800lib.o' failed
make[4]: *** [drivers/net/wireless/rt2x00/rt2800lib.o] Error 4
scripts/Makefile.build:455: recipe for target 'drivers/net/wireless/rt2x00' failed
make[3]: *** [drivers/net/wireless/rt2x00] Error 2
scripts/Makefile.build:455: recipe for target 'drivers/net/wireless' failed
make[2]: *** [drivers/net/wireless] Error 2
scripts/Makefile.build:455: recipe for target 'drivers/net' failed
make[1]: *** [drivers/net] Error 2
Makefile:841: recipe for target 'drivers' failed
make: *** [drivers] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
Des problèmes sur les drivers: j'avais pas encore mis à jour mon firmware donc c'est la prochaine chose que je vais faire.

A propos des logs sur l'application du patch: je ne sais pas où les trouver. Il n'y a pas de /var/log/grsecurity. Je viens de voir qu'il y avait la commande journalctl, je la teste tout à l'heure.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

Code : Tout sélectionner

gcc: internal compiler error: Killed (program cc1)
gcc a planté... Cela peut être du à beaucoup de raison, dont un manque de mémoire... Je pense que c'est le kernel qui a tué gcc pour pouvoir survivre :D
C'est pour cela que j'ai indiqué dès le début la cross-compilation...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Ah oui c'était trop brutal pour lui :o
:arrow: Firmware mis à jour je suis passé en 3.12.20 là.

J'ai réussi à appliquer le patch grsec (grsecurity-3.0-3.2.58-201405112002.patch) en le faisant à la main à partir du repertoire :
~/PKGBUILDs-master/core/linux-raspberrypi/src/linux-eb514e96209ec79bc4deb217de876858948046d0

Enfin voici les dernières lignes de l'application du patch:

Code : Tout sélectionner

patching file virt/kvm/kvm_main.c
    Hunk #2 succeeded at 754 with fuzz 2 (offset 90 lines).
    Hunk #3 succeeded at 1618 (offset 120 lines).
    Hunk #4 succeeded at 1881 (offset 207 lines).
    Hunk #5 succeeded at 2567 (offset 370 lines).
    Hunk #6 succeeded at 2668 (offset 373 lines).
    Hunk #7 succeeded at 2694 (offset 373 lines).
    Hunk #8 succeeded at 2748 (offset 373 lines).
    Hunk #9 succeeded at 3185 (offset 456 lines).
    Hunk #10 succeeded at 3232 (offset 440 lines).
    Hunk #11 succeeded at 3242 (offset 440 lines).
    Hunk #12 FAILED at 2816.
    1 out of 12 hunks FAILED -- saving rejects to file virt/kvm/kvm_main.c.rej
[user@dkp linux-eb514e96209ec79bc4deb217de876858948046d0]$ echo $?
1
Comment est-ce que je peux être sur que le patch se soit bien appliqué ?
J'imagine que c'est bon malgrès le fait que le diff du patch renvoit 1.

Je vais regarder la cross-compilation maintenant si le patch s'est bien effectué.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17576
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par benjarobin »

Hum, quand tu lit ceci tu conclu à un succès ? Voir http://www.wordreference.com/enfr/FAILED
Désolé de te dire cela, mais avoir des bases en anglais est un minimum: attention je ne dis pas qu'il est nécessaire de parler couramment anglais, mais avoir un peu de vocabulaire...

Code : Tout sélectionner

Hunk #12 FAILED at 2816.
1 out of 12 hunks FAILED -- saving rejects to file virt/kvm/kvm_main.c.rej
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Arkon
Hankyu
Messages : 12
Inscription : ven. 16 mai 2014, 18:13

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Arkon »

Pas la peine de te foutre de moi: ce n'est pas parce qu'il n'a pas réussi à patcher un fichier que le fichier n'est pas patché. Il l'était peut être déjà avant.
Aussi, cette action était la dernière du patch et il n'y a pas eu de message d'erreur arrêtant le patch au milieu.
Il a aussi modifié un certain nombre de lignes.

Je vais voir pourquoi est-ce qu'il n'a pas réussi à le faire correctement. Merci pour ton aide.
Cybervince
Hankyu
Messages : 10
Inscription : jeu. 02 juin 2011, 12:07

Re: [Kernel] Patcher ArchLinux-ARM avec Grsecurity ?

Message par Cybervince »

Arkon a écrit :Alors, j'ai fais pas mal de tests pour m'assurer que l'erreur dans le prepare() venait bien du patch grsec. C'est le cas.

Ensuite, j'ai vérifié si ça passait sans le patch en lancant un makepkg de base. Après des heures et des heures ( :mrgreen: ) de compilation j'obtiens ça:

Code : Tout sélectionner

  CC [M]  drivers/net/wireless/rt2x00/rt2x00crypto.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00firmware.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00leds.o
  LD [M]  drivers/net/wireless/rt2x00/rt2x00lib.o
  CC [M]  drivers/net/wireless/rt2x00/rt2x00usb.o
  CC [M]  drivers/net/wireless/rt2x00/rt2800lib.o
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://github.com/archlinuxarm/PKGBUILDs/issues> for instructions.
scripts/Makefile.build:314: recipe for target 'drivers/net/wireless/rt2x00/rt2800lib.o' failed
make[4]: *** [drivers/net/wireless/rt2x00/rt2800lib.o] Error 4
scripts/Makefile.build:455: recipe for target 'drivers/net/wireless/rt2x00' failed
make[3]: *** [drivers/net/wireless/rt2x00] Error 2
scripts/Makefile.build:455: recipe for target 'drivers/net/wireless' failed
make[2]: *** [drivers/net/wireless] Error 2
scripts/Makefile.build:455: recipe for target 'drivers/net' failed
make[1]: *** [drivers/net] Error 2
Makefile:841: recipe for target 'drivers' failed
make: *** [drivers] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
Des problèmes sur les drivers: j'avais pas encore mis à jour mon firmware donc c'est la prochaine chose que je vais faire.

A propos des logs sur l'application du patch: je ne sais pas où les trouver. Il n'y a pas de /var/log/grsecurity. Je viens de voir qu'il y avait la commande journalctl, je la teste tout à l'heure.
Salut,

Pour info, l'erreur

Code : Tout sélectionner

gcc: internal compiler error: Killed (program cc1)
provient bien d'un manque de ressources sur le Rpi (j'ai eu la même en tentant de compiler xbmc directement sur le Rpi).

J'ai écrit une petite page pour complier tranquilement sur le Rpi (voir crosscompiler) :
C'est ici :)

Pour le patch, je ne connais pas ce patch donc je ne sais pas...
Répondre