linux-0.11
sitelist
这个作者很懒,什么都没留下…
展开
-
libc.a中FILE结构的分析
stdio.h中有FILE结构的定义 typedef char __stdiobuf_t; /* stdio buffer type */ typedef STDIO_USIZE_T __stdiosize_t; /* unsigned size_t */typedef struct __iobuf { __stdiobuf_t __rptr; / pointe原创 2016-10-08 22:22:15 · 1035 阅读 · 0 评论 -
linux-0.11调试教程,move_cursor_relative()函数和变量last_c_pos和变量c_pos的关系
move_cursor_relative()函数出现在update_line ()函数中和rl_redisplay ()函数中。move_cursor_relative()函数和last_c_pos的值和c_pos的值密切相关!!![/root]# c --> [/root]# ac 按下a键, length为5 具体过程为:[/roo原创 2013-03-02 18:51:54 · 1199 阅读 · 0 评论 -
linux-0.11调试教程,readline ()函数中,ECHO的关闭和开启
/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. A return value of NULL means that EOF was encountered. */char *readline (prompt) char *prompt;{ char *readl原创 2013-02-28 06:51:05 · 2350 阅读 · 0 评论 -
linux-0.11调试教程,bash-1.12中readline()调用过程
本文分为两个部分,第一部分是调用到read()函数的过程,第二部分是解释向上方向键显示命令历史的过程。yy_readline_get() readline() readline_internal() rl_read_key() rl_getc() r原创 2013-02-22 13:14:30 · 1470 阅读 · 0 评论 -
linux-0.11调试教程,rl_insert_text函数和the_line[]数组
rl_dispatch() rl_insert() rl_insert_text()rl_display() update_line()KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {... { ISFUNC, rl_insert }, /* a */...};原创 2013-02-28 16:22:03 · 1327 阅读 · 0 评论 -
linux-0.11调试教程,系统调用sys_write的调用过程
引用一下前面的文章部分调用过程:http://blog.csdn.net/sitelist/article/details/8606542fflush() __bwrflush() __iowrite() write()下面是系统调用sys_write的调用过程sys_write() rw_char()原创 2013-02-27 17:43:27 · 2059 阅读 · 0 评论 -
linux-0.11调试教程,readline()回显字符调用顺序
readline_internal (){...... if (!rl_done) rl_redisplay (); }因为rl_done为0,所以按下字符键后,会调用rl_redisplay()函数。update_line(){... move_vert (current_line); mov原创 2013-02-23 16:21:38 · 2433 阅读 · 0 评论 -
linux-0.11调试教程,sh调用顺序
readc ()filechar ()read()system_call ()sys_read () rw_char () rw_ttyx() tty_read () keyboard_interrupt () e0_e1:原创 2013-02-26 23:01:13 · 1188 阅读 · 0 评论 -
linux-0.11调试教程,fwrite ()函数的作用
/* Write COUNT characters from STRING to the output stream. */static voidoutput_some_chars (string, count) char *string; int count;{ fwrite (string, 1, count, out_stream);}原创 2013-02-24 12:47:43 · 1290 阅读 · 0 评论 -
linux-0.11调试教程,退格键的调用过程(2)
[/root]# ac[/root]# c下面的调用过程对应上面的情况,光标位于字符串的中间的时候,非末尾的情况。rl_redisplay () update_line () delete_chars () output_some_chars ()/* Delete COUNT characters from th原创 2013-02-24 21:22:08 · 1191 阅读 · 0 评论 -
linux-0.11调试教程,rl_dispatch ()函数调用函数的参数的个数
rl_dispatch (key, map) register int key; Keymap map;{... (*map[key].function)(rl_numeric_arg * rl_arg_sign, key);}这里的调用函数的参数个数是两个,但是rl_end_of_line ()函数定义是无参数,2个参数都原创 2013-03-07 22:02:19 · 1970 阅读 · 0 评论 -
linux-0.11调试教程,rl_done什么时候为1?
/* What to do when a NEWLINE is pressed. We accept the whole line. KEY is the key that invoked this command. I guess it could have meaning in the future. */rl_newline (count, key) in原创 2013-03-08 07:42:18 · 1456 阅读 · 0 评论 -
linux-0.11调试教程,bash-1.12源代码分析readline.a和termcap.a的连接
上接中backspace键的调用过程linux-0.11调试教程,readline()回显字符调用顺序/* Move the cursor back. */backspace (count) int count;{ register int i; if (term_backspace) for (i = 0; i原创 2013-02-23 21:10:00 · 1506 阅读 · 0 评论 -
linux-0.11调试教程,fflush()函数实现分析和FILE类型定义
fflush() __bwrflush() __iowrite() write()typedef struct __iobuf { __stdiobuf_t *__rptr; /* pointer into read buffer */ __stdiobuf_t *__rend;原创 2013-02-24 10:34:42 · 2183 阅读 · 0 评论 -
linux-0.11调试教程 文件系统中b_uptodate字段的含义
b_uptodate的含义就是sync既是否同步了缓冲区和块设备的内容。void do_hd_request(void){...... if (CURRENT->cmd == WRITE) { hd_out(dev,nsect,sec,head,cyl,WIN_WRITE,&write_intr); for(i=0 ; i原创 2013-03-24 20:18:13 · 2971 阅读 · 0 评论 -
linux-0.11调试教程,minix-386-fd0-by-chenghao0511,最小的操作系统,只有360k。
http://pan.baidu.com/share/link?shareid=269130&uk=453348606minix-386-fd0-by-chenghao0511,最小的操作系统,只有360k。CSDN下载地址:minix-386-fd0-by-chenghao0511,最小的unix操作系统需要下载Bochs,下载安装后。解压下载的文件,直接原创 2013-02-06 23:55:13 · 4642 阅读 · 44 评论 -
调试main()到init()到setup()
b 0x54a7 c(0) Breakpoint 2, 0x54a7 in ?? ()Next at t=16677775(0) [0x000054a7] 0008:000054a7 (unk. ctxt): retn ; c3 sNext at t=16677776(0) [0x0000664c] 0008:0000664c原创 2014-12-28 21:57:07 · 1494 阅读 · 0 评论 -
调试bootsect和setup和head到main
b 0x0:0x7c00 c(0) Breakpoint 1, 0x7c00 in ?? ()Next at t=16165613(0) [0x00007c00] 0000:7c00 (unk. ctxt): mov ax, 0x7c0 ; b8c007 b 0x90200 c(0) Breakpoint 2, 0x90200 in ?? ()原创 2014-12-28 21:44:17 · 1458 阅读 · 0 评论 -
linux-0.11调试教程,filetutils的版本号
可以看出filetutils-3.1中的ls和0.11里面的ls是不一样的。也就是说filetutils-3.1中的源代码不是linux-0.11的源代码!!!原创 2014-02-06 21:55:55 · 1649 阅读 · 0 评论 -
linux-0.11调试教程,fdisk for linux-0.11 by chenghao0511
csdn下载:http://download.csdn.net/detail/sitelist/5065652fdisk-by-chenghao0511 for linux-0.11百度网盘下载地址:http://pan.baidu.com/share/link?shareid=330227&uk=4533486062013/2/16 by chenghao0511原创 2013-02-16 10:48:37 · 2617 阅读 · 6 评论 -
linux-0.11硬盘集成盘的制作方法
2014年1月9日 by chenghao0511@gmail.com制作方法:把bootsect 替换 原来的makedd bs=8192 if=Image of=/dev/hd5 c h s 60 16 63之后需要更改img的分区表,需要你先备份然后再拷贝回去0x1BE到0x1CF是这个分区1的数据001231048165041E2C01000031750原创 2014-01-09 20:06:02 · 2479 阅读 · 2 评论 -
linux-0.11硬盘集成盘的制作方法--2
用到的工具,fdiskch在img里面有。fdiskch可以完美的分区后直接用shoelace启动。fdiskch可以说是研究shoelace的副产品。而这个把Image放到分区前面的想法则直接是fdiskch的副产品。启动明显比从软盘启动快。分区的起始扇区是300个扇区处。原创 2014-01-10 22:02:20 · 1626 阅读 · 0 评论 -
关于gcc-1.37.1下直接编译linux-0.11内核未定义符号的解决
lib/lib.a \ -o tools/system > System.map kernel/kernel.o: Undefined symbol __原创 2014-01-11 11:40:52 · 1715 阅读 · 0 评论 -
minix386下编译linux-0.11内核
http://v.youku.com/v_show/id_XNjU5OTAyMzQ4.html原创 2014-01-10 14:48:03 · 1334 阅读 · 0 评论 -
关于 bison源代码分析--gcc源代码分析之语法分析部分 的说明
已经出版的相同选题的书:LEMON语法分析生成器(LALR(1))源代码情景分析 Bison是bash的语法分析器是gcc的语法分析器。Linux其实是有三部分组成。第一部分,内核(oldlinux论坛已有讨论和linux内核完全注释等专著)。第二部分,gcc编译器,其中代码中最难也是最精彩的就是语法分析部分,靠的也是bison。第三部分,bash,bas...原创 2013-12-26 08:17:34 · 3399 阅读 · 1 评论 -
Reset-floppy called错误和Bad partition table错误解决方法
Reset-floppy called 错误:floppy.c文件里面:static void reset_floppy(void){ int i; reset = 0; cur_spec1 = -1; cur_rate = -1; recalibrate = 1; printk("Reset-floppy calle原创 2014-01-09 19:54:20 · 4285 阅读 · 0 评论 -
编译linux-0.11内核后键盘不对的问题解决方法,比如/变成了-
keyboard.S文件开始有这么一句#include config.h里面有键盘布局的定义,linus用的是芬兰的键盘,我们用的是美式键盘。#ifndef _CONFIG_H#define _CONFIG_H/* * The root-device is no longer hard-coded. You can change the default原创 2014-01-08 12:31:09 · 2125 阅读 · 0 评论 -
我的2013--linux-0.11调试之路
2013我的linux-0.11调试之路 开始是先对minix-1.15升级到minix386进行了研究,参考了oldlinux论坛的linux内核创建仿古游里面的文章。站长现在也已经不记得具体的步骤到了,特别是一些关键的步骤。自己摸索后终于升级到了386保护模式。并发布了一个360k的系统镜像。 后来对linux-0。11中的分区工具进行了分析包括fdisk和mkfs还原创 2013-12-21 14:17:08 · 4916 阅读 · 7 评论 -
bash 1.05 by gcc-1.40 in minix-386 (no strip)
下载地址1:bash 1.05 by gcc-1.40 in minix-386 (no strip)http://download.csdn.net/detail/sitelist/5050815下载地址2:bash-1.05 by gcc-1.40 in minix-386 百度网盘共享下载:http://pan.baidu.com/share/link?s原创 2013-02-03 20:12:17 · 1807 阅读 · 0 评论 -
linux-0.11调试教程,rl_get_previous_history 调用过程
linux-0.11调试教程,bash-1.12中readline()调用过程 http://blog.csdn.net/sitelist/article/details/8602108这篇文是上面这篇文的后续,rl_get_previous_history (count)函数位于readline.c文件中,previous_history ()函数位于history.c文件中。rl_in原创 2013-02-25 22:09:15 · 1461 阅读 · 0 评论 -
linux-0.11调试教程,load_history ()调用过程
shell.cmain () load_history () reader_loop ()/* Load the history list from the history file. */load_history (){ char *hf; /* Truncate history file for interactive原创 2013-03-05 21:36:31 · 1449 阅读 · 0 评论 -
查看硬盘分区表信息工具:fdisk0 for linux-0.11 附下载地址
查看硬盘分区表信息工具:fdisk0 for linux-0.11下载地址1:fdisk0 for linux-0.11下载地址2:百度网盘下载地址:http://pan.baidu.com/share/link?shareid=218125&uk=453348606现在只能查看/dev/hd0的硬盘分区表信息,还不能删除分区,等。引用:UNIX所谓的“原创 2013-01-27 14:50:37 · 2421 阅读 · 0 评论 -
linux-0.11调试教程,task3(04),sa_restore函数
返回用户态之后,先运行的是用户定义的信号处理程序,既sa_handler,然后sa_handler函数最后是ret!!!ret之后运行sa_restore函数,sa_restore函数最后也是ret!!!再返回到int 0x80下面的语句,既old_eip位置处继续运行。所以第一需要改变的是信号处理所在的用户程序的内核态堆栈中的eip,第二是用户态堆栈,用户态堆栈需要放置两个地址,原创 2013-01-14 07:42:24 · 2169 阅读 · 0 评论 -
linux-0.11调试教程,mkfs.c源代码分析(2)
第二个任务是建立根目录。由make_root_inode()函数完成。在make_root_inode()函数运行之前如果命令中加入了-c选项,则会运行check_blocks()函数检查坏块,并把坏块对应的逻辑块位图块中对应的位置1。因为我们的系统是在bochs中运行,硬盘对应的是一个img文件,不是实体硬盘,所以不会有坏块。也没有必要加-c选项。根目录对应的数据是:#defin原创 2013-01-29 13:44:13 · 2303 阅读 · 0 评论 -
linux-0.11调试教程,mkfs.c源代码分析(3)
如果mkfs命令加-c选项会执行check_blocks()函数当然会很费时。大约2分钟。check_blocks()函数通过逐个读取块的内容,如果不能读取,算出哪个块不能读取,既是坏块,计算出坏块的块号既current_block,然后把对应的逻辑块位图中的位置位,表示已经损坏,在make_bad_inode()函数运行的时候会根据逻辑块位图中的位是否被置1换算成坏块的块号放到坏块文件中原创 2013-01-29 18:18:23 · 1685 阅读 · 0 评论 -
linux-0.11调试教程,mkfs.c源代码分析(1)
下面是mkfs命令的一个例子mkfs /dev/hd6 60000结果:20000个inodes,60000个blocks,第一个数据块块号为638指导思想:不看源代码的话,格式化一个文件系统,应该改变的是:(1),文件系统的超级块信息,需要用户输入的块的总数算出i节点的个数和i节点位图块的个数和逻辑块位图块的个数及第一个数据块的块号。setup_tab原创 2013-01-29 11:31:03 · 3748 阅读 · 0 评论 -
linux-0.11调试教程,img文件的分区和格式化,写了个fdisk1可以新建一个分区
fdisk1百度网盘下载:http://pan.baidu.com/share/link?shareid=220194&uk=453348606使用方法:fdisk1,可以放在rootimage-0.11根文件系统里,也可以放在hdc-0.11.img里面。使用命令后第二个硬盘既/dev/hd5的分区表第一个会被改写。作用:把由bochs的64M的img文件(未原创 2013-01-28 16:19:57 · 5027 阅读 · 0 评论 -
linux-0.11调试教程,df.c源代码分析,自己写了个super for linux-0.11
int nibblemap[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 };1101,11003个1,2个1如tmp=1101,1100bnibblemap[tmp&0xf] + nibblemap[(tmp>>4)&0xf]=5上面的可以算出1个字节有多少个1!//count()算的是i节点位图或逻辑块位图中有多少个位为原创 2013-01-26 21:24:14 · 2916 阅读 · 0 评论 -
linux-0.11调试教程,Bochs-2.1.1配置文件,精简版可拷贝,及img文件制作过程
说明1:BIOS-bochs-latest文件和VGABIOS-elpin-2.40文件都在bochs安装目录下,既C:\Program Files\Bochs-2.1.1说明2:bootimage-0.11-hd和diskb.img和hdc-0.11.img都是用户自己制作或下载的别人制作好的文件。下面是bochsrc-hd.bxrc文件的内容:romimage: file=原创 2013-01-26 11:18:03 · 4570 阅读 · 0 评论 -
linux-0.11调试教程,bootsect.s文件调试,Loading system ...
Image中的bootsect部分被BIOS加载到0000:7c00--0000:7e00,正好一个扇区,也只有这一个扇区。你应该能看到0X301既根设备号,还能看到aa55了。然后会把自己加载到0x90000-0x90200下面把setup部分加载到0x90200-0x90a00,共4个扇区。到这里你应该看到原创 2013-01-18 19:00:28 · 2156 阅读 · 0 评论