buntu 18.04 est sorti le 26 avril 2018 et je veux l'essayer pour mettre à niveau mes programmes et convertir mes données, mais je ne veux pas commettre s'il y a des bugs.
J'ai ramené Windows de 410 Go à 385 Go, redémarré Ubuntu 16.04 et lancé gparted
pour créer une nouvelle partition de 25 Go intitulée "Ubuntu18.04". J'ai exécuté rm-kernels
et enlevé environ 20 noyaux pour éliminer environ 10 Go sur Ubuntu 16.04.
Maintenant, je veux un script qui remplira la nouvelle partition avec 16.04 LTS et créera une nouvelle option de menu Grub. Seuls les répertoires pertinents doivent être copiés. Par exemple, /sys
, /run
, /proc
et /dev
sont des répertoires virtuels créés lors du démarrage et ne doivent pas être copiés.
Je souhaite également que /etc/fstab
soit corrigé avec les UUID corrects et que les travaux de redémarrage cron
soient désactivés de sorte que les sauvegardes quotidiennes sur des données clonées ne soient pas exécutées après le démarrage du clone.
Je prévois d'exécuter le script plusieurs fois au cours des prochaines semaines/mois. En tant que tel, le processus de clonage devrait être reproductible sans effort.
Le même script pourrait être utilisé pour tester les mises à jour de sécurité et les nouvelles mises à jour de l'équipe de noyau Ubuntu sans affecter les systèmes de production.
Le script clone-ubuntu.sh
bash répliquera de manière transparente et en toute sécurité 16.04 LTS sur une partition pour la mise à niveau vers 18.04 LTS:
Points importants à considérer:
ext4
vide suffisamment grande pour contenir un clone Ubuntu 16.04 clone-ubuntu.sh
, la partition ne peut pas être montée. Le script monte et démonte automatiquement la partition.rsync
permet de copier des fichiers de /
vers la partition clone. La première fois que vous exécutez clone-ubuntu.sh
, cela prendra quelques minutes. La deuxième fois que vous exécutez le script, seuls les changements de fichier sont mis à jour et cela devrait prendre moins d'une minute./
actuel fichiers et répertoires./etc/cron.d
(redémarrage) sont déplacés vers un nouveau sous-répertoire appelé /etc/cron.d/hold
. Après avoir démarré le clone, n'oubliez pas d'exécuter Sudo crontab -e
pour empêcher l'exécution des tâches cron sélectionnées./etc/fstab
est modifié avec l'UUID approprié pour la partition sur laquelle il se trouve./boot/grub/grub.cfg
est modifié avec l'UUID approprié pour un démarrage réussi du clone. Le quiet splash
du fichier cloné est remplacé par nosplash
afin que vous puissiez faire défiler la messagerie du terminal. Cela donne une conscience visuelle en démarrant un clone plutôt que la version "Real".update-grub
est exécuté pour mettre à jour Grub avec de nouvelles options de menu pointant vers la partition clonée./etc/update-manager/release-upgrades
est modifié pour remplacer Prompt=never
en Prompt=lts
. Lorsque vous démarrez le clone et exécutez do-release-upgrade -d
, ceci permet à Ubuntu 16.04 d’être mis à niveau vers 18.04.Après avoir sélectionné une partition clone cible, il est d'abord vérifié que le type de partition est ext4
et qu'il n'est pas déjà monté. Si ce test est réussi, un message de confirmation apparaît alors:
=====================================================================
Mounting clone partition /dev/nvme0n1p8 as /mnt/clone16.04
=====================================================================
PLEASE: Carefully confirm Source (Live) and Target (Clone) partitions
SOURCE (BOOT /): /dev/nvme0n1p5 TARGET (CLONE): /dev/nvme0n1p8
ID: Ubuntu ID: Ubuntu
RELEASE: 16.04 RELEASE: 16.04
CODENAME: xenial CODENAME: xenial
DESCRIPTION: Ubuntu 16.04.3 LTS DESCRIPTION: Ubuntu 16.04.3 LTS
Size Used Avail Use% Size Used Avail Use%
44G 17G 26G 40% 24G 17G 5.8G 74%
NOTE: If you are recloning, new files in clone will be deleted,
modified files are reset to current source content and,
files deleted from clone are added back from source.
Type Y (or y) to proceed. Any other key to exit:
Dans cet exemple, un clone précédent a été sélectionné pour le reclonage. L'espace disponible sur le clone est un point muet car nous savons déjà qu'il y a suffisamment d'espace disponible.
Si vous avez plusieurs installations Ubuntu, vérifiez que vous avez sélectionné la bonne partition pour cloner Ubuntu actuellement démarré, monté en tant que /
(root).
C'est votre dernière chance d'abandonner en appuyant sur une touche, à l'exception de y
ou Y
name__.
Lorsque vous exécutez le script, vous obtiendrez cette sortie (à l'exclusion de la sortie déjà listée ci-dessus):
=====================================================================
Using rsync to clone / to /dev/nvme0n1p8 mounted as /mnt/clone16.04
6.11G 38% 86.46MB/s 0:01:07 (xfr#139123, to-chk=0/647700)
Number of files: 647,700 (reg: 470,100, dir: 104,694, link: 72,903, special: 3)
Number of created files: 127,824 (reg: 72,472, dir: 15,825, link: 39,526, special: 1)
Number of deleted files: 73,318 (reg: 59,766, dir: 9,701, link: 3,847, special: 4)
Number of regular files transferred: 139,123
Total file size: 15.92G bytes
Total transferred file size: 6.11G bytes
Literal data: 6.11G bytes
Matched data: 0 bytes
File list size: 8.50M
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 6.14G
Total bytes received: 7.82M
sent 6.14G bytes received 7.82M bytes 89.74M bytes/sec
total size is 15.92G speedup is 2.59
Time to clone files: 68 Seconds
=====================================================================
Making changes in: /mnt/clone16.04/etc/update-manager/release-upgrades
from Prompt=: never
to Prompt=: lts
Allows running 'do-release-upgrade -d' when rebooting clone target
Consider 'do-release-upgrade -d -f DistUpgradeViewNonInteractive' This
allows you to go to bed or go to lunch whilst upgrade runs.
* * * When you Upgrade, TURN OFF screen locking for inactivity. * * *
=====================================================================
Making changes in: /mnt/clone16.04/etc/fstab
from UUID: f3f8e7bc-b337-4194-88b8-3a513f6be55b
to UUID: 113f9955-a064-4ce2-9cae-74f2a9518550
=====================================================================
Making changes in: /mnt/clone16.04/boot/grub/grub.cfg
from UUID: f3f8e7bc-b337-4194-88b8-3a513f6be55b
to UUID: 113f9955-a064-4ce2-9cae-74f2a9518550
Also change 'quiet splash' to 'nosplash' for environmental awareness
Suggest first time booting clone you make wallpaper unique
=====================================================================
Calling 'update-grub' to create new boot menu
Generating grub configuration file ...
Found background: /home/rick/Pictures/1600x900/21.jpg
Found background image: /home/rick/Pictures/1600x900/21.jpg
Found linux image: /boot/vmlinuz-4.14.34-041434-generic
Found initrd image: /boot/initrd.img-4.14.34-041434-generic
Found linux image: /boot/vmlinuz-4.14.31-041431-generic
Found initrd image: /boot/initrd.img-4.14.31-041431-generic
Found linux image: /boot/vmlinuz-4.14.30-041430-generic
Found initrd image: /boot/initrd.img-4.14.30-041430-generic
Found linux image: /boot/vmlinuz-4.14.27-041427-generic
Found initrd image: /boot/initrd.img-4.14.27-041427-generic
Found linux image: /boot/vmlinuz-4.14.15-041415-generic
Found initrd image: /boot/initrd.img-4.14.15-041415-generic
Found linux image: /boot/vmlinuz-4.14.10-041410-generic
Found initrd image: /boot/initrd.img-4.14.10-041410-generic
Found linux image: /boot/vmlinuz-4.14.4-041404-generic
Found initrd image: /boot/initrd.img-4.14.4-041404-generic
Found linux image: /boot/vmlinuz-4.14.2-041402-generic
Found initrd image: /boot/initrd.img-4.14.2-041402-generic
Found linux image: /boot/vmlinuz-4.13.9-041309-generic
Found initrd image: /boot/initrd.img-4.13.9-041309-generic
Found linux image: /boot/vmlinuz-4.10.0-42-generic
Found initrd image: /boot/initrd.img-4.10.0-42-generic
Found linux image: /boot/vmlinuz-4.9.77-040977-generic
Found initrd image: /boot/initrd.img-4.9.77-040977-generic
Found linux image: /boot/vmlinuz-4.4.0-104-generic
Found initrd image: /boot/initrd.img-4.4.0-104-generic
Found linux image: /boot/vmlinuz-3.16.53-031653-generic
Found initrd image: /boot/initrd.img-3.16.53-031653-generic
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Ubuntu 16.04.3 LTS (16.04) on /dev/nvme0n1p8
Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
done
=====================================================================
Unmounting /dev/nvme0n1p8 as /mnt/clone16.04
rsync
affichage de l'état du nouveau cloneLors du premier clonage, rsync
donnera une mise à jour de 0 à 100% de tous les fichiers créés. Aucun fichier ne sera supprimé ou modifié car le clone est vide:
rsync
affichage de l'état lors du reclonageLorsque rsync
réclone, il ne frappe jamais 100%
car les fichiers qui n'ont jamais été modifiés ne sont pas copiés. Il y aura des retards dans la progression de la mise à jour car rsync
recherche le prochain fichier à copier et lorsqu'il supprime les nouveaux fichiers créés dans le clone qui n'ont jamais existé dans l'original:
clone-ubuntu.sh
#!/bin/bash
# NAME: clone-ubuntu.sh
# PATH: /usr/local/bin
# DESC: Written for AU Q&A: https://askubuntu.com/questions/1028604/bash-seemless-safe-script-to-upgrade-16-04-to-18-04/1028605#1028605
# DATE: Apr 27, 2018. Modified May 6, 2018.
# UPDT: May 02 2018 - Display selected parition and get confirmation.
# May 06 2018 - Revise `do-release-upgrade -d` instructions.
# Correct listing of files in empty target partition.
# Aug 09 2018 - Add --inplace parameter to `rsync`
# Comment out disabling `/etc/cron.d` on clone target.
# Users may uncomment and/or revise to their needs.
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical \
"$0 cannot be run from GUI without TERM environment variable."
exit 1
fi
# Must run as root
if [[ $(id -u) -ne 0 ]] ; then echo "Usage: Sudo $0" ; exit 1 ; fi
#
# Create unqique temporary file names
#
tmpPart=$(mktemp /tmp/clone-ubuntu.XXXXX) # Partitions list
tmpMenu=$(mktemp /tmp/clone-ubuntu.XXXXX) # Menu list
tmpInf1=$(mktemp /tmp/clone-ubuntu.XXXXX) # Soucre (Booted) Ubuntu Info
tmpInf2=$(mktemp /tmp/clone-ubuntu.XXXXX) # Target (Cloned) Ubuntu Info
tmpInf3=$(mktemp /tmp/clone-ubuntu.XXXXX) # Work file used by DistInfo ()
#
# Function Cleanup () Removes temporary files
#
CleanUp () {
[[ -f "$tmpPart" ]] && rm -f "$tmpPart" # If we created temp files
[[ -f "$tmpMenu" ]] && rm -f "$tmpMenu" # at various program stages
[[ -f "$tmpInf1" ]] && rm -f "$tmpInf1" # then remove them before
[[ -f "$tmpInf2" ]] && rm -f "$tmpInf2" # exiting.
[[ -f "$tmpInf3" ]] && rm -f "$tmpInf3"
if [[ -d "$TargetMnt" ]]; then # Did we create a clone mount?
umount "$TargetMnt" -l # Unmount the clone
rm -d "$TargetMnt" # Remove clone directory
fi
}
#
# Function GetUUID () gets UUIDs of source and clone target partitions in menu.
#
GetUUID () {
SrchLine="$1" # menu line passed to function
UUID_col=0 # start column of UUID in line
lsblk -o NAME,UUID > "$tmpPart" # Get list of UUID's
while read -r UUID_Line; do # Read through UUID list
# Establish UUID position on line
if [[ $UUID_col == 0 ]] ; then # First time will be heading
UUID_col="${UUID_Line%%UUID*}" # Establish column number
UUID_col="${#UUID_col}" # where UUID appears on line
NameLen=$(( UUID_col - 1 )) # Max length of partition name
continue # Skip to read next line
fi
# Check if Passed line name (/dev/sda1, /nvme01np8, etc.) matches.
if [[ "${UUID_Line:0:$NameLen}" == "${SrchLine:0:$NameLen}" ]] ; then
FoundUUID="${UUID_Line:UUID_col:999}"
break # exit function
fi
done < "$tmpPart" # Read next line & loop back
}
#
# Function DistInfo () builds information about source & target partitions
#
DistInfo () {
Mount="$1" # Mount name is '/' or $TargetMnt
FileName="$2" # "$tmpInf1" or "$tmpInf2" work file
cat "$Mount"/etc/lsb-release >> "$FileName"
sed -i 's/DISTRIB_//g' "$FileName" # Remove DISTRIB_ prefix.
sed -i 's/=/:=/g' "$FileName" # Change "=" to ":="
sed -i 's/"//g' "$FileName" # Remove " around "Ubuntu 16.04...".
# Align columns from "Xxxx:=Yyyy" to "Xxxx: Yyyy"
cat "$FileName" | column -t -s '=' > "$tmpInf3"
cat "$tmpInf3" > "$FileName"
}
#
# Mainline
#
lsblk -o NAME,FSTYPE,LABEL,SIZE,MOUNTPOINT > "$tmpMenu"
i=0
SPACES=' '
DoHeading=true
AllPartsArr=() # All partitions.
# Build whiptail menu tags ($i) and text ($Line) into array
while read -r Line; do
if [[ $DoHeading == true ]] ; then
DoHeading=false # First line is the heading.
MenuText="$Line" # Heading for whiptail.
FSTYPE_col="${Line%%FSTYPE*}"
FSTYPE_col="${#FSTYPE_col}" # Required to ensure `ext4`.
MOUNTPOINT_col="${Line%%MOUNTPOINT*}"
MOUNTPOINT_col="${#MOUNTPOINT_col}" # Required to ensure not mounted.
continue
fi
Line="$Line$SPACES" # Pad extra white space.
Line=${Line:0:74} # Truncate to 74 chars for menu.
if [[ "${Line:MOUNTPOINT_col:4}" == "/ " ]] ; then
GetUUID "$Line"
SourceUUID=$FoundUUID
# Build "/dev/Xxxxx" FS name from "├─Xxxxx" lsblk line
SourceDev="${Line%% *}"
SourceDev=/dev/"${SourceDev:2:999}"
fi
AllPartsArr+=($i "$Line") # Menu array entry = Tag# + Text.
(( i++ ))
done < "$tmpMenu" # Read next "lsblk" line.
#
# Display whiptail menu in while loop until no errors, or escape,
# or valid partion selection .
#
DefaultItem=0
while true ; do
# Call whiptail in loop to Paint menu and get user selection
Choice=$(whiptail \
--title "Use arrow, page, home & end keys. Tab toggle option" \
--backtitle "Clone 16.04 for upgrade. ONLY CLONES / PARTITION" \
--ok-button "Select unmounted partition" \
--cancel-button "Exit" \
--notags \
--default-item "$DefaultItem" \
--menu "$MenuText" 24 80 16 \
"${AllPartsArr[@]}" \
2>&1 >/dev/tty)
clear # Clear screen.
if [[ $Choice == "" ]]; then # Escape or dialog "Exit".
CleanUp
exit 0;
fi
DefaultItem=$Choice # whiptail start option.
ArrNdx=$(( $Choice * 2 + 1)) # Calculate array offset.
Line="${AllPartsArr[$ArrNdx]}" # Array entry into $Line.
# Validation - Don't wipe out Windows or Ubuntu 16.04:
# - Partition must be ext4 and cannot be mounted.
if [[ "${Line:FSTYPE_col:4}" != "ext4" ]] ; then
echo "Only 'ext4' partitions can be clone targets."
read -p "Press <Enter> to continue"
continue
fi
if [[ "${Line:MOUNTPOINT_col:4}" != " " ]] ; then
echo "A Mounted partition cannot be a clone target."
read -p "Press <Enter> to continue"
continue
fi
GetUUID "$Line" # Get UUID of target partition.
TargetUUID=$FoundUUID
# Build "/dev/Xxxxx" FS name from "├─Xxxxx" menu line
TargetDev="${Line%% *}"
TargetDev=/dev/"${TargetDev:2:999}"
break # Validated: Break menu loop.
done # Loop while errors.
#
# Mount Clone Target partition
#
Release=$(lsb_release -rs) # Source version ie: '16.04'
TargetMnt="/mnt/clone$Release"
echo ""
echo "====================================================================="
echo "Mounting clone partition $TargetDev as $TargetMnt"
mkdir -p "$TargetMnt" # '-p' directory may already exist
mount -t auto -v $TargetDev "$TargetMnt" > /dev/null
# Confirm partition is empty. If not empty confirm it's Ubuntu. If not exit.
# If Ubuntu display Prompt with the version it contains and get confirmation.
echo ""
echo "====================================================================="
echo "PLEASE: Carefully confirm Source (Live) and Target (Clone) partitions"
# Build source information (our current boot partition)
echo "SOURCE (BOOT /)=$SourceDev" > "$tmpInf1"
DistInfo "/" "$tmpInf1" # /etc/lsb_release information
df -h --output=size,used,avail,pcent "$SourceDev" >> "$tmpInf1"
# Build target information (the partition selected for cloning to)
LineCnt=$(ls "$TargetMnt" | wc -l)
if (( LineCnt > 1 )) ; then
# More than /Lost+Found exist so it's not an empty partition.
if [[ -f "$TargetMnt"/etc/lsb-release ]] ; then
echo "TARGET (CLONE)=$TargetDev" > "$tmpInf2"
DistInfo "$TargetMnt" "$tmpInf2" # /etc/lsb_release information
else
# TO-DO: might be cloning /boot or /home on separate partitions.
# the source partition is still `/` so can display message.
echo "Selected partition has data which is not Ubuntu OS. Aborting."
CleanUp # Remove temporary files
exit 1
fi
else
echo "Target (Clone) partition appears empty" > "$tmpInf2"
echo "/Lost+Found normal in empty partition" >> "$tmpInf2"
echo "Head of '/Clone/' files & directories:" >> "$tmpInf2"
ls "$TargetMnt" | head -n2 >> "$tmpInf2"
fi
# Target device free bytes
df -h --output=size,used,avail,pcent "$TargetDev" >> "$tmpInf2"
# Display source and target partitions side-by-side using bold text.
echo $(tput bold) # Set to bold text
paste -d '|' "$tmpInf1" "$tmpInf2" | column -t -s '|'
echo $(tput sgr0) # Reset to normal text
echo "NOTE: If you are recloning, new files in clone will be deleted,"
echo " modified files are reset to current source content and,"
echo " files deleted from clone are added back from source."
echo ""
read -p "Type Y (or y) to proceed. Any other key to exit: " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]] ; then
CleanUp # Remove temporary files
exit 0
fi
# Copy non-virtual directories to clone. Credit to TikTak's Ask Ubuntu answer:
# https://askubuntu.com/questions/319805/is-it-safe-to-clone-the-current-used-disk?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
SECONDS=0
echo ""
echo "====================================================================="
echo "Using rsync to clone / to $TargetDev mounted as $TargetMnt"
rsync -haxAX --stats --delete --info=progress2 --info=name0 --inplace \
/* "$TargetMnt" \
--exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}
# For 16GB on Samsung Pro 960: First time 98 seconds, second time 27 seconds.
rsyncTime=$SECONDS
echo ""
echo "Time to clone files: $rsyncTime Seconds"
# Change /etc/update-manager/release-upgrades Prompt from never to LTS
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/etc/update-manager/release-upgrades"
echo " from Prompt=: never"
echo " to Prompt=: lts"
echo "Allows running 'do-release-upgrade -d' when rebooting clone target"
echo "Consider 'do-release-upgrade -d -f DistUpgradeViewNonInteractive' This"
echo "allows you to go to bed or go to lunch whilst upgrade runs."
echo ""
echo "* * * When you Upgrade, TURN OFF screen locking for inactivity. * * *"
echo ""
sed -i 's/Prompt=never/Prompt=lts/' "$TargetMnt"/etc/update-manager/release-upgrades
## This section commented out to prevent surprises. You may uncomment.
## You may want to revise to include `cron.daily`, `cron.hourly`, etc.
# Move `/etc/cron.d` reboot jobs to `/etc/cron.d/hold` to prevent running
# scripts such as daily backup or Ubuntu 16.04 specific problem fixes.
#echo ""
#echo "====================================================================="
#echo "Moving '$TargetMnt/etc/cron.d' to '.../hold' to prevent running."
#echo "After booting clone, move back individual files you want to run"
#if [[ ! -d "$TargetMnt"/etc/cron.d/hold ]]; then
# mkdir "$TargetMnt"/etc/cron.d/hold
#fi
#cp -p "$TargetMnt"/etc/cron.d/* "$TargetMnt"/etc/cron.d/hold/
#rm -fv "$TargetMnt"/etc/cron.d/*
# Update /etc/fstab on clone partition with clone's UUID
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/etc/fstab"
echo " from UUID: $SourceUUID"
echo " to UUID: $TargetUUID"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/etc/fstab
# Update /boot/grub/grub.cfg on clone partition with clone's UUID
echo ""
echo "====================================================================="
echo "Making changes in: $TargetMnt/boot/grub/grub.cfg"
echo " from UUID: $SourceUUID"
echo " to UUID: $TargetUUID"
echo "Also change 'quiet splash' to 'nosplash' for environmental awareness"
echo "Suggest first time booting clone you make wallpaper unique"
sed -i "s/$SourceUUID/$TargetUUID/g" "$TargetMnt"/boot/grub/grub.cfg
sed -i "s/quiet splash/nosplash/g" "$TargetMnt"/boot/grub/grub.cfg
# Update grub boot menu
echo ""
echo "====================================================================="
echo "Calling 'update-grub' to create new boot menu"
update-grub
# Unmount and exit
echo ""
echo "====================================================================="
echo "Unmounting $TargetDev as $TargetMnt"
CleanUp # Remove temporary files
exit 0
Copiez et collez le code bash ci-dessus dans un nouveau fichier appelé /usr/local/bin/clone-ubuntu.sh
. Ensuite, rendez le nouveau fichier exécutable en utilisant:
Sudo chmod a+x /usr/local/bin/clone-ubuntu.sh
Pour appeler le script, utilisez:
Sudo clone-ubuntu.sh
Ceci est une section "bonus" qui peut intéresser beaucoup de gens.
Redémarrez votre machine. Le menu grub
contiendra une nouvelle option de menu pointant vers la partition clonée. Vous pouvez également sélectionner une version de noyau spécifique dans le menu Options avancées du clone .
Une façon de convertir le 16.04 LTS cloné en 18.04 LTS consiste à exécuter:
Sudo do-release-upgrade
Notez que l'indicateur -d
était requis avant le 26 juillet 2018 mais qu'il n'est plus nécessaire.
Lisez attentivement la confirmation de la mise à niveau de 18.04 .
Avant de continuer, assurez-vous que le verrouillage d'écran inactif est désactivé. Le processus de mise à niveau peut tomber en panne si votre ordinateur affiche l'écran de verrouillage en raison d'une inactivité du clavier.
Cette section sera spécifique à la machine car différentes applications sont installées par différents utilisateurs. Voici un bref résumé que j'ai fait basé sur des notes et de la mémoire:
Notez l'étape 10 que la plupart des gens ne verront jamais. J'ai une ancienne installation de pilote nVidia sur mon Ubuntu 16.04 que je n'ai jamais eu la possibilité de supprimer complètement. Il est inclus car d'anciens paquets similaires peuvent ne jamais être complètement supprimés.
Contrairement aux mises à niveau de 18.04, la mise à niveau de 18.04.1 changeait la configuration UEFI de Grub pour utiliser le menu Grub du clone au lieu du menu Grub d'origine, comme indiqué dans la réponse suivante: Dual Boot et les fichiers /boot/grub/grub.cfg - - lequel est utilisé?
$ Sudo cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid b40b3925-70ef-447f-923e-1b05467c00e7 root
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
$ Sudo grub-install
Installing for x86_64-efi platform.
Installation finished. No error reported.
Exécuter Sudo update-grub
après avoir démarré la partition d'origine ne suffit pas pour changer le grub.cfg
chargé par grub. Vous devez utiliser Sudo grub-install
pour obliger grub à utiliser la configuration de la partition d'origine.
La partition d'origine et la partition clone peuvent utiliser update-grub
pour conserver leur propre fichier /boot/grub/grub.cfg
, mais un seul fichier peut être utilisé lors du démarrage.
Bien sûr, si vous voulez que grub utilise le menu de menu de Clone, ne suivez pas les étapes ci-dessus sur la partition d'origine.
Éditer 6 mai 2018 - Affichage des informations pour une partition de clone vide (cible) corrigée.
Éditer le 26 août 2018 - Utilisez l'option --inplace
avec rsync
afin que les fichiers volumineux tels qu'une corbeille de 2 Go ne soient pas dupliqués sur le clonage au cours du processus de copie. Cela peut entraîner une erreur "d'espace disque insuffisant". Commentez /etc/cron.d
écrase parce que les utilisateurs peuvent vouloir garder ou vouloir un répertoire complètement différent. Instructions de mise à jour pour utiliser do-release-upgrade
sans -d
, car Ubuntu 18.04.1 LTS est maintenant disponible.
Il n'est pas du tout simple de passer des versions précédentes à 18.04 LTS. Je ne sais pas s'il y a eu plus de problèmes que cette mise à niveau dans le passé, mais les personnes qui publient la mise à niveau prennent désormais un risque pour elles-mêmes. D'autre part, ils trouvent des bogues et si les bogues sont rapportés , cela aidera à développer l'outil de mise à niveau et à déboguer le système Ubuntu 18.04 LTS lui-même.
Cela signifie que les personnes suffisamment patientes pour attendre la sortie officielle de la mise à niveau avec la première libération ponctuelle (18.04.1 LTS) obtiendra un tour plus doux .
La méthode décrite ici par @ WinEunuuchs2 permet de tester avec une copie du système réel. Si la mise à niveau vers 18.04, LTS fonctionnera avec votre système d'exploitation actuel [plus ou moins modifié] avec votre matériel informatique.
Cela peut éviter plusieurs catastrophes avec un système d'exploitation corrompu.
Je n'ai pas encore utilisé le script de @ WinEunuuchs2Unix, mais je comprends qu'il est très utile et j'ai l'intention de l'utiliser. J'ai pu passer de 8.04 à 10.04 à 12.04, que j'ai utilisé pendant longtemps. Mais lorsque je me suis mis à niveau via 14.04 à 16.04, j’ai échoué et je n’ai pas pu trouver les erreurs.
J'avais de bonnes sauvegardes , j'ai donc fait une nouvelle installation du 16.04 et plus tard, copié ce que je voulais conserver et vérifié les réglages, les scripts, les alias et programmes installés. Si j'avais utilisé la méthode de @ WinEunuuchs2Unix si j'avais déjà vu le problème très tôt, j'aurais directement effectué une nouvelle installation.
Les systèmes sous tension persistants sont utilisés pour obtenir des systèmes Ubuntu très portables, parfois utilisés à des fins de test, mais parfois pendant longtemps.
C'est un problème connu, que vous ne devriez pas mettre à jour et mettre à niveau un tel système comme vous le faites avec un système installé, car il sera corrompu tôt ou tard. De plus, vous êtes coincé avec les pilotes du noyau et du noyau, fournis avec le fichier iso, car ils sont démarrés avant le démarrage du système de superposition.
Mais il est généralement possible de conserver le répertoire /home
, comme vous pouvez le faire, lorsque vous effectuez une nouvelle installation avec une partition 'home' distincte. Si vous créez une partition home-rw
, un système live persistant le trouvera et l’utilisera automatiquement au démarrage.
Je développe et teste un shellscript, mk-persistent-live_with_home-rw , pouvant créer une système actif persistant avec une partition home-rw
et pouvant ultérieurement être mis à niveau ,
remplacez le fichier iso par un fichier plus récent. Au moins, vous devriez mettre à niveau quand un nouveau fichier ISO est publié, mais vous pouvez également mettre à jour un système LTS une fois par mois et utiliser les fichiers ISO quotidiens actuels à partir de piste de test ,
modifier grub pour le nouveau fichier ISO.
effacez (reformatez) le fichier casper-rw
qui stocke les modifications du système d'exploitation (vous devez donc réinstaller les packages de programme que vous avez ajoutés au système),
conservez la partition home-rw
avec vos fichiers personnels, vos paramètres et vos réglages.
Voir ce lien pour plus de détails.
Vous trouverez des conseils généraux à l'intention des personnes souhaitant tester la dernière et la plus grande version d'Ubuntu à l'adresse suivante: