• 2020-2021-1 20209303《Linux内核原理与分析》第四周作业


    2020-2021-1 20209303《Linux内核原理与分析》第二周作业

    1.下载源码

    mkdir LinuxKernel
    cd LinuxKernel
    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz
    xz -d linux-3.18.6.tar.xz
    tar -xvf linux-3.18.6.tar
    cd linux-3.18.6
    make i386_defconfig
    make
    


    2.制作根文件系统

    mkdir rootfs
    git clone https://github.com/mengning/menu.git
    cd menu
    gcc -pthread -o init linktable.c menu.c test.c -m32 -static
    cd ../rootfs
    cp ../menu/init ./
    find . | cpio -o -Hnewc |gzip -9 > ../rootfs.img
    

    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
    

    3.跟踪调试Linux内核的启动过程(使用gdb跟踪)

    qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
    

    file linux-3.18.6/vmlinux  //在gdb界面中target remote之前加载符号表
    target remote:1234  //用1234这个端口进行连接
    break start_kernel //可在target remote之前,也可在之后
    

    问题及解决方法

    1.编译出现fatal error: bits/libc-header-start.h: No such file or directory
    解决:apt-get install gcc-multilib ,环境没有完善
    2.在编译过程中遇到书中提到的相似的错误,提示不存在compiler-gcc9.h这一文件,查阅相关资料,是Ubuntu环境版本与gcc编译器版本不匹配的原因,进入到include/linux环境下,发现其中最高的版本为compiler-gcc5.h,将compiler-gcc5.h复制重命名为compiler-gcc9.h后放入该文件夹中解决。
    3.错误如图

  • 相关阅读:
    win下的PG12安装plpython3u
    IDEA中的代码块批量修改
    Python的32和64位共存在win
    数据库表转化为model
    国标查询
    C#DataGridview 绑定与数据转化
    fastadmin 点击checkbox 或反选checkbox 统计某个字段的值
    [Mysql] 两段提交
    Windows docker环境安装
    vue2使用echarts内置地图实现点击事件
  • 原文地址:https://www.cnblogs.com/20209303ly/p/13907480.html
Copyright © 2020-2023  润新知