ubuntu20.04 搭建kernel调试环境第六篇(上)--网络配置

目标:

qemu系统可以:

1)访问外网
2)访问局域网内的samba服务器(目的:局域网共享文件)
2)访问ubuntu中的Apache服务器(目的:宿主机共享文件)

第六篇(上)是实操部分,第六篇(下)是原理部分。

一、ubuntu环境:

1,ubuntu版本

新系统安装可参考ubuntu20.04 搭建kernel调试环境第一篇--安装系统。

root@linux:/home/gsf# uname -a
Linux linux 5.15.0-53-generic #59~20.04.1-Ubuntu SMP Thu Oct 20 15:10:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

2,qemu版本

qemu安装编译,参考ubuntu20.04 搭建kernel调试环境第一篇--安装系统。​​​​​​​​​​​​​​

root@linux:/home/gsf# qemu-system-x86_64 -version
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.23)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

二、网络数据流

  ubuntu20.04 搭建kernel调试环境第六篇(上)--网络配置_第1张图片

红色框图:由libvirt自动创建(见下文)。

蓝色框图:启动qemu虚拟机时指定了相关参数,自动创建(见下文)。

红色箭头表示数据流。

qemu中的网络数据包<--->tap设备<--->virbr0网桥<--->网络协议栈<--->ubuntu中的真实网卡,从而实现qemu访问外网功能。

三、ubuntu宿主机配置步骤:

1,安装libvirt

apt install bridge-utils

apt install uml-utilities

apt install libvirt-daemon-system 安装libvirt服务端

该命令启动deamon进程/usr/sbin/libvirtd,创建一个虚拟网桥virbr0,并在virbr0中增加一个虚拟网卡virbr0-nic。以后每次重启系统,libvirtd进程都会自动启动(service libvirtd status命令可检查libvirtd状态)。

ifconfig命令可以看到多了一个虚拟网桥virbr0:

ubuntu20.04 搭建kernel调试环境第六篇(上)--网络配置_第2张图片

 brctl命令查看网桥信息:

2,创建qemu用到的网桥配置文件

qemu启动参数helper=/usr/lib/qemu/qemu-bridge-helper是个可执行程序(见后文),需要用到/etc/qemu/bridge.conf文件。

mkdir /etc/qemu

vim /etc/qemu/bridge.conf,增加两行:

allow virbr0

allow all

chmod 777 /etc/qemu/bridge.conf

四、buildroot配置

如果rootfs是buildroot创建的,编译rootfs时最好设置eth0接口通过DHCP获取ip地址,否则qemu系统启动后看不到eth0接口,网络是不通的。如果没有设置,qemu启动guest系统后,也可以手动改guest系统网络配置文件,也能让eth0正常工作

在buildroot源码目录执行make menuconfig设置:

System configuration  --->

(eth0) Network interface to configure through DHCP

编译完成后,将buildroot-2020.02.8/output/images/rootfs.f2fs拷贝到内核源码根目录(rootfs制作参考ubuntu20.04 搭建kernel调试环境第二篇--rootfs的制作)。

五、启动虚拟机

root@linux:/home/gsf/linux-5.18.11# qemu-system-x86_64 -kernel arch/x86_64/boot/bzImage -drive file=rootfs.f2fs,if=ide,format=raw,id=myid0 --nographic -append "root=/dev/sda console=ttyS0"  -net nic,macaddr=52:54:00:12:34:56,model=e1000 -net bridge,id=net0,helper=/usr/lib/qemu/qemu-bridge-helper,br=virbr0

以上命令会在br=virbr0指定的网桥中创建一个tap0设备,作为虚拟网卡(macaddr参数,第一个字节的最低位不能是1)

在qemu启动的系统中(非ubuntu中)输入ifconfig可以看到mac地址及ip地址。

ubuntu20.04 搭建kernel调试环境第六篇(上)--网络配置_第3张图片

qemu系统中 ping 外网试试:

ubuntu20.04 搭建kernel调试环境第六篇(上)--网络配置_第4张图片

六、访问samba配置步骤

前提条件:ubuntu环境要能访问samba服务器才行。

1)按三~五步骤,确保qemu虚拟机运行的系统可以正常访问网络。

2)make menuconfig配置待运行的kernel

Network File Systems--->
        File systems  --->
        <*>   NFS client support
        <*>     NFS client support for NFS version 2
        <*>     NFS client support for NFS version 3
        [*]       NFS client support for the NFSv3 ACL protocol extension
        <*>     NFS client support for NFS version 4
        <*>   SMB3 and CIFS support (advanced network filesystem)

3)make bzImage 编译内核。编译完成后qemu运行该内核(命令见第五节启动虚拟机)。

4)挂载samba目录

qemu启动完成后,在qemu shell终端执行下面命令:

mount -t cifs -o username=用户名,password=密码 //ip.ip.ip.ip/geshifei  /home/gsf/cp

用户名、密码:用于访问samba服务器。

//ip.ip.ip.ip/geshifei:服务器提供的samba共享目录。

/home/gsf/cp:qemu系统中的本地目录。

你可能感兴趣的:(linux调试,linux,qemu,samba)