hickwu 2019-12-11
一、Linux内核
1、下载解压内核源码
mkdir LinuxKernel #创建LinuxKernel根目录 cd ~/LinuxKernel/ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz #下载Linux内核,这里用的是5.0.1版本 xz -d linux-5.0.1.tar.xz #解压 tar -xvf linux-5.0.1.tar cd linux-5.0.1
2、 配置编译信息
#进入解压出来的目录 cd /linux-5.0.1/ #使用现存内核的配置文件:(xxx处使用TAB补全) sudo cp /boot/config-xxx -r .config #应用现存配置文件 sudo make oldconfig #仅安装已有module sudo make localmodconfig #配置其他编译选项 sudo make menuconfig
3、下载依赖包
sudo apt-get install build-essential sudo apt-get install libelf-dev sudo apt-get install libncurses-dev sudo apt-get install flex sudo apt-get install bison sudo apt-get install libssl-dev
4、编译
sudo make
5、升级内核
#安装modules sudo make modules_install #安装 sudo make install #重启虚拟机 sudo shutdown -r now #查看内核版本 uname -a
二、qemu虚拟机
1、下载安装qemu
cd ~/LinuxKernel/ sudo apt install qemu # 安装qemu命令
2、构造menuOs
#下载menu系统,并在LinuxKernel目录下建一个子目录rootfs,当作menuOS的根目录 git clone https://github.com/mengning/menu.git mkdir rootfs cd menu sudo apt-get install libc6-dev-i386 #安装libc6-dev-i386 sudo ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu #建立一个软链接 之后可以直接执行qemo
三、集成tcp服务端测试网络功能
在MenuOS中集成我们的TCP服务端程序:
git clone https://github.com/mengning/linuxnet.git cd linuxnet/lab2 make cd ~/LinuxKernel/menu/
四、gdb调试
1、启动gdb server
qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append nokaslr -s -S
2、建立gdb与gdb server连接
file ~/LinuxKernel/linux-5.0.1/vmlinux # # 在gdb界面中targe remote之前加载符号表 break start_kernel # 断点设置 target remote:1234 # 建立gdb和gdbserver之间的连接 c #按c list