qemu建立基本的虚拟机

[b]使用qemu建立虚拟机[/b]
[b]
1.需要内核文件 bzImage
2.制作操作系统的镜像 hda.img

[/b]
内核编译参考:[url]http://haoningabc.iteye.com/blog/2237569[/url]
制作简单的镜像需要使用[url]https://github.com/killinux/jslinux_reversed[/url]
具体建立一个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等

下载生成镜像的工具
主要使用[url]https://github.com/killinux/jslinux_reversed/blob/master/contrib/createimage.sh[/url]

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
注意如果启动失败,可能需要加上
[color=red]/sbin/mdev -s[/color]
作用是初始化/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的方式
[b]cache参数可以使用[/b]
[color=red]writethrough 直写模式:在调动write写入数据的同时将数据写入到磁盘缓存中
writeback 回写模式:数据写入到磁盘缓存即返回
none 关闭缓存[/color]

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

更多网络相关的,可以参考
[b]桥接的方式使用qemu建立虚拟机[/b]:[url]http://haoningabc.iteye.com/blog/2306736[/url]
[b]NAT的方式使用qemu建立虚拟机[/b]:
[url]http://haoningabc.iteye.com/blog/2306952[/url]
在debian上使用qemu建立mipsel虚拟机  QEMU 是一个开源的虚拟机<span class="t_tag" onclick="function onclick(){tagshow(event)}">程序,它可以虚拟i386, x86_64, MIPS, MIPSEL, PowerPC and Sparc 等<span class="t_tag" onclick="function onclick() 阅读详情

相关推荐

基于QMP实现对qemu虚拟机进行交互

本文详解QMP,包含qmp、hmp、qemu-guest-agent的介绍、工作原理、配置方法、范例 小慢哥的原创文章,欢迎转载 目录 ▪ QMP介绍 ▪ QMP语法 ▪ 单独使用qemu,启用QMP ▪ 通过libvirt启动qemu,启用QMP ▪ qemu-guest-agent(qemu-ga) ▪ 官方参考文档 QMP介绍 qemu对外提供了一个socket接口,称为qe...

weixin_40836557的博客 1378

qemu简单使用

1、qemu创建磁盘镜像 qemu-img create abytec.img 16M 2、qemu选项 qemu-system-i386: 使用 i386 命令启动 QEMU。QEMU 可以仿真几种不同的系统,但是要引导到 DOS,我们需要有一个 Intel 兼容的 CPU。 -m 16: 定义一个 16MB 内存的虚拟机。它看起来很小,但是 DOS 工作不需要很多的内存。在 DOS...

lingxufire的博客 1万+

QEMU虚拟机中如何安装Virtio驱动

在计算机虚拟化中,Virtio是一种半虚拟化解决方案,即需要对Guest OS进行一定的修改(安装相应的驱动程序),能够对虚拟机的I/O性能进行大幅的提升。在QEMU+KVM的环境中,Virtio的后端驱动由QEMU程序提供,不需要额外的安装,而前端驱动则位于Guest OS中,需要将相应OS类型的驱动程序安装到Guest OS中。 本文以QEMU+KVM为VMM,以Win 7为Guest OS...

1万+

Android Studio 虚拟机启动出现qemu-system-i386.exe 已停止运行问题解决办法

在配置AVD (android virtual device)时候,里面有个emulated performance 。里面三个选项,有一个是自动,一个硬件,一个是软件。默认的是自动。 出现qemu-system-i386.exe 停止工作主要的原因就是在于自动了。因为每台电脑的配置不同,而android studio 是使用intel IDE的,所以出现和AMD不兼容的情形。导

baidu_33634330的博客 1万+

在x86_64平台利用qemu搭建基于aarch64的虚拟机测试环境

1.安装qemu-system-aarch64 2.UEFI固件下载 3.操作系统下载 4.创建虚拟硬盘 5.虚拟机安装 6.配置网络 7.虚拟机启动 8.换源 9.参考链接 1.安装qemu-system-aarch64 直接用apt安装 sudo apt install -y qemu-system-arm 或者是从源码安装 wget https://downl...

whb19881207的专栏 4075

基于 Windows 平台利用 QEMU 部署 ARM 架构的虚拟机

本文介绍了在Windows平台上使用QEMU部署ARM架构虚拟机的方法。主要步骤包括:安装QEMU软件、配置环境变量、安装虚拟网卡并共享物理网卡、创建虚拟磁盘镜像,最后通过qemu-system-aarch64命令安装Kylin ARM版操作系统。文章重点说明了安装过程中的关键参数配置,如内存分配、CPU类型指定等,并提示安装过程较慢需要耐心等待。此外还提供了SSH安装和网络共享问题等常见问题的解决方法。通过QEMU模拟ARM环境,开发者可以在不依赖实际硬件的情况下进行跨平台开发和测试,有效提高开发效率。

qq_35662333的博客 3185

使用Buildroot + QEMU构建和运行Linux

使用Buildroot + QEMU构建和运行Linux

陨石䧛的天际 7629

X86_64平台上利用qemu安装aarch64架构的虚拟机

以下在x86平台上安装arm架构的虚拟机(包括aarch64),希望能帮到大家。 Qemu架构 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,...

qq_42001403的博客 7676

基于QEMU搭建交叉编译环境安装依赖库

交叉编译环境下,编译如果依赖太多的库,交叉编译是一件非常费劲的事情,本文 叫你如何搭建交叉编译环境,通过apt install 安装交叉编译库。

rabbit0206的博客 1525

qemu 启动ARM虚拟机的几点释惑

1.hw/arm/boot.c是各类BOOT的集散地,另一个之前接触过的BOOT为smpboot(为某款双核A7设计SMP版的FREERTOS,在这里得到启动灵感)。2.QEMU虚拟机本身对系统行为的模拟是完备的,不需要修改GUEST内核,所以基本上,QEMU启动命令的每个选项,背后都有文章,主要分成两个方面进行模拟,第一是对CPU的模拟,这是靠TCG翻译完成的,对于算力密集型程序,TCG会很忙很忙。第二个是对IO行为的模拟,而这个是依赖对各类IO支持完成的。

tugouxp的专栏 2967

探索Three.js:利用ShaderMaterial实现动态着色器特效

本文深入探讨了Three.js中ShaderMaterial的应用,指导开发者利用GLSL编写自定义着色器实现动态特效。文章从核心概念GLSL、Uniforms与Attributes讲起,通过创建动态颜色变化平面的实战案例,逐步进阶到实现波纹扩散与动态光影等高级效果,并提供了性能优化与调试技巧,帮助读者掌握创建高性能WebGL视觉特效的关键技能。

weixin_29250403的博客 201

QEMU搭建虚拟机

安装完成之后,在你的系统上 /usr/bin/ 或者 /usr/local/bin/ 路径下会出现一大堆 qemu 开头的工具包,这些就是我们搭建虚拟机需要用到的工具,比如x86系统主要使用 qemu-system-x86_64 和 qemu-img 这两个工具来搭建虚拟机。关于QEMU的版本根据个人需要选择,版本越高,依赖的工具版本越高。在这里作者也有一点心得要分享,就是实践过程中要大胆尝试,我就是太谨慎了,总是想找到一篇最符合情境的指导来进行操作,最后发现其实都大差不差,导致浪费太多时间。

yao_tao11的博客 1万+

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 551

一文读懂QEMU虚拟机

Qemu 架构 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工...

FontTian的博客 1万+

WhatsApp网页版扫码分析

扫码登录本质上是WhatsApp的多设备登录,设备之间可以独立运行,那么当我们首次通过WhatsApp扫码登录二维码时,到底发生了那些事情?交换了那些数据?

SocialMarketing的博客 5230

Python爬虫案例:从39问医生网爬取口腔科的在线问答记录(单轮问答)

本次实验爬取39问医生网中口腔科分类下的所有在线单轮问答记录,每页32条,共100页,总数据量为3200条,最终结果以excel格式保存。

JieBao11的博客 1640

银河麒麟 ARM架构 Qemu虚拟机

1. Qemu安装 Qemu的安装请参考: https://www.qemu.org/download/#source 下载源码,编译安装即可,注意银河麒麟上的gcc版本较低,请升级gcc,升级方式也为下载源码编译安装。 qemu-system-aarch64 --version 2. 虚拟机管理工具安装 安装虚拟机相关依赖: yum -y install virt-install libvirt virt-manager 安装完成后可以在启动菜单看到如下程序: 安装完成后启动管理工具。 3

q1009020096的博客 1万+

SAP CPI 和 PO 的区别

SAP CPI适合云集成轻量级的集成需求,并且由于其云架构,具有快速部署低维护高度可扩展的特点。SAP PO更适合本地系统集成复杂的集成场景和高度定制化的需求,并且对于已经有 SAP 基础设施的企业来说,PO 提供了更多的控制和灵活性。选择使用哪个平台通常取决于企业的技术架构、集成需求、预算以及对灵活性和控制的需求。如果企业主要使用 SAP 的本地系统,并且有复杂的集成需求,那么 SAP PO 是一个理想的选择。如果企业更多地依赖云应用,并希望简化集成操作,那么 SAP CPI 更加适合。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1870

从源码编译安装QEMU以及如何创建QEMU虚拟机

目录1. 主机环境/软件版本2. 从源码编译安装QEMU2.1 获取QEMU 5.1.0的源码2.2 创建build目录+配置2.3 编译QEMU3 创建QEMU虚拟机镜像4 启动QEMU虚拟机 1. 主机环境/软件版本 Host: Ubuntu 16.04 QEMU v5.1.0 Guest: Ubuntu 16.04 2. 从源码编译安装QEMU 2.1 获取QEMU 5.1.0的源码 ~/workspace$ wget https://download.qemu.org/qemu-5.1.0.tar

Haifeng的博客 1万+

MongoDB分布式事务实现:两阶段提交、日志复制与冲突解决

MongoDB分布式事务机制解析 本文深入剖析了MongoDB 4.0+版本的分布式事务实现原理,重点分析了其在跨文档/跨集合/跨分片场景下的数据一致性解决方案。核心内容包括: 底层机制:采用改进的两阶段提交协议,通过oplog日志复制实现无中心协调器的事务管理,结合WiredTiger存储引擎和锁机制保障ACID特性。 创新设计:将传统2PC的中心协调功能分散到Primary节点,利用oplog作为事务状态记录,实现自动故障恢复和60秒超时回滚机制。 性能优化:针对大事务、写冲突等常见问题,提出拆分微事务

数据知道的博客 1261

Odoo 入门 | 什么是 Odoo?

Odoo是一套全球开源的ERP/CRM系统,最初的名字为TinyERP,08年5月之后称之为OpenERP,之后又改为Odoo。

洛阳泰山的博客 6207

qemu虚拟机模拟固件环境搭建

qemu虚拟机模拟固件环境搭建并配置路由器漏洞分析环境

weixin_52111404的博客 8959

联邦学习中的差分隐私保护详解及python实现

随着数据隐私法规(如 GDPR、CCPA)日益严格,传统将数据集中到云端训练模型的方式面临合规与安全风险。联邦学习通过让各客户端保留本地数据,仅共享模型更新,缓解了数据流动带来的隐私风险。但模型更新仍可能泄露个体信息。为进一步保障隐私,可在本地更新中引入差分隐私(DP)机制,通过向梯度或模型更新中注入随机噪声,防止反向推断原始数据citeturn0search9。

闲人编程的博客 1920

在QEMU虚拟机和宿主机之间传输文件

首先需要在虚拟机上安装SSH服务器(如果没有的话),然后通过虚拟机的IP地址(例如,使用-user-net选项配置的虚拟机网络)访问它。现在,在虚拟机的/mnt/iso目录中,可以访问宿主机中的文件。通过挂载ISO,可以将宿主机上的文件传输到虚拟机。但是,如果要将虚拟机上的文件传输回宿主机,需要创建一个新ISO映像。此时,/mnt/shared目录将指向宿主机上的/tmp/shared目录,可以在两者之间传输文件。首先,在宿主机上创建一个共享目录,然后使用QEMU的-virtfs选项将其挂载到虚拟机上。

远小帅的博客 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

linux下qemu-kvm、virt-manager和virsh建立虚拟机没有声音解决方法

ENV: [root@Fedora32 ~]#uname -r 5.8.16-200.fc32.x86_64 [root@Fedora32 ~]#cat /etc/redhat-release Fedora release 32 (Thirty Two) [root@Fedora32 ~]#rpm -qa|grep kvm qemu-kvm-core-4.2.1-1.fc32.x86_64 libvirt-daemon-kvm-6.1.0-4.fc32.x86_64 qemu-kvm-4.2.1-1.

silent_ghost的专栏 4469

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Ubuntu虚拟机中使用QEMU搭建ARM64环境

Linux的根文件系统一般也叫做 rootfs,Linux的根文件系统更像是一个文件夹或者叫做目录,在这个目录里面会有很多的子目录。根目录下和子目录中会有很多的文件,这些文件是Linux运行所必须的,比如库、常用的软件和命令、设备文件、配置文件等等。根文件系统的“根”字就说明了这个文件系统的重要性,它是其他文件系统的根,没有这个“根” ,其他的文件系统或者软件就别想工作。比如我们常用的 ls、mv、ifconfig 等命令其实就是一个个小软件,只是这些软件没有图形界面,而且需要输入命令来运行。

Pijiojio的博客 4061
上一篇: tap的方式使用qemu建立虚拟机桥接网络
下一篇: tap的方式使用qemu建立虚拟机NAT网络
linux内核控
博客等级 码龄19年 41粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值