Puis-je désinstaller et purger en toute sécurité les packages linux-signed*
de mon installation Ubuntu 16.10 (yakkety)?
La raison pour laquelle je considère cela est que mon bios UEFI n'utilise pas le démarrage sécurisé et que ma partition de démarrage ne fait que 200 Mio (~ 210 Mo). J'ai le chiffrement sur le reste des partitions et je ne veux vraiment pas les redimensionner pour développer la partition de démarrage.
Malheureusement, 200 MiB est à peine trop petit pour contenir 3 noyaux. Les noyaux actuels représentent chacun environ 61 Mio (y compris les binaires abi, config, initrd, map, plus les binaires du noyau signés et non signés). Ajouter grub, memtest et la table de partition la poussent à environ 198, ce qui ne semble pas être suffisamment d'espace libre pour pouvoir mettre à jour le noyau. Je ne conserve normalement que 2 noyaux (current + last), mais il me faut évidemment de l'espace pour un troisième pendant le processus de mise à jour. Si je n'avais pas les noyaux signés (7,2 Mio chacun), tout irait bien.
A ce jour, j'ai installé les versions 41, 45 et 46 du noyau 4.8.0.
Est-ce que ce qui suit casse mon système?
apt-get purge linux-signed*
grub-mkconfig -o /boot/grub/grub.cfg
(deuxième ligne ajoutée après le commentaire de ubfan1, voir ci-dessous)
Je pense qu'il devrait supprimer les packages de noyau suivants et empêcher l'installation de nouveaux noyaux signés:
linux-signed-generic
linux-signed-image-4.8.0-41-generic
linux-signed-image-4.8.0-45-generic
linux-signed-image-4.8.0-46-generic
linux-signed-image-generic
Toutes les versions régulières (non signées) de ces packages sont installées.
En tant que question secondaire, est-ce que quelqu'un sait pourquoi le fichier unicode.pf2
(2,3 Mio) apparaît à la fois dans /boot/grub
et /boot/grub/fonts
? J'ai diffé les fichiers et ils sont exactement les mêmes. Je suppose que c'est la police utilisée dans le menu grub, mais pourquoi apparaît-elle deux fois sur la même partition? Je me sens ridicule à propos de 2,3 Mio, mais cela pourrait également faire une énorme différence dans mon cas particulier.
Merci!
Les noyaux .efi.signed
apparaissent dans chaque entrée de menu dans /boot/grub/grub.cfg
. Je sais que mon firmware uefi (bios, je suppose, n'est plus le bon terme) n'utilise pas le démarrage sécurisé, mais les fichiers de configuration de grub semblent le croire. Évidemment, mon système démarre parfaitement les noyaux signés, alors je peux peut-être purger les noyaux non signés?
J'ai creusé dans /etc/grub.d/10_linux
pour trouver d'où venaient ces lignes et j'ai trouvé le code suivant:
if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename}.efi.signed
root=${linux_root_device_thisversion} ro ${args}
EOF
else
sed "s/^/$submenu_indentation/" << EOF
linux ${rel_dirname}/${basename}
root=${linux_root_device_thisversion} ro ${args}
EOF
fi
Je ne suis pas un expert en bash, mais je pense que je suis cela en pseudo-code
if /sys/firmware/efi AND /boot/vmlinuz-x.x.x-xx.efi.signed exist
echo linux vmlinuz-x.x-xx-generic.efi.signed to /boot/grub/grub.cfg
else
echo linux vmlinuz-x.x.x-xx-generic to /boot/grub/grub.cfg
donc, si je purge les paquets de noyau signés, puis que je relance grub-mkconfig
, les noyaux non signés standard doivent être placés dans grub.cfg
, n'est-ce pas?
Merci pour toute l'aide et les liens. J'ai passé quelques heures ce week-end et vérifié les points suivants
linux-signed*
, mais vous devez installer linux-generic
si vous souhaitez que les mises à jour automatiques du noyau continuent à fonctionner correctement. Toute la reconfiguration de grub, du noyau et initramfs est gérée automatiquement. Les scripts d'installation du noyau gèrent vraiment tout sans problèmes. apt-get purge linux-signed* linux-generic+
Oui, vous pouvez vous débarrasser des noyaux non signés sans aucun effet néfaste, mais ils reviendront après les mises à jour du noyau. Cela ne peut pas être résolu en gérant les paquets, mais il est facile de le réparer avec un court script.
#!/bin/sh
#
# user script:
/etc/kernel/postinst.d/zzz-remove-unsigned-kernel
#
# after a new signed kernel image is installed, this script removes
# the unsigned image
#
if [ -e "$2.efi.signed" ]; then
echo "/etc/kernel/postinst.d/zzz-remove-unsigned-kernel: removing $2"
rm "$2";
fi
Dans le premier cas, la solution est très simple. Cela fonctionne à peu près comme vous le supposeriez à première vue. J'ai néanmoins appris des choses utiles sur la structure de paquetage d'ubuntu pour les noyaux. Je voulais être sûr de comprendre les effets secondaires ou les conséquences, mais j'aime aussi simplement voir comment les choses se construisent. En guise d’accompagnement, j’utilise le noyau générique, mais je n’échange que generic
contre lowlatency
ou virtual
s’il s’agit de votre choix. De plus, tout est basé sur 16.10 (yakkety). Voici la hiérarchie des paquets du noyau:
linux-signed-generic
est un méta-paquet , ce qui signifie qu'il ne contient aucun code. Il ne contient qu'une liste de dépendances, qui contient toujours l'installation complète de la dernière mise à jour du noyau. "Complète" désigne tous les en-têtes du noyau, l'image du noyau, la signature d'image (détachée) et les modules de noyau supplémentaires pour à peu près tous les périphériques pris en charge par Ubuntu.
linux-generic
est un autre méta-paquet contenant tous les mêmes paquets réels, à l'exception de la signature d'image. L'image réelle du noyau est seulement contenue dans le paquetage linux-image-x.x.x-yy
. Le paquetage linux-signed-image-x.x.x-yy
ne contient qu'une signature détachée et le script de génération associe ce sig à /boot/vmlinuz-x.x.x.yy-generic
et crée /boot/vmlinuz-x.x.x.yy-generic.efi.signed
. Le script ne nettoie pas l'image non signée.
Les packages de noyau ont des scripts spéciaux dans /etc/kernel
qui modifient le comportement par défaut d'apt apt. Normalement, la suppression de linux-signed-generic
signale tous les packages en aval pour le retrait automatique, mais cela ne se produit pas pour les packages du noyau tant qu'il n'y a pas deux versions plus récentes de la même version.
Dans le second cas (tentative de conserver uniquement l’image de noyau signée), la suppression de /boot/vmlinuz-x.x.x.yy-generic
ne semble avoir aucune conséquence une fois l’installation terminée. Les deux images du noyau sont exactement les mêmes, à l'exception de la signature, et partagent les mêmes modules et fichiers de configuration. Cependant, dès qu'un noyau mis à jour est installé, il laissera l'image non signée. Heureusement, l’exécution d’un script était facile à exécuter chaque fois qu’un nouveau noyau est installé. Tous les scripts de /etc/kernel/postinst.d
sont exécutés par run-parts
avec deux arguments $1
est la version du noyau et $2
est le chemin complet de l'image (c'est-à-dire /boot/vmlinuz-x.x.x-yy-generic
).
Le seul inconvénient mineur est que la suppression de l'image non signée doit être effectuée après que grub a terminé de mettre à jour grub.cfg
. Si /boot/vmlinuz-x.x.x-yy-generic.efi.signed
existe, Grub ajoute cette image à grub.cfg
et ignore l'image non signée. Cependant, il doit y avoir quelque part dans le processus qui attend toujours l'image non signée car la configuration de grub ne se fait pas correctement sans elle. Le script qui lance la configuration de grub est /etc/kernel/postinst.d/zz-update-grub
. J'ai nommé mon script zzz-remove-unsigned-kernel
pour que run-parts
l'exécute une fois que tout le reste est terminé.
EDIT: J'ai utilisé ce script maintenant avec quelques mises à jour de la construction du noyau, et tout semble bien fonctionner. J'utilise l'option 2 ci-dessus (suppression des noyaux non signés). Je vais marquer ceci comme la bonne réponse.
Autant que je sache, les noyaux .efi.signed
sont identiques aux noyaux normaux, sauf qu'ils sont signés avec la clé EFI Secure Boot de Canonical. En tant que tel, si vous ne démarrez pas avec Secure Boot actif, vous pouvez supprimer en toute sécurité les noyaux .efi.signed
. Si j'analyse correctement les informations sur les paquets, vous devriez pouvoir supprimer les paquets linux-signed-image-generic
et linux-signed-generic
afin d'empêcher l'installation de futures mises à jour des noyaux signés.
Cela dit, une meilleure solution à long terme consiste à augmenter la taille de votre partition /boot
. Cela peut être pénible, voire dangereux pour vos données, en particulier si vous utilisez LVM ou un logiciel RAID; Cependant, les détails dépendent beaucoup de la disposition actuelle de votre disque et des plans pour changer cette disposition pour d'autres raisons. Notez que, selon votre disposition, il peut être préférable de réduire une partition de données à partir de la fin et de créer une partition /boot
plus grande après cette partition de données désormais réduite, plutôt que de tenter de réduire une partition de données dès le début dans l'ordre. faire de la place pour que la partition /boot
se développe.
Enfin, si vous êtes suffisamment désespéré pour libérer quelques mégaoctets de fichiers dupliqués dans l’arborescence de répertoires /boot/grub
, vous pouvez envisager de vous éloigner totalement de GRUB. La plupart des autres chargeurs de démarrage n'exigent pas autant de fichiers dans /boot
que GRUB. Si vous démarrez en mode EFI, mon propre gestionnaire de démarrage rEFInd sera probablement le plus facile à installer, et vous pourrez l'essayer sur une clé USB ou un CD-R pour voir à quoi ça ressemble avant de le salir avec votre disque dur. Si vous démarrez en mode BIOS, LILO, SYSLINUX et même GRUB Legacy sont toutes des options, mais je n'ai pas d'indications à propos de la procédure d'installation non plus.
Les noyaux ..signed sont un peu plus gros, donc si vous n'exécutez pas avec le démarrage sécurisé activé et essayez de gagner de la place, utilisez unsigned et purgez les signés. Moi aussi, je pense que votre approche avec la reconstruction va fonctionner. Si vous perdez de l'énergie avant la reconstruction de grub.cfg, vous pouvez toujours modifier l'ancien menu grub et supprimer la partie signée. Bien sûr, vous pouvez laisser une version signée (la plus récente) et vous débarrasser des autres pour voir si tout fonctionne comme prévu, puis recommencez pour la dernière, ne vous laissant jamais sans une configuration amorçable connue. En ce qui concerne les fichiers unicode.pf2, ils existent également sur mon système. Vous pouvez essayer de remplacer l’un par un lien vers l’autre (avec le support d’initialisation au cas où vous auriez besoin de replacer le fichier là où se trouve le lien).