我有一台 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
未找到分区表。
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 13672447 6835200 83 Linux
/dev/sda2 13674494 41940991 14133249 5 Extended
/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
Disk /dev/sda1: 6999 MB, 6999244800 bytes
255 heads, 63 sectors/track, 850 cylinders, total 13670400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000 Disk /dev/sda1 doesn't contain a valid partition table
Disk /dev/sda5: 6999 MB, 6999244800 bytes
255 heads, 63 sectors/track, 850 cylinders, total 13670400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000Disk /dev/sda5 doesn't contain a valid partition table
/dev/sda1: LABEL="xxx" UUID="ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35" TYPE="ext4"
/dev/sda5: LABEL="yyy" UUID="9f212aba-a7da-4137-a311-e517e11fb062" TYPE="ext4"
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /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
# Fallback hidden-timeout code in case the timeout_style feature is
# unavailable.
elif sleep --interruptible 0 ; then
set timeout=0
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /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 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-ed2dff21-3aa4-43a1-b0fc-6a56b4bc1c35' {
menuentry 'Ubuntu, with 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 'Loading 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 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.2.0-27-generic
}
menuentry 'Ubuntu, with Linux 4.2.0-27-generic (recovery mode)' --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 'Loading 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 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.2.0-27-generic
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Ubuntu 14.04.4 LTS (14.04) (on /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-bios=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 'Advanced options for Ubuntu 14.04.4 LTS (14.04) (on /dev/sda5)' $menuentry_id_option 'osprober-gnulinux-advanced-9f212aba-a7da-4137-a311-e517e11fb062' {
menuentry 'Ubuntu (on /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-bios=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, with Linux 4.2.0-27-generic (on /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-bios=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, with Linux 4.2.0-27-generic (recovery mode) (on /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-a311-e517e11fb062 ro recovery nomodeset-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-bios=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 recovery nomodeset
initrd /boot/initrd.img-4.2.0-27-generic
}
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /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
### END /etc/grub.d/41_custom ###
答案1
在您进行更改之后,您不再遇到问题GRUB
,而只是一个简单的/etc/fstab
问题:克隆之后,您的在和fstab
上将相同,因此您需要编辑 上的版本并让其指向根文件系统的新 UUID。/dev/sda1
/dev/sda5
/dev/sda5
答案2
以下是关于该主题的社区维基:https://help.ubuntu.com/community/MovingLinuxPartition
步骤太多,无法在此全部列出,并且可能会进行更新,因此没有必要在此维护相同的步骤,因此仅提供链接。
编辑:就我的情况而言(将原始分区克隆到同一硬盘上的/dev/sda1
新的/更大的分区),我已设法大大缩短了这个列表,因此步骤如下:/dev/sda4
当然,首先要备份所有重要的东西,这是不言而喻的
在仍然运行原始 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(使用步骤 2 中的 UUID):
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=<here we need to type the new UUID from step 2> ...
/boot/grub/grub.cfg
从原始分区复制到新分区(在步骤 3 中挂载的分区),覆盖先前的文件:
cp /boot/grub/grub.cfg /mnt/new/boot/grub/grub.cfg
现在您应该可以重新启动了。在 GRUB 屏幕上,选择新分区的新添加菜单项。在启动过程中,将读取原始分区 (/dev/sda1) 中的 /boot/grub/grub.cfg,但它会将您引导到新分区 (/dev/sda4)。启动后,您可以运行grub-install /dev/sda
以更新 /dev/sda 上的 MBR,从此时起,您可以停止使用原始分区。