Tập lệnh Bash để sao chép Phân vùng Ubuntu đang hoạt động để sao chép phân vùng
Tập clone-ubuntu.sh
lệnh bash sẽ sao chép liền mạch và an toàn 16.04 LTS vào phân vùng để nâng cấp lên 18.04 LTS:
Những điểm quan trọng cần xem xét:
- Bạn phải tạo một
ext4
phân vùng trống đủ lớn để chứa bản sao Ubuntu 16.04
- Khi gọi tập lệnh
clone-ubuntu.sh
, phân vùng không thể được gắn kết. Kịch bản tự động gắn kết và ngắt kết nối phân vùng.
- Lệnh
rsync
được sử dụng để sao chép các tập tin từ /
phân vùng bản sao. Lần đầu tiên bạn chạy clone-ubuntu.sh
nó sẽ mất một vài phút. Lần thứ hai bạn chạy tập lệnh chỉ thay đổi tập tin được cập nhật và sẽ mất ít hơn một phút.
- Bạn có thể chạy tập lệnh này và khởi động lại nhiều lần. Bất kỳ dữ liệu mới nào trên mục tiêu nhân bản sẽ bị xóa để phản chiếu các
/
tệp và thư mục hiện tại .
- Tất cả các
/etc/cron.d
công việc Cron (khởi động lại) được chuyển đến một thư mục con mới được gọi là /etc/cron.d/hold
. Sau khi khởi động clone nhớ chạy sudo crontab -e
để ngăn công việc cron được chọn chạy.
- Tệp nhân bản
/etc/fstab
được sửa đổi với UUID thích hợp cho phân vùng được bật.
- Tệp nhân bản
/boot/grub/grub.cfg
được sửa đổi với UUID thích hợp để khởi động nhân bản thành công. Các tập tin nhân bản quiet splash
được thay đổi thành nosplash
để bạn nhận được cuộn tin nhắn thiết bị đầu cuối. Điều này giúp nhận thức trực quan khởi động một bản sao thay vì phiên bản "Real".
update-grub
được chạy để cập nhật Grub với các tùy chọn menu mới trỏ đến phân vùng nhân bản.
- Các tập tin nhân bản
/etc/update-manager/release-upgrades
được sửa đổi để thay đổi Prompt=never
thành Prompt=lts
. Khi bạn khởi động bản sao và thực hiện do-release-upgrade -d
việc này, cho phép Ubuntu 16.04 được nâng cấp lên 18.04.
- Trước khi nhân bản, màn hình xác nhận được hiển thị (hiển thị trong phần tiếp theo) và bạn phải nhập y / Y để tiếp tục.
Màn hình xác nhận
Sau khi chọn phân vùng nhân bản đích, trước tiên, nó được xác minh là ext4
loại phân vùng và chưa được gắn kết. Nếu kiểm tra này được thông qua, một thông báo xác nhận sẽ xuất hiện:
=====================================================================
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:
Trong ví dụ này, một bản sao trước đó đã được chọn để recloning. Không gian có sẵn trên bản sao là một điểm câm vì chúng ta đã biết có đủ không gian có sẵn.
Nếu bạn có nhiều cài đặt Ubuntu, vui lòng xác minh rằng bạn đã chọn đúng phân vùng để sao chép Ubuntu hiện đang khởi động, được gắn dưới dạng /
(root), thành.
Đây là cơ hội cuối cùng để bạn hủy bỏ bằng cách nhấn bất kỳ phím nào ngoại trừ y
hoặc Y
.
Danh sách đầu ra
Khi bạn chạy tập lệnh, bạn sẽ nhận được đầu ra này (không bao gồm đầu ra đã được liệt kê ở trên):
=====================================================================
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
hiển thị trạng thái cho bản sao mới
Khi nhân bản lần đầu tiên, rsync
sẽ cập nhật từ 0 đến 100% tất cả các tệp được tạo. Không có tệp nào sẽ bị xóa hoặc thay đổi vì bản sao trống:
rsync
hiển thị trạng thái khi recloning
Khi rsync
reclones nó không bao giờ truy cập 100%
vì các tệp không bao giờ thay đổi sẽ không được sao chép. Sẽ có sự chậm trễ trong tiến trình cập nhật khi rsync
quét tệp tiếp theo sẽ được sao chép và khi nó xóa các tệp mới được tạo trong bản sao chưa từng tồn tại trong bản gốc:
Kịch bản Bash - clone-ubuntu.sh
#!/bin/bash
# NAME: clone-ubuntu.sh
# PATH: /usr/local/bin
# DESC: Written for AU Q&A: /ubuntu/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:
# /ubuntu/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
Sao chép và dán mã bash ở trên vào một tệp mới được gọi là /usr/local/bin/clone-ubuntu.sh
. Sau đó làm cho tệp mới có thể thực thi được bằng cách sử dụng:
sudo chmod a+x /usr/local/bin/clone-ubuntu.sh
Để gọi tập lệnh, sử dụng:
sudo clone-ubuntu.sh
Cách nâng cấp 16.04 LTS sao chép lên Ubuntu 18.04 LTS
Đây là phần "phần thưởng" có thể khiến nhiều người quan tâm.
Khởi động lại máy của bạn. Các grub
menu sẽ chứa một tùy chọn menu trỏ mới cho phân vùng nhân bản. Bạn cũng có thể chọn một phiên bản kernel cụ thể từ menu Tùy chọn nâng cao của bản sao .
Một cách để chuyển đổi 16.04 LTS nhân bản thành 18.04 LTS là chạy:
sudo do-release-upgrade
Lưu ý -d
cờ được yêu cầu trước ngày 26 tháng 7 năm 2018 nhưng không còn cần thiết nữa.
Đọc kỹ xác nhận nâng cấp 18.04 .
Trước khi tiến hành đảm bảo khóa màn hình không hoạt động được tắt. Quá trình nâng cấp có thể bị sập nếu máy tính của bạn chuyển sang màn hình khóa do bàn phím không hoạt động.
Tóm tắt quá trình nâng cấp 18.04
Phần này sẽ dành riêng cho máy vì các ứng dụng khác nhau được cài đặt bởi những người dùng khác nhau. Dưới đây là một bản tóm tắt ngắn gọn mà tôi đã thực hiện dựa trên ghi chú và bộ nhớ:
- xác nhận để tiến hành: ENTER
- các gói sẽ bị xóa: Y
- thay thế longind.conf: Y
- Tệp cấu hình '/etc/sane.d/dll.conf', mặc định N, lấy Y
- '/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf' Hãy mặc định N
- Tệp cấu hình '/etc/pulse/default.pa' mặc định N, lấy Y
- Tệp cấu hình '/etc/grub.d/30_os-prober' 'mặc định N, lấy N
- Cấu hình menu grub toàn màn hình xuất hiện. Chọn tùy chọn: giữ phiên bản cục bộ hiện đang cài đặt
- Tệp cấu hình '/etc/cron.d/anacron', N mặc định, đưa Y để xem những gì
- Một thông báo lỗi nhiều lần: /sbin/ldconfig.real: Cảnh báo: bỏ qua tệp cấu hình không thể mở: /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf: Không có tệp hoặc thư mục như vậy
- Không chuẩn: Tệp cấu hình '/etc/vnstat.conf' (hiển thị chênh lệch 1,13 so với 1,18) lấy Y
- 220 gói sẽ được gỡ bỏ. (có thể mất hàng giờ) nhập Y
- Để hoàn thành nâng cấp, cần phải khởi động lại. Lấy Y
Lưu ý bước 10 hầu hết mọi người sẽ không bao giờ nhìn thấy. Tôi có cài đặt trình điều khiển nVidia cũ trên Ubuntu 16.04. Tôi chưa bao giờ gỡ bỏ hoàn toàn. Nó được bao gồm bởi vì bạn có thể có các gói cũ tương tự không bao giờ được gỡ bỏ hoàn toàn.
Grub thay đổi menu khởi động để sao chép theo UEFI
Không giống như các bản nâng cấp 18.04, tôi thấy bản nâng cấp 18.04.1 đã thay đổi cấu hình Grub UEFI để sử dụng menu grub của bản sao thay vì menu grub ban đầu theo câu trả lời này: Khởi động kép và các tệp /boot/grub/grub.cfg - đó là một đã sử dụng?
$ 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.
Chạy sudo update-grub
sau khi khởi động phân vùng ban đầu không đủ để thay đổi grub.cfg
được tải bởi grub. Bạn cần sử dụng sudo grub-install
để buộc grub sử dụng cấu hình của phân vùng ban đầu.
Cả phân vùng gốc và phân vùng clone đều có thể sử dụng update-grub
để duy trì /boot/grub/grub.cfg
tệp riêng của chúng nhưng chỉ có thể sử dụng một tệp trong khi khởi động.
Tất nhiên, nếu bạn muốn grub sử dụng menu grub của Clone, đừng thực hiện các bước trên trên phân vùng ban đầu.
Chỉnh sửa lịch sử
Chỉnh sửa ngày 6 tháng 5 năm 2018 - Hiển thị thông tin cho phân vùng (mục tiêu) trống rỗng được sửa.
Chỉnh sửa ngày 26 tháng 8 năm 2018 - --inplace
Tùy chọn sử dụng với rsync
các tệp lớn như tệp rác 2 GB không được sao chép trên bản sao trong quá trình sao chép. Điều này có thể dẫn đến lỗi "hết dung lượng đĩa". Nhận xét /etc/cron.d
ghi đè vì người dùng có thể muốn giữ hoặc muốn hoàn toàn một thư mục khác. Cập nhật hướng dẫn sử dụng do-release-upgrade
mà không cần -d
gắn cờ vì Ubuntu 18.04.1 LTS hiện đã được phát hành.