我×。。

最终好了,大概3 4个小时吧。。。各种毛刺问题。终究还是闯过来了。。

。。

ubuntu2@ubuntu:~/Downloads/linux-0.00-050613/linux-0.00$ make

ld -s -x -M head.o  -o system > System.map

dd bs=32 if=boot of=Image skip=1

16+0 records in

16+0 records out

512 bytes (512 B) copied, 0.000605945 s, 845 kB/s

dd bs=512 if=system of=Image skip=2 seek=1

14+1 records in

14+1 records out

7632 bytes (7.6 kB) copied, 0.000221138 s, 34.5 MB/s

sync

去这里下载 linux -0.00-041217.zip或者050613的zip都行

http://oldlinux.org/Linux.old/bochs/

不算最痛苦的。遇到非常多问题。还好有前人帮忙,希望我的blog也能帮到别人。

编译过程中遇到的非常多问题。以下的up都有遇到,并给出的具体解答。。。。好人啊。。

。致敬

http://chfj007.blog.163.com/blog/static/173145044201132523034138/

head.s:148: Error: invalid instruction suffix for `pop' head.s:149: Error: operand type mismatch

会出现上面这样的非常多suffix前缀不对的指令错误提示。解决这个问题的办法非常easy。也就是32位汇编在64位的机子上跑要解决的问题

在相相应的汇编代码的开头加个

.code32

OK

相同。会遇到

head.s:105: Warning: using `%ebx' instead of `%bx' due to `l' suffix

这个把对应的bx寄存器改成ebx就OK

head.s:248: Error: `%al' not allowed with `movl'

head.s:257: Error: `%al' not allowed with `movl'

这个把movl改成movb。这里应该是一个错误。而不是一个平台差异照成的

由于我认为al是8bit的movl是16bit的。即使在32位平台上也是不正确的

Over。  还是非常舒坦的。。。平安无事的编译成功了

时间就这样慢慢的流淌,当我们还是流动的长河,当我们变成静静的湖泊

《linux 内核全然剖析》编译linux 0.12 内核 Ubuntu 64bits 环境的更多相关文章

  1. Linux 0.12 内核管理存储器

    Linux 0.12 内核管理存储器 其分段,用分段的机制把进程间的虚拟地址分隔开. 每一个进程都有一张段表LDT.整个系统有一张GDT表.且整个系统仅仅有一个总页表. 其地址翻译过程为: 程序中给出 ...

  2. linux使用glibc版本安装mysql8.0.12

    1.前言 使用yum安装虽然很方便,但是如果要是在没有公网的环境下,是没有办法使用yum源的.所以我们可以使用mysql提供的glibc版本的安装包,进行安装. 但是在安装之前,一定要将以前的版本删除 ...

  3. 《linux 内核全然剖析》 fork.c 代码分析笔记

    fork.c 代码分析笔记 verifiy_area long last_pid=0; //全局变量,用来记录眼下最大的pid数值 void verify_area(void * addr,int s ...

  4. 《linux 内核全然剖析》sched.c sched.h 代码分析笔记

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011368821/article/details/25129835 sched.c sched.h ...

  5. linux内核完全剖析——基于0.12内核-笔记(2)-统一编址和独立编址

    IO是什么 ? IO(Input and Output)是输入输出接口.是CPU和其他外部设备(如串口.LCD.触摸屏.LED等)之间通信的接口.一般的,我们说的IO就是指CPU的各种内部或外部外设. ...

  6. linux内核完全剖析——基于0.12内核-笔记(1)-CPU 数据通信

    CPU数据通信总线 CPU通过地址线.数据线.控制信号组成的本地总线(或称为内部总线)与系统其它部分进行数据通信. 地址总线 地址总线用于内存或I/O设备的地址,即指明需要读/写数据的具体位置. 数据 ...

  7. Linux内核完全剖析基于0.12内核

    控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性.CR0中含有控制处理器操作模式和状态的系统控制标志,CR1保留不用,CR2含有导致页错误的线性地址,C ...

  8. 《linux 内核全然剖析》 mktime.c

    tm结构体的定义在time.h里面 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_y ...

  9. 《linux 内核全然剖析》 chapter 2 微型计算机组成结构

    微型计算机组成结构 系统的基本组成: 软件是一种控制硬件操作和动作的指令流. 2.1 微型计算机的组成原理 当中CPU通过地址线,数据线,和控制信号线组成的内部总线与系统其它部分进行数据通信.地址线用 ...

随机推荐

  1. 小贝_redis list类型学习

    redis  list类型 一.查看list类型的命令 二.list命令具体解释 一.查看list类型的命令 1.在终端数据 help @list 127.0.0.1:6379>help @li ...

  2. nyoj--42--一笔画问题(并查集)

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. ...

  3. 17.I/O系统访问方式和类型

    I/O方式 轮询  中断  DMA  通道

  4. 关于Fragment的setUserVisibleHint() 方法和onCreateView()的执行顺序

    1:setUserVisibleHint(boolean isVisibleToUser)的方法就很重要,根据方法名来看当前页面是否可见, 里面的boolean值就是判断当前页面是否可见的变量,所以大 ...

  5. vuejs v-bind

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Mojo Associated Interfaces

    Mojo Associated Interfaces yzshen@chromium.org 02/22/2017 Background Before associated interfaces ar ...

  7. 基于vue的无缝滚动组件

    vue-seamless-scroll A simple, Seamless scrolling for Vue.js 在awesome上一直没有发现vue的无缝滚动组件,在工作之余写了个组件,分享出 ...

  8. 在线运行python代码-python代码运行助手

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432523496782e ...

  9. Android Studio获取开发版SHA1值和发布版SHA1值,详细过程

    转自原文 Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法 前言: 今天我想把百度地图的定位集成到项目中来,想写个小小的案例,实现一下,但在集成百度地图时首先要申请秘 ...

  10. Java.Lang.NoSuchMethod 错误

    项目开发.调用webservice,方法调用报了 Java.Lang.NoSucheMethod..........,印象中记得是jar包冲突,maven项目,一看,这一堆jar包...用eclips ...