2010-11-17 9 views
0

J'ai un sérieux problème.
Ce que je dans ma main:Comment patcher le noyau Linux?

  • noyau Linux 2.6.29 avec patches Android Eclair et quelques correctifs spécifiques du conseil d'administration (comme .patch fichiers).
  • Linux Kernel 2.6.32 avec correctifs Android Froyo.

Ce que je veux atteindre:

  • Je veux fusionner les à mon noyau Linux patchs spécifiques du conseil d'administration 2.6.32 avec patches Android Froyo.

Je ne suis pas capable d'avoir une idée sur la façon de faire cela. J'ai essayé d'appliquer les correctifs spécifiques de la carte directement sur le noyau 2.6.32, mais il a échoué avec beaucoup d'erreurs.

Veuillez me guider avec quelques indications précieuses.

Merci,
Sen

+0

Il est possible que vous faites juste mal (il n'y a aucun moyen de dire avec certitude sans les erreurs), mais il est aussi très possible que les erreurs soient dues au fait que les correctifs * ne s'appliquent pas * et qu'une expertise humaine soit requise - dans ce cas, vous devez lire les correctifs, étudier le noyau et déterminer comment appliquer les modifications manuellement. ou trouvez une nouvelle approche. – hobbs

+0

Un bon endroit pour commencer à chercher serait les kernel changelogs pour savoir si certains ou tous les correctifs que vous avez * ont déjà été appliqués dans l'arborescence Linux * entre 2.6.29 et 2.6.32. – hobbs

+0

Salut hoobs, je suis nouveau dans ce domaine de Linux, je veux dire patcher, donc je comprends ce que vous avez dit comme changelogs kernel. D'où puis-je obtenir cela ?? – Sen

Répondre

2

Sans voir les erreurs spécifiques, il est difficile de déterminer.

Patch vous donnera un fichier ".rej" pour chaque fichier/patch qui vous montre ce qu'il essayait de faire et ce qu'il a trouvé, causant l'échec. Il vous indiquera généralement qu'il a créé ces fichiers afin que vous puissiez les réparer. Ce que vous pouvez rencontrer est quelque chose de plus primitif - dans ce correctif ne trouve même pas les fichiers corrects en premier lieu.

Ceci est le plus souvent causé par le fait que les chemins sont disposés différemment dans les fichiers de patchs, car ils sont la façon dont vous l'exécutez. (Je vais essayer de donner un exemple).

Si vous regardez chaque entrée de fichier pour chaque fichier patché, il aura une « source » et le nom « de destination », comme:

/original/src/drivers/mydriver.c /destination/src/drivers/mydriver.c

Ceci voudrait dire que - disons par exemple que votre projet se trouvait dans un répertoire appelé "projet". Votre répertoire de travail actuel serait « projet », et le fichier que vous patcher serait:

/project/src/drivers/mydriver.c

Ce patch fonctionnerait.

Disons par exemple, vous avez exécuté le même patch, mais votre répertoire de travail était:

/projet/src

Lorsque vous avez exécuté patch, il serait à la recherche d'un fichier appelé:

/project/src/src/drivers/mydriver.c

Et rien ne marcherait.

Il y a deux remèdes:

  1. Assurez-vous que vous utilisez correctif à partir du niveau de répertoire approprié. Utilisez l'indicateur "-p {num}" dans le correctif - qui lui dit essentiellement d'ignorer un certain nombre de répertoires au début de chaque nom de fichier dans le fichier de correctif.

Vous pouvez également afficher quelques-unes des erreurs que vous obtenez plus d'aide ...

+0

Merci Brad Will vous tenir au courant dès que je redémarre cette activité .. – Sen