HyperV加载阿里云镜像

标签: 无 分类: 未分类 创建时间:2021-05-20 01:40:37 更新时间:2025-01-17 10:39:22

接上一篇文章 Post not found: 阿里云ECS系统镜像导出和本地加载 阿里云ECS系统镜像导出和本地加载,成功将阿里云的ECS系统导出到了本地,生成了vhd格式的磁盘镜像文件,然后使用了virtualbox成功加载了。这一篇,主要是继续解决如何在Hyper-V上加载的问题。我导出的系统是Ubunto 16.04。

1.前提

导出的镜像,要先在VirtualBox中,把vhd磁盘进行加载一遍,登录,然后关闭,这个时候,再次将vhd加载到Hyper-V中,就不会存在稀疏文件无法加载的问题了。

为什么要用Hyper-V而不是直接使用VirtualBox,这个问题因人而异吧。

我是用过程中,Hyper-V兼容性确实差了点,在VirtualBox中可以打开的vhd文件,在Hyper-V中却打不开。

我这几天一直在纠结一个问题,就是虚拟机的性能问题,虚拟机我使用过VM虚拟机,使用过VirtualBox虚拟机,还使用过XenServer安装在裸机上,然后在XenServer上安装虚拟机机作为开发,测试等的测试机,也使用过Hyper-V直接安装虚拟机,对于不进行性能测试的我来说,其实感觉不出来任何的性能上的损失,特别是直接使用Linux系统,不完游戏,不装显卡,大部分都是命令行模式的服务器系统,更加的感觉不到任何的差别,唯一能明显的感觉的就是关于在机械硬盘上和SSD硬盘上安装的系统,对于安装的Window虚拟机才会有明显的差别,机械硬盘去确实会拖慢系统。

参考文章:
1.VirtualBox vs. VMWare vs. Hyper-V:最好的虚拟机是什么? (说了各种虚拟机的特点,除了Virtualbox最慢之外,其他两者没有比较)
2.VirtualBox和hyper-v哪个虚拟机对Linux比较友好? (大部分人站队还是站在了Virtualbox上)
3.VMware与Hyper-V的区别总结
4.Win10自带的Hyper-V性能、兼容性和稳定性怎么样?
5.2021 virtualbox、vmware、hyper-v对比 (这里标题是2021,但是内容确实陈旧的,上面还说VirtualBox不支持硬件虚拟化)
6.Hyper-V的性能影响
7.当前主流的虚拟机性能都可以达到怎样的地步? (有人说性能损失大约是1%,也有人说是百分之二三十,不一样)
8.VM性能的快速测试方法 (UnixBench来进行CPU性能测试、使用iozone来进行文件IO性能测试、使用mbw来测试虚拟机的内存性能、使用iperf来测试虚拟机之间的网络带宽(Mbps)、pgbench是一个针对postgresql的性能测试工具,用这几个工具,就可以测试虚拟机的性能了)
9.浅谈Hyper-v与VMware服务器虚拟化比较 (各有个的优缺点吧。)

虽然我成功在HyperV中加载了vhd文件,但是正常启动的时候,启动画面之后,也就是现实了Ubuntu之后,就黑屏了。于是就有了下面的问题解决之路,挂载iso文件,chroot,进行文件修复,重建gurb等一系列骚操作,结果还是无法解决系统开机之后,直接黑屏的问题。

最后令人难过的更是,我花了好几天,好多天进行问题的修复,最后,竟然通过:Ctrl+Alt+F2,打开了tty2,可以进入系统了,也就是说,问题出在了tty1上,而不是系统无法开机的问题。我这几天的工作,都在干些什么呢?简直让人抓狂啊。

2.导入

(1) 新建虚拟机,选择第一代
(2) 指定使用现有的虚拟硬盘,设置CPU(处理器)数量32
(3) 启动虚拟机
(4) Ctrl+Alt+F2 进入tty2,配置系统,或者使用其他的远程连接工具

问题

(1) SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
于是我只能进入恢复模式,在启动时,持续按住shift键,选择启动的系统,进入Recoce模式,后面还有一个错误:no valid rapl domains fond in package 0。

参考文章:
1.在启动Ubuntu时VirtualBox,SMBus/BIOS错误 (有好几种解决方法,但是我觉得都不是很靠谱)
2.ubuntu启动失败黑屏解决方案 (一旦启动后,在有读条的时候按住左shitf键即可,注意一定要赶在在启动一开始时,另外虚拟机的情况下要注意按键前用鼠标点击屏幕进入虚拟机,否则识别为虚拟机外部的输入)
3.VBox中创建好Ubuntu后启动失败,出现intel_rapl no valid rapl domains found in package 0 (.vbox文件用记事本打开并找到PAE这个标签,把false修改为true,重新启动)
4.关于hyper-v创建的虚拟机开机黑屏只有光点闪动 (这里时有一个点在闪动,我是一点都不闪,直接黑屏。连接黑屏,xshell仍然正常使用)
5.使用Hyper-V安装Ubuntu16.04过程填坑总结 (这几个坑,我还没遇到。Hyper-v创建的虚拟交换机、手工添加DNS和IP)

系统修复

将系统安装镜像以DVD的形式插入系统,从DVD系统盘启动,选择Try Ubuntu,进入系统,打开命令行工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
## 挂载根本录到/mnt上
sudo mount /dev/sda1 /mnt/
# 挂载开机选单目录 (/boot),如未独立此分割区则略过。
sudo mount /dev/sda2 /mnt/boot

# 挂载虚拟档案系统 (/dev, /proc, /sys )。
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

#将本机的 OS 切换成系统根目录。
sudo chroot /mnt

## 升级,有地方使用了aptitude,但是我无法执行这个aptitude命令
sudo apt-get update ;
sudo apt-get dist-upgrade -f;

# 如是套件安装不完整,请手动修复套件,我执行了这一步没用
sudo apt-get install -f;

# 如是设定不完整 (冲突) 时,请手动重设,我执行的时候,没有-a这个参数
# sudo dpkg-reconfigure -a

# 如是开机选单 (grub) 阵亡,请使用 grub-install 指令手动修复。
grub-install --force /dev/sda

## 退出
exit

## 安全卸载先前挂载过的 partition
sudo umount /mnt/dev/ /mnt/proc/ /mnt/sys /mnt

执行了上面的一系列操作之后,还是不行。

参考文章:
1.修复损坏的 Ubuntu 系统 (这是能进系统的时候,执行的系统修复)
6.GNU/Linux 用 Live CD 修复 Debian/Ubuntu 系统 (我觉得这个系统修复倒是讲的很明白,但是也还会有不同的地方)
7.Ubuntu系统修复、系统安装与系统备份 (主要还是讲了虚拟机的创建)

chroot之后无法解析DNS

编辑

1
2
3
4
5
6
7
8
9
## 编辑
sudo vi /etc/resolv.conf

## 填写
nameserver 223.5.5.5

## 输入Esc,:wq,保存并退出
## 重启网络
sudo /etc/init.d/networking restart
参考文章:
1.ArchLinux下安装Gentoo,请教chroot后如何连接无线上网?
2.Ubuntu换源后仍然无法解析域名的解决方法 (不起作用的)
3.【亲测有效】Ubuntu18.04 sudo apt update无法解析域名的解决方案 (有没有效,需要自己测试一下)
4.ubuntu内核损坏或误删除时的系统修复 (预修复的系统是ubuntu版本是16.04,虽然命令都有了,但是我看不懂描述。还有一个地方就是安装内核:apt-get install linux-image-generic)

问题

(1) error symbol‘grub_calloc’not found

解决方案:

  • 首先你需要一张ubuntu的live CD或者自启动u盘进入live CD中
  • 选择体验ubuntu而不是直接安装
  • 打开终端
1
2
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
  • 选择推荐修复,完成就可以了
  • 重启电脑

(2) 无法解析主机:ubuntu
在/etc/hosts文件中,添加:127.0.1.1 ubuntu,解决无法解析ubuntu主机的问题

(3) ubuntu报错:W: Target Packages
安装包的时候,弹出这个警告,编辑:/etc/apt/sources.list 文件把重复的删除就可以了

(4) 无法安装boot-repair包
在修复grub启动项的时候,需要安装:boot-repair 这么一个软件包,但是我添加了软件源,还是无法安装。

1
2
3
4
5
6
## 安装源
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update

## 安装
sudo apt-get install boot-repair

我手工添加了软件源,还是不行

1
2
3
4
5
6
7
8
## 编写软件源
nano /etc/apt/source.list.d/yannubuntu-boot-repair-saucy.list

##添加
deb http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu saucy main

## 保存之后,更新
sudo apt-get update

(4) blk_update_request:I/O
加载导出的vhd之后,以及在virtualbox中加载过了,导入到hy之后,还是无法打开,报错信息如下:

真是奇了怪了,第一次遇到过这个问题。

【尝试操作】
在这四个内核启动界面中,只有最后一个内核可以正常启动。

我先是进入了第三四内核,登录,然后执行了下面的命令:

1
2
3
4
5
6
7
echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf

rmmod floppy

dracut -f -v

reboot

重启之后,第一个内核还是无法启动。

参考文章:
1.磁盘blk_update_request: I/O error
2.win10&hyper上装Ubuntu出现没有找到dev fd0, sector 0 错误 把默认启动由cd改为磁盘,这个没有用
3.U盘安装CentOS时停在Reached target Basic System的解决方案
4.blk_update_request:I / O错误,dev fd0,扇区0
对于在Microsoft Hyper-V下在VM中运行Ubuntu的错误进行搜索之后来到这里的任何人,这是因为默认情况下,软盘驱动器已添加到VM配置中,但未正确激活。上面的答案仍然可以解决问题,但是请先检查是否在VM配置中包含软盘设备,然后在应用此修复程序之前尝试将其删除。我有15件令人毛骨悚然的东西,到目前为止,其中5件是通过使用Hyper-V管理器从Hyper-V机器配置中删除胭脂软盘修复的。
5.To disable fd0 permanently
6.blk_update_request: I/O error, dev fd0, sector 0
7.How to completely disable floppy in Ubuntu 14.04?

【解决方法】
很多的文章都是用了解决 blk_update_request的方法,也就是禁用 软盘启动项,我尝试过不可以。换一个想法,既然有一个内核可以启动,那么是不是内核的问题呢?

我干脆就直接升级内核好了,我原先的内核是:kernel-3.10.0-957.el7.x86_64 ,因为是阿里云的镜像,所以在升级内核的时候,我遇到了下面的问题:
(1) 不能解决阿里云镜像源的问题:Could not resolve host:,我设置了 /etc/resolv.conf,不起作用;我重新设置了清华的镜像源,重新设置了/etc/yum.repo.d文件夹下的CentOS-Base.repo,还是不行,还是用了阿里的源;最后我删除了 epel.repo 这个文件,才彻底的断了阿里的源

(2) 安装ELRepo仓库的yum源

1
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

经过内核的升级,最后直接用新的内核就可以直接启动了。

参考文章:
1.CentOS-7 升级内核 这篇文章跟着做就好了。
2.CentOS 7 更换 阿里云/清华大学 yum 软件源 跟着这个设置镜像源
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。