`
haoningabc
  • 浏览: 1489250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

qemu建立基本的虚拟机

    博客分类:
  • qemu
阅读更多
使用qemu建立虚拟机

1.需要内核文件 bzImage
2.制作操作系统的镜像 hda.img


内核编译参考:http://haoningabc.iteye.com/blog/2237569
制作简单的镜像需要使用https://github.com/killinux/jslinux_reversed
具体建立一个120M的精简操作系统,debian的etch版本

要求支持ip,ifconfig,dhclient等网络命令
建立方法,这个debootstrap命令国内可能不通,去aws上操作吧
建立方法:
在ubuntu操作系统上
cd /opt/  
debootstrap        --variant=minbase         --include=dhcp-client,ssh,vim,make,psmisc,mini-httpd,net-tools,iproute,iputils-ping,procps,telnet,iptables,wget,tcpdump,curl,gdb,binutils,gcc,libc6-dev,lsof,strace         --exclude=locales,aptitude,gnupg,cron,udev,tasksel,rsyslog,groff-base,manpages,gpgv,man-db,apt,debian-archive-keyring,sysv-rc,sysvinit,insserv,python2.6         --arch i386         etch etch         'http://archive.debian.org/debian'  

得到
/opt/etch
为所需要的操作系统的文件,注意这里选的包包含基本的网络命令ip,dhclient等

下载生成镜像的工具
主要使用https://github.com/killinux/jslinux_reversed/blob/master/contrib/createimage.sh
cd /var/www/html/
git clone https://github.com/killinux/jslinux_reversed
mv /opt/etch /var/www/html/jslinux_reversed/contrib/squeeze  
./createimage.sh  

生成hda.img文件

在linux启动的时候默认先调用/sbin/init
所以检查init文件的正确性
mkdir hda
mount -o loop hda.img hda
vim hda/sbin/init
#!/bin/sh  
show_boot_time 2>/dev/null  
echo "JSLinux started, initializing..."  
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin  
export HOME=/root  
export TERM=vt100  
mount -n -t proc /proc /proc  
mount -n -t sysfs /sys /sys  
mount -n -t devpts devpts /dev/pts  
mount -n -t tmpfs /tmp /tmp  
mkdir -p "/tmp/root"  
ip link set up dev lo  
main() {  
    echo >/dev/clipboard  
    while :; do  
        setsid sh -c "exec bash 0<>/dev/ttyS0 1>&0 2>&0"  
    done  
}  
#. /dev/clipboard  
main "$@"  

这里注释掉#. /dev/clipboard 
注意如果启动失败,可能需要加上
/sbin/mdev -s
作用是初始化/dev下面的文件
这里关键点是挂载/proc /sys 和/dev 三个文件系统

有了bzImage内核和hda.img镜像
就可以建立虚拟机了
qemu-system-i386 -kernel bzImage -drive file=hda.img,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1"  -nographic 

或者
qemu-system-i386 -kernel bzImage -hda  hda.img -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1"  -nographic  

-hda或者使用-drive的方式
cache参数可以使用
writethrough 直写模式:在调动write写入数据的同时将数据写入到磁盘缓存中
writeback   回写模式:数据写入到磁盘缓存即返回
none 关闭缓存


btw,如果不想破坏原来的hda.img
使用增量建立vm
可以指定hda.img为backing_file
qemu-img create -f qcow2 -o backing_file=hda.img hda_hasbacking_file.qcow2

即hda.img 作为基础模板,
新的hda_hasbacking_file.qcow2 保存hda.img的增量部分
使用hda_hasbacking_file.qcow2建立的vm不会对原来镜像造成破坏
qemu-system-i386 -kernel bzImage -drive file=hda_hasbacking_file.qcow2,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1"  -nographic


如果加了-boot order=dc,menu=on
可以控制启动顺序,和是否显示启动菜单
d为光驱,c为第一个硬盘

如果添加网络则用-net 参数

qemu-system-i386 -kernel  bzImage -drive file=hda_hasbacking_file.qcow2,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1"  -nographic -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=no,downscript=no


-net nic 为必须的参数表明这是一个网卡配置
vlan表示blan编号,默认0
macaddr是mac地址,进虚拟机后
ctrl+a c 切换到monitor模式
info network查看网卡
root@(none):/# QEMU 2.5.1 monitor - type 'help' for more information
(qemu) info network
hub 0
 \ hub0port1: tap.0: index=0,type=tap,ifname=tap1,script=no,downscript=no
 \ hub0port0: e1000.0: index=0,type=nic,model=e1000,macaddr=52:54:00:12:34:22
(qemu) 

可以看到mac地址
52:54:00:12:34:22
是我们建立vm的时候指定的

model为网卡类型,可以查看qemu查看网卡的类型有哪些
qemu-system-i386 -net nic,model=?
qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

更多网络相关的,可以参考
桥接的方式使用qemu建立虚拟机http://haoningabc.iteye.com/blog/2306736
NAT的方式使用qemu建立虚拟机
http://haoningabc.iteye.com/blog/2306952





分享到:
评论

相关推荐

    易语言源码控制qemu虚拟机.rar

    2. 网络通信:为了实现对虚拟机的控制,开发者可以利用易语言的网络编程功能,如TCP/IP协议,建立与QEMU的通信管道,发送控制指令。 3. 数据交换:通过管道或套接字实现主机与虚拟机之间的数据传输,例如传递文件、...

    qemu-kvm和ESXi虚拟机逃逸实例分享.pdf

    本文主要分享了两个重要的虚拟化平台——Qemu-kvm和VMware ESXi的虚拟机逃逸实例,这对于理解虚拟化安全以及如何防范高级威胁至关重要。虚拟机逃逸是指攻击者在获得虚拟机内部的权限后,进一步突破虚拟化层的限制,...

    windows x86-64系统上建立arm(aarch64)centos虚拟机

    windows x86_64系统上建立arm(aarch64)centos虚拟机。 需要准备以下安装包和工具包: qemu-w64-setup-20210505.exe(虚拟机) QEMU_EFI.fd(引导工具,bios) tap-windows-9.21.2.exe (用于虚拟机与宿主机建立通信...

    详解QEMU网络配置的方法

    QEMU是一种流行的开源机器模拟器和虚拟化器,它支持多种虚拟化技术,包括KVM、Xen...通过本文的介绍,希望读者能够掌握QEMU的两种基本网络配置方式,并根据自己的需求进行适当的配置,以达到最佳的虚拟机网络使用体验。

    AIX虚拟机安装方法

    ### AIX虚拟机安装方法详解 #### 一、概述 AIX虚拟机的安装方法是在Linux系统中模拟AIX环境,使用户能够在不熟悉AIX系统的情况下进行学习和操作,从而减少对实际服务器的直接干预风险。本文档将详细介绍如何在Dell...

    KVM 源代码分析-虚拟机创建和运行流程代码分析.pdf

    - **函数`kvm_create()`**:创建KVM虚拟机实例,通过`ioctl(KVM_CREATE_VM)`在内核中建立虚拟机数据结构。 - **函数`kvm_create_vcpu()`**:创建vCPU,通过`ioctl(KVM_CREATE_VCPU)`创建vCPU的内核数据结构。 - **...

    基于QEMU模拟器的鲲鹏920处理器开发环境搭建实验报告

    - 使用管理员权限打开命令提示符,进入qcow2镜像文件所在目录,运行QEMU命令启动虚拟机。 实验流程涉及的步骤包括QEMU的下载、安装、环境变量配置,以及openEuler操作系统的下载、解压、虚拟机创建等。通过这些...

    安卓手机上的客户端虚拟机

    qemu可以在安卓手机上建立虚拟机,但是性能就呵呵可,没什么卵用,但是可以用来装13

    CentOS环境下opensuse虚拟机的创建

    在IT行业中,虚拟化技术是不可或缺的一部分,它允许我们在一台物理机器上运行多个独立的操作系统实例。本话题将深入探讨如何在CentOS环境下创建一个...希望以上信息能帮助你成功地在CentOS上建立OpenSUSE虚拟机。

    KVM 虚拟机安装

    可以使用以下命令建立虚拟机磁盘镜像文件: `qemu-img create -f qcow2 test.qcow2 20G` `qemu-img create -f raw test.raw 20G` 2. 建立虚拟机示例 可以使用以下命令建立虚拟机示例: `virt-install --name ...

    ustc os clx lab1:qemu+Multiboot启动 乱七八糟写的,刚接触os,很多地方不是很懂,望指正

    安装QEMU,了解QEMU对multiboot的 支持情况 可以使用其他虚拟机或模拟器 遵守multiboot协议,写multiboot header 直接在VGA的显存中写“helloworld” 使用串口输出“HELLOWORLD” 了解并掌握必要的汇编 了解Makefile...

    Linux 虚拟机的安装

    在IT行业中,虚拟化技术是不可或缺的一部分,尤其在服务器管理和开发测试环境中,Linux虚拟机的安装扮演着重要的角色。本文将详细阐述如何安装Linux虚拟机,重点围绕“源码”和“工具”这两个标签展开。 首先,让...

    IoT安全基本功系列——内核的编译与qemu启动 .pdf

    QEMU是一个强大的虚拟机,能模拟多种处理器架构,使得我们能够在本地环境中运行不同版本的Linux系统。在QEMU中启动自编译内核,需要指定内核映像和文件系统,这样就可以观察和测试内核的行为,这对于调试和安全分析...

    电信设备-一种实现虚拟机与管理域进程间通信的方法.zip

    3. **网络套接字**:通过TCP/IP或其他网络协议,虚拟机和管理域可以直接建立连接进行数据交换。这种方法灵活,但可能涉及网络安全和性能问题。 4. **共享内存**:在某些高性能场景下,共享内存可提供低延迟通信。...

    vnc_kvm_虚拟机的连接工具.zip

    然后在本地运行VNC客户端,如RealVNC或TightVNC,输入KVM主机的IP地址和端口号(如`192.168.1.100:5900`),即可建立连接。 需要注意的是,VNC虽然方便,但其通信过程未加密,可能会暴露敏感信息。因此,在生产环境...

    内核虚拟机KVM分析资料文档

    KVM的基本结构包含两大部分:KVM驱动和QEMU。KVM驱动作为Linux内核的一部分,负责虚拟机的管理,包括创建虚拟机、分配虚拟内存、管理虚拟CPU的寄存器和运行虚拟CPU。QEMU则扮演着模拟PC硬件的角色,处理I/O设备模型...

    Ubuntu18.04+Qemu调试Linux内核实验记录

    QEMU是一款强大的虚拟机软件,可以模拟多种CPU架构,并支持在用户模式下运行目标操作系统,这对于调试内核非常方便。要启动QEMU,你可能需要使用类似以下的命令: ```bash qemu-system-x86_64 -kernel vmlinuz-...

    Redhat_CentOS系统KVM虚拟机安装过程详解

    4. **建立虚拟机** - 分配硬盘空间:使用`qemu-img`命令创建虚拟磁盘。 ```bash qemu-img create -f qcow2 -o preallocation=metadata /home/kvm/centos65-x64-mysql.qcow2 200G ``` - 配置网络连接:默认情况...

    网络实验报告 VLAN配置

    - 拖拽四个QEMU虚拟机到工作区,并命名为QEMU1至QEMU4。 - 使用FastEthernet连接线将这四个虚拟机分别连接到交换机的端口1至4。 - 启动所有QEMU虚拟机。 3. **配置IP地址** - 在QEMU1和QEMU2上配置IP地址为192....

    packer-qemu-templates:Packer qemu模板

    亲切的问候,雅各布介绍packer-qemu-templates提供了Packer模板,可用于无人参与地以qcow2格式构建相关的虚拟机映像,以供KVM使用。 此外,通过将所有与Vagrant一​​起使用的模板配置为允许Packer通过libvirt后...

Global site tag (gtag.js) - Google Analytics