全部博文(2759)
分类: IT业界
2014-04-18 08:38:38
原文地址:直接从windows或linux启动LMOS 作者:lmnos
微博:
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