Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2118582
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2016-09-29 15:19:04

build.c 
         arg1                 arg2           arg3                arg4
参数:  boot/bootsect boot/setup zBoot/zSystem CURRENT

1. 先判断参数4
如果arg4==CURRENT, 则取major_root与minor_root为/的设备号
如果arg4==FLOPPY   , 则取major_root与minor_root为FLOPPY的设备号
默认 ,                           则取major_root与minor_root都为0 
如果arg4不存在,则取major_root与minor_root都为DEFAULT
L145-L147 会把这两个值写到bootsect的508 509去。
其实是最终生成的zImage的508 509去。

2. 对参数1-->boot/bootsect的处理

a. 打开boot/bootsect,读取MINIX_HEADER=32个字节
b. 判断前4个字节是不是[0-3]-->01 03 10 04
c. 判断[4-7]-->20 00 00 00,即mini头的长度0x20=32
d. 不关心[8-11],判断 [12-15]-->data segment  [16-19]-->bss 是不是都为0 
e. 读取剩余的字节,若剩余的字节不为512,则报错
f.  修改508 509这两个字节,然后写到输出
cong@msi:/work/qemu/x86/linux$ ls -l boot/bootsect
-rwxrwxr-x 1 cong cong 544 Sep 29 14:24 boot/bootsect     -->512+32=544

3. 对参数2-->boot/setup的处理
a. 跟boot/bootsect的处理一样,打开文件后判断前32个字节的格式
b. 将扣除这32个字节的剩余部分写到输出,不足2048的部分填充0
剩余部分不能大于SETUP_SECTS*512=4*512=2048
cong@msi:/work/qemu/x86/linux$ ls -l boot/setup
-rwxrwxr-x 1 cong cong 2012 Sep 29 14:24 boot/setup

4. 对参数3-->zBoot/zSystem的处理
我修改了一下,这儿是直接原封不动的写的输出


阅读(823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~