前段时间,一家公司的小型应用系统部署在测试服务器上,服务器使用的是。 虚拟机文件是的,使用工具将其转换为Hyper-V c盘映像,然后将其添加到新创建的虚拟机中。 而且明明7在 中可以正常启动,但是却无法存活,总是进到 的壳里。
疾病:
[确定] 路径。
[确定] 基本。
/dev//-root 上的文件检查...
-fsck[288]:fsck:()而fsck. /dev//-root
[确定] /dev//-root 上的文件检查
-[250]::无法启动
-[250]::/dev//存在
-[250]::/dev//
-[250]::/dev//-root 确实存在
壳...
:/dev//root不存在
:/dev//交换不存在
:/dev//-root不存在
“/运行//.txt”
cd /dev后,我ls,发现没有hd或sd开头的硬盘设备。 在网上百度搜索后,只发现一堆人问同样的问题,但可靠的答案并不多。 所以我必须自己想办法。
首先,Hyper-V中的虚拟光驱是挂载在SCSI控制器下的,但在Hyper-V中是手动挂载在IDE控制器下的。 于是添加了一个SCSI控制器,并在其下重新挂载了.VHDc磁盘文件。 结果连GRUB都没有了:
启动。 和
经检查虚拟系统转物理机,第一代Hyper-V虚拟机不支持从SCSI硬盘启动! 晕,不过工程师还写了一篇博客-()来解释(jiǎo)解释(biàn)。 只好又改回来了。
仔细一想,应该是缺少IDE控制器驱动。 按照之前解决主板驱动与内核自带驱动冲突的方法,重新编译了一下,果然可以进入系统了!
加工方法:
1、使用7安装光盘启动,在启动菜单中选择->虚拟系统转物理机,然后按 进入恢复命令行。
2、切换到待打补丁的系统根路径:cd /mnt/after。
3. 备份之前的文件:
mv /boot/-$(uname-r).img /boot/-$(uname-r).img.bak
4. 重建:
-v/boot/-$(uname-r).img$(uname-r)
Linux 与 Boot 不兼容
此外, 还引入了第二代 Hyper-V 虚拟机。 这次支持从SCSI硬盘启动。 的 John 还撰写了 Hyper-V2 系列文章。
在新一代虚拟机中,默认启用Boot,并且会校准数字签名。 大多数 Linux 发行版不支持此机制。 所以应该在虚拟机设置中将其关闭,或者干脆使用第一代虚拟机(在创建向导中选择)。