主要教程 https://gem5art.readthedocs.io/en/latest/tutorials/boot-tutorial.html
基本环境搭建
原教程很详细,这里只记录实验中的一些注意事项
步骤梳理
依赖:安装好qemu,我是源码安装的(qemu安装)
1、创建工作路径
2、下载packer(自动化生成image的工具,gem5art中生成的是qemu镜像)
3、编写packer模板。gem5art已经把模板写好了(boot-exit.json),不过可能需要依据具体情况修改参数,比如路径之类的
4、运行packer。packer会根据模板文件自动下载ubuntu镜像,并启动qemu,然后自动安装ubuntu,中间过程不用人工操作,不过我们可以通过vnc来观察安装过程,以防出bug(推荐vncviewer工具)
5、镜像存放在boot-exit-image/里面(输出路径和名称由模板里面的参数指定,如"image_name": "boot-exit"
)
6、用qemu跑一下镜像(gem5art教程没有这一步,是我加的)。运行命令是qemu-system-x86_64 boot-exit/boot-exit-image/boot-exit -m size=8192
,其中 -m size=8192 参数是设置内存大小,默认的内存大小会出错(Kernel panic - not syscing : Out of memory and no killable processes
),我看模板里面的内存设置的8192,就跟着设置了。另外使用-nic user,hostfwd=tcp::5555-:22
选项,即
qemu-system-x86_64 boot-exit/boot-exit-image/boot-exit -m size=8192 -nic user,hostfwd=tcp::5555-:22
可以把客户机的22端口映射到主机的5555端口上,在主机上就可以用ssh连接客户机,用scp
来传输文件了
7、用gem5 fs mode跑镜像。如果用kvm cpu报错的话(X86KvmCPU fails -- reason code 0x80000021
),可以参考(这个邮件记录来修改fs_workload.cc文件)。实在不行,也可以切换成其它cpu跑。
基本流程解读
首先packer的配置文件可以参考官方文档
然后下面是我自己的解读。
1、这一大串是qemu boot成功后的模拟按键,即按下回车,然后f6,然后esc,然后退格键删除原先的东西(通过vncviewer观察到的)
"boot_command_prefix": "<enter><wait><f6><esc><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
2、用户名密码
"ssh_fullname": "gem5",
"ssh_password": "12345",
3、文件post-installation.sh
这里面把exit.sh
文件放到了/root/
路径下,然后在/root/.bashrc
末尾,让它运行exit.sh
,所以只要系统一启动终端,就会运行exit.sh
里的m5 exit
之类,然后gem5就会退出了。