Раздел Ubuntu не загружается после клонирования с помощью dd.

Вопрос или проблема

У меня есть сервер Ubuntu 14.0.4. Цель состоит в том, чтобы установка kickstart установила 2 установки Ubuntu бок о бок с возможностью двойной загрузки.

Ubuntu установлена нормально на sdaX. Я использовал dd для клонирования на sdaY. Я изменил UUID, fstab и даже могу загрузиться в sdaX и просматривать содержимое sdaY. Однако, когда я пытаюсь загрузиться в sdaY, я получаю /sbin/init No such file or directory и панику ядра.

Я отредактировал grub, чтобы увериться, что он смотрит на sdaY.

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

Примечание: И fdisk -l sda1, и sda5 говорят, что таблица разделов не найдена.

   Устройство Загруз.     Начало       Конец     Блоки  Id  Система
/dev/sda1   *        2048    13672447     6835200   83  Linux
/dev/sda2        13674494    41940991    14133249    5  Расширенный
/dev/sda5        13674496    27344895     6835200   83  Linux
/dev/sda6        27346944    29298687      975872   83  Linux
/dev/sda7        29300736    31252479      975872   83  Linux
/dev/sda8        31254528    33206271      975872   82  Linux swap / Solaris
/dev/sda9        33208320    41940991     4366336   83  Linux

Диск /dev/sda1: 6999 MB, 6999244800 байт
255 головок, 63 сектора/трек, 850 цилиндров, всего 13670400 секторов
Единицы = сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0x00000000 Диск /dev/sda1 не содержит допустимой таблицы разделов

Диск /dev/sda5: 6999 MB, 6999244800 байт
255 головок, 63 сектора/трек, 850 цилиндров, всего 13670400 секторов
Единицы = сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Идентификатор диска: 0x00000000Диск /dev/sda5 не содержит допустимой таблицы разделов

/dev/sda1: LABEL="xxx" UUID="ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35" TYPE="ext4"

/dev/sda5: LABEL="yyy" UUID="9f212aba-a7da-4137-a311-e517e11fb062" TYPE="ext4"

    #
    # НЕ ИЗМЕНЯЙТЕ ЭТОТ ФАЙЛ
    #
    # Он автоматически генерируется командой grub-mkconfig с использованием шаблонов
    # из /etc/grub.d и настроек из /etc/default/grub
    #

    ### НАЧАЛО /etc/grub.d/00_header ###
    if [ -s $prefix/grubenv ]; then
      set have_grubenv=true
      load_env
    fi
    if [ "${next_entry}" ] ; then
       set default="${next_entry}"
       set next_entry=
       save_env next_entry
       set boot_once=true
    else
       set default="0"
    fi

    if [ x"${feature_menuentry_id}" = xy ]; then
      menuentry_id_option="--id"
    else
      menuentry_id_option=""
    fi

    export menuentry_id_option

    if [ "${prev_saved_entry}" ]; then
      set saved_entry="${prev_saved_entry}"
      save_env saved_entry
      set prev_saved_entry=
      save_env prev_saved_entry
      set boot_once=true
    fi

    function savedefault {
      if [ -z "${boot_once}" ]; then
        saved_entry="${chosen}"
        save_env saved_entry
      fi
    }
    function recordfail {
      set recordfail=1
      if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
    }
    function load_video {
      if [ x$feature_all_video_module = xy ]; then
        insmod all_video
      else
        insmod efi_gop
        insmod efi_uga
        insmod ieee1275_fb
        insmod vbe
        insmod vga
        insmod video_bochs
        insmod video_cirrus
      fi
    }

    if [ x$feature_default_font_path = xy ] ; then
       font=unicode
    else
    insmod part_msdos
    insmod ext2
    set root="hd0,msdos1"
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
    else
      search --no-floppy --fs-uuid --set=root ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
    fi
        font="/usr/share/grub/unicode.pf2"
    fi

    if loadfont $font ; then
      set gfxmode=auto
      load_video
      insmod gfxterm
      set locale_dir=$prefix/locale
      set lang=en_IE
      insmod gettext
    fi
    terminal_output gfxterm
    if [ "${recordfail}" = 1 ] ; then
      set timeout=30
    else
      if [ x$feature_timeout_style = xy ] ; then
        set timeout_style=hidden
        set timeout=0
      # Резервный код скрытого тайм-аута на случай, если функция timeout_style
      # недоступна.
      elif sleep --interruptible 0 ; then
        set timeout=0
      fi
    fi
    ### КОНЕЦ /etc/grub.d/00_header ###

    ### НАЧАЛО /etc/grub.d/05_debian_theme ###
    set menu_color_normal=white/black
    set menu_color_highlight=black/light-gray
    ### КОНЕЦ /etc/grub.d/05_debian_theme ###

    ### НАЧАЛО /etc/grub.d/10_linux ###
    function gfxmode {
        set gfxpayload="${1}"
        if [ "${1}" = "keep" ]; then
            set vt_handoff=vt.handoff=7
        else
            set vt_handoff=
        fi
    }
    if [ "${recordfail}" != 1 ]; then
      if [ -e ${prefix}/gfxblacklist.txt ]; then
        if hwmatch ${prefix}/gfxblacklist.txt 3; then
          if [ ${match} = 0 ]; then
            set linux_gfx_mode=keep
          else
            set linux_gfx_mode=text
          fi
        else
          set linux_gfx_mode=text
        fi
      else
        set linux_gfx_mode=keep
      fi
    else
      set linux_gfx_mode=text
    fi
    export linux_gfx_mode
    menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root="hd0,msdos1"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
        else
          search --no-floppy --fs-uuid --set=root ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
        fi
        linux   /boot/vmlinuz-4.2.0-27-generic root=UUID=ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.2.0-27-generic
    }
    submenu 'Дополнительные параметры для Ubuntu' $menuentry_id_option 'gnulinux-advanced-ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35' {
        menuentry 'Ubuntu с Linux 4.2.0-27-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-27-generic-advanced-ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35' {
            recordfail
            load_video
            gfxmode $linux_gfx_mode
            insmod gzio
            insmod part_msdos
            insmod ext2
            set root="hd0,msdos1"
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
            else
              search --no-floppy --fs-uuid --set=root ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
            fi
            echo    'Загрузка Linux 4.2.0-27-generic ...'
            linux   /boot/vmlinuz-4.2.0-27-generic root=UUID=ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35 ro  quiet splash $vt_handoff
            echo    'Загрузка начального ramdisk ...'
            initrd  /boot/initrd.img-4.2.0-27-generic
        }
        menuentry 'Ubuntu, с Linux 4.2.0-27-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-27-generic-recovery-ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35' {
            recordfail
            load_video
            insmod gzio
            insmod part_msdos
            insmod ext2
            set root="hd0,msdos1"
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
            else
              search --no-floppy --fs-uuid --set=root ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35
            fi
            echo    'Загрузка Linux 4.2.0-27-generic ...'
            linux   /boot/vmlinuz-4.2.0-27-generic root=UUID=ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35 ro recovery nomodeset 
            echo    'Загрузка начального ramdisk ...'
            initrd  /boot/initrd.img-4.2.0-27-generic
        }
    }

    ### КОНЕЦ /etc/grub.d/10_linux ###

    ### НАЧАЛО /etc/grub.d/20_linux_xen ###

    ### КОНЕЦ /etc/grub.d/20_linux_xen ###

    ### НАЧАЛО /etc/grub.d/30_os-prober ###
    menuentry 'Ubuntu 14.04.4 LTS (14.04) (на /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-9f212aba-a7da-4137-a311-e517e11fb062' {
        insmod part_msdos
        insmod ext2
        set root="hd0,msdos5"
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-бИОС=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  9f212aba-a7da-4137-a311-e517e11fb062
        else
          search --no-floppy --fs-uuid --set=root 9f212aba-a7da-4137-a311-e517e11fb062
        fi
        linux /boot/vmlinuz-4.2.0-27-generic root=UUID=9f212aba-a7da-4137-a311-e517e11fb062 ro quiet splash $vt_handoff
        initrd /boot/initrd.img-4.2.0-27-generic
    }
    submenu 'Дополнительные параметры для Ubuntu 14.04.4 LTS (14.04) (на /dev/sda5)' $menuentry_id_option 'osprober-gnulinux-advanced-9f212aba-a7da-4137-a311-e517e11fb062' {
        menuentry 'Ubuntu (на /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.2.0-27-generic--9f212aba-a7da-4137-a311-e517e11fb062' {
            insmod part_msdos
            insmod ext2
            set root="hd0,msdos5"
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-бИОС=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  9f212aba-a7da-4137-a311-e517e11fb062
            else
              search --no-floppy --fs-uuid --set=root 9f212aba-a7da-4137-a311-e517e11fb062
            fi
            linux /boot/vmlinuz-4.2.0-27-generic root=UUID=9f212aba-a7da-4137-a311-e517e11fb062 ro quiet splash $vt_handoff
            initrd /boot/initrd.img-4.2.0-27-generic
        }
        menuentry 'Ubuntu, с Linux 4.2.0-27-generic (на /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.2.0-27-generic--9f212aba-a7da-4137-a311-e517e11fb062' {
            insmod part_msdos
            insmod ext2
            set root="hd0,msdos5"
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-бИОС=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  9f212aba-a7da-4137-а311-е517e11fb062
            else
              search --no-floppy --fs-uuid --set=root 9f212aba-a7da-4137-a311-e517e11fb062
            fi
            linux /boot/vmlinuz-4.2.0-27-generic root=UUID=9f212aba-a7da-4137-a311-e517e11fb062 ro quiet splash $vt_handoff
            initrd /boot/initrd.img-4.2.0-27-generic
        }
        menuentry 'Ubuntu, с Linux 4.2.0-27-generic (режим восстановления) (на /dev/sda5)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.2.0-27-generic-root=UUID=9f212aba-a7da-4137-а311-е517e11fb062 ro recovery nomodeset-9f212aba-a7da-4137-а311-е517e11fb062' {
            insmod part_msdos
            insmod ext2
            set root="hd0,msdos5"
            if [ x$feature_platform_search_hint = xy ]; then
              search --no-floppy --fs-uuid --set=root --hint-бИОС=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  9f212aba-a7da-4137-а311-е517e11fb062
            else
              search --no-floppy --fs-uuid --set=root 9f212aba-a7da-4137-a311-е517e11fb062
            fi
            linux /boot/vmlinuz-4.2.0-27-generic root=UUID=9f212aba-a7da-4137-a311-е517e11fb062 ro recovery nomodeset
            initrd /boot/initrd.img-4.2.0-27-generic
        }
    }

    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### КОНЕЦ /etc/grub.d/30_os-prober ###

    ### НАЧАЛО /etc/grub.d/30_uefi-firmware ###
    ### КОНЕЦ /etc/grub.d/30_uefi-firmware ###

    ### НАЧАЛО /etc/grub.d/40_custom ###
    # Этот файл предоставляет простой способ добавления пользовательских пунктов меню. Просто введите
    # необходимые пункты меню после этого комментария. Будьте осторожны, чтобы не изменять
    # строку 'exec tail' выше.
    ### КОНЕЦ /etc/grub.d/40_custom ###

    ### НАЧАЛО /etc/grub.d/41_custom ###
    if [ -f  ${config_directory}/custom.cfg ]; then
      source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
      source $prefix/custom.cfg;
    fi
    ### КОНЕЦ /etc/grub.d/41_custom ###

После ваших изменений у вас больше нет проблемы с GRUB, а простая проблема с /etc/fstab: После клонирования ваш fstab будет таким же на /dev/sda1 и /dev/sda5, поэтому вам нужно отредактировать версию на /dev/sda5 и указать в ней новый UUID для корневой файловой системы.

Вот ссылка на вики-сообщество по этой теме: https://help.ubuntu.com/community/MovingLinuxPartition

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

РЕДАКТИРОВАТЬ: Я смог сильно сократить этот список для своего случая (клонирование оригинального раздела /dev/sda1 на новый/больший раздел /dev/sda4 на том же HDD), поэтому вот шаги:

  1. конечно, сначала сделайте резервную копию всех важных данных, это не обсуждается

  2. пока еще запущена оригинальная система Linux, скопируйте оригинальный раздел на новый/больший раздел и отметьте его как загрузочный:

dd if=/dev/sda1 of=/dev/sda4 bs=1M

  1. сгенерировать новый UUID для нового раздела (и скопируйте его в буфер обмена, он вам понадобится позже):

tune2fs -U random /dev/sda4

  1. монтируйте новый раздел, чтобы иметь доступ к файлам на нем:

mkdir /mnt/new && mount /dev/sda4 /mnt/new

  1. обновите файл etc/fstab на новом разделе и измените UUID корневого раздела, используя UUID из шага 2):

nano /mnt/new/etc/fstab или gedit /mnt/new/etc/fstab

  1. выполните update-grub, чтобы обнаружить/настроить ваш новый раздел в /boot/grub/grub.cfg (вероятно, новый menuitem будет добавлен где-то в конце файла grub.cfg)

  2. отредактируйте файл /boot/grub/grub.cfg и найдите тот новый пункт меню, который добавил предыдущий шаг, и убедитесь, что вы обновили строку, которая выглядит примерно так:

linux /boot/vmlinuz-X.X.X-XX-generic root=UUID=<здесь нам нужно ввести новый UUID из шага 2> ...

  1. скопируйте /boot/grub/grub.cfg с оригинального раздела на новый раздел (который вы смонтировали в шаге 3), перезаписывая предыдущий файл:

cp /boot/grub/grub.cfg /mnt/new/boot/grub/grub.cfg

Теперь вы должны быть готовы к перезагрузке. На экране GRUB выберите новый элемент меню для нового раздела. Во время загрузки /boot/grub/grub.cfg с оригинального раздела (/dev/sda1) будет прочитан, но он загрузит вас в новый раздел (/dev/sda4). Как только загрузка завершится, вы можете выполнить grub-install /dev/sda, чтобы обновить MBR на /dev/sda, после чего можно прекратить использование оригинального раздела.

.

Ответ или решение

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

Возможные причины

  1. Неправильный UUID: После клонирования через dd клонированный раздел имеет тот же UUID, что и оригинальный. Это может вызвать путаницу при загрузке, поскольку система может не знать, к какому разделу обращаться для загрузки операционной системы.

  2. Ошибки в файлах конфигурации GRUB: Параметры загрузчика могут по-прежнему указывать на исходный раздел, вместо клонированного.

  3. Отсутствие обновления fstab: После клонирования необходимо обновить файл /etc/fstab нового раздела, чтобы он ссылался на правильный UUID.

Решение проблемы

  1. Изменение UUID раздела:
    Используйте tune2fs для генерации нового UUID для клонированного раздела:

    sudo tune2fs -U random /dev/sdaY
  2. Обновление fstab для нового UUID:

    • Смонтируйте клонированный раздел:
      sudo mkdir /mnt/new
      sudo mount /dev/sdaY /mnt/new
    • Отредактируйте fstab:
      sudo nano /mnt/new/etc/fstab

      Замените старый UUID новым, который вы получили на предыдущем шаге.

  3. Проверка и изменение конфигурации GRUB:

    • Обновите конфигурацию GRUB:
      sudo update-grub
    • Проверьте и, при необходимости, вручную измените /boot/grub/grub.cfg:
      Найдите строки, относящиеся к вашему клонированному разделу, и убедитесь, что они ссылаются на правильный UUID.
  4. Копирование конфигурации GRUB:

    • Скопируйте обновленный grub.cfg в клонированный раздел:
      sudo cp /boot/grub/grub.cfg /mnt/new/boot/grub/grub.cfg
  5. Обновление загрузочного сектора:

    • После успешной загрузки в клонированную систему выполните:
      sudo grub-install /dev/sda

      Это обновит MBR, чтобы он корректно использовал новый GRUB-конфиг.

Заключение

Теперь, после выполнения этих шагов, вы сможете загрузиться в клонированный Ubuntu-раздел. Этот процесс требует внимательного координирования изменений в конфигурации системы, чтобы все службы работали корректно. Процесс может показаться сложным, но при правильном выполнении он обеспечит успешное клонирование и загрузку двух Ubuntu-систем на одном диске.

Оцените материал
Добавить комментарий

Капча загружается...