找回密码
 注册
快捷导航
查看: 48005|回复: 13

磁盘分区于多系统启动(下)

 关闭 [复制链接] |自动提醒
阅读字号:

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
发表于 2002-6-17 20:23:48| 字数 7,631| - 广东省深圳市 电信 | 显示全部楼层 |阅读模式
磁盘分区于多系统启动(下)
前言
对于多系统启动,有比较多的软件都可以完成,现在比较流行的软件注意有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。

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
 楼主| 发表于 2002-6-17 20:26:16| 字数 80| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

实在是对不起大家了,本来想快点写出来的,但是老是忙,而且私事比较烦。
还是hope厉害,又是威胁又是利诱。
sigh
草草而就,不到之处请大家批评指正,大家共同探讨。
我即使掌控一切,也当保持谦逊和敬畏。  --《启示录》
回复 支持 反对

使用道具 举报

9万

回帖

1036

积分

1万

资产值

管理员 Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

注册时间
2001-11-20
金牌荣誉勋章(注册20年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2022年全勤勋章2023
发表于 2002-6-17 20:37:23| 字数 17| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

呵呵,把我说成什么了都......
人生满希望
T700: i7-1195G7, 64GB RAM, 1T M.2+2T HDD, 15in UXGA(1600x1200) LED    |   X62s: i7-5600u, 32GB RAM, 128GB mSATA, 12.1in SXGA+ AFFS LCD
X2100: i7-10710u, 32GB RAM, 512GB M.2, 13in WQXGA LCD(3000x2000)      |   T70: Xeon(R)E3-1505L, 32GB RAM, 512GB M2+ 2TB HDDx2(Raid1)
回复 支持 反对

使用道具 举报

97

回帖

5

积分

85

资产值

高级会员 Rank: 2Rank: 2

注册时间
2002-2-20
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-6-18 00:08:13| 字数 29| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

写得不错,致以敬礼!
btw,文章标题好像有错别字,是够忙的
240Z C500 128M 3G Debian Sarge T23 P3-1.13G 256M 30G Debian-Sarge A31 P4-1.7G 640M 40G WinXP-en
回复 支持 反对

使用道具 举报

97

回帖

5

积分

85

资产值

高级会员 Rank: 2Rank: 2

注册时间
2002-2-20
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-6-18 00:27:55| 字数 380| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

如果grub或lilo与ntloader配合使用者有可能陷入启动循环之中如:
lilo->(选择windows)->ntldr->(选择Load Linux ***)->lilo,所以窃以为意义不大。
但如果已经安装了win2k或winxp情况下,如再安装linux可以将lilo安装与非mbr分区,如:hda3,hda4,hda5等,并一定要制作启动软盘。
待到安装完毕重启时以该软盘启动linux,然后以root登陆,
接着mount hda1分区, mount /dev/hda1 /mnt/windows
再键入
dd if=/dev/hda* of=/mnt/windows/mbr.lnx bs=512 count=1
(hda*即为lilo所在分区,且以上操作仅对hda1为fat32格式有效,因为ntfs时仅能进行读操作)
240Z C500 128M 3G Debian Sarge T23 P3-1.13G 256M 30G Debian-Sarge A31 P4-1.7G 640M 40G WinXP-en
回复 支持 反对

使用道具 举报

59

回帖

1

积分

35

资产值

初级会员 Rank: 1

注册时间
2002-1-21
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-6-19 18:18:11| 字数 23| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

重装win2k后怎么恢复linux的引导呀??
nb, web, sports and ppmm
回复 支持 反对

使用道具 举报

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
 楼主| 发表于 2002-6-19 18:52:54| 字数 55| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

在启动到Linux下以后,使用lilo命令恢复引导,如果是grub,执行grub ,然后install就可以了。
我即使掌控一切,也当保持谦逊和敬畏。  --《启示录》
回复 支持 反对

使用道具 举报

38

回帖

0

积分

171

资产值

入门会员 Rank: 1

注册时间
2002-7-22
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-7-22 17:58:17| 字数 31| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

好像7.1后用grub作启动,重装win2k不会破坏grub的
回复 支持 反对

使用道具 举报

1074

回帖

36

积分

1万

资产值

高级会员 Rank: 2Rank: 2

注册时间
2002-1-13
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-8-3 06:58:57| 字数 43| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

这个跟grub无关,装win2k就是这样,不像win98那么变态
总算M$有点良心,呵呵
IBM ThinkPad T21 2647-6AU PIII750/512M/80G/13.3XGA/DVD/XP Corp&Linux
忆长安,八月时,阙下天高旧仪。衣冠共颁金镜,犀象对舞丹墀。更爱终南灞上,可怜秋草碧滋。
回复 支持 反对

使用道具 举报

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
 楼主| 发表于 2002-8-3 11:01:27| 字数 23| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

windows xp还是会破坏MBR的,sigh
我即使掌控一切,也当保持谦逊和敬畏。  --《启示录》
回复 支持 反对

使用道具 举报

1074

回帖

36

积分

1万

资产值

高级会员 Rank: 2Rank: 2

注册时间
2002-1-13
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-8-3 15:44:32| 字数 24| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

hehe...我用网络启动,呵呵
mbr坏了也没事
IBM ThinkPad T21 2647-6AU PIII750/512M/80G/13.3XGA/DVD/XP Corp&Linux
忆长安,八月时,阙下天高旧仪。衣冠共颁金镜,犀象对舞丹墀。更爱终南灞上,可怜秋草碧滋。
回复 支持 反对

使用道具 举报

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
 楼主| 发表于 2002-8-5 18:26:49| 字数 150| - 广东省深圳市 电信 | 显示全部楼层

回复: Re:磁盘分区于多系统启动(下)

QUOTE:
King wrote:
hehe...我用网络启动,呵呵
mbr坏了也没事

  
NFS??
NBD??
iSCSI??
  
我的600x在网络启动的时候会有网卡识别的问题,需要在initrd中驱动我的pcmcia卡,然后才能使用NBD,太麻烦了。
可能T系列的以后机型使用的不是PCMCIA网卡的,就会方便许多。
回复 支持 反对

使用道具 举报

1074

回帖

36

积分

1万

资产值

高级会员 Rank: 2Rank: 2

注册时间
2002-1-13
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2002-8-8 00:53:08| 字数 71| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

ft...就是pxe呀,直接远程加载pxegrub,grub配置也在tftp server上
内置的网卡当然不是pcmcia了,是mini pci的
IBM ThinkPad T21 2647-6AU PIII750/512M/80G/13.3XGA/DVD/XP Corp&Linux
忆长安,八月时,阙下天高旧仪。衣冠共颁金镜,犀象对舞丹墀。更爱终南灞上,可怜秋草碧滋。
回复 支持 反对

使用道具 举报

6987

回帖

119

积分

6万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2002-1-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)月全勤勋章金牌荣誉勋章(注册20年以上会员)年全勤勋章2023
 楼主| 发表于 2002-8-8 12:47:54| 字数 96| - 广东省深圳市 电信 | 显示全部楼层

Re:磁盘分区于多系统启动(下)

哦,你说的是仅仅是网络安装和网络启动。
其实可以使用NFS、NBD、iSCSI来启动Linux。这样的好处是不使用本地硬盘。而且速度也比本地硬盘快多了。但是就不能移动了,失去移动工作站的能力了。
我即使掌控一切,也当保持谦逊和敬畏。  --《启示录》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-5-16 02:47 , Processed in 0.114808 second(s), 42 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部