![Arch linux ( kvm/qemu 虚拟化 ) 无法打开 libiscsi.so.4](https://linux22.com/image/88392/Arch%20linux%20(%20kvm%2Fqemu%20%E8%99%9A%E6%8B%9F%E5%8C%96%20)%20%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%20libiscsi.so.4.png)
我已经遵循了 Arch Linux 的步骤#KVM和#qemu
1)sudo pacman -S
然后安装libs
libvirt
libiscsi
libaio
qemu
qemu-arch-extra
qemu-block-iscsi
qemu-block-rbd
qemu-block-gluster
2)$ lscpu
检查VT-x是否启用
3)在以下模块.conf
中添加文件:/etc/modprobe.d/
network device (virtio-net)
block device (virtio-blk)
controller device (virtio-scsi)
serial device (virtio-serial)
balloon device (virtio-balloon)
4) 我已经包含并运行mkinitcpio.conf
钩子modconf
来加载 initramfs 中的模块。
5)运行$ lsinitcpio
我认为这里存在问题,因为在输出中我没有看到加载任何虚拟化模块:
usr/lib/modules
usr/lib/modules/4.5.4-1-ARCH
usr/lib/modules/4.5.4-1-ARCH/modules.devname
usr/lib/modules/4.5.4-1-ARCH/modules.builtin.bin
usr/lib/modules/4.5.4-1-ARCH/modules.symbols.bin
usr/lib/modules/4.5.4-1-ARCH/modules.alias.bin
usr/lib/modules/4.5.4-1-ARCH/modules.dep.bin
usr/lib/modules/4.5.4-1-ARCH/kernel
usr/lib/modules/4.5.4-1-ARCH/kernel/sdhci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/ext4.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/usb-common.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/ehci-pci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/sd_mod.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/rtsx_pci_sdmmc.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/serio.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/cdrom.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/hid.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/ehci-hcd.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/sdhci-acpi.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/atkbd.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/xhci-pci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/usbhid.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/xhci-hcd.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/sr_mod.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/crc16.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/rtsx_pci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/libps2.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/libahci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/led-class.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/scsi_mod.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/mmc_core.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/mmc_block.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/i8042.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/usbcore.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/ahci.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/libata.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/mbcache.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/usb-storage.ko
usr/lib/modules/4.5.4-1-ARCH/kernel/jbd2.ko
6)当我跑步时:
$ modinfo virtio-scsi
我得到以下答案:
filename: /lib/modules/4.5.4-1-ARCH/kernel/drivers/scsi/virtio_scsi.ko.gz
license: GPL
description: Virtio SCSI HBA driver
alias: virtio:d00000008v*
depends: virtio,scsi_mod,virtio_ring
intree: Y
vermagic: 4.5.4-1-ARCH SMP preempt mod_unload modversions
$ systool -v -m virtio-scsi
对于同一模块,我收到一条错误消息:
Error opening module `virtio-scsi`
7)当我尝试创建 qemu 图像时,$ qemu-img create -f raw arch-qemu 8G
出现以下错误:
$ Failed to open module:
libiscsi.so.4: cannot open shared object file: No such file or directory
任何帮助表示赞赏!
答案1
在我手动安装旧版本 ( ) 的 libiscsi 后,我设法解决了这个问题,v1.14.0
其中 qemu 可以找到该libiscsi.so.4
文件。
首先,我删除了v1.17.0-2
用 pacman 安装的程序
sudo pacman -Rddn libiscsi
,而没有卸载 qemu-block-iscsi 依赖项。
我从github克隆了源代码萨尔伯格/libiscsi构建完成后,我使用 libtool 安装了该库。我知道这不是最好的解决方案,因为在下次更新 qemu 时,我将不得不删除手动安装并pacman
再次使用该软件包。
目前我看到在 arch linux 上qemu页面包裹是:
2016-05-10 测试中版本 2.6.0-1 被标记为过时
以 root 身份执行的代码:
# git clone folder - libiscsi/
# Making install in lib
# directory 'libiscsi/lib'
mkdir -p '/usr/lib'
/bin/sh ../libtool --mode=install /usr/bin/install -c libiscsi.la '/usr/lib'
libtool --finish /usr/lib
----------------------------------------------------------------------
# Libraries have been installed in: /usr/lib
----------------------------------------------------------------------
# Making install in utils
# directory 'libiscsi/utils'
mkdir -p '/usr/bin'
/bin/sh ../libtool --mode=install /usr/bin/install -c iscsi-inq iscsi-ls iscsi-perf iscsi-readcapacity16 iscsi-swp '/usr/bin'
----------------------------------------------------------------------
# directory 'libiscsi/examples'
mkdir -p '/usr/bin'
install -c ld_iscsi.so '/usr/bin'
----------------------------------------------------------------------
# directory 'libiscsi/
mkdir -p '/usr/include/iscsi'
install -c -m 644 include/iscsi.h include/scsi-lowlevel.h '/usr/include/iscsi'
mkdir -p '/usr/lib/pkgconfig'
install -c -m 644 libiscsi.pc '/usr/lib/pkgconfig'
我手动运行了这些命令,因为默认情况下make install
libiscsi 正在将 lib 安装在/usr/local/bin
和中/usr/local/lib
。
有什么意见和建议欢迎留言!