libguestfs是如何获取操作系统及arch和文件系统以及MBR

本文介绍了一种使用libguestfs和qemu-img技术在不同操作系统上管理和操作虚拟机磁盘的方法。包括如何确定系统架构(32位或64位)、文件系统类型、操作系统类型,以及使用sfdisk、blkid等工具获取MBR和文件系统信息。并通过具体示例展示了如何利用qemu-img创建增量盘,以及如何通过qemu-system-x86_64运行包含特定内核参数的appliance。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

arch:   64还是32

使用的是file.   

windows:  file system32/windows/cmd.exe

linux:  file /bin/ls  如果不存在会继续遍历其它可执行文件。

 

MBR:

sfdisk --print-id /dev/sda 1

 

文件系统:

blkid -c /dev/null -o "value" -s TYPE /dev/sda5

blkid 可以输出 文件系统的详细信息。加入 -s 是只输出那一项, -o "value" 只输出value.

 

获取操作系统:

linux还是传统的读取 /etc/*-release  文件。

windows则是通过读取注册表获取

HKEY_LOCAL_MACHINE\Microsoft\Windows NT\CurrentVersion\ProductName

http://ydc1992.coding.me/posts/a5fc00a6.html

 

 

 

libguestfs进程使用qemu运行一个appliance作为它的子进程。

appliance使用supermin和host的kernel制作而成。

使用qemu-img制作目标磁盘的增量盘给appliance使用。

appliance内部运行guestfsd守护进程。

libguestfs进程和appliance内部的guestfsd通过socket和host进行通信,实现具体的功能。

qemu启动appliance过程如下:

qemu-img create -f qcow2 -o backing_file=rbd:rbd/test.img:mon_host=10.20.1.5\:6789\;10.20.1.6\:6789\;10.20.1.7\:6789:auth_supported=none,backing_fmt=raw /tmp/libguestfsXRFM98/overlay1

#使用目标虚拟机的磁盘创建一个增量盘
/usr/bin/qemu-system-x86_64 -global virtio-blk-pci.scsi=off -nodefconfig -enable-fips -nodefaults -display none -machine accel=kvm:tcg -cpu host -m 500 -no-reboot -rtc driftfix=slew -no-hpet -global kvm-pit.lost_tick_policy=discard -kernel /var/tmp/.guestfs-0/appliance.d/kernel -initrd /var/tmp/.guestfs-0/appliance.d/initrd -device virtio-scsi-pci,id=scsi -drive file=/tmp/libguestfsXRFM98/overlay1,cache=unsafe,format=qcow2,id=hd0,if=none -device scsi-hd,drive=hd0 -drive file=/var/tmp/.guestfs-0/appliance.d/root,snapshot=on,id=appliance,cache=unsafe,if=none -device scsi-hd,drive=appliance -device virtio-serial-pci -serial stdio -device sga -chardev socket,path=/tmp/libguestfsXRFM98/guestfsd.sock,id=channel0 -device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 -append panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 TERM=linux

#使用创建好的增量盘启动qemu实例

 

参考:https://cloud.tencent.com/developer/article/1087085

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值