几经周折,终于可以在这里写下这篇文章,记录一下在imx8qm中使用xen启动Linux和Android系统,并使用网络进行通信,参考了下面这篇文章https://blog.csdn.net/u011784994/article/details/106767143
在参考的这篇文章中,我按照他的步骤完成linux网络的配置,他在配置Android网络的时候是配置的eth0
看到eth0,我以为要把网络接口配置到domU,也就是Android系统那里去,才能生成eth0接口,于是,按照这个思路就迎来了第一个问题
1 配置网络接口到Android系统
之前已经进行过资源的分配工作,所以在这里花费的时间并不是很多,就把网络接口配置到Android系统中,并在启动之后成功生成eth0设备节点,但是,还是Android并不能Ping通linux
在思索了很久后,决定先查看官方的设备树配置,发现官方的domU设备树并没有配置网络接口fec的相关内容,所以,上面那个做法可能是不对的,于是把设备树还原了回去
还原回去,默认是在linux这端产生的eth0节点,但是,通过查看系统log,可以看出eth0是由TJA1100网络芯片注册所产生的节点,它是一个真实的物理设备,但是,Linux和Android进行通信绝不是使用物理网卡进行通信的
以为只有一个网卡,所以要使用虚拟网卡进行通信,
2 去掉linux中的TJA1100驱动
有了上面这个想法之后,于是把Linux中的TJA1100驱动去掉,再次编译,生成通用网络设备的eth0 ,这样可以了, 启动Android系统,可以看到Android这边生成了用于通信的eth0虚拟网卡,
所以,eth0是虚拟出来的,不是物理设备
3 配置
Linux 网络配置
insmod /lib/modules/4.14.98-imx_4.14.98_2.0.0_ga+gc15de6e/kernel/drivers/net/xen-netback/xen-netback.ko
insmod /lib/modules/4.14.98-imx_4.14.98_2.0.0_ga+gc15de6e/kernel/net/802/stp.ko
insmod /lib/modules/4.14.98-imx_4.14.98_2.0.0_ga+gc15de6e/kernel/net/bridge/bridge.ko
brctl addbr br0
ip link set br0 up
ifconfig br0 10.10.10.5 netmask 255.255.255.0
Android网络配置
ip rule add from all lookup main pref 0
ifconfig eth0 xxxxxx
配到一个网段下面,就可以ping通Linux了
在这个过程中,碰到很多问题,去nxp官方论坛上面去找,但是关于xen的部分内容非常少,但是,找到了一个文档,i.MX Virtualization User's Guide,虽然比较简短,但还是非常有帮助的