标签:terminal config 内核编译 ppt 显示 linu 退出 save color
实验环境
Ubuntu 16.04 LTS
1. 下载并解压linux_5.0.1内核
cd ~/Desktop mkdir LinuxKernel #在桌面创建LinuxKernel工程目录 cd LinuxKernel 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
2. 安装相关编译工具
1 sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev
3. 编译内核
在terminal中cd进入到linux-5.0.1文件夹里执行以下命令
1) 使用make allnoconfig 配置进行内核编译(编译时间较短)
1 make allnoconfig 2 make
2) 使用make menuconfig 进行内核编译(使内核带有debug信息)
make i386_defconfig make menuconfig make # make menuconfig 命令执行后会出现一个图像界面, 我们需要依次选择 # Kernel hacking, # Compile-time checks and compiler options # Compile the kernel with debug info # 最后Save退出
执行过程截图如下图所示(省略了make menuconfig选择的过程)
在执行最后的make命令时可能会出现以下报错(软件版本问题)
You are building kernel with non-retpoline compiler. Please update your compiler. arch/x86/Makefile:307: recipe for target ‘checkbin’ failed make: *** [checkbin] Error 1
解决方法(更新软件)
sudo apt-get upgrade
4. 制作MenuOS
cd ~/Desktop/LinuxKernel
mkdir rootfs git clone https://github.com/mengning/menu.git cd menu
vim Makefile sudo apt-get install libc6-dev-i386
make rootfs
上面vim Makefile是把qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img 这一行注释掉。qemu命令在新版本qemu中已经无法使用。后面我们自己手动敲命令加载内核以及根文件系统。
上面的命令执行结束我们的目录结构如下
5. qemu加载MenuOS系统
cd ~/Desktop/LinuxKernel qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img
运行结果如下图
6. gdb调试menuOS
6.1 构建GDB server
qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img -append nokaslr -s -S
和课程ppt上的命令有些许不同,因为使用ppt上的命令无法进入指定断点,上述的命令参考了Arrkwen同学的文章,在此感谢。PPT上的命令也就不在这里重复粘贴了。
6.2 连接GDB server
重开一个terminal执行下面的命令
gdb file ~/Desktop/LinuxKernel/linux-5.0.1/vmlinux #加载符号表 break start_kernel #在main.c中的start_kernel函数处添加断点 target remote:1234 #连接GDB server continue #让MenuOS继续执行 list #显示断点处的代码
连接成功的截图如下
7. 将TCP服务的客户端和服务端集成进MenuOS
cd ~/Desktop/LinuxKernel git clone https://github.com/mengning/linuxnet.git cd linuxnet/lab5 # 修改qumu的启动命令为 qemu-system-i386 -kernel ../../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img vim Makefile make rootfs
最终效果截图如下
标签:terminal config 内核编译 ppt 显示 linu 退出 save color
原文地址:https://www.cnblogs.com/luoyang712/p/12005999.html