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

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

📁 linuxSir 网站的精华文章
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=/dev/hda7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      /boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P><B>注解:</B>上面两个不同之处在于一指定Linux的根/所在的分区时,一个是用了文件系统的标签,另一个没有用标签;<BR><FONT 
      id=4.2 size=3><B><BR>2、menu.lst的写法之二,精简型;<BR></B></FONT></P>
      <P>本写法主要是把指定/boot所位于的所分区直接写入kernel 指令行;这样就省略了通过root 
      (hd[0-n],y)来指定/boot所位于的分区;</P>
      <P><FONT id=4.21 
      size=3><B><BR>1)第一种情况:/boot和Linux的/根分区在同一个分区;<BR></B></FONT></P>
      <P>有前面的那么多的讲解,menu.lst写法之二就好理解多了;也得分两种情况,咱们先把/boot并不是独处一个分区,而是和Linux的根分区处于同一个分区;我们以 
      4)menu.lst第一种方法的写法总结 的实例为例子;</P>
      <P>
      <DIV class=codeblock><CODE>default=0<BR>timeout=5<BR>title 
      FC4x<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 
      (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=/dev/hda7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P><B>注解:</B></P>
      <P>title FC4x 注:自己为这个Linux 起个简单的名,以title开头,然后一个空格,后面就自己发挥吧,FC4或FC4x都行;</P>
      <P>kernel 空格 (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 空格 ro 空格 
      root=/dev/hda7</P>
      <P>kernel 这行这样理解 <B>kernel (boot所在的分区)/boot/内核文件件全称 ro 
      root=Linux根所位于的分区或标签</B></P>
      <P>initrd 空格 (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img<BR>initrd 
      这行可以这样理解<B> initrd (/boot所在的分区)/boot/内核文件名全称 </B></P>
      <P><FONT id=4.22 
      size=3><B><BR>2)第二种情况:/boot独立一个分区,和Linux的根分区不是同一个分区;<BR></B></FONT></P>
      <P>比如我们查看到df -lh 得到的是<BR>
      <DIV class=codeblock><CODE>[root@localhost ~]# df -lh<BR>Filesystem 容量 已用 
      可用 已用% 挂载点<BR>/dev/hda6 200M 120M 80M 60% /boot<BR>/dev/hda7 11G 9.2G 1.2G 
      90% /</CODE></DIV>
      <P></P>
      <P>我们再进一行查看/etc/fstab 得知;<BR>
      <DIV class=codeblock><CODE>LABEL=/ / ext3 defaults 1 1<BR>LABEL=/boot 
      /boot ext3 defaults 1 2</CODE></DIV>
      <P></P>
      <P>所以我们应该写成如下的;</P>
      <P>
      <DIV class=codeblock><CODE>title 
      FC4x<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 
      (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      (hd0,5)/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P>因为Linux的根分区是/dev/hda7,通过/etc/fstab和df -h的内容得知标签为 LABEL=/的分区就是/dev/hda7 
      ,所以有;</P>
      <P>
      <DIV class=codeblock><CODE>title 
      FC4x<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel 
      (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=/dev/hda7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd 
      (hd0,5)/initrd-2.6.11-1.1369_FC4.img</CODE></DIV>
      <P></P>
      <P><FONT id=5 size=4><B><BR>五、通过GRUB命令行来启动Linux操作系统;<BR></B></FONT></P>
      <P>GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。</P>
      <P>因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?<BR><FONT id=5.1 
      size=3><B><BR>1、为什么需要学习GRUB的命令行;<BR></B></FONT><BR>当我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比如在开机的时候,GRUB会出现<B>grub&gt;</B>类似的命令提示符,这时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单 
      ,直接用命令行来启动系统,比如我现在就是,为了写GRUB的文档,就把menu.lst 删除了,直接用命令来启动系统;<BR><FONT id=5.2 
      size=3><B><BR>2、用命令行来引导Linux操作系统的步骤;<BR></B></FONT></P>
      <P>通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub&gt;提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。如果您不知道有哪些命令,可以输入help;</P>
      <P><FONT id=5.21 size=2><B><BR>1)进入GRUB的命令行模式 
      grub&gt;<BR></B></FONT><BR>如果开机时,GRUB出现的是<B>grub&gt;</B>,说明你没有/etc/grub/menu.lst 
      ,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。如果有GRUB的菜单,您可以按<B>Ctrl+c</B>组合键进入GRUB的命令行模式,会出现<B>grub&gt;</B> 
      提示符;<BR>
      <DIV class=codeblock><CODE>grub&gt;</CODE></DIV><BR><FONT id=5.22 
      size=2><B><BR>2)获取帮助GRUB的 help<BR></B></FONT>
      <P></P>
      <P>只要您在<B>grub&gt;</B>提示符的后面输入help 就能得到GRUB所有的命令提示;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; help<BR>blocklist FILE boot<BR>cat 
      FILE chainloader [--force] FILE<BR>clear color NORMAL 
      [HIGHLIGHT]<BR>configfile FILE device DRIVE DEVICE<BR>displayapm 
      displaymem<BR>find FILENAME geometry DRIVE [CYLINDER HEAD SECTOR [<BR>halt 
      [--no-apm] help [--all] [PATTERN ...]<BR>hide PARTITION initrd FILE [ARG 
      ...]<BR>kernel [--no-mem-option] [--type=TYPE] makeactive<BR>map TO_DRIVE 
      FROM_DRIVE md5crypt<BR>module FILE [ARG ...] modulenounzip FILE [ARG 
      ...]<BR>pager [FLAG] partnew PART TYPE START LEN<BR>parttype PART TYPE 
      quit<BR>reboot root [DEVICE [HDBIAS]]<BR>rootnoverify [DEVICE [HDBIAS]] 
      serial [--unit=UNIT] [--port=PORT] [--<BR>setkey [TO_KEY FROM_KEY] setup 
      [--prefix=DIR] [--stage2=STAGE2_<BR>terminal [--dumb] [--no-echo] [--no-ed 
      terminfo [--name=NAME --cursor-address<BR>testvbe MODE unhide 
      PARTITION<BR>uppermem KBYTES vbeprobe [MODE]</CODE></DIV>
      <P></P>
      <P>如果需要得到某个指令的帮助,就在 help 后面空一格,然后输入指令,比如;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt;help kernel</CODE></DIV><BR><FONT 
      id=5.23 size=2><B><BR>3)cat的用法;<BR></B></FONT>
      <P></P>
      <P>cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat 
      (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;<BR>
      <DIV class=codeblock><CODE>grub&gt; cat ( 按tab 键会出来hd0或hd1之类的;<BR>grub&gt; 
      cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的;<BR>grub&gt; cat 
      (hd0,6)<BR>&nbsp;Possible partitions are:<BR>&nbsp;&nbsp;&nbsp;Partition 
      num: 0, Filesystem type unknown, partition type 
      0x7<BR>&nbsp;&nbsp;&nbsp;Partition num: 4, Filesystem type is fat, 
      partition type 0xb<BR>&nbsp;&nbsp;&nbsp;Partition num: 5, Filesystem type 
      is reiserfs, partition type 0x83<BR>&nbsp;&nbsp;&nbsp;Partition num: 6, 
      Filesystem type is ext2fs, partition type 
      0x83<BR>&nbsp;&nbsp;&nbsp;Partition num: 7, Filesystem type unknown, 
      partition type 0x83<BR>&nbsp;&nbsp;&nbsp;Partition num: 8, Filesystem type 
      is reiserfs, partition type 0x83<BR>&nbsp;&nbsp;&nbsp;Partition num: 9, 
      Filesystem type unknown, partition type 0x82<BR>grub&gt; cat 
      (hd0,6)/etc/fstab 注:比如我想查看一下 (hd0,6)/etc/fstab的内容就这样输入;<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,<BR>managed 0 0</CODE></DIV>
      <P></P>
      <P>有的弟兄可能会说,我不知道Linux安装在了哪个分区。那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以后引导带来方便;</P>
      <P>主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux的/处于同一个硬盘分区;比如上面的例子中LABEL=/ 
      这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;</P>
      <P>如果您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是类似下面的;</P>
      <P>
      <DIV class=codeblock><CODE>LABEL=/ / ext3 defaults 1 1<BR>LABEL=/boot 
      /boot ext3 defaults 1 2</CODE></DIV>
      <P></P>
      <P><FONT id=5.24 size=2><B><BR>4) root (hd[0-n,y) 
      指令来指定/boot所在的分区;<BR></B></FONT></P>
      <P>其实这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定;我们前面已经说过 (hd[0-n],y) 
      硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;</P>
      <P>比如我们确认/boot和 (hd0,6),所以就可以这样来输入root (hd0,6)<BR>
      <DIV class=codeblock><CODE>grub&gt; root (hd0,6)</CODE></DIV>
      <P></P>
      <P>如果发现不对,可以重新来过;没有什么大不了的;</P>
      <P><FONT id=5.25 size=2><B><BR>5) kernel 
      指令,用来指定Linux的内核,及/所在的分区;<BR></B></FONT></P>
      <P>kernel 
      这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;<BR><B><BR>如果我们已经通过root 
      (hd[0-n],y) 
      指定了/boot所在的分区,语法有两个:<BR></B><BR>如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;<BR><B><BR>kernel 
      /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro 
      root=/dev/hd[a-z]X<BR></B><BR>如果/boot有自己独立的分区,应该是;<BR><B><BR>kernel 
      /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X<BR></B></P>
      <P>在这里 root=/dev/hd[a-z]X 是Linux 
      的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat (hd[0-n],y)/etc/fstab 
      中得到Linux的/所在的分区或分区的标签;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; kernel 
      /boot/在这里按tab键;这样就列出/boot中的文件了;<BR>&nbsp;Possible files are: grub 
      initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369<BR>_FC4 
      config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK 
      memtest86+-1.55<BR>.1 xen-syms xen.gz<BR>grub&gt; kernel 
      /boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/<BR>&nbsp;&nbsp;&nbsp;[Linux-bzImage, setup=0x1e00, 
      size=0x18e473]</CODE></DIV>
      <P></P>
      <P><B>注解:</B> root=LABEL=/ 
      是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; kernel /boot/vmlinuz-2.6.11-1.1369_FC4 
      ro root=/dev/hda7</CODE></DIV>
      <P></P>
      <P>也可以把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 
      中指定/boot所在的分区;所以就在下面的语法;</P>
      <P>如果是/boot和Linux的根同处一个分区;<BR>
      <DIV class=codeblock><CODE>kernel (hd[0-n],y)/boot/vmlinuz ro 
      root=/dev/hd[a-z]X</CODE></DIV>
      <P></P>
      <P>比如:<BR>
      <DIV class=codeblock><CODE>grub&gt;kernel</CODE></DIV>
      <P></P>
      <P>如果是/boot和Linux所在的根不在一个分区;则是;<BR>
      <DIV class=codeblock><CODE>kernel (hd[0-n],y)/vmlinuz ro 
      root=/dev/hd[a-z]X</CODE></DIV>
      <P></P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; kernel 
      (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=/dev/hda7<BR>&nbsp;&nbsp;&nbsp;[Linux-bzImage, setup=0x1e00, 
      size=0x18e473]</CODE></DIV>
      <P></P>
      <P>或下面的输入,以cat 出/etc/fstab内容为准;</P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; kernel 
      (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro 
      root=LABEL=/<BR>&nbsp;&nbsp;&nbsp;[Linux-bzImage, setup=0x1e00, 
      size=0x18e473]</CODE></DIV>
      <P></P>
      <P><FONT id=5.26 size=2><B><BR>6)initrd 命令行来指定initrd文件;<BR></B></FONT></P>
      <P>
      <DIV class=codeblock><CODE>grub&gt; initrd /boot/initrd在这里tab 

⌨️ 快捷键说明

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