⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 系统引导管理器grub,为初学者指南 linuxsir_org.htm

📁 linuxSir 网站的精华文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <P></P>
      <P>值得注意的是如果您有一个/boot分区,应该用如下的办法来安装; </P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]#grub-install 
      --root-directory=/boot /dev/hda<BR>[root@localhost ~]#grub-install 
      --root-directory=/boot /dev/hdb</CODE></DIV>
      <P></P>
      <P><B>注解:</B>具体是/dev/hda还是/dev/hdb,请以fdisk -l 
      为准;如果两个都有,就看您把/boot分区是放在第一块硬盘还是第二块硬盘上了,以实际情况为准;</P>
      <P><FONT id=3.2 
      size=3><B><BR>2、设定GRUB的/boot分区并写入MBR;;<BR></B></FONT><BR>在Linux中,GRUB软件包的安装,及在配置过程中安装grub到 
      /boot中还是不够的, 还要把GRUB,写入MBR才行;有时我们重新安装了Windows,Windows会把MBR 
      重写,这样GRUB就消失了;如果您出现这样的情况,就要进行这个过程;</P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# grub</CODE></DIV>
      <P></P>
      <P>会出现<B>grub&gt;</B>提示符,这是grub命令行模式 
      ,如果能在开机中出现提示符,没有引导不起来的系统,除非您的系统破坏的极为严重。如果仅仅是GRUB被破坏了,GRUB命令行是能让操作系统引导起来的;</P>
      <P>接着看例子,我们要找到 /boot/grub/stage1的,在grub&gt;后面输入;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; find 
      /boot/grub/stage1<BR>&nbsp;(hd0,6)<BR>&nbsp;(fd0) 
      注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;</CODE></DIV>
      <P></P>
      <P><B>注解:</B></P>
      <P>(hd0,6) 这是/boot所在的分区;不要误解为是Linux 的/所在的分区,这是值得注意的;<BR>(fd0) 
      注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt;root (hd0,6) 
      注:这是/boot所在的分区;<BR>grub&gt;setup (hd0) 注:把GRUB写到MBR上;</CODE></DIV>
      <P></P>
      <P><B>注解:</B></P>
      <P>上面这步骤是根据 find 
      /boot/stage1而来的,仔细看一下就明白了;现在我们一般安装很少会把/boot分区列为一个单独的分区;不过有的弟兄可能也喜欢这么做;所以还是有必要说一下为好;</P>
      <P><FONT id=3.1 size=4><B><BR>四、GRUB的配置文件的menu.lst的写法;<BR></B></FONT></P>
      <P>对于GRUB来说,如果没有配置menu.lst,无论是Linux版本的GRUB,还是WINGRUB,都会有命令行可用,通过命令行是一样能把操作系统引导起来的;有些弟兄总以为menu.lst 
      配置错了, 
      或者在机器启动后出现grub&gt;命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法,根本没有必要重装系统;</P>
      <P>menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 
      文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的;</P>
      <P>有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令;</P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# touch 
      /boot/grub/menu.lst</CODE></DIV><BR>然后我们再做一个/boot/grub/menu.lst 的链接 
      /boot/grub/grub.conf<BR>
      <DIV class=codeblock><CODE>[root@localhost ~]# cd 
      /boot/grub<BR>[root@localhost ~]# ln -s menu.lst grub.conf</CODE></DIV>
      <P></P>
      <P>现在我们来写GRUB的menu.lst了,因为/boot/grub/grub.conf是 
      /boot/grub/menu.lst的链接文件,改哪个都行。链接文件相当于Windows的快捷方式,这样可能能更好的理解;</P>
      <P><FONT id=4.1 size=3><B><BR>1、menu.lst的写法之一;<BR></B></FONT></P>
      <P>首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容;</P>
      <P>
      <DIV 
      class=codeblock><CODE>default=0<BR>timeout=5<BR>#splashimage=(hd0,6)/boot/grub/splash.xpm.gz<BR>hiddenmenu<BR>title 
      Fedora Core 
      (2.6.11-1.1369_FC4)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root 
      (hd0,6)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 
      /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      /boot/initrd-2.6.11-1.1369_FC4.img<BR>title 
      WinXp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootnoverify 
      (hd0,0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chainloader 
      +1</CODE></DIV>
      <P></P>
      <P><B>注解:</B><BR>
      <DIV class=codeblock><CODE>default=0</CODE></DIV><BR>default=0 
      是默认启动哪个系统,从0开始;每个操作系统的启动的定义都从title开始的,第一个title 
      在GRUB的启动菜单上显示为0,第二个启动为1,以此类推;<BR>
      <DIV 
      class=codeblock><CODE>timeout=5</CODE></DIV><BR>注:表示在开机后,GRUB画面出现几秒后开始以默认启动;如果在启动时,移动上下键,则解除这一规则;<BR>#splashimage=(hd0,6)/boot/grub/splash.xpm.gz 
      注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面,所以加#号注掉,也可以删除;<BR>
      <DIV class=codeblock><CODE>hiddenmenu</CODE></DIV>
      <P></P>
      <P><B>注解:</B>隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉;</P>
      <P>一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行;</P>
      <P><FONT id=4.11 size=2><B><BR>1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 
      所在的分区;<BR></B></FONT></P>
      <P>title XXXXX 注:title 后面加一个空格,title 
      是小写的,后面可以自己定义;比如FC4,自己定义一个名字就行;<BR>root (hd[0-n],y) ,在本例中,我们看到的是root 
      (hd0,6) ,root 
      (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的,这时/boot和/所在的同一个分区; 
      这个root (hd[0-n],y)很重要,因为/boot目录中虽然有grub目录,最为重要的是还有kernel 
      和initrd文件,这是Linux能启动起来最为重要东西;</P>
      <P>有的弟兄会问,root (hd[0-n],y)是怎么来的?</P>
      <P><B>请参考:</B><A 
      href="http://www.linuxsir.org/main/?q=node/127">《在Linux系统中存储设备的两种表示方法》</A><BR><FONT 
      id=4.12 size=2><B><BR>2)在menu.lst中,kernel 命令行的写法;<BR></B></FONT></P>
      <P>kernel 一行,是通指定内核及Linux的/分区所在位置;</P>
      <P>比如例子中是;<BR>
      <DIV class=codeblock><CODE>kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/</CODE></DIV><BR>在这里以kernel 
      起始,指定Linux的内核的文件所处的绝对路径;因为内核是处在/boot目录中的, 
      如果/boot是独立的一个分区,则需要把boot省略;如果/boot是独立的分区,这行要写成:<BR>
      <DIV class=codeblock><CODE>kernel /vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/ </CODE></DIV>
      <P></P>
      <P>因为/boot所处的分区已经在title 下一行root 
      (hd[0-n],y)中指定了,所以就无需要再指明内核处在哪个分区了;另外Linux系统的硬盘分区的挂载配置文件在/etc/fstab ,原理是通过 
      mount /dev/hd[a-z]X /boot 来进行的;您可以对照着来理解;</P>
      <P>ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 
      这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 
      或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda7 , 
      那这里就可以写成root=/dev/hda7;</P>
      <P>如果查看系统运行所挂载的分区,请用 df -lh 来查看,就能明白是不是/boot是独立的分区,或者查看/etc/fstab也能知道;</P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# df -lh<BR>Filesystem 容量 已用 
      可用 已用% 挂载点<BR>/dev/hda7 11G 9.2G 1.2G 90% /<BR>/dev/shm 236M 0 236M 0% 
      /dev/shm</CODE></DIV>
      <P></P>
      <P>在这个例子中,我们可以发现 
      /boot并没有出现只有/dev/hda7,这表示/boot并不是独立的一个分区;所有的东西都包含在/中;于是我们在/boot中查看内核版本;<BR>
      <DIV class=codeblock><CODE>[root@localhost ~]# ls 
      /boot/vmlinuz*<BR>/boot/vmlinuz-2.6.11-1.1369_FC4 
      注:看到内核vmlinuz所处的目录;</CODE></DIV>
      <P></P>
      <P>于是我们就可以这样kernel 这行了;</P>
      <P>
      <DIV class=codeblock><CODE>kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=/dev/hda7</CODE></DIV><BR><FONT id=4.13 size=2><B><BR>3)initrd 
      命令行的写法;<BR></B></FONT>
      <P></P>
      <P>如果是/boot独立一个分区,initrd 
      一行要把/boot中省略;如果/boot不是处于一个分区,而是和Linux的/分区处于同一分区,不应该省略;</P>
      <P>比如我们在2)中用的例子;现在拿到这里,我们应该首先查看 /boot中的initrd的文件名到底是什么;</P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# ls 
      /boot/initrd*<BR>/boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P>如果是通过df -lh 得知或查看/etc/fstab 也行, 得知/boot是独立的分区;这时initrd 应该写成;</P>
      <P>
      <DIV class=codeblock><CODE>initrd 
      /initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P>如果是 /boot不是独处一个分区,而是在/同一处一个分区, 则要写成;</P>
      <P>
      <DIV class=codeblock><CODE>initrd 
      /boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P><FONT id=4.14 size=2><B><BR>4)menu.lst第一种写法的总结和实践;<BR></B></FONT></P>
      <P>在这里,我们只说重要的,不重要的就一带而过了;<BR><FONT id=4.141 color=green><B><BR>1]用fdisk 
      -l ;df -lh ;more /etc/fstab来确认分区情况;<BR></B></FONT><BR>我们过fdisk -l ;df -lh 
      ; more /etc/fstab 来确认/boot所在的分区,及Linux的根分区所在位置;</P>
      <P>比如我们确认/boot和Linux的/分区同处一个分区;</P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# df -lh<BR>Filesystem 容量 已用 
      可用 已用% 挂载点<BR>/dev/hda7 11G 9.2G 1.2G 90% /<BR>/dev/shm 236M 0 236M 0% 
      /dev/shm</CODE></DIV>
      <P></P>
      <P>然后我们/etc/fstab 中,查看/分所在的分区或分区标签是什么;<BR>
      <DIV class=codeblock><CODE>[root@localhost ~]# more /etc/fstab<BR># This 
      file is edited by fstab-sync - see 'man fstab-sync' for details<BR>LABEL=/ 
      / ext3 defaults 1 1<BR>/dev/devpts /dev/pts devpts gid=5,mode=620 0 
      0<BR>/dev/shm /dev/shm tmpfs defaults 0 0<BR>/dev/proc /proc proc defaults 
      0 0<BR>/dev/sys /sys sysfs defaults 0 0<BR>LABEL=SWAP-hda1 swap swap 
      defaults 0 0<BR>/dev/hdc /media/cdrecorder auto 
      pamconsole,exec,noauto,managed 0 0</CODE></DIV>
      <P></P>
      <P>经过上面的df -lh 和more /etc/fstab 
      的对照中得知,/boot并是独处一个分区,而是和/在同一个分区;这个Linux系统安装在/dev/hda7上,文件系统(此分区)的标签为LABEL=/ 
      ,/boot也是处于/dev/hda7 ,/dev/hda7也可以说是 root (hd0,6);<BR><FONT id=4.142 
      color=green><B><BR>2]查看内核vmlinuz的和initrd文件名的全称;<BR></B></FONT></P>
      <P>
      <DIV class=codeblock><CODE>[root@localhost ~]# ls -lh 
      /boot/vmlinuz*<BR>-rw-r--r-- 1 root root 1.6M 2005-06-03 
      /boot/vmlinuz-2.6.11-1.1369_FC4<BR>[root@localhost ~]# ls -lh 
      /boot/initrd*<BR>-rw-r--r-- 1 root root 1.1M 11月 26 22:30 
      /boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P><FONT id=4.143 color=green><B><BR>3]开始写menu.lst ;<BR></B></FONT></P>
      <P>我们根据上面所提到的,可以写成如下的样子;</P>
      <P>
      <DIV class=codeblock><CODE>default=0<BR>timeout=5<BR>title 
      FC4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root 
      (hd0,6)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 
      /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      /boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P>也可以写成;</P>
      <P>
      <DIV class=codeblock><CODE>default=0<BR>timeout=5<BR>title 
      FC4<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root 
      (hd0,6)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -