• 调试Linux内核的方法(Linux-4.8)(废弃,仅供参考用)


    》》》》》》仅供参考使用《《《《《《《《
    Host系统:基于centos 7.6
    Guest系统:基于QEMU的Linux虚拟机(要调试的对象)

    在host上编译Linux4.8内核。

    内核源代码下载地址:https://mirrors.aliyun.com/linux-kernel/v4.x/linux-4.8.tar.gz
    需要用到的工具下载:
    1)GDB
    centos 7.6默认的GDB版本有点老,在调试的时候会遇到问题,所以这里需要下载GDB较新的版本,重新编译一个新的GDB,操作如下:
    从这里下载GDB:https://mirrors.ustc.edu.cn/gnu/gdb/gdb-8.1.tar.gz
    2)QEMU
    centos7.6 YUM仓库中的QEMU版本比较老了,需要重新下载QEMU编译,操作如下:
    从这里下载QEMU:https://download.qemu.org/qemu-4.1.0.tar.xz

    编译安装好之后,以下涉及到gdb或者qemu的命令根据实际路径调整。

    编译内核前的准备工作

    在编译

    编译内核源代码

    创建虚拟机镜像

    制作一个磁盘用于安装

    qemu-img create centos76.img 50G
    

    安装Guest系统

    从这里下载CentOS-7-x86_64-Minimal-1810.iso:https://mirrors.ustc.edu.cn/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso
    这里假设已经将CentOS-7-x86_64-Minimal-1810.iso镜像从互联网上下载好了。接着开始安装Guest系统。
    在服务器上(或者PC上)安装,需要使用到一个VNC客户端软件,以便能够连接QEMU VNC Server。

    qemu-system-x86_64 -cdrom CentOS-7-x86_64-Minimal-1810.iso -hda ./centos76.img -boot d -netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no -m 2048 -localtime -vnc 0.0.0.0:20
    

    也可以采用以下使用virtio磁盘:

    qemu-system-x86_64 -cdrom /home/caishan/CentOS-7-x86_64-Minimal-1810.iso 
    -drive file=./centos76.img,if=virtio 
    -boot d 
    -netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no 
    -device virtio-net-pci,netdev=tap0 
    -m 2048 
    -localtime 
    -vnc 0.0.0.0:20 
    --enable-kvm
    

    上述命令运行之后通过VNC客户端远程连接 HostIP:5920(默认)可以开始安装步骤。
    待安装成功之后,安装好的系统,使用以下命令:

    qemu-system-x86_64 -drive file=./centos76.img,if=virtio -boot c -netdev tap,id=tap0,ifname=virbr0-nic,vhost=on,script=no -m 2048 
    -device virtio-net-pci,netdev=tap0 
    -localtime -vnc 0.0.0.0:20 --enable-kvm
    

    同样,使用VNC客户端远程连接到启动的虚拟机。登陆后,执行dhclient eth0获取IP地址。

    ./scripts/config -e CONFIG_DEBUG_INFO -d CONFIG_RANDOMIZE_BASE -e CONFIG_MODULES -e GDB_SCRIPTS

    grub2-mkconfig -o /boot/grub2/grub.cfg

    启动编译后的内核,并boot到硬盘

    qemu-system-x86_64 -m 2048 -kernel ./arch/x86/boot/bzImage -initrd ./initrd.img-4.18.4 -drive file=./ubuntu1604.qcow2,if=virtio -boot c -nographic -serial mon:stdio -append 'root=/dev/sda1 console=ttyS0 nokaslr' --enable-kvm
    
  • 相关阅读:
    20165329 《Java程序设计》第九周学习总结
    20165329 四则运算2
    20165329 第八周补做
    20165329 《Java程序设计》第八周学习总结
    2017-2018-2 学号20165329 实验二《Java面向对象程序设计》实验报告
    20165329 结对编程项目-四则运算
    20165329 第七周学习总结
    20165329 第六周学习总结
    20165329 实验一 java环境的熟悉
    20165329 第五周学习总结
  • 原文地址:https://www.cnblogs.com/powerrailgun/p/11576709.html
Copyright © 2020-2023  润新知