zoukankan      html  css  js  c++  java
  • 2019-2020-1 20209324《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_defcongig
    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
    

    结果如下:

    3.启动qemu

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

    4.加载符号表以及采用1234端口进行连接,同时在start_kernel处设置断点

    file linux-3.18.6/vmlinux  
    target remote:1234  
    break start_kernel
    

    5.查看start_kernel函数的代码(运行至rest_init()为止)




    小结:

    1.观察代码得,Linux在三个特殊进程,0号进程(idle),1号进程(init)和2号进程(hthreadd),其中idle进程由系统自动创建,运行在内核态;init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用户空间 ;kthreadd进程由idle通过kernel_thread创建,并始终运行在内核空间, 负责所有内核线程的调度和管理

  • 相关阅读:
    STM32.ADC
    电源方案集
    什么叫二级域名
    android驱动学习---led实验
    Get,Post和Head具体解释
    Android 编码规范
    VC:当前不会命中断点,还没有为该文档载入不论什么符号
    经常使用的结构体
    【Facebook的UI开发框架React入门之九】button简单介绍(iOS平台)-goodmao
    记录遇到的ios下的bugs[废弃]
  • 原文地址:https://www.cnblogs.com/uujuwajy/p/13902169.html
Copyright © 2011-2022 走看看