web-dev-qa-db-fra.com

Faire fonctionner l'alternative au correctif de noyau Linux 200 lignes

Apparemment, il existe une alternative comparable à la ligne correctif du noya qui ne nécessite aucune mise à niveau du noyau.

Il est présenté ici et discuté ici .

Cependant, je ne suis pas sûr que la solution de webupd8 (sous la section "Utilisez-la dans Ubuntu") sur Ubuntu fonctionne réellement ou non. En particulier, un commentateur de ./ dit qu'il reçoit un message d'erreur. Quelqu'un pourrait-il publier la méthode "correcte" qui fonctionne réellement?

Solution suggérée:

D'après les commentaires que j'ai lus jusqu'à présent, ce qui suit semble fonctionner.

(1) Dans /etc/rc.local, ajoutez les lignes suivantes à exit 0 ci-dessus:

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

(2) Créez un fichier nommé /usr/local/sbin/cgroup_clean avec le contenu suivant:

#!/bin/sh
rmdir /dev/cgroup/cpu/$1

(3) Dans votre ~/.bashrc, ajoutez:

if [ "$PS1" ] ; then 
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi

(4) (Pour s’assurer que le bit d’exécution est activé), exécutez

Sudo chmod +x /usr/local/sbin/cgroup_clean /etc/rc.local

(5) redémarrage.

3
Gödel

La réponse ci-dessus devrait en effet corriger le message d'erreur du terminal. Gödel, je ne suis pas sûr d'avoir compris votre argument. Je vais essayer d'expliquer le changement:

Étant donné que la valeur par défaut de notify_on_release à la création d’autres groupes est la valeur actuelle du paramètre notify_on_release de leurs parents, définir la valeur de/dev/cgroup/cpu/user/notify_on_release sur 1 permet de s’assurer que chaque groupe c-enfant est activé avec notify_on_release. release_agent serait exécuté. Malheureusement, lorsque le dernier groupe de contrôle enfant de "utilisateur" a été supprimé (par l'agent de mise à jour), ce dossier était également supprimé, ce qui a généré des messages d'erreur. Une solution de contournement simple consiste à activer notify_on_release pour chaque groupe de contrôle individuellement lors de la création, en maintenant le paramètre parents désactivé.

J'espère que c'était facile à suivre!

Edit: J'aurais posté cela comme un commentaire sur la réponse, même s'il semble que je n'ai pas assez de réputation pour le faire (pas encore).

2
ricardofcf

J'ai appliqué ce correctif à l'aide du script automatisé sur le Web UPD8 à un Asus eee 1000H. J'ai constaté une augmentation considérable des performances de Google chrome avec les applications Flash en cours d'exécution. Les vidéos étaient plus fluides et moins caduques. Gnome UI est également plus vif et Windows redessiné plus rapidement. Très cool. texte du lien

1
Mark

Mise à jour des instructions de Ricardo Ferreira

Commencez par éditer votre fichier rc.local en exécutant Sudo -H gedit /etc/rc.local et ajoutez les lignes suivantes au-dessus de exit 0:

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

Enregistrez et quittez gedit. Maintenant, rendez-le exécutable:

Sudo chmod +x /etc/rc.local

Ceci fait, éditez le fichier .bashrc présent dans votre répertoire personnel (gedit ~/.bashrc) et, à la fin de ce fichier, ajoutez:

 if [ "$PS1" ] ; then  
    mkdir -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release 
 fi

Une dernière chose. Pour vous assurer que les groupes de contrôle sont supprimés à chaque départ de la dernière tâche, exécutez:

Sudo -H gedit /usr/local/sbin/cgroup_clean

Et copier-coller ceci:

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Encore une fois, sauvegardez le fichier, quittez gedit et rendez-le exécutable:

Sudo chmod +x /usr/local/sbin/cgroup_clean

Terminé! Redémarrez votre ordinateur pour appliquer les modifications.

0
robin0800