IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux实验总结 -> 正文阅读

[系统运维]Linux实验总结

Linux实验总结:

运行mykernel

环境:ubuntu 18.04,实测21.04的默认GCC版本编译完无法生成bzImage

步骤

wget https://raw.github.com/mengning/mykernel/master/mykernel-2.0_for_linux-5.4.34.patch
sudo apt install axel
axel -n 20 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.34.tar.xz
xz -d linux-5.4.34.tar.xz
tar -xvf linux-5.4.34.tar
cd linux-5.4.34
patch -p1 < ../mykernel-2.0_for_linux-5.4.34.patch
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
make defconfig # Default configuration is based on 'x86_64_defconfig'
make -j$(nproc) # 编译的时间比较久哦
sudo apt install qemu qemu-system-x86 # install QEMU
qemu-system-x86_64 -kernel arch/x86/boot/bzImage

结果

请添加图片描述

基于mykernel的极简内核

修改内核代码,使用时间片轮转调度多道程序

下载mykernel代码,并将mypcb.h; mymain.c; myinterrupt.c复制替换到Linux内核中的mykernel文件夹,重新编译

make defconfig
make -j$(nproc)
qemu-system-x86_64 -kernel arch/x86/boot/bzImage

请添加图片描述

Debug Linux Kernel

在Linux内核文件夹编译内核makemake install,使用qemu验证无文件系统时的内核,会出现内核异常请添加图片描述
请添加图片描述

完成内存跟系统镜像后,不要手贱更新系统,否则将无法正常启动。
请添加图片描述

跟踪启动

请添加图片描述
请添加图片描述
请添加图片描述

  1. start_kernel()静态创建0号进程init_task,最终成为idle进程,init_task进程的内核栈通过静态方式分配
  2. rest_init(),Linux内核初始化的尾声,做了很多剩下的初始化工作。调用kernel_thread(),通过fork创建内核进程,1号进程init和2号进程kthreadd,其中调用了kernel_init()
  3. kernel_init(),通过调用do_execve()来执行根文件系统的init文件,其中调用了run_init_process()
  4. run_init_process()通过execve()来运行init程序
  5. kthreadd用来管理系统的资源

总结

感觉课程中的Linux内核更偏向于嵌入式系统中的Linux,在我的理解中,Linux的组成部分包括:进程管理(切换、调度)、内存分配与管理、系统内进程通信与同步机制、时钟与中断、驱动程序与模块、文件系统、网络以及系统调用等

课程主要讲解了Linux系统的编译与启动过程、进程管理、程序执行与文件系统、时钟与中断、驱动程序与模块、中断与系统调用等。即使有的内容在好几个课都接触过,但是记不住确实还是记不住= =。

406
参考资料庖丁解牛Linux操作系统分析https://gitee.com/mengning997/linuxkernel

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:22:23  更:2022-07-04 23:23:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 19:18:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码