web-dev-qa-db-fra.com

Suppression de l'invite de démontage des disques de partition pendant l'installation sans assistance d'Ubuntu

J'essaie de créer une installation complètement sans assistance d'Ubuntu et j'ai supprimé presque toutes les invites possibles du processus d'installation. La seule invite restante est celle indiquée dans le texte ci-dessous, qui m'invite à démonter les partitions montées. Ce qui est ennuyeux, c'est que peu importe que je choisisse oui ou non, donc toute l'invite est inutile pour mon application. De plus, rien de ce que j'ai essayé n'a empêché cette invite d'apparaître. Quelqu'un a-t-il des suggestions sur la façon dont je peux empêcher cette invite de me déranger à nouveau?

Le programme d'installation a détecté que les disques suivants ont monté des partitions:

/ dev/sda

Voulez-vous que le programme d'installation essaie de démonter les partitions de ces disques avant de continuer? Si vous les laissez montés, vous ne pourrez pas créer, supprimer ou redimensionner des partitions sur ces disques, mais vous pourrez peut-être y installer des partitions existantes.

Démonter les partitions en cours d'utilisation?

2
David

Ceci est similaire à la ligne de pensée d'une autre réponse mais avec un exemple de code testé complet.

Je rencontrais le même problème et, finalement, par chance, je suis tombé sur un ensemble de diapositives qui m'ont permis d'automatiser cela et il y avait un référentiel de code d'accompagnement avec le fichier complet prédéfini. https://github.com/uweplonus/adia-install/blob/master/initrd/preseed.cfg#L

Beaucoup de gens suggèrent d'utiliser preseed/early_command umount /media/* Mais cela n'a pas fonctionné depuis un certain temps en raison du moment où la portion préconfigurée s'exécute par rapport au partitionnement.

La façon correcte de procéder consiste à ajouter ce qui suit n'importe où dans votre fichier prédéfini référencé par la commande de démarrage.

d-i partman/early_command string \ USBDEV=$(list-devices usb-partition | sed "s/\(.*\)./\1/");\ BOOTDEV=$(list-devices disk | grep -v "$USBDEV" | head -1);\ debconf-set partman-auto/disk $BOOTDEV;\ debconf-set grub-installer/bootdev $BOOTDEV; \ umount /media;

2
dragon788

Je n'ai pas beaucoup d'expérience dans la modification de l'installation d'Ubuntu.

Mais la chose la plus simple (et peut-être la plus sûre) serait de démonter automatiquement chaque /dev/sdXY qui est actuellement monté, sauf celui avec un point de montage à /. J'ai construit la commande bash suivante:

umount LC_ALL=en_US.UTF8 mount | grep -P '^/dev/sd' | grep -v 'on / type' | awk '{print $1}'


Pour expliquer comment cela fonctionne, je vais le diviser commande par commande:

  • LC_ALL=en_US.UTF8 mount répertorie les lecteurs actuellement montés au format suivant, forçant un paramètre régional anglais:

    /dev/devicefile on mountpoint type filesystem (mount options)
    

    par exemple.

    /dev/sda2 on / type ext4 (rw,errors=remount-ro)
    proc on /proc type proc (rw,noexec,nosuid,nodev)
    sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
    
  • | grep -P '^/dev/sd' répertorie le périphérique actuellement monté et en prend chaque ligne qui commence par /dev/sd, c'est-à-dire le filtrage pour chaque périphérique de disque solide.

  • | grep -v 'on / type' supprime la partition racine du système en direct de cette sélection, vous ne démonterez donc pas le programme d'installation lui-même;)

  • awk '{print $1}' Fractionne les lignes simples en utilisant n'importe quel espace comme délimiteur et retourne le premier élément de la ligne divisée, qui est le fichier de périphérique udev, donc la sortie ressemblera à ceci:

    /dev/sda1
    /dev/sdb1
    

Cette sortie est finalement passée à umount (doit être exécutée en tant que root), qui démonte ces partitions, permettant une installation sûre sans invite.

1
s3lph