实验环境:删除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
目录下去寻找启动文件,所以即便我们把
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
的结构图