Je peux penser à deux façons de contourner le problème qui sont susceptibles de fonctionner; mais aucune approche n'est parfaite ou facile.
Méthode #1
Cette méthode est assez basique:
- Sauvegardez l'ESP. Une sauvegarde basée sur un fichier sera suffisante.
- Démontez l'ESP.
- Recherchez le GUID de l'ESP en tapant
sgdisk -i 1 /dev/sda
en tant que root
. (Cet exemple suppose que l'ESP est la première partition sur le premier disque - /dev/sda1
. Si c'est une autre partition, vous devez modifier -i 1
de manière appropriée. Si c'est sur un disque autre que /dev/sda
, vous devez également changer cette partie.) Cette commande affiche diverses informations, y compris une ligne identifiée comme Partition unique GUID
. Sauvegardez cette valeur. (Notez que l'enregistrement et la recréation de la valeur GUID sont faits pour le bénéfice du gestionnaire de démarrage intégré de l'ordinateur. Si vous êtes prêt à utiliser efibootmgr
pour recréer vos entrées de gestionnaire de démarrage, vous pouvez ignorer cette étape et l'étape #6 ci-dessous.)
- Supprimez l'ESP.
- Créez un nouvel ESP de la taille désirée. Notez que cela signifie à la fois l'ESP et un nouveau système de fichiers dessus.
- Utilisez
gdisk
ou sgdisk
pour changer le GUID du nouvel ESP. Par exemple, sgdisk -u 1:2C17D5ED-850D-4F76-BA31-47A561740082 /dev/sda
(en tant que root
) change le GUID de /dev/sda1
en 2C17D5ED-850D-4F76-BA31-47A561740082.
- Montez le nouvel ESP.
- Restaurez les fichiers sauvegardés sur l'ESP.
- S'il est nécessaire, éditez
/etc/fstab
pour enregistrer le nouveau "UUID" de l'ESP (vraiment un numéro de série de disque, pour les systèmes de fichiers FAT). Vous pouvez utiliser blkid
pour trouver le nouveau numéro de série.
Remarquez que certains outils de partitionnement, comme gdisk
et sgdisk
, peuvent nécessiter un redémarrage avant que le système d'exploitation ne reconnaisse les modifications apportées aux disques utilisés. Par conséquent, vous devez soit utiliser un démarrage sur disque d'urgence, sans partitions montées sur le disque cible; soit utiliser un outil comme GParted pour la suppression et la création des partitions. (Changer le GUID de la partition ne nécessite pas de redémarrage.)
Cette procédure comporte un certain risque d'échec catastrophique, en particulier si vous êtes négligent avec vos fichiers de sauvegarde. De plus, si quelque chose tourne mal, votre ordinateur sera temporairement inutilisable. Avoir une copie de mon gestionnaire de démarrage rEFInd sur une clé USB peut être utile en cas d'urgence.
Méthode #2
Je n'ai pas essayé cela avec diskpart
, donc je ne sais pas ce qui déclenche cet avertissement; mais il pourrait s'agir d'un attribut de partition (l'une des deux choses que libparted appelle "flags"). Quelque chose comme "partition système" pourrait vraisemblablement empêcher les outils de partitionnement de toucher à la partition. Vous pouvez utiliser parted
ou GParted pour chercher ces flags; cependant, je ne suis pas sûr qu'ils montreront tous les flags. Si la partition a des flags autres que "boot" (et "esp", avec les versions plus récentes de libparted), vous pouvez envisager de supprimer les extras. Sinon, vous pouvez utiliser gdisk
, qui affichera tous les attributs:
- Tapez
gdisk /dev/sda
(ou quel que soit l'identifiant du disque) en tant que root
.
- Tapez
p
pour afficher la table des partitions.
- Tapez
i
pour afficher les détails concernant une partition. On vous demandera de spécifier le numéro de la partition. Plusieurs lignes avec les détails de la partition apparaîtront.
- Cherchez la ligne
Attribut flags
. S'il n'y a aucun flag, cette ligne affichera une valeur de 0000000000000000
. Si c'est le cas, vous pouvez quitter gdisk
en tapant q
. S'il affiche des attributs et que vous souhaitez les supprimer, procédez ainsi...
- Tapez
x
pour entrer dans le menu des experts.
- Tapez
a
pour modifier les attributs. On vous demandera un numéro de partition. Entrez-le.
- Une liste de six attributs connus et un résumé de ceux qui sont définis vous sera montrée. Tapez le numéro du champ que vous souhaitez changer.
- L'étape précédente sera répétée automatiquement jusqu'à ce que vous appuyiez sur la touche Entrée sans valeur comme signal pour arrêter l'édition.
- Tapez
w
pour quitter et sauvegarder vos changements. (Si vous pensez avoir fait une erreur, tapez q
pour quitter sans sauvegarder vos changements; gdisk
garde les changements en mémoire jusqu'à ce que vous lui disiez de les écrire sur le disque avec w
, vous pouvez donc facilement annuler la plupart des actions.)
- Pour plus de sécurité, redémarrez.
- Sauvegardez votre ESP.
- Utilisez GParted pour redimensionner votre ESP.
Cette approche est moins susceptible de fonctionner que la première, à la fois parce que le problème pourrait ne pas être un attribut de partition et parce que, d'après mon expérience, GParted a souvent corrompu les systèmes de fichiers FAT lorsqu'il les redimensionne. Ce dernier point ne doit pas être sous-estimé; si GParted gâche les choses, vous devrez tout restaurer à partir de votre sauvegarde, et cette procédure aboutira aux pires aspects des deux méthodes. D'autre part, si GParted réussit à redimensionner votre ESP, cette méthode peut être légèrement plus simple et moins risquée que la précédente.
Commentaires Supplémentaires
Bien sûr, si vous n'avez pas encore installé Windows, il y a une façon beaucoup plus facile de faire ce que vous voulez: Créez votre ESP manuellement avant d'installer Windows. Vous pouvez alors rendre l'ESP aussi grand que vous le souhaitez.
Une autre approche est d'utiliser autre chose que systemd-boot. Ce gestionnaire de démarrage est très limité par son incapacité à lancer des noyaux ou des chargeurs de démarrage à partir de quelque chose d'autre que la partition sur laquelle il est stocké. (Du moins, il était limité de cette manière la dernière fois que je l'ai examiné; et la nature de votre question implique que vous croyez qu'il est toujours si limité. Je ne l'ai pas examiné récemment, cependant.) Ni GRUB ni rEFInd ne souffrent de cette limitation et seraient donc plus faciles à configurer - ou du moins, aucun ne nécessiterait les manipulations de partitions que systemd-boot nécessitera.