通过GRUB命令行来启动Linux操作系统

来源:互联网 发布:退役特种兵知乎 编辑:程序博客网 时间:2024/05/24 03:21

通过GRUB命令行来启动Linux操作系统;

GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。

因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?

1、为什么需要学习GRUB的命令行;

当我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比如在开机的时候,GRUB会出现grub>类似的命令提示符,这时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单 ,直接用命令行来启动系统,比如我现在就是,为了写GRUB的文档,就把menu.lst 删除了,直接用命令来启动系统;

2、用命令行来引导Linux操作系统的步骤;

通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。如果您不知道有哪些命令,可以输入help;

1)进入GRUB的命令行模式 grub>

如果开机时,GRUB出现的是grub>,说明你没有/etc/grub/menu.lst ,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现grub> 提示符;

grub>

2)获取帮助GRUB的 help

只要您在grub>提示符的后面输入help 就能得到GRUB所有的命令提示;

grub> help  blocklist   FILE                         boot  cat FILE                                 chainloader [--force] FILE  clear                                  color   NORMAL [HIGHLIGHT]  configfile FILE                        device DRIVE   DEVICE  displayapm                             displaymem  find   FILENAME                          geometry DRIVE [CYLINDER HEAD SECTOR [  halt   [--no-apm]                        help [--all] [PATTERN ...]  hide   PARTITION                         initrd FILE [ARG ...]  kernel   [--no-mem-option] [--type=TYPE] makeactive  map TO_DRIVE   FROM_DRIVE                md5crypt  module FILE [ARG ...]                    modulenounzip FILE [ARG ...]  pager [FLAG]                           partnew   PART TYPE START LEN  parttype PART TYPE                       quit  reboot                                 root [DEVICE   [HDBIAS]]  rootnoverify [DEVICE [HDBIAS]]         serial [--unit=UNIT]   [--port=PORT] [--  setkey [TO_KEY FROM_KEY]               setup [--prefix=DIR]   [--stage2=STAGE2_  terminal [--dumb] [--no-echo] [--no-ed terminfo   [--name=NAME --cursor-address  testvbe MODE                           unhide   PARTITION  uppermem KBYTES                        vbeprobe [MODE]

如果需要得到某个指令的帮助,就在 help 后面空一格,然后输入指令,比如;

grub>help kernel 

3)cat的用法;

cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;

grub> cat (     按tab 键会出来hd0或hd1之类的;  grub>   cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的;  grub> cat (hd0,6)  Possible   partitions are:   Partition num: 0,  Filesystem type unknown, partition type   0x7     Partition num: 4,  Filesystem type is fat, partition type 0xb       Partition num: 5,  Filesystem type is reiserfs, partition type 0x83       Partition num: 6,  Filesystem type is ext2fs, partition type 0x83       Partition num: 7,  Filesystem type unknown, partition type 0x83     Partition   num: 8,  Filesystem type is reiserfs, partition type 0x83     Partition num:   9,  Filesystem type unknown, partition type 0x82      grub> cat   (hd0,6)/etc/fstab 注:比如我想查看一下   (hd0,6)/etc/fstab的内容就这样输入;    LABEL=/                   /                       ext3    defaults        1 1  /dev/devpts               /dev/pts                devpts  gid=5,mode=620  0 0  /dev/shm                  /dev/shm                tmpfs   defaults        0 0  /dev/proc                 /proc                   proc    defaults        0 0  /dev/sys                  /sys                    sysfs   defaults        0 0  LABEL=SWAP-hda1           swap                    swap    defaults        0 0  /dev/hdc                  /media/cdrecorder       auto    pamconsole,exec,noauto,  managed 0   0

有的弟兄可能会说,我不知道Linux安装在了哪个分区。那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以后引导带来方便;

主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux的/处于同一个硬盘分区;比如上面的例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;

如果您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是类似下面的;

LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2

4) root (hd[0-n,y) 指令来指定/boot所在的分区;

其实这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定;我们前面已经说过 (hd[0-n],y) 硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;

比如我们确认/boot和 (hd0,6),所以就可以这样来输入root (hd0,6)

grub> root (hd0,6)

如果发现不对,可以重新来过;没有什么大不了的;

5) kernel 指令,用来指定Linux的内核,及/所在的分区;

kernel 这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;

如果我们已经通过root (hd[0-n],y) 指定了/boot所在的分区,语法有两个:

如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;

kernel /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X

如果/boot有自己独立的分区,应该是;

kernel /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X

在这里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat (hd[0-n],y)/etc/fstab 中得到Linux的/所在的分区或分区的标签;

grub> kernel /boot/在这里按tab键;这样就列出/boot中的文件了; 
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz

grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/  
   [Linux-bzImage, setup=0x1e00, size=0x18e473] 

注解: root=LABEL=/ 是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;

grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7

也可以把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 中指定/boot所在的分区;所以就在下面的语法;

如果是/boot和Linux的根同处一个分区;

kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X

比如:

grub>kernel

如果是/boot和Linux所在的根不在一个分区;则是;

kernel (hd[0-n],y)/vmlinuz  ro root=/dev/hd[a-z]X

grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 
   [Linux-bzImage, setup=0x1e00, size=0x18e473]

或下面的输入,以cat 出/etc/fstab内容为准;

grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
   [Linux-bzImage, setup=0x1e00, size=0x18e473]

6)initrd 命令行来指定initrd文件;

grub> initrd /boot/initrd在这里tab 来补齐;
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

如果/boot是独立的一个分区,应该是如下样子的语法;比如下面的;

grub> initrd /initrd在这里tab 来补齐;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

7)boot 引导系统;

grub>boot

前面的几个步骤都弄好 。就进入引导;尝试一下就知道了。

8)引导Linux系统实例全程回放;

实例:/boot和Linux的/处于同一个硬盘分区;

grub> cat (hd0,6)/etc/fstab  # This file is   edited by fstab-sync - see 'man fstab-sync' for   details  LABEL=/                 /                       ext3      defaults        1 1  /dev/devpts             /dev/pts                devpts    gid=5,mode=620  0 0  /dev/shm                /dev/shm                tmpfs     defaults        0 0  /dev/proc               /proc                   proc      defaults        0 0  /dev/sys                /sys                    sysfs     defaults        0 0  LABEL=SWAP-hda1         swap                    swap      defaults        0 0  /dev/hdc                /media/cdrecorder       auto      pamconsole,exec,noauto,managed 0 0    grub> root (hd0,6)  Filesystem   type is ext2fs, partition type 0x83    grub> kernel   /boot/在这里按tab补齐,全列出/boot所有的文件;  Possible files are: grub   initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4   config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4    memtest86+-1.55.1   xen-syms xen.gz    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro   root=/dev/hda7  注:输入   [Linux-bzImage, setup=0x1e00,   size=0x18e473]      grub> initrd /boot/在这里按tab补齐  Possible files are:   grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4   config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4    memtest86+-1.55.1   xen-syms xen.gz    grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img   注;输入intrd文件名的全名;   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]      grub>   boot

我们指定Linux的根时,可以用cat出来的fstab的内容中Linux的/分区文件系统标签来替代;也就是kernel 那行中 root=/dev/hd[a-z]X;

grub> cat (hd0,6)/etc/fstab  # This file is   edited by fstab-sync - see 'man fstab-sync' for   details  LABEL=/                 /                       ext3      defaults        1 1  /dev/devpts             /dev/pts                devpts    gid=5,mode=620  0 0  /dev/shm                /dev/shm                tmpfs     defaults        0 0  /dev/proc               /proc                   proc      defaults        0 0  /dev/sys                /sys                    sysfs     defaults        0 0  LABEL=SWAP-hda1         swap                    swap      defaults        0 0    /dev/hdc                /media/cdrecorder         auto    pamconsole,exec,noauto,managed 0 0    grub> root   (hd0,6)  Filesystem type is ext2fs, partition type 0x83    grub> kernel   /boot/在这里按tab补齐,全列出/boot所有的文件;  Possible files are: grub   initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4   config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4    memtest86+-1.55.1   xen-syms xen.gz    grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro   root=LABEL=/     [Linux-bzImage, setup=0x1e00,   size=0x18e473]      grub> initrd /boot/在这里按tab补齐  Possible files are:   grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4      config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK  memtest86+-1.55.1   xen-syms xen.gz    grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img   注;输入intrd文件名的全名;   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]      grub>   boot

如果是/boot和Linux的根分区不在同一个分区,要把kernel和initrd 指令中的/boot去掉,也就是/vmlinuzMMMMMM 或 /initrdNNNN

也可以不用root (hd[0-n]来指定/boot所在分区,要在kernel 和initrd 中指定;比如Linux的/根所位于的分区和/boot所位于的分区都是(hd0,6),并且我们cat出来的/etc/fstab是Linux的/根分区的文件系统的标签为LABEL=/,引导操作系统的例子如下;

grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
grub>boot

grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 
grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img

grub>boot

如果/boot位于 /dev/hda6,也就是(hd0,5),Linux的根/位于分区/dev/hda7,并且我们cat 出来的/etc/fstab 中/分区的标签为 LABEL=/。下面的两种方法都可以引导;

grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot

grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 混合喂养不吃奶粉怎么办 混合喂养宝宝便秘怎么办 混合喂养不吃奶瓶怎么办 混合喂养厌奶粉怎么办 气血虚奶水少怎么办 产后奶水不足怎么办啊 婴儿吐奶瓣和水怎么办 一岁半宝宝频繁喝夜奶怎么办 婴儿腹泻不吃奶怎么办 八个月宝宝脱水怎么办 宝宝呕吐脱水了怎么办 宝宝腹泻没精神怎么办 小孩拉稀没精神怎么办 宝宝拉稀脱水了怎么办 宝宝发烧还拉肚子怎么办 宝宝发烧后腹泻怎么办 吃海鲜拉肚子了怎么办 孕妇吃海鲜腹泻怎么办 稀饭煮焦了怎么办 8月宝宝拉肚子怎么办 满月宝宝38度怎么办 未满月婴儿拉稀怎么办 未满月宝宝拉稀怎么办 满月的宝宝拉稀怎么办 十个月小孩拉肚子怎么办 十个月宝宝脱水怎么办 宝宝拉肚子老不好怎么办 孩子拉稀老不好怎么办 宝宝拉肚子发呕怎么办 刚出生婴儿拉肚子怎么办 宝宝一岁拉肚子怎么办 刚出生宝宝拉肚子怎么办 宝宝出生五天拉肚子怎么办 生完宝宝拉肚子怎么办? 宝宝6天拉肚子怎么办 十天婴儿拉肚子怎么办 十天小孩拉肚子怎么办 肠炎宝宝一直吐怎么办 初生婴儿老打嗝怎么办 小孩一直发低烧怎么办 婴儿喷奶严重怎么办