前情提要:现在需要的环境是虚拟机ubuntu中安装qemu仿真环境,使之可以仿真物联网设备的固件们。我由于各种各样的原因,已经搭过好多次了,但依旧每次都会出现新问题[哭泣]。言归正传,在这里我就把我遇到的一些问题总结一下,获得经验值+100。【题目也可以叫做:我与Ubuntu相爱相杀的那些年?】
【经验一】
目标固件二进制基本上都是32位的,所以首选是32bit的Ubuntu系统。但是现在具有i386镜像的Ubuntu最新的就是16.04了,所以用的是Ubuntu16.04的i386镜像。但是安装了VMware tools之后,发现仍旧不能使用主机与虚拟机之间复制粘贴或拖拽,只能退而求其次的使用了共享文件夹。但是这时候,问题又来了,可能会出现/mnt文件夹下啥也没有的情况,正常的应该是/mnt/hgfs路径下就是设置的共享文件夹,这时候只需要重新安装VMware tools就可以解决了。
不过,也有可能一开始安装的是open-vm-tools,这个我试过,仍然不能够复制粘贴和拖拽,估计就是32位系统的老问题。但是如果此时也出现了设置了共享文件夹但是/mnt下啥也没有的情况,那就有点难办了,据我的经验来看,这时候想要重新安装vmware tools是行不通的,因为VMware Workstation上重新安装VMware Tools的按钮是灰的,我查了一些资料,里边的方法在我这里都没有奏效,所以我直接重装的Ubuntu,然后直接安装的VMware Tools。【其实也可以试试把open-vm-tools卸载掉,再装VMware Tools】
综上:使用Ubuntu16.04-i386不能实现快捷的主机与虚拟机之间的复制粘贴和拖拽,只能使用共享文件夹。解决/mnt下找不到共享文件夹的办法是安装VMware Tools。
【经验二】
换源的问题,一般常用的就是阿里源、清华源等等吧,但是有时候按照从网上找的教程里贴出的源更换后仍旧出现找不到想要的软件包的问题,这个时候,别想换回Ubuntu系统自带的源,因为update需要的时间太久了太久了太久了。所以只需要去找一下其他的教程,再尝试着换一下。不知道为什么,也没仔细比对过教程中的源有什么区别,不过有些教程的源在update的时候会出现Error,但是有些就不会。反正就多找一些,挨个试,什么时候不会出Error,那就应该可以了。
贴一个我试着没问题的教程,点击。
【经验三】
因为32位虚拟机不能愉快的复制粘贴,想要查东西的时候,有点不方便,所以还想在Ubuntu中安一个搜狗输入法。安装之前请先换源,要不然,太慢了...
主要参考的是教程1和教程2,主要步骤有:①安装fcitx;②从搜狗官网下载相应位数的deb软件包;③使用 dpkg -i
Ps. 之前就是源的问题,总是找不到fcitx包。
【经验四】
因为32位Ubuntu不能复制粘贴的问题实在是让人耿耿于怀,所以试了一下使用64位的Ubuntu怎么样。64位的系统就好用多了,在这个系统上,直接安装的FAT集成工具,里边集成了binwalk以及qemu的系统模式,要使用qemu的用户模式的话,还需要 sudo apt-get install qemu-user-static 命令安装一下,不过注意一点是,这样直接用apt-get安装的qemu版本是2.5.0,然后也是64位的。如果要仿真32位的二进制的话,还需要安装支持32位程序的二进制库。方法很简单,三条命令即可解决。见教程1、教程2。
【经验五】
再说一下qemu版本的问题,不管是在64位Ubuntu16.04系统上,还是32位的系统;不管是用FAT中集成安装的qemu还是用apt-get命令安装的qemu,版本都是2.5.0!!这个是一个较低的版本了,现在最高版本是5.2.0,所以如果要运行较低版本的固件的二进制的话,2.5.0不会出现什么问题;但如果固件的二进制版本较高,可能会出现以下的问题:
google之后说是qemu版本需要升级。
【经验六】
QEMU要升级版本,使用源码编译安装。我把我编译安装最新版本5.2.0的qemu的步骤写在了这里(排坑指南)。不过遗憾的是,安装高版本的qemu只能解决 qemu: Unsupported syscall: 384 的报错,另一个 lib(36):func(xxx):reason(xxx):NA:0;
qemu5.2.0仿真固件二进制报错:
【经验七】
快照是个好东西 :)