设为首页收藏本站

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 148|回复: 0

[心得] 追根究底,学习linux [复制链接]

Rank: 32Rank: 32Rank: 32Rank: 32Rank: 32Rank: 32Rank: 32Rank: 32

该用户从未签到

发表于 2012-1-20 18:41:40 |显示全部楼层
更多
     经过一番思想斗争,终于,决定在这新年之际,利用闲暇时间,刨根问底,学习linux的基本原理。在此,将我的心得与大家分享。
     系统启动第一步:grub:
     GRUB全称为Grand Unified Boot Loader,是Linux操作系统主流的启动引导管理器,主要作用是启动和装载Linux操作系统。系统启动过程中一旦完成了BIOS自检,GRUB会被立刻装载。
        在GRUB里面包含了可以载入操作系统的代码以及将操作系统引导权传递给其他启动引导管理器的代码。GRUB可以允许用户选择使用不同的kernel启动系统,或者在启动系统的过程中设置不同的启动参数。
        通常BIOS会以下面两种方法之一来调用启动引导管理器:
        1)将控制权移交给于驱动器主引导记录的initial program loader(IPL);
        2)将控制权移交给其他启动引导管理器,再由他们将控制权移交给安装在分区引导扇区的IPL
通常情况下启动引导管理器GRUB由两部分组成(stage1和stage2):
             1)stage1比较小,通常可以驻留在MBR或者各个磁盘分区的启动扇区中,主要作用是装载stage2。
             2)stage2比较大,从磁盘的启动引导分区读取;
             3)至于在stage1和stage2之间存在一个stage1.5,是因为starge1.5具有识别文件系统的能力。
      在Linux系统中对GRUB的配置有两种方法:
           1)主要引导管理器:会将启动引导管理器的stage1安装在MBR上,这时启动引导管理器必须被配置为可以传递控制权到其他操作系统;
           2)次要引导管理器:会将启动引导管理器的stage1安装在一些分区的引导扇区上,而其他的启动引导管理器会被安装在MBR上,由他们来向Linux启动引导管理器传递控制权。
     GRUB在启动过程中可以提供命令行交互界面,可以从ext系列,reiserfs,fat等多种文件系统引导系统,并且可以提供密码加密功能,其内容在 /boot分区下,系统启动过程中由配置文件/boot/grub/grub.conf来定义启动方式,对该配置文件的更改会立即生效。
     在配置文件/boot/grub/grub.conf文件中定义的内容包括:grub所在的分区、引导系统所使用的kernel文件位置、硬件初始化使用的initrd文件位置、以及启动参数。
例如:
grub>root (hd0,0) --root指令为grub指定了一个根分区
grub>kernel /xen.gz-2.6.18-37.el5 --kernel指令将操作系统内核载入内存
grub>module /vmlinuz-2.6.18-37.el5xen ro root=/dev/sda2 --module指令加载指定的模块
grub>module /initrd-2.6.18-37.el5xen.img --指定initrd文件
grub>boot --boot 指令调用相应的启动函数启动OS内核
可见其指定的内容大多数在/boot分区,如果切换到/boot分区之后会看到这些内容:
/boot/vmlinuz-* linux kernel的一个copy;
/boot/initrd*.img 初始化的ram disk文件
/boot/grub/device.map linux设备名和grub设备名的映射文件
/boot/grub/grub.conf 主配置文件
通常GRUB出错几率不是很大,但一旦出现问题恐怕采用最多的方式是重装grub到MBR中。

在这种时候需要注意的问题有:
首先,设备映射关系:
GRUB里面对设备名称的定义和系统中对设备名称的定义方法不一样:
(fd0) /dev/fd0
(hd0) /dev/sda /dev/hda
(hd1) /dev/sdb /dev/hdb
如够进入系统或者救援模式,可执行命令/sbin/grub-install /dev/sda(或者hda)进行GRUB重装:
# /sbin/grub-install device
处于某种原因MBR中信息出错可以使用上面的命令将其重装到磁盘主引导记录中;但是如果在不能进入系统的情况下就需要通过grub的命令行界面进行手动设置,这个时候就要注意上面所提到的映射关系。
同时,在grub命令行中对grub进行手动设置的时候需要注意所使用的命令:
# root (hd0,0) --指定启动分区
# setup(hd0) --表示将grub安装在主引导记录上
# quit --退出grub shell


然后,,悲剧的事情发生了。。。。


在我淫荡的好奇心的驱使下,我又看了一本书。。。。。。。

《汇编语言》  王爽。。。。。。。

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

关于我们|Archiver|手机版|Linux新世界 ( 蜀ICP备10201348号-3 )  

GMT+8, 2012-5-30 13:30 , Processed in 0.340336 second(s), 23 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部