QEMU ARM Emulator使用参数

本文详细介绍了QEMU ARM模拟器的启动参数,包括kernel+initrd、kernel+NFS、bootstrap+NAND、kernel+NAND四种启动方式,以及常用参数如-kernel、-initrd、-append等的使用。同时讲解了网络配置选项,如-user模式和-tap模式,以及如何进行端口映射和NFS挂载。

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

QEMU Launching param

1       kernel + initrd

这种方式在QEMU启动方法中最常见和最直接,启动参数形式如下:

qemu-system-arm -kernel zImage -initrd rootfs.cramfs -append “init=/linuxrc”

每次zImagerootfs修改后首先build出来,直接作为参数传入QEMU,方便快捷。

此方式原理是,QEMU内置了一个很精简的bootloader,作用类似于u-bootzImagerootfs和传递给kernel的参数(append后字串)直接被QEMU加载进虚拟机内存的相对位置,并从kernel第一条语句开始执行。

kernel成功引导后就会挂载rootfs,并从文件系统的/linuxrc脚本开始执行初始化动作。

 

此方式有局限性,原因在rootfs.cramfs为只读的文件系统,如果调用/linuxrc创建文件夹或拷贝动作就会无法完成(这也许可以通过mount一个可读写设备解决)。

 

2       kernel + NFS

这种方式与第一种相比,文件系统的挂载位置和方式发生了改变,因为可以指定NFS为可读可写的,使用体验上比第一种进了一大步。

NFS需要网络支持,也就是QEMU的虚拟网卡支持,启动参数如下:

qemu-system-arm -kernel zImage -append "console=ttyS0 root=/dev/nfs nfsroot=/root/nfs rw  init=/linuxrc ip=dhcp nousb" -rtc base=localtime -serial stdio

用户不写-net的情况下,QEMU默认会追加上“-net nic -net user”。

-net nic表示为虚拟机创建一个虚拟网卡

-net user表示QEMU使用user模式,什么是user模式,请见-net

 

然后大家注意到给kernel的传参,差异点着重在蓝色部分:

root=/dev/nfs指定根文件系统的挂载点,是在QEMU Guest OS上的位置

nfsroot=127.0.0.1:/root/nfs是指NFS在网络上的位置

ip=dhcp指定QEMU Guest OSip分配方式

 

总的引导过程就是,kernel引导完成就会通过寻找网关为Guest OS分配ip,然后与NFS建立连接,再把根文件系统挂载起来。

 

这种方式的好处是可以在host OS方便地修改根文件系统的内容,不用重新启动kernel

但要注意前提,要使用NFS方式挂载rootfs,那就要先启动NFS服务,并定制好rootfs内容。

 

启动NFS服务过程举例:

1.         修改/etc/export文件,增加一行“/root/nfs/ *(rw,insecure,sync,no_root_squash)

注意insecure很重要,保证本地访问NFS

*表示允许任何ip地址访问NFS

rwNFS盘可读可写

### 使用 Visual Studio Code 在 Kali Linux 上实现恶意软件免杀技巧 #### 重要声明 开发和部署任何类型的恶意软件都是非法且道德不可接受的行为。本回答仅提供技术信息用于教育目的,旨在帮助安全研究人员了解防御机制。 #### 技术背景 Visual Studio Code (VS Code) 是一款强大的多平台代码编辑器,在 Kali Linux 中可以通过多种方式安装并配置环境来编写不同编程语言的应用程序[^1]。对于研究性质的工作而言,理解如何使某些二进制文件绕过基本检测机制具有一定的学习价值。 #### 编写混淆脚本 为了防止被简单特征码扫描工具识别出来,可以采用字符串加密、函数重命名等方式对源代码进行变形处理: ```python import base64 def obfuscate_string(input_str): encoded_bytes = input_str.encode('utf-8') encrypted_data = base64.b64encode(encoded_bytes).decode() return f"exec(__import__('base64').b64decode('{encrypted_data}'))" obfuscated_code = obfuscate_string(""" print("This is an example of string obfuscation.") """) print(obfuscated_code) ``` 此段Python代码展示了基础的Base64编码作为简单的演示[^3]。 #### 修改PE头或其他元数据 针对Windows可移植执行体(Portable Executable, PE),改变其头部结构或者嵌入额外资源能够有效干扰静态分析过程。然而请注意,这类操作通常涉及汇编层面的知识以及特定库的支持,如`pefile` Python模块。 #### 动态加载与反射注入 通过动态链接库(DLL)或内存映射技术载入必要的功能组件而非直接包含于主程序体内;这种方法增加了逆向工程难度的同时也使得传统的基于签名的安全产品难以捕捉到完整的攻击模式[^5]。 #### 创建自定义打包方案 利用PyInstaller等工具将解释型语言转换成独立运行的原生应用,并加入加壳保护措施进一步增强隐蔽效果。不过需要注意的是,过度复杂的封装可能会引起高级防护系统的怀疑。 #### 配置 VS Code 支持上述工作流程 确保已按照官方指南完成VS Code及其扩展插件的设置,以便支持目标编程语言特性及调试需求[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值