我正在尝试从 ISO 在 VM 中安装 CentOS 7,但一直收到错误libxl_dom.c:892:libxl__load_hvm_firmware_module: failed to read BIOS file: No such file or directory
。这是我的配置:
name = 'CentOS'
builder = 'hvm'
memory = '512'
boot = 'dc'
disk = [ '/srv/xen/centos/xvda.img,,xvda,rw', '/srv/xen/centos/disk.iso,,xvdb,cdrom' ]
vif = [ '','mac=00:16:3E:13:37:01,bridge=xenbr1,ip=172.20.0.2/28' ]
我使用 /srv/xen/centos/xvda.img 创建了truncate -s 10G xvda.img
disk.iso,下载地址为:http://mirror.chpc.utah.edu/pub/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso。这是我尝试创建域来安装 CentOS 时的调试输出:
⚡ root@k7dxs-laptop-r500 > /srv/xen/centos >xl -vvv create centos.cfg
Parsing config from centos.cfg
libxl: debug: libxl_create.c:1614:do_domain_create: ao 0xcb7ca0: create: how=(nil) callback=(nil) poller=0xcb7d30
libxl: debug: libxl_device.c:361:libxl__device_disk_set_backend: Disk vdev=xvda spec.backend=unknown
libxl: debug: libxl_device.c:396:libxl__device_disk_set_backend: Disk vdev=xvda, using backend phy
libxl: debug: libxl_device.c:361:libxl__device_disk_set_backend: Disk vdev=xvdb spec.backend=qdisk
libxl: debug: libxl_create.c:970:initiate_domain_create: running bootloader
libxl: debug: libxl_bootloader.c:324:libxl__bootloader_run: not a PV domain, skipping bootloader
libxl: debug: libxl_event.c:686:libxl__ev_xswatch_deregister: watch w=0xcb8840: deregister unregistered
domainbuilder: detail: xc_dom_allocate: cmdline="(null)", features="(null)"
domainbuilder: detail: xc_dom_kernel_file: filename="/usr/lib/xen/boot/hvmloader"
domainbuilder: detail: xc_dom_malloc_filemap : 463 kB
libxl: debug: libxl_dom.c:884:libxl__load_hvm_firmware_module: Loading BIOS: yes
# Here is the error message
libxl: error: libxl_dom.c:892:libxl__load_hvm_firmware_module: failed to read BIOS file: No such file or directory
libxl: error: libxl_dom.c:1079:libxl__build_hvm: initializing domain firmware failed
domainbuilder: detail: xc_dom_release: called
libxl: error: libxl_create.c:1223:domcreate_rebuild_done: cannot (re-)build domain: -3
libxl: debug: libxl.c:1712:devices_destroy_cb: forked pid 8301 for destroy of domain 2
libxl: debug: libxl_create.c:1640:do_domain_create: ao 0xcb7ca0: inprogress: poller=0xcb7d30, flags=i
libxl: debug: libxl_event.c:1869:libxl__ao_complete: ao 0xcb7ca0: complete, rc=-3
libxl: debug: libxl_event.c:1838:libxl__ao__destroy: ao 0xcb7ca0: destroy
libxl: debug: libxl.c:1445:libxl_domain_destroy: ao 0xcb7ca0: create: how=(nil) callback=(nil) poller=0xcb7d30
libxl: error: libxl.c:1575:libxl__destroy_domid: non-existant domain 2
libxl: error: libxl.c:1534:domain_destroy_callback: unable to destroy guest with domid 2
libxl: error: libxl.c:1463:domain_destroy_cb: destruction of domain 2 failed
libxl: debug: libxl_event.c:1869:libxl__ao_complete: ao 0xcb7ca0: complete, rc=-21
libxl: debug: libxl.c:1454:libxl_domain_destroy: ao 0xcb7ca0: inprogress: poller=0xcb7d30, flags=ic
libxl: debug: libxl_event.c:1838:libxl__ao__destroy: ao 0xcb7ca0: destroy
xencall:buffer: debug: total allocations:83 total releases:83
xencall:buffer: debug: current allocations:0 maximum allocations:3
xencall:buffer: debug: cache current size:3
xencall:buffer: debug: cache hits:69 misses:3 toobig:11
这是怎么回事?我做错了什么吗?这是一个错误吗?
答案1
就我而言,我在 Arch Linux 上从 AUR 安装了 XEN,升级后出现了问题。
在版本 4.8.0-5 中,SeaBIOS 已从软件包中删除(请参阅此评论),因为常规 Arch 存储库中有一个 SeaBIOS 版本。要解决此问题,只需通过运行 来安装它即可pacman -S seabios
。