背景.接到项目需要交叉编译ubuntu 16.04 LTS 上开发的项目的ARM版本,由于之前做过类似的工作,虽然遇到一些问题但是都解决了,编译好之后由于没有测试环境所以想安装一个ARM虚拟机,来进行测试。
在网上看到两篇文章:
1.https://blog.csdn.net/jefbai/article/details/81784982
2.https://blog.csdn.net/whb19881207/article/details/102456179
我是直接下载的第一个连接的百度网盘的创建好的虚拟机。
运行命令
qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios QEMU_EFI.fd -nographic -device virtio-scsi-device -drive if=none,file=ubuntu16.04-arm64.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -netdev type=tap,id=net0 -device virtio-net-device,netdev=net0
发现没有找到QEMU_EFI.fd,于是搜索了一下,这个文件可以在QEMU_EFI.fd(下载地址:http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/)下载到。
把它放到与百度网盘下载的。qcow2文件同一目录,命令就可以执行了。
执行后,正常情况下还不能进入系统,出现以下界面,如果没出现,等一等他总会出现:
这个问题上面两个教程都有提到,解决方案也非常好。第二个连接很详细。
进入虚拟机后输入用户名密码都是jefby,就可以进入系统啦。
现在说一下出现的新的问题,虚拟机无法与宿主机通信!!!!!!
由于本人对linux网络配置不熟悉,所以花了几个小时时间,终于找到一个简单的方式。
参考了一下这个:https://blog.csdn.net/qiusi0225/article/details/80447710
1.在宿主机安装tunctl
sudo apt-get install uml-utilities
2.创建虚拟网卡
tunctl -t tap0 -u root
3.设置虚拟网卡的地址,设置这个地址因为看了qume有一个默认的地址就是这个,我的主机eth0的地址是192.168.5.11,为了区分写了这个地址,宿主机端就算配置好了
ifconfig tap0 10.0.0.2
4.虚拟机里面登录后配置
sudo ifconfig eth0 10.0.0.2.15
5.ping一下宿主机,网络配置好了。
6.接下来进行文件的传输,使用ssh自带软件SCP,参考了连接:https://www.cnblogs.com/magicc/p/6490566.html
scp pkmaparm.tar jefby@10.0.2.15:/home/jefby
看结果:
搞定!
7.设置LD_LIBRARY_PATH
export LD_LIBRARY_PATH=~/pkmaparm/lib_arm/
8.运行软件,一切正常!