Вопрос или проблема
У меня есть сервер 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), поэтому вот шаги:
-
конечно, сначала сделайте резервную копию всех важных данных, это не обсуждается
-
пока еще запущена оригинальная система Linux, скопируйте оригинальный раздел на новый/больший раздел и отметьте его как загрузочный:
dd if=/dev/sda1 of=/dev/sda4 bs=1M
- сгенерировать новый UUID для нового раздела (и скопируйте его в буфер обмена, он вам понадобится позже):
tune2fs -U random /dev/sda4
- монтируйте новый раздел, чтобы иметь доступ к файлам на нем:
mkdir /mnt/new && mount /dev/sda4 /mnt/new
- обновите файл
etc/fstab
на новом разделе и измените UUID корневого раздела, используя UUID из шага 2):
nano /mnt/new/etc/fstab
или gedit /mnt/new/etc/fstab
-
выполните
update-grub
, чтобы обнаружить/настроить ваш новый раздел в/boot/grub/grub.cfg
(вероятно, новыйmenuitem
будет добавлен где-то в конце файла grub.cfg) -
отредактируйте файл
/boot/grub/grub.cfg
и найдите тот новый пункт меню, который добавил предыдущий шаг, и убедитесь, что вы обновили строку, которая выглядит примерно так:
linux /boot/vmlinuz-X.X.X-XX-generic root=UUID=<здесь нам нужно ввести новый UUID из шага 2> ...
- скопируйте
/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
, это может быть вызвано несколькими проблемами. Давайте рассмотрим возможные причины и шаги для решения проблемы с учетом описания вашей ситуации.
Возможные причины
-
Неправильный UUID: После клонирования через
dd
клонированный раздел имеет тот же UUID, что и оригинальный. Это может вызвать путаницу при загрузке, поскольку система может не знать, к какому разделу обращаться для загрузки операционной системы. -
Ошибки в файлах конфигурации GRUB: Параметры загрузчика могут по-прежнему указывать на исходный раздел, вместо клонированного.
-
Отсутствие обновления
fstab
: После клонирования необходимо обновить файл/etc/fstab
нового раздела, чтобы он ссылался на правильный UUID.
Решение проблемы
-
Изменение UUID раздела:
Используйтеtune2fs
для генерации нового UUID для клонированного раздела:sudo tune2fs -U random /dev/sdaY
-
Обновление
fstab
для нового UUID:- Смонтируйте клонированный раздел:
sudo mkdir /mnt/new sudo mount /dev/sdaY /mnt/new
- Отредактируйте
fstab
:sudo nano /mnt/new/etc/fstab
Замените старый UUID новым, который вы получили на предыдущем шаге.
- Смонтируйте клонированный раздел:
-
Проверка и изменение конфигурации GRUB:
- Обновите конфигурацию GRUB:
sudo update-grub
- Проверьте и, при необходимости, вручную измените
/boot/grub/grub.cfg
:
Найдите строки, относящиеся к вашему клонированному разделу, и убедитесь, что они ссылаются на правильный UUID.
- Обновите конфигурацию GRUB:
-
Копирование конфигурации GRUB:
- Скопируйте обновленный
grub.cfg
в клонированный раздел:sudo cp /boot/grub/grub.cfg /mnt/new/boot/grub/grub.cfg
- Скопируйте обновленный
-
Обновление загрузочного сектора:
- После успешной загрузки в клонированную систему выполните:
sudo grub-install /dev/sda
Это обновит MBR, чтобы он корректно использовал новый GRUB-конфиг.
- После успешной загрузки в клонированную систему выполните:
Заключение
Теперь, после выполнения этих шагов, вы сможете загрузиться в клонированный Ubuntu-раздел. Этот процесс требует внимательного координирования изменений в конфигурации системы, чтобы все службы работали корректно. Процесс может показаться сложным, но при правильном выполнении он обеспечит успешное клонирование и загрузку двух Ubuntu-систем на одном диске.