在linux下使用qemu模拟路由器

在linux下使用qemu模拟路由器,第1张

前段时间,在学一个东西。学到使用qemu的时候,老是出错。原因有两个:一是我用的linux比较新,和书上的版本有差距,所以/etc/network/interfaces失效;二是我用的无线网卡上网,和书上的以太网不同,这就造成桥接的时候需要先桥接到以太网再转发到无线网卡(我在网上看见,wifi联盟的标准是不能无线桥接),而我还是个小白,所以做起来比较费劲。

utuntu17以后,/etc/network/interfaces失效,由netplan代管。但是我也试过netplan,我还是用不来。最好时直接用ip命令或者nmcli命令,免得麻烦。

以下以下是我总结的两个方法。步骤都差不多。方法1使用了老命令,方法2使用了新命令。

ubuntu下如何安装tap虚拟网络设备: https://www.jianshu.com/p/b1d315ea002e

为qemu虚拟机添加桥接网络和路由

在虚拟机的/etc/network/interfaces里面进行配置

重启虚拟机网络

实验:使用ip命令创建网桥,并调通网络

实验目的:ifconfig和tunctl等命令已经或者即将被淘汰,我必须找到官方公布的替代者,以保证以后还能使用这些命令写成的脚本。

添加网卡到网桥,网桥的状态必须时打开

注:两个从属网卡开启混杂模式,目的是让两个从属网卡可以通信。

在虚拟机的/etc/network/interfaces里面进行配置

1.ip命令能够替代ifconfig进行设置,并且能够替代tunctl和brctl进行工作。是一个十分强大的命令

2.网桥是一种特殊的连接。虽不不能明确个中缘由,但是从其拥有两张网卡可以窥知一二,同时命令nmcli和ip都把他归为连接,从这点也可以映证。

查看当前qemu进程(pid:1406)的cpu(psr)使用情况:

$ps -o pid,command,psr -q 1406

proc文件系统中cpu允许调度信息

$cat /proc/1406/status    

Cpus_allowed: 8

Cpus_allowed_list:      3

绑定至某个cpu:

$taskset -cp 2 1406

cpu隔离(独占)试验:

在linux启动时加isocpu即可:

kernel ....  root=...  isolcpu=2,3

启动时,默认进程就不会调度到2,3号cpu上

再加上前面的taskset,就可以控制某些cpu个某些进程独占

busybox工具包

静态编译设置好后,

报错一般是export变量没有起作用,修改Makefile的内容就好了

在另外一个terminal输入 killall qemu-system-arm 关闭QEMU平台

要确保内核要包含调试信息

Ubuntu18没有添加到官方仓库,需要手动安装

参考: https://zhuanlan.zhihu.com/p/134031693

重编译内核,在超级终端中输入

-S:中断CPU相应GDB

-s:在1234端口接受GDB调试连接

在调试窗口

在gdb中


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7357919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存