今天把第一课的实验过一遍,然后看了一下前512字节的bootloader的代码。对bios的int0x10 软中断服务程序进行了一点实验。整个过过程遇到些问题,记录一下,以免忘了没有地方找!

1:在编译lab下代码时遇到的问题:

lib/printfmt.c:42:对‘__udivdi3’未定义的引用

lib/printfmt.c:50:对‘__umoddi3’未定义的引用

原因:由于在printfmt.c文件中用了libgcc.a中的库函数,但是我的开发环境是64位的gcc,所以找不到这个库文件。

解决:

sudo apt-get install gcc-multilib

sudo apt-get install ia32-libs lib32gcc1 lib32stdc++6

安装完上面的库后,在GNUmakefile中将GCC_LIB改为下面这样:

GCC_LIB :=-L /usr/lib/gcc/x86_64-linux-gnu/4.7.2/32 -lgcc

如果我们编译时用的gcc是64位的,大多人都是64位的,在cc和ld时,要在makefile中加入下面这样生成32位代码的选项:

LDFLAGS := -m elf_i386

CFLAGS += -Wall -Wno-format -Wno-unused -Werror -gstabs -m32

上面那样,基本上就没有什么问题了。

安装qemu,pc虚拟机:

这个比较简单,没有多大问题:

git clone http://pdos.csail.mit.edu/6.828/qemu.git -b 6.828-0.15

./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"

make && sudo make install

安装比较顺利。

下面是用qemu的过程:

在lab1g下面,make后,如果生成了kernel.img就行了,

然后make qemu就能启动我们的kernel.img内核了。

问题:如果在make的时候,生成的boot文件过大,超过了512字节,

解决:那是编译器的问题,我换成了gcc4.5

sudo apt-get install gcc4.5

问题:在用gdb来和qemu联合调试时,不能正常的通过.gdbinit文件加载kernel文件,

解决:gdb -q -iex "set auto-load safe-path /home/administrator"

对boot.S和main.c稍微看了一下:

boot.S做了如下工作:

1:enable A20地址线

2:设置好gdt,转换成32位的protected mode

3:设置好栈指针

4:跳转到main.c的bootmain函数

main.c做了如下工作:

1:复制8个sector大小的kernel文件到ram中,

2:给程序发配segment地址,不太了解

3:跳转到kernel部分运行

kenel文件是elf格式的,从在qemu中运行,可以知道kernel只是读取我们输入的内容,然后打印出一些信息。

目前是两个命令:help ,kerninfo。

学习这个真是比较麻烦!come on!

mit的java教材_关于学习MIT6.828操作系统课程lab1记录相关推荐

  1. JAVA教材(推荐新手学习)

    内容很全面的一本JAVA教材,从J2SE到J2EE,由浅入深地讲解,非常适合新手入门 目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Ja ...

  2. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

  3. java项目_值得学习和练手的Java企业级开源项目,强烈推荐!

    热门文章推荐:100本纸质书籍免费包邮!22款高颜值的终端工具,点燃了小姐姐对编程的热爱! 一条 SQL 引发的事故,同时小姐姐直接被开除!! 11月全国程序员平均工资新鲜出炉,内附封面图! 文末有彩 ...

  4. java序列化_深入学习Java序列化

    前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化 ...

  5. java安装_在线学习Java编程的最佳方法

    java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...

  6. java樱花_初步学习java专业课程

    初步学习java编程一. 终于触碰到专业课了(有点小兴奋) 计算机语言:人类与计算机交流的语言! 特点:简洁.准确. 计算机语言分为1.二进制语言2.汇编语言3.C/C++{Java之父   Jame ...

  7. 深入理解java枚举_深入学习java枚举的应用

    一.枚举和静态常量区别 讲到枚举我们首先思考,它和public static final String 修饰的常量有什么不同. 我举枚举的两个优点: 1. 保证了类型安全:调用者无法随意传一个 int ...

  8. active控件和java脚本_【学习笔记】在原生javascript中使用ActiveX和插件

    什么是插件 现在的浏览器提供了大量的内置功能,但仍然有一些工作无法完成,如播放音频和视频.插件及其扩展浏览器功能就尤为重要. 插件是可下载的应用程序,可以插入到浏览器中,现在有很多不同的插件,常用的有 ...

  9. java寄存器_汇编学习 1 寄存器的作用 寻址方式 - DraculaW - JavaEye技术网站

    首先 是寄存器的介绍 寄存器名     说明                            功能 eax:            累加器                 加法乘法指令的缺省寄存 ...

  10. java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误

    java每个阶段的学习时间 据说:"您的朋友会吞下您的错误,您的敌人会将它们呈现在盘子上". 我绝对不是你的敌人,但我想向您介绍一些针对每个Java初学者的错误,我将在此博客&qu ...

最新文章

  1. aide java 线程类_aide_Java常用关键字、方法使用实例
  2. Cacti 自定义脚本监控
  3. android alert,Android AlertDialog的基本使用
  4. (旧)走遍美国——(三、文化2)
  5. 怎么知道Win10的电脑是否满足Win11的硬件要求
  6. php mysql group by_php – 如何在mysql查询中解决“不在GROUP BY中”错误
  7. 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储
  8. 【vs调试】PDB 文件:每个开发人员都必须知道的
  9. Delphi XE5 for Android (三)
  10. MacBook2016在SSD上安装Win To Go(成功经验分享)
  11. 软件开发有哪些规范和标准_车辆,机械专业如何从事汽车电子软件开发
  12. 拓端tecdat|R语言Keras用RNN、双向RNNs递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
  13. 噇字符集linux,gbk编码
  14. 自动控制原理 卢京潮第二版 课后答案 免费PDF
  15. N1刷armbian,安装cups(惠普打印机)
  16. WIN10安装cad2006提示无权限安装的解决办法
  17. 由于找不到C:\InetPub\ftproot\Tipray\Ldterm\ghijt32.DLL,无法继续执行代码。重新安装程序可能会解决此问题。
  18. 稀疏数组的创建与读写文件操作
  19. C 生化危机 SDUT
  20. matlab 动态存储图片,利用matlab创建动态图并保存为AVI格式

热门文章

  1. 新兴IT企业特斯拉(八)——自动辅助驾驶
  2. 最大乘积java_在Java中查找负数的最大乘积
  3. 【多目标优化求解】基于matlab遗传优化萤火虫算法求解多目标优化问题【含Matlab源码 1484期】
  4. 【图像融合】基于matlab GUI小波变换可见光与红外光图像融合(带面板)【含Matlab源码 701期】
  5. 【优化布局】基于matlab遗传算法求解带出入点的车间布局优化问题【含Matlab源码 011期】
  6. 标记偏见_人工智能的偏见
  7. android 十六进制string转int,16进制string转成int
  8. .fit文件读取--head信息--修改head--读取csv文件-------ska暑期训练
  9. ubuntu 设置静态路由_Linux route 配置静态路由(转载)
  10. 显示器色域检测软件_摄影师:手机看图的甲方爸爸值得我换专业摄影显示器吗?...