Сценарий Bash для клонирования Ubuntu на новый раздел для тестирования обновления 18.04 LTS

Короткий ответ: нет, вы не можете его отключить.

Ubuntu, основанный на Debian, работает так же, как Debian. Если вы вошли в систему как root (который является идентификатором пользователя 0, вам не нужно будет использовать sudo для повышенной привилегии, вы уже имеете его.

Разница в том, что когда вы установите Ubuntu, он предложит вам ввести имя пользователя и пароль для его регистрации и добавить этого пользователя в группу sudoers. Как упоминалось в комментариях, по умолчанию на Ubuntu (что является еще одним отличием) учетная запись root отключена. это не рекомендуется, вы можете включить его, просто установив для него пароль:

$ sudo passwd root

Тогда вы можете войти в систему как root ..., который будет таким же, как и вход в систему с правами root на Debian .

Угроза безопасности (среди многих) к тому, что учетная запись root включила его, что учетная запись root является общей для всех Linux-систем. Хакеры запускают скрипты, чтобы попытаться проникнуть на компьютеры с правами root. - это уровень защиты.

Что касается отключения sudo, это не то, что вы можете сделать на no, вы не можете отключить его. или Ubuntu. Обычный пользователь на обеих ОС должно быть доступ к использованию повышенных команд. По содержанию в вашем вопросе вы уже знакомы с вариациями sudo и sudo su -.

Если бы у обычного пользователя был полный доступ к корню, это было бы точно так же процесс с Ubuntu как с Debian.

Debian

По умолчанию идентификаторы пользователя ниже 1000 скрыты и не являются отображается на экране входа в систему. Вы можете настроить lightdm, чтобы разрешить ручные логины с этими шагами:

Отредактируйте файл конфигурации /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf. Добавьте эту строку: greeter-show-manual-login=true Перезапустите службу lightdm с помощью: sudo systemctl restart lightdm Затем используйте новую функцию входа, чтобы вручную ввести идентификатор пользователя root и пароль.

Чтобы отключить учетную запись root (вернув ее по умолчанию), выполните следующую команду:

$ sudo passwd -dl root

Вы можете найти другие сведения о том, как это работает на Ubuntu по адресу: RootSudo - Справка сообщества Wiki

8
задан 29 April 2018 в 00:23

6 ответов

редактирование 6 мая 2018 года - информационный дисплей для пустой клон (целевой) раздел исправлены.

этот скрипт будет легко и безопасно копировать 16.04 ЛЦ в разделе обновления до 18.04 ЛЦ:

важные моменты:

необходимо создать пустой [ф7] раздел достаточно большой, чтобы провести в Ubuntu 16.04 клон при вызове скрипта [ф8] раздел не может быть смонтирован. Скрипт автоматически монтирует и размонтирует раздел. Команда [ф9] используется для копирования файлов с [ф10] раздел клон. При первом запуске [ф11] это займет несколько минут. Второй раз, когда вы запустите скрипт обновляются только изменения файла, и это должно занять меньше минуты. Вы можете запустить этот скрипт и перезагрузить несколько раз. Каких-либо новых данных на целевом клон будет удален, чтобы отразить текущие [ф12] файлы и каталоги. Все хрон [от f13] (перезагрузка) рабочие места переехали в новый подкаталог [ф14]. После загрузки помнишь клон для запуска [ф15], чтобы предотвратить некоторые задания от бега. Клонированный файл [ф16] изменяется с соответствующими uuid для раздела она на. Клонированный файл [f17 в] изменяется с соответствующими uuid для успешной загрузки клон. [Клонированный файл ф18] меняется на [зг19] так что вы получите прокрутки сообщениями терминала. Это дает визуальное понимание загрузке клон, а не "реальной" версии. [20 фунтов], чтобы обновить grub с новым меню, указывая на клонированный раздел. Клонированный файл [клавиши f21] изменить изменить [ф22] для [ф23]. При загрузке клона и проанализировать [ф24] это позволяет убунту 16.04 быть повышен до 18.04. Перед клонированием отобразится экран подтверждения (см. следующий раздел), и вы должны ввести г/г, чтобы продолжить.

экран подтверждения

после выбора целевой раздел клон это первый проверенный для [f25 привод датчика] Тип раздела и не примонтирован. Если этот тест пройден, сообщение о подтверждении появится:

[Ф1]

в этом примере предыдущий клон был выбран для recloning. Доступное пространство на клон-это точка отключить, потому что мы уже знаем, что есть достаточно свободного места.

если у вас есть несколько установок Ubuntu, пожалуйста, убедитесь, что вы выбрали правильный раздел для клонирования в настоящее время загружается убунту, установленные как [ф26] (корень), чтобы.

это твой последний шанс прервать нажатием любой клавиши, кроме y или [ф28].

вывод списка

при выполнении скрипта вы получите этот выход (за исключением выходных уже перечисленных выше):

[Ф2]

rsync отображение статуса

а [ф30] команда клонов файлов из Ubuntu 16.04 LTS для (или какой бы версии вы загрузились с) в раздел клонировать его обновления дисплея с прогрессом. Когда вы recloning он никогда не попадает [ф31] потому что не все файлы должны быть скопированы во второй раз:

bash-скрипт - [f32 из]

[Ф3] [и D40]скопировать и вставить приведенный выше код в bash в новый файл под названием /usr/local/bin/clone-ubuntu.sh. Затем сделать новый исполняемый файл через:[!и D40] [Ф4] [dрайвер d41]для вызова используйте скрипт:[!dрайвер d41] [ф5] [d43 см.]как обновить клона в Ubuntu 18.04 ЛЦ[!d43 см.]

перезагрузить компьютер. Меню grub будет содержать новые редактирование 6 мая 2018 года[!меню Д1] указывая на клонированный раздел. Выберите подходящую версию ядра (обычно последняя версия, если сломан) из меню Дополнительные параметры.

, чтобы преобразовать клонированный 18.04 16.04 LTS на LTS вы должны выполнить:

[ф6]

Примечание [ф35] флаг необходим, пока убунту 18.04.1 выпущен на 26 июля 2018 года. После этого Вы не должны использовать [f36 в] флаг или вы могли бы закончить с Ubuntu бета-18.10 или иной версии будущего развития.

17.10 пользователям не нужен [фунции f37] флаг. Они обновляются до первого выпуска, т. е. до 18.04.1 выпуска.

17.10.

перед началом лечения неактивных блокировки экрана выключена. Это может повредить процессу обновления, если ваш компьютер переходит к экрану блокировки.

[о d54]итог процесса обновления[!о d54]

в этом разделе будут конкретные машины, потому что разные приложения установлены различные пользователи. Вот краткое резюме я сделал на основе заметок и памяти:

подтверждения, чтобы продолжить: ввести пакеты будут удалены: г заменить longind.конф: у конфигурационный файл/etc/вменяемый.д/и dll.conf' и, по умолчанию N, принять Y 'в/etc/networkmanager-а/соnf.д/По умолчанию-беспроводной доступ в Интернет Wi-режим энергосбережения-на.conf' и принять настройки по умолчанию файл Н-файл/etc/пульс/по умолчанию.па' по умолчанию N возьмем у конфигурации файл/etc/харч.д/30_os-зондового контроля" по умолчанию N возьмем N полное меню экрана загрузки конфигурации появляется. Опции: сохранить в настоящее время локальная версия установлена конфигурации файл/etc/cron-а.д/запускаемые программы', по умолчанию N возьмем Y, чтобы увидеть, что несколько раз сообщение об ошибке: файл /sbin/ldconfig из-под.реально: предупреждение: игнорирование конфигурации файл, который не может быть открыт: в /etc/ЛД.так.конф.д/архитектуру x86_64-Linux по-gnu_EGL.конф: нет такого файла или каталога нестандартной конфигурации файл/etc/vnstat.конф' (отобразить различия 1.13 против 1.18) принимают г 220 пакеты будут удалены. (может занять несколько часов) введите Y для завершения обновления требуется перезагрузка. Взять Г [г70]Примечание шаг 10 большинство людей никогда не увидите. У меня есть старый установка драйвера nvidia на моего Ubuntu 16.04 я никогда не получил вокруг, чтобы полностью извлекать. Он включен, потому что вы могли иметь похожие старые пакеты не полностью удалены.[!г70]
6
ответ дан 22 May 2018 в 11:13
  • 1
    +1. Спасибо за полезный инструмент :-) – sudodus 29 April 2018 в 03:30
  • 2
    @sudodus Я надеюсь, что люди используют этот инструмент, прежде чем приступить к обновлению с обновлением 18.04. В разной степени они могут использовать это как учебное пособие и повторять шаги вручную, используя загрузку Live USB. Трагично читать так много ошибок, которые люди испытывают в новом 18.04, потому что они обновили без тестирования в первую очередь и совершили, уничтожив свои предыдущие 16.04 , 17.04 или [d2 ] 17.10 установка. К сожалению, я видел подобные вещи много раз за десятилетия. Спасибо за ваш голос! Это помогает усилить усилия, прилагаемые к таким начинаниям, как clone-ubuntu.sh. Но я все равно использовал это 4 раза! – WinEunuuchs2Unix 5 May 2018 в 21:23
  • 3
    Я еще не использовал ваш скрипт, но я понимаю, что он очень полезен, и я намерен его использовать. - Я смог обновить с 8.04 до 10.04 до 12.04, который я использовал в течение длительного времени. Но когда я отправился на обновление с 14.04 по 16.04, я потерпел неудачу. У меня были хорошие резервные копии, поэтому я сделал новую установку 16.04 и позже скопировал, что я хотел сохранить и проверил на твики, скрипты, псевдонимы и установленные программы. - Кстати, я работаю над сценарием , чтобы создавать и обновлять постоянные живые диски «home-rw» . Добро пожаловать, чтобы попробовать :-) – sudodus 5 May 2018 в 21:42
  • 4
    Незначительная опечатка в вашей ссылке: Я тестировал все из них в 8.04 LTS должен прочитать 18.04 LTS в конце. Ваш инструмент - номер 1 для многих людей, которым не хватает места на жестком диске, чтобы клонировать их Ubuntu 16.04. Это также проще (хотя и медленнее), чем создание нового раздела на жестком диске. – WinEunuuchs2Unix 5 May 2018 в 22:04
  • 5
    Я исправил опечатку, спасибо :-) Вы правы в клонировании (или копировании содержимого) на жесткий диск. Но для людей, которые хотят носить свою постоянную живую систему в кармане, это удобно делать с помощью моего инструмента. – sudodus 5 May 2018 в 22:34

редактирование 6 мая 2018 года - информационный дисплей для пустой клон (целевой) раздел исправлены.

этот скрипт будет легко и безопасно копировать 16.04 ЛЦ в разделе обновления до 18.04 ЛЦ:

важные моменты:

необходимо создать пустой ext4 раздел достаточно большой, чтобы провести в Ubuntu 16.04 клон при вызове скрипта clone-ubuntu.sh раздел не может быть смонтирован. Скрипт автоматически монтирует и размонтирует раздел. Команда rsync используется для копирования файлов с / раздел клон. При первом запуске clone-ubuntu.sh это займет несколько минут. Второй раз, когда вы запустите скрипт обновляются только изменения файла, и это должно занять меньше минуты. Вы можете запустить этот скрипт и перезагрузить несколько раз. Каких-либо новых данных на целевом клон будет удален, чтобы отразить текущие / файлы и каталоги. Все хрон [от f13] (перезагрузка) рабочие места переехали в новый подкаталог /etc/cron.d/hold. После загрузки помнишь клон для запуска sudo crontab -e, чтобы предотвратить некоторые задания от бега. Клонированный файл /etc/fstab изменяется с соответствующими uuid для раздела она на. Клонированный файл [f17 в] изменяется с соответствующими uuid для успешной загрузки клон. [Клонированный файл ф18] меняется на [зг19] так что вы получите прокрутки сообщениями терминала. Это дает визуальное понимание загрузке клон, а не "реальной" версии. [20 фунтов], чтобы обновить grub с новым меню, указывая на клонированный раздел. Клонированный файл [клавиши f21] изменить изменить Prompt=never для Prompt=lts. При загрузке клона и проанализировать do-release-upgrade -d это позволяет убунту 16.04 быть повышен до 18.04. Перед клонированием отобразится экран подтверждения (см. следующий раздел), и вы должны ввести г/г, чтобы продолжить.

экран подтверждения

после выбора целевой раздел клон это первый проверенный для [f25 привод датчика] Тип раздела и не примонтирован. Если этот тест пройден, сообщение о подтверждении появится:

===================================================================== 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:

в этом примере предыдущий клон был выбран для recloning. Доступное пространство на клон-это точка отключить, потому что мы уже знаем, что есть достаточно свободного места.

если у вас есть несколько установок Ubuntu, пожалуйста, убедитесь, что вы выбрали правильный раздел для клонирования в настоящее время загружается убунту, установленные как / (корень), чтобы.

это твой последний шанс прервать нажатием любой клавиши, кроме y или Y.

вывод списка

при выполнении скрипта вы получите этот выход (за исключением выходных уже перечисленных выше):

===================================================================== 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. * * * ===================================================================== Moving '/mnt/clone16.04/etc/cron.d' to '.../hold' to prevent running. After booting clone, move back individual files you want to run: removed '/mnt/clone16.04/etc/cron.d/anacron' removed '/mnt/clone16.04/etc/cron.d/cycle-grub-background' removed '/mnt/clone16.04/etc/cron.d/display-auto-brightness' rm: cannot remove '/mnt/clone16.04/etc/cron.d/hold': Is a directory removed '/mnt/clone16.04/etc/cron.d/nvidia-hdmi-sound' removed '/mnt/clone16.04/etc/cron.d/touch-vmlinuz' removed '/mnt/clone16.04/etc/cron.d/turn-off-hyper-threading' ===================================================================== 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 отображение статуса

а rsync команда клонов файлов из Ubuntu 16.04 LTS для (или какой бы версии вы загрузились с) в раздел клонировать его обновления дисплея с прогрессом. Когда вы recloning он никогда не попадает 100% потому что не все файлы должны быть скопированы во второй раз:

bash-скрипт - [f32 из]

#!/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. # $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 /* "$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 # 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:" echo "" 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 [и D40]скопировать и вставить приведенный выше код в bash в новый файл под названием /usr/local/bin/clone-ubuntu.sh. Затем сделать новый исполняемый файл через:[!и D40] sudo chmod a+x /usr/local/bin/clone-ubuntu.sh [dрайвер d41]для вызова используйте скрипт:[!dрайвер d41] sudo clone-ubuntu.sh [d43 см.]как обновить клона в Ubuntu 18.04 ЛЦ[!d43 см.]

перезагрузить компьютер. Меню grub будет содержать новые редактирование 6 мая 2018 года[!меню Д1] указывая на клонированный раздел. Выберите подходящую версию ядра (обычно последняя версия, если сломан) из меню Дополнительные параметры.

, чтобы преобразовать клонированный 18.04 16.04 LTS на LTS вы должны выполнить:

sudo do-release-upgrade -d

Примечание -d флаг необходим, пока убунту 18.04.1 выпущен на 26 июля 2018 года. После этого Вы не должны использовать [f36 в] флаг или вы могли бы закончить с Ubuntu бета-18.10 или иной версии будущего развития.

17.10 пользователям не нужен [fунции f37] флаг. Они обновляются до первого выпуска, т. е. до 18.04.1 выпуска.

17.10.

перед началом лечения неактивных блокировки экрана выключена. Это может повредить процессу обновления, если ваш компьютер переходит к экрану блокировки.

[о d54]итог процесса обновления[!о d54]

в этом разделе будут конкретные машины, потому что разные приложения установлены различные пользователи. Вот краткое резюме я сделал на основе заметок и памяти:

подтверждения, чтобы продолжить: ввести пакеты будут удалены: г заменить longind.конф: у конфигурационный файл/etc/вменяемый.д/и dll.conf' и, по умолчанию N, принять Y 'в/etc/networkmanager-а/соnf.д/По умолчанию-беспроводной доступ в Интернет Wi-режим энергосбережения-на.conf' и принять настройки по умолчанию файл Н-файл/etc/пульс/по умолчанию.па' по умолчанию N возьмем у конфигурации файл/etc/харч.д/30_os-зондового контроля" по умолчанию N возьмем N полное меню экрана загрузки конфигурации появляется. Опции: сохранить в настоящее время локальная версия установлена конфигурации файл/etc/cron-а.д/запускаемые программы', по умолчанию N возьмем Y, чтобы увидеть, что несколько раз сообщение об ошибке: файл /sbin/ldconfig из-под.реально: предупреждение: игнорирование конфигурации файл, который не может быть открыт: в /etc/ЛД.так.конф.д/архитектуру x86_64-Linux по-gnu_EGL.конф: нет такого файла или каталога нестандартной конфигурации файл/etc/vnstat.конф' (отобразить различия 1.13 против 1.18) принимают г 220 пакеты будут удалены. (может занять несколько часов) введите Y для завершения обновления требуется перезагрузка. Взять Г [г70]Примечание шаг 10 большинство людей никогда не увидите. У меня есть старый установка драйвера nvidia на моего Ubuntu 16.04 я никогда не получил вокруг, чтобы полностью извлекать. Он включен, потому что вы могли иметь похожие старые пакеты не полностью удалены.[!г70]
7
ответ дан 17 July 2018 в 16:04

редактирование 6 мая 2018 года - информационный дисплей для пустой клон (целевой) раздел исправлены.

этот скрипт будет легко и безопасно копировать 16.04 ЛЦ в разделе обновления до 18.04 ЛЦ:

важные моменты:

необходимо создать пустой ext4 раздел достаточно большой, чтобы провести в Ubuntu 16.04 клон при вызове скрипта clone-ubuntu.sh раздел не может быть смонтирован. Скрипт автоматически монтирует и размонтирует раздел. Команда rsync используется для копирования файлов с / раздел клон. При первом запуске clone-ubuntu.sh это займет несколько минут. Второй раз, когда вы запустите скрипт обновляются только изменения файла, и это должно занять меньше минуты. Вы можете запустить этот скрипт и перезагрузить несколько раз. Каких-либо новых данных на целевом клон будет удален, чтобы отразить текущие / файлы и каталоги. Все хрон [от f13] (перезагрузка) рабочие места переехали в новый подкаталог /etc/cron.d/hold. После загрузки помнишь клон для запуска sudo crontab -e, чтобы предотвратить некоторые задания от бега. Клонированный файл /etc/fstab изменяется с соответствующими uuid для раздела она на. Клонированный файл [f17 в] изменяется с соответствующими uuid для успешной загрузки клон. [Клонированный файл ф18] меняется на [зг19] так что вы получите прокрутки сообщениями терминала. Это дает визуальное понимание загрузке клон, а не "реальной" версии. [20 фунтов], чтобы обновить grub с новым меню, указывая на клонированный раздел. Клонированный файл [клавиши f21] изменить изменить Prompt=never для Prompt=lts. При загрузке клона и проанализировать do-release-upgrade -d это позволяет убунту 16.04 быть повышен до 18.04. Перед клонированием отобразится экран подтверждения (см. следующий раздел), и вы должны ввести г/г, чтобы продолжить.

экран подтверждения

после выбора целевой раздел клон это первый проверенный для [f25 привод датчика] Тип раздела и не примонтирован. Если этот тест пройден, сообщение о подтверждении появится:

===================================================================== 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:

в этом примере предыдущий клон был выбран для recloning. Доступное пространство на клон-это точка отключить, потому что мы уже знаем, что есть достаточно свободного места.

если у вас есть несколько установок Ubuntu, пожалуйста, убедитесь, что вы выбрали правильный раздел для клонирования в настоящее время загружается убунту, установленные как / (корень), чтобы.

это твой последний шанс прервать нажатием любой клавиши, кроме y или Y.

вывод списка

при выполнении скрипта вы получите этот выход (за исключением выходных уже перечисленных выше):

===================================================================== 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. * * * ===================================================================== Moving '/mnt/clone16.04/etc/cron.d' to '.../hold' to prevent running. After booting clone, move back individual files you want to run: removed '/mnt/clone16.04/etc/cron.d/anacron' removed '/mnt/clone16.04/etc/cron.d/cycle-grub-background' removed '/mnt/clone16.04/etc/cron.d/display-auto-brightness' rm: cannot remove '/mnt/clone16.04/etc/cron.d/hold': Is a directory removed '/mnt/clone16.04/etc/cron.d/nvidia-hdmi-sound' removed '/mnt/clone16.04/etc/cron.d/touch-vmlinuz' removed '/mnt/clone16.04/etc/cron.d/turn-off-hyper-threading' ===================================================================== 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 отображение статуса

а rsync команда клонов файлов из Ubuntu 16.04 LTS для (или какой бы версии вы загрузились с) в раздел клонировать его обновления дисплея с прогрессом. Когда вы recloning он никогда не попадает 100% потому что не все файлы должны быть скопированы во второй раз:

bash-скрипт - [f32 из]

#!/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. # $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 /* "$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 # 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:" echo "" 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 [и D40]скопировать и вставить приведенный выше код в bash в новый файл под названием /usr/local/bin/clone-ubuntu.sh. Затем сделать новый исполняемый файл через:[!и D40] sudo chmod a+x /usr/local/bin/clone-ubuntu.sh [dрайвер d41]для вызова используйте скрипт:[!dрайвер d41] sudo clone-ubuntu.sh [d43 см.]как обновить клона в Ubuntu 18.04 ЛЦ[!d43 см.]

перезагрузить компьютер. Меню grub будет содержать новые редактирование 6 мая 2018 года[!меню Д1] указывая на клонированный раздел. Выберите подходящую версию ядра (обычно последняя версия, если сломан) из меню Дополнительные параметры.

, чтобы преобразовать клонированный 18.04 16.04 LTS на LTS вы должны выполнить:

sudo do-release-upgrade -d

Примечание -d флаг необходим, пока убунту 18.04.1 выпущен на 26 июля 2018 года. После этого Вы не должны использовать [f36 в] флаг или вы могли бы закончить с Ubuntu бета-18.10 или иной версии будущего развития.

17.10 пользователям не нужен [fунции f37] флаг. Они обновляются до первого выпуска, т. е. до 18.04.1 выпуска.

17.10.

перед началом лечения неактивных блокировки экрана выключена. Это может повредить процессу обновления, если ваш компьютер переходит к экрану блокировки.

[о d54]итог процесса обновления[!о d54]

в этом разделе будут конкретные машины, потому что разные приложения установлены различные пользователи. Вот краткое резюме я сделал на основе заметок и памяти:

подтверждения, чтобы продолжить: ввести пакеты будут удалены: г заменить longind.конф: у конфигурационный файл/etc/вменяемый.д/и dll.conf' и, по умолчанию N, принять Y 'в/etc/networkmanager-а/соnf.д/По умолчанию-беспроводной доступ в Интернет Wi-режим энергосбережения-на.conf' и принять настройки по умолчанию файл Н-файл/etc/пульс/по умолчанию.па' по умолчанию N возьмем у конфигурации файл/etc/харч.д/30_os-зондового контроля" по умолчанию N возьмем N полное меню экрана загрузки конфигурации появляется. Опции: сохранить в настоящее время локальная версия установлена конфигурации файл/etc/cron-а.д/запускаемые программы', по умолчанию N возьмем Y, чтобы увидеть, что несколько раз сообщение об ошибке: файл /sbin/ldconfig из-под.реально: предупреждение: игнорирование конфигурации файл, который не может быть открыт: в /etc/ЛД.так.конф.д/архитектуру x86_64-Linux по-gnu_EGL.конф: нет такого файла или каталога нестандартной конфигурации файл/etc/vnstat.конф' (отобразить различия 1.13 против 1.18) принимают г 220 пакеты будут удалены. (может занять несколько часов) введите Y для завершения обновления требуется перезагрузка. Взять Г [г70]Примечание шаг 10 большинство людей никогда не увидите. У меня есть старый установка драйвера nvidia на моего Ubuntu 16.04 я никогда не получил вокруг, чтобы полностью извлекать. Он включен, потому что вы могли иметь похожие старые пакеты не полностью удалены.[!г70]
7
ответ дан 23 July 2018 в 16:58

Проблемы с обновлением с предыдущих выпусков до 18.04 LTS

Совсем не просто перейти с предыдущих выпусков на 18.04 LTS. Я не знаю, было ли в прошлом больше проблем, чем такое обновление, но люди, которые выпускают обновление, теперь рискуют сами собой. С другой стороны, они обнаруживают ошибки, и если сообщается об ошибках, это поможет разработать инструмент обновления, а также отладить систему LTS Ubuntu 18.04.

Это означает, что люди, выпускающие обновление теперь рискните , чтобы дождаться, когда обновление будет официально выпущено с выпуском первой точки (18.04.1 LTS), будет более плавным.

Тестирование перед выполнением полного обновления ... [ ! d7]

Метод, описанный здесь @ WinEunuuchs2Unix, позволяет протестировать с копией реальной системы, если обновление до 18.04 LTS будет работать с вашей текущей [более или менее модифицированной] операционной системой с вашим компьютерным оборудованием. [ ! d8]

Это может предотвратить несколько бедствий с поврежденной операционной системой.

Я еще не использовал скрипт @ WinEunuuchs2Unix, но я понимаю, что он очень полезен, и я намереваюсь его использовать. Я смог обновить с 8.04 до 10.04 до 12.04, который я использовал в течение длительного времени. Но когда я отправился на обновление с 14.04 по 16.04, я потерпел неудачу и не смог найти ошибки.

... и если проблемы, сделайте новую установку

У меня был получится более плавная поездка , поэтому я сделал новую установку 16.04, а затем скопировал, что я хотел сохранить и проверил на твики, скрипты, псевдонимы и установленные программы. Если бы я использовал метод @ WinEunuuchs2Unix, я раньше видел проблему, я бы сразу установил новую установку.

Обновление постоянной системы live

Стойкие живые системы используются, чтобы получить очень портативные системы Ubuntu, которые иногда используются для тестирования, но иногда используются в течение длительного времени.

Это известная проблема, что вы не должны обновлять & amp; обновите такую ​​систему, как вы, с установленной системой, потому что рано или поздно она будет повреждена. Кроме того, вы застряли с драйверами ядра и ядра, которые поставляются с изо-файлом, потому что они запускаются до того, как запущена система наложения.

Но обычно можно сохранить каталог /home как вы можете, когда вы делаете новую установку с отдельным «домашним» разделом. Если вы создаете раздел home-rw, постоянная живая система найдет и использует его автоматически во время загрузки.

Я разрабатываю и тестирую shellscript, mk-persistent-live_with_home-rw, который может создавать постоянный live system с разделом home-rw, и это может позже обновить его,

заменить iso-файл на более новый. По крайней мере, вам следует обновить, когда будет выпущен новый iso-файл, но вы также можете обновить систему LTS раз в месяц и использовать текущие ежедневные файлы iso из тестового трекера, изменить grub для нового файла iso. стереть (переформатировать) файл casper-rw, в котором хранятся изменения операционной системы (так что вы должны переустановить пакеты программ, добавленные в систему), сохраните раздел home-rw с вашими личными файлами, настройками и настройками. См. Эту ссылку для получения более подробной информации.

Дополнительная ссылка

Общие советы для людей, которые хотят протестировать последнюю и самую лучшую версию Ubuntu, можно найти по следующей ссылке:

if сообщается об ошибках

1
ответ дан 22 May 2018 в 11:13
  • 1
    Дополнительная ссылка - приятное прикосновение. Чем больше людей сообщают о проблемах, тем больше проблем, которые будут решены для других. – WinEunuuchs2Unix 6 May 2018 в 03:44
  • 2
    Очень хороший момент для пользователей LTS (осторожно по своей природе) дождаться выхода первой версии 18.04.1. Для крупных организаций они могут по-прежнему захотеть клонировать 16.04 в тестовый раздел и обновлять его до 18.04 для целей обучения персонала. Пользователи будут иметь доступ к данным, к которым они привыкли. Разумеется, ИТ-специалисты извлекут выгоду из обширного тестирования клонированных данных за месяцы до 26 июля. – WinEunuuchs2Unix 6 May 2018 в 19:38

Проблемы с обновлением с предыдущих выпусков до 18.04 LTS

Совсем не просто перейти с предыдущих выпусков на 18.04 LTS. Я не знаю, было ли в прошлом больше проблем, чем такое обновление, но люди, которые выпускают обновление, теперь рискуют сами собой. С другой стороны, они обнаруживают ошибки, и если сообщается об ошибках, это поможет разработать инструмент обновления, а также отладить систему LTS Ubuntu 18.04.

Это означает, что люди, выпускающие обновление теперь рискните , чтобы дождаться, когда обновление будет официально выпущено с выпуском первой точки (18.04.1 LTS), будет более плавным.

Тестирование перед выполнением полного обновления ... [ ! d7]

Метод, описанный здесь @ WinEunuuchs2Unix, позволяет протестировать с копией реальной системы, если обновление до 18.04 LTS будет работать с вашей текущей [более или менее модифицированной] операционной системой с вашим компьютерным оборудованием. [ ! d8]

Это может предотвратить несколько бедствий с поврежденной операционной системой.

Я еще не использовал скрипт @ WinEunuuchs2Unix, но я понимаю, что он очень полезен, и я намереваюсь его использовать. Я смог обновить с 8.04 до 10.04 до 12.04, который я использовал в течение длительного времени. Но когда я отправился на обновление с 14.04 по 16.04, я потерпел неудачу и не смог найти ошибки.

... и если проблемы, сделайте новую установку

У меня был получится более плавная поездка , поэтому я сделал новую установку 16.04, а затем скопировал, что я хотел сохранить и проверил на твики, скрипты, псевдонимы и установленные программы. Если бы я использовал метод @ WinEunuuchs2Unix, я раньше видел проблему, я бы сразу установил новую установку.

Обновление постоянной системы live

Стойкие живые системы используются, чтобы получить очень портативные системы Ubuntu, которые иногда используются для тестирования, но иногда используются в течение длительного времени.

Это известная проблема, что вы не должны обновлять & amp; обновите такую ​​систему, как вы, с установленной системой, потому что рано или поздно она будет повреждена. Кроме того, вы застряли с драйверами ядра и ядра, которые поставляются с изо-файлом, потому что они запускаются до того, как запущена система наложения.

Но обычно можно сохранить каталог /home как вы можете, когда вы делаете новую установку с отдельным «домашним» разделом. Если вы создаете раздел home-rw, постоянная живая система найдет и использует его автоматически во время загрузки.

Я разрабатываю и тестирую shellscript, mk-persistent-live_with_home-rw, который может создавать постоянный live system с разделом home-rw, и это может позже обновить его,

заменить iso-файл на более новый. По крайней мере, вам следует обновить, когда будет выпущен новый iso-файл, но вы также можете обновить систему LTS раз в месяц и использовать текущие ежедневные файлы iso из тестового трекера, изменить grub для нового файла iso. стереть (переформатировать) файл casper-rw, в котором хранятся изменения операционной системы (так что вы должны переустановить пакеты программ, добавленные в систему), сохраните раздел home-rw с вашими личными файлами, настройками и настройками. См. Эту ссылку для получения более подробной информации.

Дополнительная ссылка

Общие советы для людей, которые хотят протестировать последнюю и самую лучшую версию Ubuntu, можно найти по следующей ссылке:

if сообщается об ошибках

1
ответ дан 17 July 2018 в 16:04

Проблемы с обновлением с предыдущих выпусков до 18.04 LTS

Совсем не просто перейти с предыдущих выпусков на 18.04 LTS. Я не знаю, было ли в прошлом больше проблем, чем такое обновление, но люди, которые выпускают обновление, теперь рискуют сами собой. С другой стороны, они обнаруживают ошибки, и если сообщается об ошибках, это поможет разработать инструмент обновления, а также отладить систему LTS Ubuntu 18.04.

Это означает, что люди, выпускающие обновление теперь рискните , чтобы дождаться, когда обновление будет официально выпущено с выпуском первой точки (18.04.1 LTS), будет более плавным.

Тестирование перед выполнением полного обновления ... [ ! d7]

Метод, описанный здесь @ WinEunuuchs2Unix, позволяет протестировать с копией реальной системы, если обновление до 18.04 LTS будет работать с вашей текущей [более или менее модифицированной] операционной системой с вашим компьютерным оборудованием. [ ! d8]

Это может предотвратить несколько бедствий с поврежденной операционной системой.

Я еще не использовал скрипт @ WinEunuuchs2Unix, но я понимаю, что он очень полезен, и я намереваюсь его использовать. Я смог обновить с 8.04 до 10.04 до 12.04, который я использовал в течение длительного времени. Но когда я отправился на обновление с 14.04 по 16.04, я потерпел неудачу и не смог найти ошибки.

... и если проблемы, сделайте новую установку

У меня был получится более плавная поездка , поэтому я сделал новую установку 16.04, а затем скопировал, что я хотел сохранить и проверил на твики, скрипты, псевдонимы и установленные программы. Если бы я использовал метод @ WinEunuuchs2Unix, я раньше видел проблему, я бы сразу установил новую установку.

Обновление постоянной системы live

Стойкие живые системы используются, чтобы получить очень портативные системы Ubuntu, которые иногда используются для тестирования, но иногда используются в течение длительного времени.

Это известная проблема, что вы не должны обновлять & amp; обновите такую ​​систему, как вы, с установленной системой, потому что рано или поздно она будет повреждена. Кроме того, вы застряли с драйверами ядра и ядра, которые поставляются с изо-файлом, потому что они запускаются до того, как запущена система наложения.

Но обычно можно сохранить каталог /home как вы можете, когда вы делаете новую установку с отдельным «домашним» разделом. Если вы создаете раздел home-rw, постоянная живая система найдет и использует его автоматически во время загрузки.

Я разрабатываю и тестирую shellscript, mk-persistent-live_with_home-rw, который может создавать постоянный live system с разделом home-rw, и это может позже обновить его,

заменить iso-файл на более новый. По крайней мере, вам следует обновить, когда будет выпущен новый iso-файл, но вы также можете обновить систему LTS раз в месяц и использовать текущие ежедневные файлы iso из тестового трекера, изменить grub для нового файла iso. стереть (переформатировать) файл casper-rw, в котором хранятся изменения операционной системы (так что вы должны переустановить пакеты программ, добавленные в систему), сохраните раздел home-rw с вашими личными файлами, настройками и настройками. См. Эту ссылку для получения более подробной информации.

Дополнительная ссылка

Общие советы для людей, которые хотят протестировать последнюю и самую лучшую версию Ubuntu, можно найти по следующей ссылке:

if сообщается об ошибках

1
ответ дан 23 July 2018 в 16:58
  • 1
    Дополнительная ссылка - приятное прикосновение. Чем больше людей сообщают о проблемах, тем больше проблем, которые будут решены для других. – WinEunuuchs2Unix 6 May 2018 в 03:44
  • 2
    Очень хороший момент для пользователей LTS (осторожно по своей природе) дождаться выхода первой версии 18.04.1. Для крупных организаций они могут по-прежнему захотеть клонировать 16.04 в тестовый раздел и обновлять его до 18.04 для целей обучения персонала. Пользователи будут иметь доступ к данным, к которым они привыкли. Разумеется, ИТ-специалисты извлекут выгоду из обширного тестирования клонированных данных за месяцы до 26 июля. – WinEunuuchs2Unix 6 May 2018 в 19:38

Другие вопросы по тегам:

Похожие вопросы: