|
前言
对于多系统启动,有比较多的软件都可以完成,现在比较流行的软件注意有windows下的NTLoader,Linux下的Lilo,Linux下的grub,Freebsd下的loader等程序,除了这些操作系统带的程序以为,还有System Commander等第3方软件也可以进行多系统启动管理。
下面就对于不同的引导程序进行一个简单的介绍,并且比较一下Lilo和grub的功能。由于System Commander我自己使用的很少,就不作太多的介绍了。
再谈MBR的结构
如前面提到的一样,MBR使一个硬盘的主引导记录,上面记载了4个主(扩展)分区的信息和启动分区的标志,但是实际上,这些内容占用的空间相当有限,还有很多的部分是空闲着的。这部分空间可以被一些引导程序使用,通常,这部分空间使0x000-0x1b8,一共有440个字节的空间。在这部分空间后面是才分区的记录,最后是0x55aa表示该驱动器为硬盘。通常使用MBR的有NTLoader,FreeBSD Loader,Lilo,Grub,System Commander等等,但有的病毒也使用MBR。
磁盘分区的第一个扇区是MBR,但是磁盘的第63个扇区才是第一个分区的开始扇区。因此,磁盘中的2-62扇区是空闲的,有的系统引导程序也使用这部分空间,比如Grub,System Commander等等,当然,病毒也使用该部分空间。
系统加电的时候,首先完成自检以后,首先读入MBR,然后执行对应的程序,如果MBR的前面部分为空,则跳转到被激活的分区上去。
Lilo的使用和配置
Lilo (Linux Loader)是一个功能很强大的系统引导程序,可以引导Linux,windows,FreeBSD等等操作系统。
Lilo在配置完/etc/lilo.conf以后,需要运行/sbin/lilo程序,生成相应的MBR和chain.b文件,在系统启动的时候,BIOS程序读入MBR中的程序,并把控制权交给Lilo,lilo读取chain.b并且显示出相应的列表(根据用户的配置,可以是列表,图形等),用户进行选择以后就可以启动相应的操作系统。
Lilo.conf是Lilo的配置文件该文件位于/etc目录下,下面是一个lilo.conf文件的样本,大家作为可以参考。
# Lilo.conf文件,下面是
boot=/dev/hda # lilo程序安装的位置,可以是hda,hda2等等
map=/boot/map
install=/boot/boot.b # chain.b文件,默认的Lilo的第二部分
prompt # 显示提示符合
timeout=50 # 延时5秒,然后启动默认操作系统
message=/boot/message # 显示信息,可能是一张图片,或者是一段文字
lba32 # lba32模式,使用超过8.4G硬盘的时候需要添加这行
default=linux
image=/boot/vmlinuz-2.4.18-3smp # Linux内核的位置
label=linux # 启动的操作系统的标签
initrd=/boot/initrd-2.4.18-3smp.img # 这是一个映像文件,内部是一些程序和模块,在把根文件系统加载之前先可以使用和运行内部的程序。
vga=791 # 显示器的显示模式,791->1024x768,788->800x600
read-only # 加载根文件系统的时候使用只读方式
root=/dev/hda2 # 根文件系统的位置
append="lba32" # 附加的一些信息,这些信息传递给内核
other=/dev/hda1 # 这里是引导windows,这行说明windows在/dev/hda1分区上
label=windows # 使用的标签是windows,在显示的时候会显示windows
optional # 可选
other=/dev/hda3 # 这里引导freebsd,这行说明freebsd在/dev/hda3分区上
label=freebsd # 使用的标签是freebsd,在显示的时候显示freebsd
optional
在实际的启动过程中,lilo并不能直接启动windows和freebsd,而是把控制权限交给指定分区的前1024个字节中的程序。
Grub的使用和配置
Grub是比较新的一个引导程序了,当然,Grub的功能比Lilo的功能强大。这主要表现在两个方面。一方面。Grub支持更多的操作系统,比如GNU/HURD,NetBSD,OpenBSD,Mach等操作系统。而对于这些操作系统,Lilo是不支持的。另一个方面,Grub支持多种文件系统,而Lilo不支持任何的文件系统。Lilo的配置文件写完了以后,需要重新生成chain.b文件,因此在读取的时候,lilo直接使用块的方式读取硬盘(CHS或LBA32)。Grub在读取自己的第二个部分的时候,使用的是和lilo的方法一样,但是读取完了第二部分以后,Grub就可以支持多种文件系统了。包括ext2,reiserfs,ffs,vfat等待。
Grub还支持网络启动,支持使用2-62扇区,Grub可以把1.5stage文件写入该位置。
# Boot automatically after 30 secs.
timeout 30
# By default, boot the first entry.
default 0 # 默认启动第一个选项
# Fallback to the second entry.
fallback 1 # 如果启动第一个选项失败,启动第二个
# For booting the GNU Hurd
title GNU/Hurd # 启动的标签,启动的是会显示” GNU/Hurd”
root (hd0,0) # 启动hurd,根分区是第一个磁盘的第一个分区
kernel /boot/gnumach.gz root=hd0s1 # kernel的位置和根分区
module /boot/serverboot.gz # kernel需要的模块
# For booting Linux
title GNU/Linux # 启动的标签,启动的是会显示” GNU/Linux”
root (hd1,0) # 启动linux,根分区是第二个磁盘的第一个分区
kernel /vmlinuz root=/dev/hdb1 # kernel的位置和根分区
# For booting Mach (getting kernel from floppy)
title Utah Mach4 multiboot # 启动的标签,启动的是会显示” Utah Mach4 multiboot”
root (hd0,2) # 启动linux,根分区是第一个磁盘的第三个分区
pause Insert the diskette now!! # 提示插入软盘
kernel (fd0)/boot/kernel root=hd0s3 # kernel的位置和根分区
module (fd0)/boot/bootstrap # kernel需要的模块
# For booting FreeBSD
title FreeBSD 4.6 #启动的标签,启动的是会显示” FreeBSD 4.6”
root (hd0,3,a) # 启动Freebsd根分区是第一个磁盘,第四个分区(slace)的a分区
kernel /boot/loader # 由于Kernel的位置不知道,装载freebsd的loader,让loader启动
# For booting Windows NT or Windows95
title Windows NT / Windows 95 #启动标签,显示“Windows NT / Windows 95”
rootnoverify (hd0,1) # 根分区是第一个磁盘的第二个分区,但是不检查内核
makeactive # 激活该分区为可以启动分区
chainloader +1 # 使用 chainloader的功能,把控制权交给启动分区
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos
# For installing GRUB into the hard disk
title Install GRUB into the hard disk
root (hd0,0) # 安装grub的是的配置,根分区是第一个磁盘的第一个分区
setup (hd0) # grub安装在第一个磁盘的MBR上
# Change the colors.
title Change the colors # 改变颜色
color light-green/brown blink-red/blue
NT Loader的使用和配置
NT Loader是一个可以加载windows NT内核的启动程序,但是由于该启动程序也可以用来启动dos,因此也可以用来启动其他的操作系统。在早期的时候,NT loader需要使用MBR,因此只能用NT Loader来启动Linux和freebsd等操作系统。
[boot loader]
timeout=30 # 超时的时间限制是30秒
default=multi(0)disk(0)rdisk(0)partition(1)WINNT # 默认启动的操作系统
[operating systems] # 可选的操作系统
multi(0)disk(0)rdisk(0)partition(1)WINNT="Microsoft Windows 2000 Professional" /fastdetect
# 启动windows2000
C:="Microsoft Windows" # 可以启动的DOS
c:mbr.lnx="Load Linux Mandrake" # 可以启动的 Linux
NT Loader和Lilo或者Grub的配合使用
上面我给出了一个mbr.lnx文件用来启动Linux,但是这个文件是从那里来的呢?这个文件其实就是一个mbr。如何制作的?
启动到Linux下,安装好lilo或者Grub之后(安装在MBR),使用下面的命令就可以了。命令行的意思是读出磁盘的第一个512个字节,并写入文件mbr.lnx中
root@sice # dd if=/dev/hda of=/mbr.lnx bs=512 count=1
这样,就生成了一个mbr.lnx文件。这种方法需要在每次重新配置了Lilo以后,都需要重新更新mbr.lnx,但是如果你需要在安装Linux之后再安装windows98或者windows2000的话,这样做就有必要了,因为windows98和windows2000虽然都不使用MBR,但是他们都会清空MBR。
2002.6.18 |
|