欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 14_01 _Linux系统启动流程详解之一 运行级别及grub 有大用

日志系统

    linux系统启动流程

    PC: OS (Linux)

POST (POWER ON SELF TEST)-->BIOS(Boot Sequence 引导序列)(根据次序找各个盘上的MBR)-->MBR(现在已形成虚设了,大于2T时,MBR能力有限,现在大于2T时,通常使用GBT格式)(bootloader,446字节)(根据MBR当中的分区表,查找活动分区,找到操作系统所在的那个分区,并加载那个分区上的操作系统内核)-->Kernel(有可能两个操作系统,需要用户选择)(探测硬件,cpu,内存,及其它硬件及驱动(就是装载驱动))(初始化完成之后,就要挂载根文件系统了 root=什么,告诉kernel根在哪个设备上)-->init()(/sbin/init)(所有用户空间的进程都由init来管理(所有用户空间的初始化都由init来完成),除非和硬件打交道,才由用户空间切换到内核空间)

POST->BIOS(Boot Sequence)-->MBR(bootloader,446)->Kernel->initrd(一般需要这个临时根)->(Rootfs) /sbin/init(一般情况下,是需要使用临时根,才能初始化的,记住一般情况下)

            红帽中    MBR(grub stage1)-->grub stage2


Kernel initrd 这两个文件一定是位于同一个分区上的,同一块磁盘上的,这两个是由bootloader 一块装载的,

initrd装载进内存后,被kernel所使用



当找到第一块盘上有MBR(但是MBR损坏了,它也不会找第二块盘上的MBR)

bootloader,446字节,太小,可能是压缩过的,可能需要解压缩,,,,bootloader获得控制权后,BIOS就退出了

内核一般情况下也是压缩存放的,把内核装载进内存,在内存中完成解压缩,而后将控制权转交给内核,此时bootloader又退出了


硬件驱动那么多,不可能全部载入内存的,因为全部载入内存的话,消耗太多内存


内核设计风格:

        单内核:把硬盘驱动,内存管理,进程管理,做在一个进程里面,任何一个子系统坏了,殃及池鱼,因为大家是一体的

                它的工作模式简单  现在优化了,它有微内核的优势 linux现在是属于单内核的(对线程支持不太好,LWP:light weight Process 轻量级进程) (几千万行,解压后几百M)

                (为支持更多的平台,内置20种架构的支持,ARM(安卓),(cpu架构ARM,省电,性能也不错),x_86,power pc 平台(苹果机),mips (嵌入式架构)) (真正的 我们中需要一种)(几块不同的硬盘就只需要几种)(因此源程序可能很大,但是做出来的内核只有十几M,(压缩,可能只有一两M的大小))

         RedHat,(SUSE, Debian)等    模块化设计

                核心很少,上面布满了孔洞,需要是加载,动态加载,(模块编译好了,用到这个模块,只要把这个模块放到外围的位置,让核心去自动装载这个模块)

                核心,外围内核模块(ko)(kernel object) 内核专用模块,不能被进程使用的

                初始化的时候,只是初始化内核 kernel 核心本身

                内核模块: 一般在 /lib/modules/"内核版本号命名的目录"/        (模块可能有依赖关系)(内核有一个依赖关系文件,去自动识别这些依赖关系的)

                

            [root@localhost proc]# cat version

            Linux version 2.6.18-398.el5 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Tue Aug 12 06:26:17 EDT 2014

                wmlinuz-2.6.32

               /lib/modules/2.6.32/            (能够做成模块的不仅是驱动程序,还有许额外的功能,比如文件系统 加密功能 进程管理(一般不会做成模块,有些进程管理的扩展功能可能都会做成模块))

                

        


        微内核:内核很小,硬盘驱动,内存管理,进程管理做成子系统,需要用到时内核负责调度,装载这个子系统,某个子系统坏了,不会影响其它 协调是很复杂的  windows,Solaris (支持真正意义上的线程)



so 共享对象


chroot: chroot /PATH/TO/TEMPROOT  [COMMAND...]   (虚根,假根,临时根) (默认是bash,可以指定为ksh)

                chroot /test/virroot /bin/bash  (或者 /bin/ksh)           


ldd: ldd /PATH/TO/BINARY_FILE:显示二进制文件所依赖的共享库 (ldd - print shared library dependencies)

       


windows很多进程在后台运行起来了,叫后台进程(服务进程)

windows 安全模式,启动的进程数(服务数)不一样,有些驱动程序是不会装载的,只装载最基本的硬件驱动程序,

安全模式是为了修复用的,比如驱动不兼容,在安全模式下卸载这个驱动,它是一种维护模式


windows带网络连接的安全模式

windows VGA模式 更新了显卡驱动后,(设置了分辨率太高,显卡支持不了)一启动,黑屏,它是一种维护模式

               VGA下,不装载显卡驱动,只用最基本的驱动来驱动显卡,此时可以调回来分辨率,它是一种维护模式


linux 是多用户多任务的

linux中不叫维护模式,叫运行级别

启动的服务不同

    运行级别:    0-6     7个级别       在不同的级别下,启动的服务不一样而已(不一定完全精确)

        0: halt 关机

        1:single user mode 单用户模式,相当于windows的安全模式,维护模式 直接以管理员身份切入(密码都不需要)

                    管理员密码忘了,通过这个模式可以进去改改

        2:multi user mode 多用户模式,而且有网络功能,不启用NFS (no NFS)(network file system)

                    挂载了网络文件系统,它不会给你自动挂载的

                    当nfs出故障的时候,开机挂载nft系统时,nfs文件系统死活挂不上(系统down在那里)

                    出了这个问题,可以进入2级别                    

        3:multi user mode 正常的多用户模式,text mode(文本模式) (只有命令行,不启动图形界面)

                    我们平时的时候,就是3级别  默认级别

        4:reserved 保留模式,保留级别,尚未使用的模式,没有定义

        5:multi user mode 多用户模式,graphic mode (图形终端模式)

        6: reboot 重启


服务都是用户空间的程序,由用户空间的 /sbin/init 这个进程来控制

到底执行哪些服务,运行哪些级别,取决于/etc/inittab 这个配置文件

            


详解启动过程

 bootloader  (MBR)   (不同的操作系统,bootloader不一样,它通常是由操作系统的安装程序提供的)

             MBR是不属于任何一个操作系统的,它属于全硬盘级别的 (硬盘上如果装上多个操作系统,C盘上装了windows,其它盘上装了linux. 如果有个MBR两种都可以引导,可以让用户选择,就好了,,,,微软只引导自己的,不引导别人的,所以先装linux,后装windows,它就会把linux覆盖掉了,linux就无法启动了,更恶毒的是,如果装了win8,微软就会锁定MBR,装了win8后,MBR里面的程序是替换不了的,装了win8后,想并存linux是不可能实现的了,微软美其名曰,是为了避免病毒入侵MBR)(如果想并存,就是把MBR清掉,这样子的话,windows就无法引导了)(windows既不给别人引导它,也不引导别人)    

            linux的bootloader是非常开放的     


linux的bootloader常用的方法有三种

        LILO: LInux LOader (早期引导linux的bootloader)(不能引导1024柱面以后分区上的内核,即不支持大硬盘吧,超过8G的分区里装内核的话,它引导不了)(但是在嵌入式中好用,因为嵌入式小,是个卡)   

        GRUB: GRand Unified Bootloader       GRand  宏大的,宏伟的  Unified 统一的

                    (redhat5 redhat6是不一样的) GRUB是一个程序,它是需要装在MBR中的bootloader位置来引导操作系统的

                            MBR只有446个字节,太小了,没法展现丰富的特性

                            Stage1: 装在了MBR,主要目的,是为了引导第二阶段,不是引导操作系统的        Stage1 阶段一

                            Stage1_5: (因为Stage1 不识别Stage2的文件系统,所以要用到Stage1_5阶段 )用来识别常用的不同类型的文件系统            Stage1 1.5阶段

                            Stage2: /boot/grub (位于跟内核所在的同一个分区的目录里面) 真正引导操作系统的                         



/boot/grub/grub.conf   顶格写的是grub的全局属性定义

            title用来指定一个操作系统或一个内核  用来定义当前系统的不同版本的内核或当前硬盘上(当前系统上,当前主机上)不同的操作系统的

            (同一个操作系统可以提供多个不同版本的内核) 

default=0        #(设定默认启动的的title编号 默认启动哪个内核的,从上往下,第0个,第1个)

timeout=5      #等待用户选择的超时时长,单位是秒

splashimage=(hd0,0)/grub/splash.xpm.gz    #指定grub的背景图片

hiddenmenu   #隐藏菜单 刚启动的时间,不会让你选择,只有敲任意键(应该是回车键吧)的时候,菜单才显示出来进行选择上面的操作系统,把这项去了,就不隐藏了 (hiddenmenu:表示隐藏选择kernel或操作系统菜单,只有出现等待界面后按下enter键才会出现。如果没有这个字段,则每次系统启动都会出现这个选择菜单。)

title Red Hat Enterprise Linux Server (2.6.18-398.el5)        #引导的内核标题或操作系统名称(字符串,可自由修改)

        root (hd0,0)    #内核文件所在的设备在哪里(对于grub而言,所有硬盘不论什么接口的硬盘,都是hd;;对于光盘就是cdrom;;)(不能改)(格式 hd#,#  第一个#表示第几个磁盘设备,第二个#表示对应磁盘上面的分区)

        kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00  #kernel文件(内核文件)路径及传递给内核的参数 (不能改)

        initrd /initrd-2.6.18-398.el5.img  #临时根小根(小文件系统)ramdisk(ramfs)文件路径(它是安装操作系统后,最后一步生成的,既然是生成的,是动态选择的,它不会大,3,4M应该差不多了,当然它是压缩存放的)(不能改)



应该是在/boot目录下,为什么显示根/目录下

因为 grup的时候,根文件系统尚未加载,grub不能直接访问 /boot分区上的文件

把/boot分区当成根了

它是grub去访问的文件路径,而不是通过文件系统去访问的文件路径

/initrd-2.6.18-398.el5.img 版本号一定要跟vmlinuz-2.6.18-398.el5版本号保持一致,只不过后面加了.img,说明这是一个ramdisk文件(它是一个镜像文件,它可以展开之后,当作一个磁盘来用的,就像dd命令创建一个虚拟的swap设备一样,这种都称之为镜像设备,或者是本地回环设备)


image.png



内核功能

        文件系统

        进程管理

        内存管理

        网络管理

        安全功能

        驱动程序


image.png


/ rootfs 根文件系统

image.png















[root@localhost proc]# which init

/sbin/init

[root@localhost proc]#



[root@localhost proc]# cd /lib/modules/

[root@localhost modules]# ls

2.6.18-398.el5

[root@localhost modules]#


[root@localhost modules]# cd 2.6.18-398.el5/

[root@localhost 2.6.18-398.el5]# ls            (map表示映射表,符号链接表)

(dep依赖关系对应的文件,依赖关系会自动生成,都位于这个位置)

build   modules.alias        modules.inputmap   modules.seriomap  updates

extra   modules.ccwmap       modules.isapnpmap  modules.symbols   weak-updates

kernel  modules.dep          modules.ofmap      modules.usbmap

misc    modules.ieee1394map  modules.pcimap     source

[root@localhost 2.6.18-398.el5]#


[root@localhost 2.6.18-398.el5]# cd  kernel

[root@localhost kernel]# ls

arch  crypto  drivers  fs  lib  net  sound

arch 跟平台相关,驱动cpu的

crypto  加密解密相关的模块

drivers 驱动模块

fs 文件系统模块

kernel 内核自身的额外的其它功能

lib 库模块

mm (memory management)内存管理

net 网络相关的模块 不是网络驱动,是TCP/IP协议站

sound 声卡


[root@localhost kernel]# pwd

/lib/modules/2.6.18-398.el5/kernel

[root@localhost kernel]#


[root@localhost kernel]# ls drivers/

acpi       cdrom    dma_v3    hwmon       isdn     misc     pci     uio

ata        char     edac      i2c         leds     mmc      pcmcia  usb

atm        cpufreq  firewire  ide         md       mtd      rtc     video

block      dca      firmware  infiniband  media    net      scsi    virtio

bluetooth  dma      hv        input       message  parport  serial  xenpv_hvm

这里的net才是网卡驱动

[root@localhost kernel]#


[root@localhost kernel]# ls drivers/net

3c59x.ko     cxgb4         mdio.ko         pppoe.ko        sungem.ko

8139cp.ko    dl2k.ko       mii.ko          pppox.ko        sungem_phy.ko

8139too.ko   dummy.ko      mlx4            ppp_synctty.ko  sunhme.ko

8390.ko      e1000         myri10ge        qla3xxx.ko      tg3.ko

acenic.ko    e1000e        natsemi.ko      qlcnic          tokenring

amd8111e.ko  e100.ko       ne2k-pci.ko     qlge            tulip

atl1e        enic          netconsole.ko   r8169.ko        tun.ko

b44.ko       epic100.ko    netxen          s2io.ko         typhoon.ko

benet        fealnx.ko     niu.ko          sfc             via-rhine.ko

bna          forcedeth.ko  ns83820.ko      sis190.ko       via-velocity.ko

bnx2.ko      hyperv        pcmcia          sis900.ko       virtio_net.ko

bnx2x        ifb.ko        pcnet32.ko      skge.ko         vxge

bonding      igb           phy             sky2.ko         wireless

cassini.ko   igbvf         ppp_async.ko    slhc.ko

chelsio      ixgb          ppp_deflate.ko  slip.ko

cnic.ko      ixgbe         ppp_generic.ko  starfire.ko

cxgb3        ixgbevf       ppp_mppe.ko     sundance.ko

这些ko文件就是对应的网卡设备的驱动程序

[root@localhost kernel]#



通过这种机制,将大多数硬件的驱动程序做成模块,需要的时候,才装载,

这样就保证了内核自身的体积会很小,但是目录并不小


[root@localhost kernel]# du -sh /lib/modules/2.6.18-398.el5/      (各种模块大小111M)

111M    /lib/modules/2.6.18-398.el5/

[root@localhost kernel]#

[root@localhost kernel]# ls /boot/vmlinuz-2.6.18-398.el5 -lh      (内核大小2.1M)

-rw-r--r-- 1 root root 2.1M 2014-08-12 /boot/vmlinuz-2.6.18-398.el5

[root@localhost kernel]#


image.png

image.png

临时的根 小根

image.png

根切换


chroot (change root)根切换命令



[root@localhost ~]# man chroot                (interactive 交互式的)

image.png


[root@localhost ~]# mkdir -p /test/virroot


[root@localhost ~]# chroot /test/virroot/       

 (期望以/test/virroot/ 为根 这个根下啥都没有,所以无法运行 下面没有bin bin/bash 等目录) (里面有个bash程序才能切换过去)


chroot: cannot run command `/bin/bash': No such file or directory

[root@localhost ~]#

[root@localhost ~]# mkdir /test/virroot/bin

[root@localhost ~]# cp /bin/bash /test/virroot/bin/

[root@localhost ~]# chroot /test/virroot/            (还是报错)(因为bash依赖的库不存在)

(切换过去之后 小根就自我独立运行)

chroot: cannot run command `/bin/bash': No such file or directory

[root@localhost ~]#



[root@localhost ~]# ls /test/virroot/bin/

bash

[root@localhost ~]#

[root@localhost ~]# man ldd        (ldd 查看运行程序的库文件依赖)

image.png


[root@localhost ~]# ldd /bin/bash

        linux-vdso.so.1 =>  (0x00007fffd8595000)            (库文件访问入口,不用管它)

        libtermcap.so.2 => /lib64/libtermcap.so.2 (0x000000367e200000)

        libdl.so.2 => /lib64/libdl.so.2 (0x00000034dee00000)

        libc.so.6 => /lib64/libc.so.6 (0x00000034dea00000)

        /lib64/ld-linux-x86-64.so.2 (0x00000034de600000)

[root@localhost ~]#

[root@localhost ~]# cp /lib64/libtermcap.so.2 /test/virroot/lib/

[root@localhost ~]# cp /lib64/libdl.so.2 /test/virroot/lib/

[root@localhost ~]# cp /lib64/libc.so.6 /test/virroot/lib/

[root@localhost ~]# cp /lib64/ld-linux-x86-64.so.2 /test/virroot/lib/

[root@localhost ~]#



[root@localhost ~]# tree /test/virroot/

/test/virroot/

|-- bin

|   `-- bash

`-- lib

    |-- ld-linux-x86-64.so.2

    |-- libc.so.6

    |-- libdl.so.2

    `-- libtermcap.so.2


2 directories, 5 files

[root@localhost ~]#

[root@localhost ~]# chroot /test/virroot/  (我还是没有切换过来)

chroot: cannot run command `/bin/bash': No such file or directory

[root@localhost ~]# mv /test/virroot/lib/ /test/virroot/lib64  (我的是64位版本的 把lib改成lib64目录就可以切换过来了)

[root@localhost ~]#

(但是马哥已经切换过来了) (我的是64位版本的 把lib改成lib64目录就可以切换过来了)

image.png

# ls 外部命令不可用 ,cd 是内部命令可用

image.png  

[root@localhost ~]# chroot /test/virroot/

bash-3.2#

bash-3.2# ls

bash: ls: command not found

bash-3.2# cd /bin

bash-3.2# cd ..

bash-3.2# cd /lib64/

bash-3.2# cd /root

bash: cd: /root: No such file or directory

bash-3.2#

bash-3.2# exit

exit

[root@localhost ~]#

监狱 jail (上面的chroot 后的根属于指定框框的,是 jail)



而我们的临时根小根属于完完全全的根切换

image.png

image.png


[root@localhost ~]# ls -la /sys            (sysfs 文件系统总是被挂载在 /sys 挂载点上)

总计 8

drwxr-xr-x  11 root root    0 2018-10-29 .

drwxr-xr-x  27 root root 4096 10-29 08:15 ..

drwxr-xr-x  26 root root    0 10-29 08:15 block

drwxr-xr-x  16 root root    0 10-29 08:15 bus

drwxr-xr-x  42 root root    0 10-29 08:15 class

drwxr-xr-x  17 root root    0 10-29 08:15 devices

drwxr-xr-x   3 root root    0 2018-10-29 firmware

drwxr-xr-x   2 root root    0 2018-10-29 fs

drwxr-xr-x   4 root root    0 10-29 08:15 kernel

drwxr-xr-x 152 root root    0 10-29 08:15 module

drwxr-xr-x   2 root root    0 10-29 08:15 power



它这个切换不是chroot

(redhat5上,借助于另外的shell来实现 nash)  switch_root

(redhat6上比较简单,风格统一)

image.png


临时根 就是个文件,由内核装载进内存当中,在内存中展开,把内存当作磁盘来用

(把内存当中的一段空间模拟成磁盘来用)

通常称为 ramdisk 内存磁盘

redhat5 ramdisk -->initrd(临时根小根 initial ramdisk) (random access memory,RAM) (随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。)  (access 入口,出口;接近,进入;增长;爆发;访问)

redhat6 ramfs-->initramfs


[root@localhost ~]# man chroot

image.png





[root@localhost ~]# vim /etc/inittab

默认级别是几,

id:3:initdefault

image.png



[root@localhost ~]# ls /boot/grub/

device.map     grub.conf         minix_stage1_5     stage2

e2fs_stage1_5  iso9660_stage1_5  reiserfs_stage1_5  ufs2_stage1_5

fat_stage1_5   jfs_stage1_5      splash.xpm.gz      vstafs_stage1_5

ffs_stage1_5   menu.lst          stage1             xfs_stage1_5


[root@localhost ~]# ls -la /boot/grub/

image.png


stage2 这个阶段可以加载图片,显示图像的

linux一启动就有红色的背景图

那个图标就是 splash.xpm.gz 文件


stage2 还可以借助于grub.conf来完成工作

grub.conf 定义了 可以加载哪个图片,能够显示哪些操作系统让我们去选择,能够引导

哪些类型的操作系统,能够引导哪些内核等


[root@localhost ~]# rpm -q grub

grub-0.97-13.11.el5_10.1

[root@localhost ~]#


下面的命令是在红帽6中

[root@localhost ~]# rpm -q grub

grub-0.97-99.el6.x86_64

[root@localhost ~]#


[root@localhost ~]# cat /etc/grub.conf        (它是一个软链接)  (/boot/grub/grub.conf)    (splash 泼洒 溅起 溅落)

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#          initrd /initrd-version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux Server (2.6.18-398.el5)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00

        initrd /initrd-2.6.18-398.el5.img

[root@localhost ~]# ls -la /etc/grub.conf

lrwxrwxrwx 1 root root 22 09-05 14:18 /etc/grub.conf -> ../boot/grub/grub.conf

[root@localhost ~]#


[root@localhost ~]# ls /proc

image.png



这个cmdline是传递给内核(文件)的参数(启动内核的命令是什么) 见上面的grub.conf 就可以看到  

[root@localhost ~]# cat /proc/cmdline

ro root=/dev/VolGroup00/LogVol00

[root@localhost ~]#



[root@localhost ~]# cd /boot

[root@localhost boot]# ls

config-2.6.18-398.el5      lost+found                 vmlinuz-2.6.18-398.el5

grub                       symvers-2.6.18-398.el5.gz

initrd-2.6.18-398.el5.img  System.map-2.6.18-398.el5

[root@localhost boot]#



[root@localhost boot]# mount

image.png

boot 其实是一个独立的分区

image.png


image.png


image.png

image.png

临时根其实是可以挂载在任意盘,未必一定要挂载在 hd0,0 ,也可以挂载在 hd0,1,即真正的根分区所在的盘,也可以挂载在/usr,/test所在的盘


linux 有个图形工具 叫 gimp 类似于 photoshop


[root@localhost yum.repos.d]# yum install gimp


[root@localhost yum.repos.d]# gimp &        (我这边报错,应该是图形功能没装吧)

[1] 11434

[root@localhost yum.repos.d]# GIMP 无法初始化图形用户界面。

请确定您的显示环境已经正确安装。


Xshell 可以在windows当中打开linux图形界面 (我装上了xshell老是gimp,启动startx出问题) (Xshell 这个工具 在本站有看到如何下载)

马哥效果截图

image.png

对于linux命令行而言是后台,但是图形界面是在前台运行的

下面的做图可以不看

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

上面的调大小 好像不需要

image.png

image.png

image.png


image.png

image.png

image.png

image.png

上面的图就不用管了吧 ,又不是为做图的

image.png

image.png

image.png

image.png

image.png


image.png

image.png

不能用颜色变化太多的图,只能用简单的黑白图

image.pngimage.png

image.png


文件扩展名要是 xpm

image.png







grub.conf里面的配置都可以改,改完之后,重启它就生效了

[root@localhost boot]# vim /etc/grub.conf         (改之前的内容)

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#          initrd /initrd-version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux Server (2.6.18-398.el5)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00

        initrd /initrd-2.6.18-398.el5.img

~

~

~

~

~

     (改之后的内容)

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

#          initrd /initrd-version.img

#boot=/dev/sda

default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

#hiddenmenu

title My Linux

        root (hd0,0)

        kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00

        initrd /initrd-2.6.18-398.el5.img

image.png


进行重启 (尽量命令行执行,不要按重启按钮进行重启,否则有许多东西没保存,会丢失)(非要按重启按钮重启的话 先执行 # sync 命令)

# shutdown -r now

image.png








普通分类: