修复boot分区文件被删除的方法

实验环境:删除boot上的几个主要个文件:


config-2.6.18-164.el5
grub
initrd-2.6.18-164.el5.img
symvers-2.6.18-164.el5.gz
System.map-2.6.18-164.el5
vmlinuz-2.6.18-164.el5
 

修复过程:

1. 先入放入光盘,从CD-ROM启动Linux,进入Linux急救模式
boot: linux rescue
 
2. 挂载光盘, 安装被删文件所需要的rpm
mount /dev/hdc /mnt/source
rpm -ivh --root=/mnt/sysimage /mnt/source/Server/kernel-xxx.rpm --force

3. 安装grub,手工编写grub配置文件
chroot /mnt/sysimage   #
更改 root 目录
grub-install /dev/sda   #
安装 grub
vim /boot/grub/grub.conf
default=0 #
默认加载第几个系统,从 0 起算
timeout=5 #
启动时停留在 Grub 配置界面中的时间
splashimage=(hd0,0)/grub/splash.xpm.gz #Grub
的背景图片
hiddenmenu #
是否隐藏菜单
title Red Hat Enterprise Linux Server (2.6.18-8.el5) #
操作系统的标题
root (hd0,0) #
操作系统的引导分区
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet #
设置加载的内核
initrd /initrd-2.6.18-164.el5.img4 #
设置加载必要的驱动 ( 内存磁盘文件 )

4. 退出,重启
exit
sync
reboot

说明:grub.conf

 default - 默认引导的菜单条目。
timeout - 自动选择默认引导前菜单显示的时间。本例中,如果用户没有在  5 秒之内选择操作系统,则会默认引导第一个条目 ( default 0)
splashimage -
指定 GRUB 引导菜单的界面风格。 (hd0,0)/grub/splash.xpm.gz ,是指在第一块硬盘的第一个分区 (hd0,0) 中,使用 grub 目录下的 splash.xpm.gz 文件作为界面风格。一般来讲,无需更改这个配置
hiddenmenu -
隐藏 GRUB 引导菜单。如果不想在启动时显示 GRUB 引导菜单,则删除此条目。

系统引导条目

title - 引导条目的名称。通常使用操作系统的名称做为标识,你可以自行更改这个名称,例如使用 "Fedora 12", "Fedora", 或者是 "MyLinux" 都可以。这个标题将显示在 GRUB 引导菜单中。
root -
操作系统内核和引导文件所在的磁盘分区。 (hd0,0) 表示第一块硬盘的第一个分区, (hd0,2) 表示第一块硬盘的第 3 个分区,依次类推。 (0 开始算起), 这里面的root 不是root 用户, 就是代表/
kernel - 系统内核及 boot 命令用到的参数。
initrd -
系统引导程序

boot分区是不是可以被umount的掉

我如果不删除 /boot 分区里面的重要的文件的话 , 直接 umount /boot 分区的话 , 重启会不会导致系统启动不了呢?
答案是不会。
我们可以到 Linux 下的 /etc/fstab 命令来查看 Linux 启动时的挂载情况及顺序
  
修复boot分区文件被删除的方法_第1张图片
可以看到上面,已经定义了在启动时默认到 /boot 目录下去寻找启动文件,所以即便我们把 boot 分区 umount 掉了,重启后还是能够正常进入的。它是靠什么自动加载的呢?其实 fstab 文件中的 defaults 就包含了 "auto" 功能,除非明确指定 noauto ,否则开机都会自动挂载。
 
简单的对etc/fstab做个介绍
/etc/fstab是用来存放文件系统的静态信息的文件。当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。
我们要关注的是它的六个域,分别为:<file system>、<mount point>、<type> 、<options>、<dump>、<pass>。
 1、<fie sysytem>。这里用来指定你要挂载的文件系统的设备名称或块信息,也可以是远程的文件系统。做过嵌入式linux开发的朋友都可能知道mount192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (可以是其他IP)命令所代表的意义。它的任务是把IP为192.168.1.56的远程主机上的/home/nfs/目录挂载到本机的/mnt/nfs /目录之下。如果要把它写进/etc/fstab文件中,file system这部分应填写为:/192.168.1.56:/home/nfs/。
   如果想把本机上的某个设备(device)挂载上来,写法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一个串口硬盘的第一个分区,也可以是第一个SCSI硬盘的第一个分区,/dev/hda1表示第一个IDE硬盘的第一个分区,/dev/cdrom 表示光驱。
   此外,还可以label(卷标)或UUID(Universally Unique Identifier全局唯一标识符)来表示。用label表示之前,先要e2label创建卷标,如:e2label /dir_1 /dir_2,其意思是说用/dir_2来表示/dir_1的名称。然后,再在/etc/fstab下添加:LABEL=/dir_2 /dir_2 <type>   <options> <dump> <pass>。重启后,系统就会将/dir_1挂载到/dir_2目录上。对于UUID,可以用vol_id -u /dev/sdax来获取。比如我想挂载第一块硬盘的第一个分区,先用命令vol_id -u /dev/sda11 来取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然后在<file system>这个域上填写: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般会使用label,而Ubuntu linux 一般会用UUID。
   2、<mount point>。挂载点,也就是自己找一个或创建一个dir(目录),然后把文件系统<fie sysytem>挂到这个目录上,然后就可以从这个目录中访问要挂载文件系统。对于swap分区,这个域应该填写:none,表示没有挂载点。
       3、<type>。这里用来指定文件系统的类型。下面的文件系统都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。
   4、<options>。这里用来填写设置选项,各个选项用逗号隔开。由于选项非常多,而这里篇幅有限,所以不再作详细介绍,如需了解,请用 命令 man mount 来查看。但在这里有个非常重要的关键字需要了解一下:defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async。
   5、<dump>。此处为1的话,表示要将整个<fie sysytem>里的内容备份;为0的话,表示不备份。现在很少用到dump这个工具,在这里一般选0。
   6、<pass>。这里用来指定如何使用fsck来检查硬盘。如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。比如第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个 分区。
 
红内容来源于作者:陈景忠http://hi.baidu.com/jingzhongchen/blog/item/8e6f552dcead7ce98b139952.html

GRUB加密码

GRUB 加密分为两种。
   1 、全局加密
   2 、局部加密
全局加密:
  功能:锁定启动界面,禁止了
   e   to edit the commands before booting
   a   to modify the kernel arguments before booting
   c   for a command-line
 然后我们看看全局加密码后的效果。需要按 P ,输入全局密码才可以编辑查看 commands. 这样就可以保护我们的局部密码了。不输入全局密码可以直接回车开始启动系统,如果你还有局部密码,就需要输入局部密码。
 
 
局部加密:相对与某个特定的系统来进行控制
功能:用户必须输入密码才能进入系统。 :( 你的电脑是双系统 , 如果你只给一个加密的话 , 那么启动另一个就不需要密码 )
下面我们来看看怎么实现这些功能
先说局部加密:
  由于每个系统都是由 title 来标志的,所以我们局部加密就是在这个标志后加入相应的语句。
  加密分两种
   1 、明文
   2 MD5 加密。
  具体方法如下图
 
  上面就是对 grub 进行的密文加密 , 明文加密 , 就是在 password 后面 " 空格+ 密码" OK,
[root@localhost ~]# grub-md5-crypt
Password:
Retype password:
$1$J7NPh/$77Q7IpLMzwetf2.adDQcN.
可以通过 grub-md5-crypt 来计计算 MD5 , 上面的 MD5 的值是 "123456" ,直接拷贝到 /boot/grub.grub.conf 中就可以了。然后就保存退出,从新启动就需要你输入密码才能进入系统。但是我们可以在启动画面用 e 键编辑进入command 模式就可以查看密码。 我们需要怎么杜绝这种事情发生呢?那就需要全局加密,不让其他人具有编辑的权限。
全局加密:
  如上 , 生成一个 MD5 密码。然后进入 /boot/grub/grub.conf ( 明文 , 直接填加明文 ); 在第一个 title 标志前面加如我们的密码,如图, timeout5 后面就是我们对全局的加密。
 
  这样其他人需要全局密码才能查看局部密码。
这只是简单整理以上内容 , 说明 boot 分区的修复和加密码 , 接着研究 linux 的启动过程 , linux inodes 的结构图

你可能感兴趣的:(职场,休闲,修复boot分区文件被删除)