首页
社区
课程
招聘
[求助]公司出的题目 请高人帮我分析一下 事关我的前程 谢拉
发表于: 2008-11-7 08:04 3387

[求助]公司出的题目 请高人帮我分析一下 事关我的前程 谢拉

2008-11-7 08:04
3387
boot into DOS/Win9x from a running Linux system
参考资料:http://www.boot-land.net/forums/index.php?showtopic=4636&st=0
流程:bios --> linux --> windows xp或者dos
注意:整个过程不重启计算机,建议早期实验在虚拟机里面进行,推荐vmware或者virtual box

题的意思貌似是从一个运行中的linux 系统 进入到DOS/Win9x
大家认为需要掌握哪方面的技能才能搞定这题 最后帮我安排一下学习进度和学习步聚 告之我要在一个月之内完成这道题

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
2008-11-7 10:13
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢~~~~
2008-11-7 11:02
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
关键在于“不重新启动”计算机,“重新启动”的定义如何。

根据

    流程:bios --> linux --> windows xp或者dos

来看,应该是说不经过bios代码就满足条件。

kexec这个系统调用可以理解为对内核的exec()调用。这是正解。

如果权限足够了,也可以直接进入内核。

写一个内核模块,将其载入内核,先将内核调度器关闭,然后从硬盘加载DOS BOOT RECORD到正确的物理地址,恢复BIOS参数块,然后重新初始化CPU到实模式,手动BOOT即可。

以上是我突然想到的,理论上可行,实际并不可行,比如BIOS参数块,Linux内核并没有保留它,因此说恢复,其实无法恢复。而且直接写物内存的方法也有问题。

所以,forget about it ,就说说kexec()调用吧。

1.内核版本必需为 2.6.13 或以上,并且要保证编译内核时该选项是打开的。

    一般发行版都是打开的,egrep KEXEC /boot/config-2.6.xxxxxxx 结果是y就可以

    而自己编译的内核,配置路径是

     Processor type and features --->

           [*] kexec system call (EXPERIMENTAL)

2.系统需要安装 kexec-tools

3.kexec通过一些数据结构来识别inux的内核映像,必须是elf32格式,所以还必须写一个“伪内核”来实现dos loader的功能。
2008-11-7 15:50
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你这里说的编译内核是指要切换到的内核是吗?如果是的话, 这内核是我们要转换到的,它应该不需要具有kexec的功能哈 请大哥解惑
2008-11-10 21:21
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
6
BIOS的信息这时候还在内存里。
如果复位CPU(应该不算重启计算机,重启应该指的是CPU以及大部分外设都掉电了)让它从头加载BIOS执行,就不好控制了。

还是直接去加载NTLDR好了,放到合适的内存位置,然后执行。

引导扇区,NTLDR的源码网上都有吧,nt4源码里面有ntldr的源码

reactOS里面也有,估计都差不多。
2008-11-10 22:50
0
游客
登录 | 注册 方可回帖
返回
//