Si j'utilise le noyau linux version 16 avec le paquet headers version 16 mais que VirtualBox ait besoin des modules du headers de la version 14 pour fonctionner correctement, et que ce headers version 14 est installé et marqué sur mon pc. Est-ce que VirtualBox utilisera ce headers version 14 avec le noyau 16 ?
Non. Il utilisera les headers v14 pour compiler les modules pour le noyau v14, les headers v16 pour compiler les modules pour le noyau v16 (si compatible)...
Ou est-ce que chaque headers n'est compatible qu'avec leur même version de noyau ?
Oui. On ne peut pas charger un module compilé pour une version/variante de noyau différente de celle du noyau actif. (on peut essayer de forcer, mais ça risque de mal se passer)
Dit autrement, est-ce qu'on peut cumuler différentes versions headers avec un seul noyau ?
La question n'est pas claire. Tu peux installer autant de versions de headers que tu veux et compiler un module pour autant de versions de noyau que tu veux, mais un module compilé pour une version du noyau n'est compatible qu'avec celle-ci.]]>
Je ne comprends pas vraiment ce que cela veut dire et implique (compiler, module externe...)
"Compiler" consiste à transformer le code source d'un programme (texte écrit et lisible par les humains) en code binaire exécutable par le processeur.
Le noyau et la plupart des programmes sont compilés. On les appelle des binaires exécutables. A l'opposé, les scripts sont des programmes écrits dans un langage qui est exécuté par un interpréteur (le shell bash, perl, python...) et non directement le processeur.
Un paquet linux-image-$version est le résultat de la compilation des sources du noyau contenues dans le paquet linux-source-$version. Il se compose principalement de binaires qui sont l'image du noyau /boot/vmlinuz qui est la partie principale lancée par le chargeur d'amorçage, et de modules /lib/modules/$version/... assurant diverses fonctions (pilotes, systèmes de fichiers...) qui sont chargés à la demande.
Mais de ce que j’interprète, le fait de supprimer un header x (qui correspondrait à version du header x ou tout cela s'imbrique ? ) pourrait avoir un impacte sur quelques chose d'autre comme virutalbox.
En effet. Virtualbox a besoin de modules du noyau qui ne sont pas inclus dans le paquet linux-image mais fournis sous forme de code source qu'il faut compiler pour chaque version particulière du noyau. C'est pour cela qu'ils sont appelés modules externes. Pour pouvoir faire l'interface avec une version particulière du noyau, le compilateur a besoin de définitions contenues dans les en-têtes de cette version du noyau, fournis par le paquet linux-headers-$version.
Est-ce qu'il est préférable, par précaution, si je décide de garder un linux-image-x de ne pas supprimer le linux-header-x du même chiffre, et est-ce que le marquer en manuel de la même manière suffit ?
Oui.
en marquant le "linux-headers-5.10.0-8-amd64" seulement en manuel, et le "linux-headers-5.10.0-8-common" n’apparaît plus ensuite dans la proposition de désinstallation
Normal puisque linux-headers-5.10.0-8-amd64 dépend de linux-headers-5.10.0-8-common. Le premier contient les en-têtes spécifiques à la variante amd64 alors que le second contient les en-têtes communs à toutes les variantes.]]>
Supprimer linux-headers n'impacte pas directement linux-image mais seulement la capacité de compiler un module externe pour cette version du noyau
Je ne comprends pas vraiment ce que cela veut dire et implique (compiler, module externe...), c'est déjà le niveau au dessus pour moi.
Mais de ce que j’interprète, le fait de supprimer un header x (qui correspondrait à version du header x ou tout cela s'imbrique ? ) pourrait avoir un impacte sur quelques chose d'autre comme virutalbox.
Donc, la question que je me pose c'est:
Est-ce qu'il est préférable, par précaution, si je décide de garder un linux-image-x de ne pas supprimer le linux-header-x du même chiffre, et est-ce que le marquer en manuel de la même manière suffit ? car j'ai observé qu'il y avait 2 headers.
linux-headers-5.10.0-8-common
linux-headers-5.10.0-8-amd64
Je viens de faire un test, en marquant le "linux-headers-5.10.0-8-amd64" seulement en manuel, et le "linux-headers-5.10.0-8-common" n’apparaît plus ensuite dans la proposition de désinstallation quand je fait un apt-get upgrade.]]>
Voici ce que j'ai marqué en manuel:
Autre chose, j'avais marqué en manuel l'image 13 et elle n'y figure pas. Il semble qu'elle est disparue de l'affichage après un autoremove.
J'ai une trace du marquage en manuel (dans mon historique de commandes) et d'un autoremove par la suite.
Idem sur mon SSD cloné qui a quelques différences avec mon SSD principale, car j'ai pas tout fait de la même manière.
Est-ce que j'ai mal compris quelque-chose sur le marquage manuel ou est-ce qu'il y a autre chose à faire pour ne pas que autoremove touche les noyaux choisis en manuel ?]]>
Ah c'est là qu'ils sont cachés les paquets désinstallés.
Tu parles de /var/cache/apt/archives/ ? C'est le cache des paquets téléchargés par apt, rien à voir avec les paquets désinstallés.
tous les paquets linux-images-* sont là ! C'est étrange car je fais très souvent des apt autoremove
apt autoremove désinstalle les paquets marqués installés automatiquement devenus inutiles, aucun rapport avec le cache des paquets téléchargés. C'est apt clean ou autoclean qui efface le cache de paquets.]]>
En fait, c'est juste pour faire un test afin de comprendre le principe de réinstaller un paquet désinstallé, qui est caché dans la machine (dans var de ce que je découvre), histoire de savoir le faire tout court. Ça aurait pu être un tout autre paquet, c'est juste que ça tombe sur lui aujourd'hui vu que la discussion tourne dessus.
Donc, tous les .deb dans le var/cache... sont des paquets d'installations ok.
Je viens de tester une installation et ça fonctionne, c'est trop magique.
Du coup, mon expérience est effectuée.
Disons que à travers cette expérience", j'essaye de comprendre un peu plus le fonctionnement de la machine et c'est vraiment pas facile de chercher par soi-même car la plupart du temps c'est un langage et une structure pour initié, limite incompréhensible (comme le lien de ssmolski), pour les noobs comme moi, quand, pire, ce ne n'est pas en anglais ! Du coup, "je montre" comme dit le dicton XD.]]>
ta commande (dpkg -l linux-image-*) ne donne pas les paquets installés précisément. Je ne sais pas ce quelle donne exactement.
Elle rapporte la liste des paquets connus de dpkg, installés ou non, pas forcément installables. L'état de chaque paquet est indiqué par les 2 ou 3 caractères en début de ligne, dont la signification est décrite au dessus de la liste.
ii = installé
rc = désinstallé et encore configuré (purger pour déconfigurer)
un = non installé
je n'ai pas de distinction clair sur si c'est marqué automatique ou manuel
dpkg ne s'occupe pas de ça. C'est apt qui gère.
voir tous ces paquets non installés (dpkg --get-selections |grep linux-image-*) ?
- que ces paquets sont tous présent mais désinstallés
Oui, il sont indiqués "rc" par dpkg -l. Il n'en reste plus que l'état dans dpkg et les fichiers de configuration.
donc que l'on peut les réinstaller à tout moment ?
Pas forcément, car ils peuvent ne plus être disponibles dans les sources. dpkg ne connaît que l'état local des paquets, pas leur état dans les dépôts qui est du ressort d'apt.
c'est juste une information du passé de l'histoire de ce système ? et/ou de leur configuration qui restent
On peut dire ça.
si la configuration reste (qui prend de la place je présume), c'est pour laisser la possibilité de réinstaller les paquets
C'est surtout pour conserver la même configuration en cas de réinstallation du paquet.
Est-ce que c'est le fait d'avoir marqué le kernel manuellement qui a provoqué son apparition visible dans le sous-menu du grub ?
Pas du tout, aucun rapport.
j'aimerais essayer de remettre le kernel linux-image-5.10.0-11-amd64 qui est affiché comme désinstallé.
Il faut vérifier s'il est encore présent dans le cache d'apt /var/cache/apt/archives/ ou disponible dans les sources d'apt avec apt-cache policy. Sinon il faudra aller le chercher sur snapshot.debian.org.
Pour quoi faire ?]]>
Avec cette autre commande, j'obtiens la précision sur ce qui est installé et ce qui ne l'est pas:
Mais par-contre, je n'ai pas de distinction clair sur si c'est marqué automatique ou manuel
Je dois utiliser 2 commandes distinctes
Du coup, cela signifie quoi que l'on puisse voir tous ces paquets non installés (dpkg --get-selections |grep linux-image-*) ?
- que ces paquets sont tous présent mais désinstallés, donc que l'on peut les réinstaller à tout moment ? si oui comment ?
j'ai une sous-question, si c'est le cas qu'ils soient présent, cela sert à quoi de les désinstaller alors que les paquets sont présent et peuvent être réinstallé, quel est l'intérêt ?
- c'est juste une information du passé de l'histoire de ce système ? et/ou de leur configuration qui restent, comme tu en fais mention au message #5 ?
En même temps, si la configuration reste (qui prend de la place je présume), c'est pour laisser la possibilité de réinstaller les paquets, donc les paquets doivent être présent, si on est logique.
Est-ce que c'est le fait d'avoir marqué le kernel manuellement qui a provoqué son apparition visible dans le sous-menu du grub ? (Du coup, marquer qqch, le rend visible...).
ou alors c'est autre chose, car il me semble ne pas l'avoir vu dans advenced options la première fois, et ensuite, après l'avoir marqué "manuellement", le voir apparaître dans le grub.
La concrètement, j'aimerais essayer de remettre le kernel linux-image-5.10.0-11-amd64 qui est affiché comme désinstallé. Comment dois-je m'y prendre ?]]>
admettons que je 'marque' manuellement un kernel. Si je fais un autoremove ensuite. Le marquage reste à vie ?
Oui, tant que le paquet reste installé.
si je veux 'démarquer' celui que j'ai marqué, pour faire du nettoyage. Comment m'y prendre ?
Avec apt-mark auto. Mais tu peux aussi bien désinstaller directement le paquet plutôt que le marquer auto et faire un autoremove.
PS : en réalité, ce sont les paquets installés automatiquement qui sont marqués comme tels. Les paquets installés manuellement n'ont pas de marque. Donc marquer comme "manuel" consiste en fait à supprimer la marque "auto".]]>