当前位置: 首页 > news >正文

操作系统 | 编写内核

🌈个人主页:Sarapines Programmer
🔥 系列专栏:《操作系统实验室》
🔖少年有梦不应止于心动,更要付诸行动。

目录结构


1. 操作系统实验之编写内核

1.1 实验目的

1.2 实验内容

1.3 实验步骤

1.4 实验过程

1.5 心得体会

2. 致读者


后续实验:操作系统实验之添加系统调用

专栏地址:linux操作系统实验(万字详解!!!)

1. 操作系统实验之编写内核

1.1 实验目的

  • 学习和掌握Linux内核编译过程

1.2 实验内容

  • 完成Linux内核编译过程

1.3 实验步骤

实验步骤如下:

  1.将U盘挂载到redhat虚拟机如图3-1至图3-2.

  2.使用cd进入usr/src目录,使用ls查看其下辖文件如图3-3.

3.输入fdisk -l查看u盘信息显示信息U盘名字:/dev/sdb1,文件格式: HPFS/NTFS如图3-4.

4.创建挂载目录uuudisk,输入输入 mount –tvfat /dev/sdb1 /mnt/uuudisk此时U盘的内容可以在/mnt/uuudisk下进行读写如图3-5.

5.进入/mnt/uuudisk并且输入ls查看下辖文件信息如图3-6.

6.将linux-2.4.22.tar.gz文件复制到/usr/src路径下,输入cp linux-2.4.22.tar.gz /usr/src并cd  /usr/src进入/usr/src路径如图3-7.

7.解压缩这个文件tar xzvf linux*22*并ls查看是否解压成功如图3-8至如图3-9.

8.输入cd *22并输入ls查看如图3-10.

9.输入vi Makefile查看文件源码如图3-11至如图3-12.

10.U盘使用完毕,输入 umount /dev/sdb1如图3-13.

11.复制配置文件输入cp /boot/config-2.4.20-8 .config如图3-14.

12.输入make  menuconfig,等待出现交互界面如图3-15至3-16.

13.退出该界面如图3-17,输入make clean清除上次编译结果如图3-18.

14.依次输入如图3-19至3-29.

        

make  dep(等待系统对代码进行预处理)
make  bzImage(开始正式编译,时间很久需要等待)
make  modules(编译模块)
make  modules_install(安装模块)
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22
cp .config /boot/config-2.4.22
cp System.map /boot/System.map-2.4.22
mkinitrd /boot/initrd-2.4.22.img 2.4.22
cd /boot
rm -f System.map vmlinuz
ln -s System.map-2.4.22 System.map
ln -s vmlinuz-2.4.22 vmlinuz

15.修改配置文件GRUB:/boot/grub/menu.lst如图3-30.

16.输入make -install如图3-31图3-32.

17.输入vi /boot/grub/menu.lst并修改如图3-33图3-34.

18.输入reboot重启如图3-35.

19.选择新内核如图3-36.

20.输入cat /proc/version显示为2.4.22版本如图3-37.


1.4 实验过程

图3-1

图3-2

图3-3

图3-4

图3-5

图3-6

图3-7

图3-8

图3-9

图3-10

图3-11

 图3-12

取出U盘

图3-13

图3-14

图3-15

图3-16

图3-17

图3-18

图3-19

图3-20

图3-21

编译完成(花很久…)

图3-22

图3-23

图3-24

图3-25

图3-26

图3-27

图3-28

图3-29

图3-30

图3-31

图3-32

图3-33

图3-34

输入reboot

图3-35

图3-36

图3-37


1.5 心得体会

此次实验成功在虚拟机读取U盘内容并编写了内核,在此过程中遇到了很多问题,比如读取U盘时会显示U盘未格式化,这里的U盘换了三个然后将里面的内容都删除进行格式化都没有用,最后借别人U盘得以解决。在编写内核重启时未命名自己的名字而重新又做了一遍,所以在使用reboot指令在选择内核页面会出现3个内核,在使用make  modules编译内核模块以及make  modules_install安装内核花了大量时间,这次实验直到凌晨一点半才得以解决,在此过程中也得以收获满满。


2. 致读者

纸上得来终觉浅,绝知此事要躬行

http://www.lryc.cn/news/225507.html

相关文章:

  • Rust逆向学习 (4)
  • uniapp vue2 vuex 持久化
  • 【媒体邀约】媒体宣传——企业成长的催化剂
  • ansible问题排查
  • 7天入门python系列之第四天python数据结构
  • 远程电脑未连接显示器时分辨率太小的问题处理
  • Java 设计模式——解释器模式
  • 面试经典150题——Day37
  • 在 Arduino IDE 2.0 中安装 ESP32 板(Windows、Mac OS X、Linux)
  • 西门子S7-1200PLC混合通信编程(ModbusTcp和UDP通信)
  • Hbase 迁移小结:从实践中总结出的最佳迁移策略
  • 键盘win键无法使用,win+r不生效、win键没反应、Windows键失灵解决方案(亲测可以解决)
  • 1. 深度学习——激活函数
  • chatglm3-6b部署及微调
  • Hive 知识点八股文记录 ——(二)优化
  • 计算机技术专业CSIT883系统分析与项目管理介绍
  • gitlab安装地址
  • Spark处理方法_提取文件名中的时间
  • 技术分享 | 测试平台开发-前端开发之数据展示与分析
  • NZ系列工具NZ06:VBA创建PDF文件说明
  • redis-cli 连接 sentinel架构的redis服务
  • 使用github copilot
  • 1438 绝对差不超过限制的最长连续子数组(单调队列)
  • OpenCV入门9:图像增强和图像滤波
  • Pycharm常用快捷键和替换正则表达式
  • C#,数值计算——函数计算,Epsalg的计算方法与源程序
  • Delphi 12 重返雅典 (RAD Studio 12)
  • 手写链表C++
  • 为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?
  • MongoDB单实例安装(Linux)