编译Linux内核
下载内核到home目录下,并且将其解压
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
xz -d linux-5.0.1.tar.xz
tar -xvf linux-5.0.1.tar
安装内核编译工具,也就是整个实验所需要的依赖包,命令如下:
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev git -y
配置并编译内核
cd ~/linux-5.0.1
#使用现存内核的配置文件:xxx指命令输入此处可以按Tab键补全
cp /boot/config-xxx -r .config
#应用现存配置文件
make oldconfig
#仅安装已有module
make localmodconfig
#开始编译
make -j 4
安装qemu,构造MenuOS
安装qemu,然后创建软连接,然后下载MenuOS,并安装依赖
sudo apt install qemu -y
sudo ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu
cd ~
git clone https://github.com/mengning/menu.git
sudo apt install libc6-dev-i386 -y
此时需要修改menu目录下的Makefile文件,将qemu所在行修改成刚才编译好的内核路径,修改后内容如下:
qemu -kernel ../linux-5.0.1/arch/x86_64/boot/bzImage ../rootfs.img
完成后编译,初始化根目录:
make rootfs
将TCP集成进MenuOS
TCP的服务端
cd ~
git clone https://github.com/mengning/linuxnet.git
cd ~/linuxnet/lab2
make
cd ~/menu/
make rootfs
再集成TCP客户端,集成客户端要修改MakeFile中qemu处,方法如上,之后执行:
cd ~/linuxnet/lab3
make rootfs
用gdb跟踪start_kernel代码
执行命令
qemu -kernel ~/linux-5.0.1/arch/x86_64/boot/bzImage -initrd ~/rootfs.img -append nokaslr -s -S
此时另外新建一个新终端,输入gdb,会打开一个GDB调试器,调试器内输入:
file ~/linux-5.0.1/vmlinux
target remote:1234
break start_kernel
c
list