- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1.安装ubuntu时使用的virt-install的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
virt-
install
\
--name test4 \
--
ram
1024 \
--disk path=
/data/01_ubuntu/ubuntu4
.img,size=6 \
--vcpus 1 \
--hvm \
--os-
type
linux \
--network network=default \
--os-variant ubuntuquantal \
--graphics none \
--console pty,target_type=serial \
--location
/data/00_osfile/ubuntu-16
.04.1-server-amd64.iso \
--extra-args
'console=ttyS0,115200n8 serial'
|
报错如下:
ERROR Couldn't find hvm kernel for Ubuntu tree. Domain installation does not appear to have been successful. 。
通过查资料发现,virt-install可以开debug模式的,加入--debug选项即可 。
2.virt-install的debug模式得到的结果:
1
2
3
4
5
6
|
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:268)
local
hasFile: Couldn't
find
/var/lib/libvirt/boot/virtinstmnt
.xPL9y1
/current/images/MANIFEST
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:89) Fetching URI:
/var/lib/libvirt/boot/virtinstmnt
.xPL9y1
/install/netboot/version
.info
Retrieving
file
version.info... | 58 B 00:00:00
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:1164) Didn't
find
any known codename
in
the URL string
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:511) Detected distro name=Ubuntu osvariant=linux
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:268)
local
hasFile: Couldn't
find
/var/lib/libvirt/boot/virtinstmnt
.xPL9y1
/install/netboot/ubuntu-installer/i386/linux
|
这里就可以看出问题了,明明是64位的操作系统,为什么去找./install/netboot/ubuntu-install/i386/linux的路径 。
我们去看看iso文件中正确的路径是什么:
1
2
3
4
|
[root@11.102 01_ubuntu]$
mount
/data/00_osfile/ubuntu-16
.04.1-server-amd64.iso
/mnt
mount
:
/dev/loop2
is write-protected, mounting
read
-only
[root@11.102 01_ubuntu]$
ls
/mnt/install/netboot/ubuntu-installer/amd64/linux
/mnt/install/netboot/ubuntu-installer/amd64/linux
|
基本确定,如果将路径的i386改为amd64,virt-install安装就没有问题.
debug模式剩余的log:
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
|
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (urlfetcher:320) Cleaning up
mount
at
/var/lib/libvirt/boot/virtinstmnt
.xPL9y1
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (cli:305) File
"/usr/share/virt-manager/virt-install"
, line 1077,
in
<module>
sys.
exit
(main())
File
"/usr/share/virt-manager/virt-install"
, line 1071,
in
main
start_install(guest, continue_inst, options)
File
"/usr/share/virt-manager/virt-install"
, line 775,
in
start_install
fail(e, do_exit=False)
File
"/usr/share/virt-manager/virtinst/cli.py"
, line 305,
in
fail
logging.debug(
""
.
join
(traceback.format_stack()))
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] ERROR (cli:306) Couldn't
find
hvm kernel
for
Ubuntu tree.
[Wed, 30 Nov 2016 11:16:07 virt-
install
26900] DEBUG (cli:308)
Traceback (most recent call last):
File
"/usr/share/virt-manager/virt-install"
, line 747,
in
start_install
dom = guest.start_install(meter=meter, noboot=options.noreboot)
File
"/usr/share/virt-manager/virtinst/guest.py"
, line 491,
in
start_install
self._prepare_install(meter, dry)
File
"/usr/share/virt-manager/virtinst/guest.py"
, line 304,
in
_prepare_install
self.installer.prepare(self, meter)
File
"/usr/share/virt-manager/virtinst/installer.py"
, line 200,
in
prepare
self._prepare(guest, meter)
File
"/usr/share/virt-manager/virtinst/distroinstaller.py"
, line 451,
in
_prepare
self._prepare_kernel_url(guest, fetcher)
File
"/usr/share/virt-manager/virtinst/distroinstaller.py"
, line 360,
in
_prepare_kernel_url
kernel, initrd, args = store.acquireKernel(guest)
File
"/usr/share/virt-manager/virtinst/urlfetcher.py"
, line 603,
in
acquireKernel
{
"distro"
: self.name,
"type"
: self.
type
})
RuntimeError: Couldn't
find
hvm kernel
for
Ubuntu tree.
|
3.修改virt-manager代码:
通过上面的报错,发现virt-manager使用python写的!正好想看什么源码来自,这个正好! 。
通过对virt-manager这一项目一步步debug,找到问题:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@11.102 ~]$
grep
-n -A22
"class DebianDistro"
/usr/share/virt-manager/virtinst/urlfetcher
.py
1076:class DebianDistro(Distro):
1077-
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
1078-
# daily builds: http://d-i.debian.org/daily-images/amd64/
1079- name =
"Debian"
1080- urldistro =
"debian"
1081- os_variant =
"linux"
1082-
1083- def __init__(self, *args, **kwargs):
1084- Distro.__init__(self, *args, **kwargs)
1085-
1086-
# Pull the tree's arch out of the URL text
1087- self._treeArch =
'i386'
1088-
for
pattern
in
[
"^.*/installer-(\w+)/?$"
,
1089-
"^.*/daily-images/(\w+)/?$"
]:
1090- arch = re.findall(pattern, self.uri)
1091-
if
arch:
1092- self._treeArch = arch[0]
1093-
break
1094-
1095- self._url_prefix =
'current/images'
1096- self._installer_dirname = self.name.lower() +
"-installer"
1097- self._set_media_paths()
|
发现基于Debian的系统,__init__方法中self._treeArch初始化时是i386,估计是virt-manager读取ubuntu的iso文件时,出了什么问题,没读出该系统是x86_64类型,将该值改为amd64,就可以了.
再次运行virt-install,成功进入ubuntu安装界面! 。
附:CentOS命令行使用KVM安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的解决办法 。
grep -n -A21 'class DebianDistro' /usr/lib/python2.6/site-packages/virtinst/OSDistro.py 命令可以查看DebianDistro类的__init__方法 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@2 virtinst]$
grep
-n -A21
'class DebianDistro'
/usr/lib/python2
.6
/site-packages/virtinst/OSDistro
.py
892:class DebianDistro(Distro):
893-
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
894-
# daily builds: http://people.debian.org/~joeyh/d-i/
895-
896- name =
"Debian"
897- os_type =
"linux"
898-
899- def __init__(self, uri, arch, vmtype=None, scratchdir=None):
900- Distro.__init__(self, uri, arch, vmtype, scratchdir)
901-
if
uri.count(
"installer-i386"
):
902- self._treeArch =
"i386"
903-
elif
uri.count(
"installer-amd64"
):
904- self._treeArch =
"amd64"
905-
else
:
906- self._treeArch =
"i386"
907-
908-
if
re.match(r
'i[4-9]86'
, arch):
909- self.arch =
'i386'
910-
911- self._installer_name = self.name.lower() +
"-"
+
"installer"
912- self._prefix =
'current/images'
913- self._set_media_paths()
|
改变__init__方法里的else:条件下面的一行,将"i386"改为"amd64"即可 。
1
2
|
- self._treeArch =
'i386'
+ self._treeArch =
'amd64'
|
原文链接:http://www.cnblogs.com/ruo-yu/archive/2016/11/30/6117134.html 。
最后此篇关于ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析的文章就讲到这里了,如果你想了解更多关于ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这里的 IT 网络/编程学生试图完成一项作业,但我遇到了障碍。我们的任务是读取文本文件,将单词放入 ArrayList 中,并对内容执行字符串操作。我能够将单词拉入 ArrayList、按升序对内容进
编辑:我收到以下错误代码: Error adding accessory The operation couldn’t be completed. (HMErrorDomain error 2.) 和
您好,我正在尝试测试套接字激活机制,但无法连接到服务器。 curl --unix-socket/run/gunicorn.sock本地主机 curl: (7) Couldn't connect to
所以我安装了sandbox (运行 centOS)来自 hortonworks在 virtualBox带网络配置>>> bridged network我编辑了bashrc导出http_proxy和 h
我目前正在开发一个android应用程序,提交一个post请求并处理相应的响应。 我能够将发布请求发送到相应的 URL,但是当我尝试检索响应时,我得到了一半的 HTML 内容,然后是“*无法从 STD
我在将 ServiceLoader 集成到我的 Android 应用程序以集成插件系统时遇到问题。 public class StrategieClassLoader extends URLClass
我有一个类似于以下的自定义数据类型: data Token = Number Int | Otherthings 我希望能够以一种方式使用“数字”,以另一种方式使用其他东西。所以
当我尝试从 Visual Studio Code 运行一个简单的 React Native 应用程序时,我收到以下错误消息。 Scanning folders for symlinks in C:\P
我最近从Java搬到了Kotlin。将整个项目转换为Kotlin,将pom.xml转换为build.gradle。我正在使用Kotlin,Gradle,Cucumber Sernity,Appium构
我在执行docker-compose命令时遇到Powershell中的错误: 尽管从Docker Quickstart Terminal运行相同的命令可以正常工作: 最佳答案 确保首先在Powersh
当我运行docker build时,我得到了: Sending build context to Docker daemon 10.24kB WARN[11935] Couldn't run aup
我在运行 SDL 程序时遇到此错误。它编译得很好,但是窗口打开了一小会儿然后就关闭了。 这是我的代码: //Using SDL and standard IO #include #include
我正在编写一个基于 Google map 的 Android 应用程序。应用程序本身运行良好,没有任何问题。我可以看到 map ,缩放到我的当前位置等等。根据 AndroidManifest.xml,
我在实际设备上仅在生产和开发容器上都遇到了这个错误。模拟器能够很好地获取记录。这发生在通过 XCode 运行的开发构建、TestFlight 构建和 AppStore 上的实时生产构建上。 所有设备
我正在创建一个模板化的快速排序函数,它应该允许我使用迭代器对一个定制的双向链表类进行快速排序。我遇到了错误 In file included from main.cpp:21.0: quicksort
我有一个模板类和一个具有模板返回类型的函数: template class Wrapper { public: Wrapper(const T& _data) : data(_data) {
将 Jersey 从 1.15 版升级到 1.17 版后,它开始记录以下消息: Apr 2, 2013 5:13:06 PM com.sun.jersey.server.wadl.generators
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个 android 应用程序在我将设备更新到 android 4.4 (kitkat) 之前一直运行没有问题。 现在我开始收到这个错误,并且程序的某些部分在日志 cat_ 中被破坏了_ Andr
我通过 git clone 成功安装了 Directus CMS。在数据库中创建了 15 个表。在/config 文件夹中,我的 projectkey.php 文件也已创建。安装后我想使用我的凭据登录
我是一名优秀的程序员,十分优秀!