zoukankan      html  css  js  c++  java
  • 调试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
    
  • 相关阅读:
    HDU 5486 Difference of Clustering 图论
    HDU 5481 Desiderium 动态规划
    hdu 5480 Conturbatio 线段树 单点更新,区间查询最小值
    HDU 5478 Can you find it 随机化 数学
    HDU 5477 A Sweet Journey 水题
    HDU 5476 Explore Track of Point 数学平几
    HDU 5475 An easy problem 线段树
    ZOJ 3829 Known Notation 贪心
    ZOJ 3827 Information Entropy 水题
    zoj 3823 Excavator Contest 构造
  • 原文地址:https://www.cnblogs.com/powerrailgun/p/11576709.html
Copyright © 2011-2022 走看看