什么是GRUB
GNU GRUB 是一个多重 *** 作 系统 启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应用;
系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到 *** 作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;
Linux 中GRUB的配置文件
grub的配置文件位于/boot/grub/grub.conf其内容如下。
default=0 //默认启动的内核或者说默认启动的 *** 作系统,0表示的是第一个内核或者 *** 作系统,依次往后排(title所指定的那一项,第一个title是0,第二个是1,依次)
timeout=5 //默认的超时时间,这里定义的是5秒,如果5秒没有选择,默认启动第一个内核或者说是第一个 *** 作系统
splashimage=(hd0,0)/grub/splash.xpm.gz //指定grub的背景图片,因为grub是系统开机后,运行系统所必须运行的第一个程序,所以,系统所自带的文件系统还没有被挂载,好在grub可以直接访问磁盘文件,grub所识别的硬盘跟linux系统的不太一样,grub认为,所有的磁盘都是hd的,而系统则不是。所以这里是(hd0,0),第一个0表示的是第一块硬盘,第二个0表示的是第一个分区。如果要引用磁盘设备,要用括号括起来,所以这里有一个括号。
hiddenmenu //隐藏grub菜单,如果有这一项,我们将看不到grub的菜单,只能看到grub的背景图片,然后上面出现了一个 please any key to enter the menu 下面是 Booting <default=0指定的,默认是第一个title的内容>in <timeout=N 超时时间设置>... 这样子。具体的看下面的图
![]( http://upload-images.jianshu.io/upload_images/4958474-d753926ca3df5492.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
然后可以通过按任意键,进入grub的菜单。如果有多个内核的话,我们可以选择启动哪一个内核。下图是grub的菜单
![]( http://upload-images.jianshu.io/upload_images/4958474-3b21dfedd7290e30.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
下面的英文内容,相信大家也看得懂。我就不多说了。通过编辑这里的grub菜单,我们可以直接进入单用户模式,然后修改密码。忘记密码的时候,可以试下这个方法。
title Red Hat Enterprise Linux Server (2.6.18-164.el5) //这就是一个标题,就是Grub菜单上所显示的内容,title关键字后面的内核,可以随便写,为了方便识别,建议还是写一些可以从字面意义看出是什么 *** 作系统或者内核的文字描述。
root (hd0,0) //把hd0,0设置为根目录,方便访问.设置文件访问的起始点,这里设置的根,是grub的根。
kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet //指定内核文件,在内核后面跟的root,指的是 *** 作系统的根目录在哪儿. rhgb是redhat的一个小工具,显示各种输出的信息,包括硬件的初始化,quit表示是静默模式,不输出信息.启动系统的时候会卡一下,然后出现redhat就是因为没有显示rhgb小程序的输出信息.
initrd /initrd-2.6.18-164.el5.img //可以认为这是一个驱动程序,系统刚开机的时候,Grub第一个启动,要挂载文件系统,就要从文件系统里面读取驱动,如果驱动在内核里面还好,如果不在内核里面了,那不就……所以,这个可以认为是一个驱动。其实,他是一个微小的linux系统,这个系统里面,只包含了驱动程序,没有其它文件。可以先把它重命令为.gz的,然后解压,解压后再用cpio解压,就可以看到其内容了。目录结构跟你的linux系统是一样的,只不过没有文件,只有驱动程序而已。
刚才说过,可以直接通过这里改密码,这样是很不安全的。也就是说,如果别人能接触到我们的物理服务器,他就可以直接更改我们系统的密码,所以,我们可以给grub 加密 码,加密码的方法就是直接在grub.conf中指定,可以用关键字password 后面跟密码来实现,但是这样的密码是明文的,也不安全,所以我们可以用password --md5 通过grub的md5加密工具来加密,然后写到password --md5的后面。grub的md5加密工具是grub-md5-crypt ,直接使用这个命令,输出密码,然后会生成一段MD5加密后的值,写到关键字后面就可以实现md5加密grub了。
写的位置的不同,加密的效果也就不一样,我们可以写到一个title里面,只对指定的内核或者说 *** 作系统来加密,当启动该内核或者系统的时候,会要求用户输入grub的密码。当写在所有的title外面的时候,编译grub菜单的时候,会要求输入密码,这时候密码先按p键输入密码,然后再按e键,才能编辑。
手动安装GRUB
安装grub有两种方法可以使用。下面进入详细的介绍,如果某些地方说的不太准确,希望大家能够提出,TKS
第一
可以使用grub-install命令来进行安装,具体方法是
grub-install --root-directory=/要安装到哪个目录 /要安装的设备
例:我这里用 虚拟机 演示一下,新加了一块磁盘,然后分区格式化(该 *** 作不演示),然后挂载,然后用命令安装,如下图
x
注意:这里挂载点一定是boot目录,可以不是/mnt,但最后挂载的目录名字,一字叫boot,不然会出问题的。还有安装的时候--root-directory=一定不要指定到boot目录,要指定到boot所在的目录,因为grub安装的时候,会去找boot目录,如果找不到,会报错的。当我们把盘挂载到boot之后,可以认为,该盘的名字就叫boot,所以,它会在该盘内写入bootloader,以引导系统,如果我们安装的时候指定到了boot,那么就是把bootloader的内容写到了文件里面,而不是硬盘的MBR。切记切记。我做了好多次都没做出来,就是犯了这个错。
安装完成后,我们新建一个虚拟机,创建磁盘的时候,使用已有磁盘,找到我们安装过grub的磁盘,然后使用之即可。开机之后,会惊喜的发现,出现了grub的提示符。
![]( http://upload-images.jianshu.io/upload_images/4958474-a6b446eee903d400.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
第二种方法(有点儿麻烦):
首先把 /usr/share/grub/i386-redhat/里的所有文件,拷贝到grub目录
注意:这里同上,一定要挂载到boot目录下,无论boot目录在哪
![]( http://upload-images.jianshu.io/upload_images/4958474-5bc61b8664d71e60.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
然后开始grub的安装,直接使用命令grub
![]( http://upload-images.jianshu.io/upload_images/4958474-83d9432c7ef95f52.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
root (hd2,0) 表示grub要安装到第三块硬盘第1个分区上
setup (hd2) 指定要安装的设备,设备为第二块硬盘,安装完成后quit命令退出就可以了,至于图片,我就不上了,绝对是可以的。
对于那些没有光驱或不想通过光盘安装Linux的人来说,都希望通过硬盘安装,也就是说,把iso文件下载到硬盘上后,不刻录成光盘而直接安装。跳过刻录光盘这一步,确实给人带来很大的方便,下面介绍一下硬盘安装的具体步骤。本文所介绍的方法对Redhat、RedFlag以及Magic Linux各版本测试均成功。分三种情况:(a)如果原来有linux *** 作系统, 你的iso文件放在某个Linux分区下,现在你要重装:
第一步,把系统的iso文件(如Redhat9.0的shrike-i386-disc1.iso,shrike-i386- disc2.iso,shrike-i386-disc3.iso等三个文件)下载后放到/data分区的根目录下,其它分区也可以,但不能是/分区。
第二步, 用root用户执行如下命令mkdir /mnt/redhat,然后将第一张盘加载到这个目录下,以Redhat9.0为例,运行mount -o loop shrike-i386-disc1.iso /mnt/redhat, 你会发现在/mnt/redhat下有一个叫isolinux的文件, 下面有两个文件initrd.img和vmlinuz,把它们改名成abc-initrd.img和abc-vmlinuz后拷贝到/boot下。
第三步, 重新启动机器, 出现grub启动画面时迅速按下e键, 将光标移动到第二行, 按e键, 把和initrd.img名字相似的那个文件名改成abc-initrd.img,再按回车返回前一画面。 再将光标移动到第三行, 按e键, 将和vmlinuz相似的那个文件名改成abc-vmlinuz,再按回车返回前一画面。接下来按b键。现在就启动安装进程了。
第四步,当出现选择从什么安装时,选择从硬盘安装,并准确填入iso文件所在路径, 如/dev/hda6等, 这个具体由你把iso文件放在哪个分区下面决定,如果不知道,在第一步时用df命令能找到是哪个分区。 如我的机器有两个windows分区C和D, 还有Linux下的/, /home和/data分区,我把iso文件放在/data分区里, 用df命令发现对应于/data的是/dev/hda9,于是填入/dev/hda9就可以了。填好后点OK。
第五步, 接下来的安装就和从光盘安装完全一样了。要注意的是, 分区时, 如果原来有fat分区, 这是Windows的C和D盘,不能删除。另外,这里不会提示你插入第二和第三张盘, 安装进程能自动找到其它两个iso文件, 相当于第二和第三张盘。一直OK下去就装好了。要注意的是, 如果在安装过程中要重新分区的话, iso文件所在分区是没办法编辑和删除的,在装完后, 也还要对该分区进行重新加载才能访问该分区。
(b)如果原来有Windows系统,iso文件放在Windows的某个分区上,你要装双系统,即要增加一个Linux系统:
第一步,请将iso安装文件下载到你的windows系统下的D盘根目录下。D盘必须是fat32格式(如果不是,请先将上面的东西全部移动到C盘,然后将D盘格式化成fat32格式,再将原来的东西移回去)。并将第一张盘的iso文件(如Redhat9.0的shrike-i386-disc1.iso)用winrar解开后,找到一个叫images的文件夹,下面有一个叫bootdisk.img的文件。注意,解开后不要删除原来的iso文件。
第二步,下载一个虚拟软驱的软件包vfloppy.rar到你的D盘上,并用winrar解开。这个软件也可以从网上别的地方下载。我们的目的是要用一个虚拟软盘启动安装进程。就像平时说的用软盘做启动盘启动机器一样。进入vfloppy目录,运行vfloppy.exe,让你加载启动文件时,找到刚才的bootdisk.img文件(注意,这个文件只有1.44M),就是加载它,点OK, 就可以了。成功的话会出现“设置成功”的提示框。当然如果加载失败的话是没法从虚拟软驱引导的。
第三步, 重新启动机器后,你会发现有两个选项,选择第二个--"从虚拟软驱启动", 接下来就会启动redhat linux的安装进程。
第四步, 当选择从什么安装时, 选择从硬盘安装, 然后让你选择镜像文件的位置,如果你的iso都放在C盘上,选择/dev/hda1, 如果放在D盘上时, 填入/dev/hda5。后面的所在目录填入/,就是根目录的意思。再点OK。
第五步, 就是和从光盘一样的安装了。要注意的是, 分区时, 原来的fat分区不能删除, 这是Windows的C和D盘。另外,这里也不会提示你插入第二和第三张盘,安装进程能自动找到其它的iso文件, 相当于第二和第三张盘。一直OK下去就装好了。
对于分区的建议:一个/分区:8G一个swap分区,你内存的两倍;一个/home分区,20G以上都可以;最后全部留给/data分区。/home和 /data大小由你自己定。
(c)还是假设原来有windows系统,iso文件放在Windows的某个分区下:
对于有些版本的Linux系统的iso文件,可能你解开第一张盘后看不到images文件夹,即找不到bootdisk.img这个文件,这时候怎么办呢?理解了上面的(b)情况后,进行如下几步就可以了。
第一步,将第一张盘解开,找到一个dosutils的文件夹,把这个文件夹拷贝到D盘的根目录下。
第二步, vfloppy软件自身带了一个bootdisk.img文件(和vfloppy.exe在同一个目录下),运行vfloppy.exe时,把这个文件加载上。这个文件将和从软盘启动一样,使机器启动到DOS下。
第三步, 重新启动机器, 你会发现有两个选项,选择第二个--"从虚拟软驱启动",回车,然后选择不带光驱启动,这时候,系统将启动到DOS下,即C:\>。
第四步, 进入D盘的dosutils目录,运行autoboot命令,即可启动安装进程。
如果既找不到images下的大小为1.44M的bootdisk.img文件,也找不到dosutils文件夹,例如,红帽子(Redhat)的Federo core版本就是如此,那么,可以把其它任意版本的第一个iso文件里的dosutils文件夹拷贝到D盘的根目录下(如果你能得到的话),然后把你要安装的这个版本的第一张盘里的isolinux文件下的intrid.img和vmlinuz这两个文件(这两个文件是肯定能找到的!!)拷贝到刚才的那个dosutils文件下将原来的这两个同名文件替换掉。然后执行上面的第二步、第三步和第四步就可以启动安装进程了。如果你找不到其它版本的dosutils文件夹,那么可以从这里下载一个dosutils.rar包,解压缩,然后把你的第一张盘的isolinux文件下的intrid.img和vmlinuz这两个文件拷贝到刚才下载的那个文件夹下,替换掉原来的两个同名文件,就可以按照上述步骤安装了。
我们安装红旗5.0时在linux下是通过(a)方法装的,而在Windows下是通过(c)方法装上的,因为第一张盘里找不到bootdisk.img文件
linux系统安全性和网络的支持都由于windos系统,不过图形界面还是windos比较好,日常使用的话还是推荐windos,学习研究或者开发,用linux的比较多,而且linux是开源的,没有盗版正版之分。。。都是正版。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)