Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1152270
  • 博文数量: 53
  • 博客积分: 1165
  • 博客等级: 下士
  • 技术积分: 1811
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-19 14:56
个人简介

专注于操作系统内核的实现

文章分类
文章存档

2015年(2)

2014年(16)

2013年(18)

2012年(17)

分类: IT业界

2014-04-12 13:04:31

    

微博:
QQ:609379965
邮箱:pengdong1228@live.cn;609379965@qq.com

      以前要从物理机上启动LMOS,必须要做个引导U盘,或者是在虚拟机运行LMOS,引导U盘的制作也有难度,这样很不方便……

其实现在x86平台上成熟的引导程序很多,例如GRUB、GRUB2、GRUB4DOS,GRUB4DOS是基于GRUB,不过它可以直接被windows引导(NTLDR、bootmgr)加载,然后它再去加载其它别的OS。早期的的linux都用的GRUB,现代的linux用的都是GRUB2。

GRUB有个多引导协议,任何只要遵循这个协议的OS都能被GRUB加载。然而LMOS内核有点特别,它需要引导程序传递内存布局信息和初始化64位运行环境,还权加载一个简单的LMOS应用——lmosinitshell,这些都让GRUB来做就有点困难了。于是我只是让GRUB加载一个文件,其它的自己来做。

由此诞生了LMOS内核映像工具,LMOS内核映像工具是一种类似文件打包工具,能将多个文件打包成一个文件,不同的是它有自动解包的功能,并且这个解包代码可以随时更换。LMOS内核映像格式如下图所示。

如何用GRUB加载LMOS内核呢。

先说说windows下怎么使用吧,windows xp和windows 7/8/8.1/2012是不同的。先来说说windows xp吧。如下:

1.      下载GRUB4DOS,把里面的grldr和menu.lst复制到C盘。

2.      编辑boot.ini文件,在这个文件最后加上:c:\grldr = ”startgrub”。

3.      编辑刚才的menu.lst,在文件最后加上如下内容。

title LMOS

root (hd0,0)       #表示第1块硬盘的C盘,如果你系统装在别的盘,需要修改

kernel /lmoskrnlsmp.eki            #多CPU版本的内核

boot


title LMOS_up

root (hd0,0)

kernel /lmoskrnlup.eki                #单CPU版本的内核

boot

4.      重启计算机就可以看到startgrub了,选择进入就可以看到,LMOS和LMOS_up选项了。

如果你是windows 7/8/8.1/2012系列的系统,则要复杂一些,如下:

1.      安装EasyBCD2.2这个软件,安装好后打开它,如下图所示。

2.      点击添加新项目。点击NerGrub。然后点击安装。如图所示:

3.      点击配置在弹出的记事本程序中输入如下信息:

title LMOS

root (hd0,0)       #表示第1块硬盘的C盘,如果你系统装在别的盘,需要修改

kernel /lmoskrnlsmp.eki            #多CPU版本的内核

boot


title LMOS_up

root (hd0,0)

kernel /lmoskrnlup.eki                #单CPU版本的内核

boot

4.      重启计算机就可以看到NerGrub了,选择进入就可以看到,LMOS和LMOS_up选项了。

记住上面的情况都是以为第一块硬盘的C盘为例的,所以LMOS两个内核映像文件也要复制到C盘。

如果你的系统是linux系统,则非常方便,因为linux系统已经安装好了GRUB2,默认情况下,只要把LMOS两个内核映像文件复制到,linux下/boot/目录下,同时修改/boot/grub/目录下的grub.cfg文件,在文件尾加入如下内容:

menuentry 'LMOS' {

insmod part_msdos

insmod ext2

set root='hd0,msdos9' #注意boot目录挂载的分区,这是我机器上的情况

multiboot2 /boot/lmoskrnlsmp.eki

boot

}

menuentry 'LMOS_up' {

insmod part_msdos

insmod ext2

set root='hd0,msdos9'  #注意boot目录挂载的分区,这是我机器上的情况

multiboot2 /boot/lmoskrnlup.eki

boot

}

重启计算机就可以看到LMOS和LMOS_up选项了。

为什么会有两个版本的内核,有些旧式的或者AMDCPU上的LAPIC,和新的intelCPU的LAPIC有点不同,这会导致LMOS支持多CPU出现故障,所以编译了两个版本一个单CPU的内核适应于老机器上,一个多CPU的内核运行在新机器上,这等我有时间了来解决它,不过二代CORE以及同时期的AMDCPU是没问题的。


下面有两个运行视频,这得感谢我老弟精心的拍摄,也感谢他长期对我的帮助,我经常和他一起讨论计算机,虽然他只是一个小学生,然也经常和我一起在物理机上调试我的LMOS内核。也许有一天他在计算机上的造诣和境界会远超于我。

视频1
视频2

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

wodemaya20192019-07-25 08:29:04

厉害呀,你小弟才小学生、