一、grub的配置文件/boot/grub/grub.conf
default=0 ###设置默认启动项0表示第一个 timeout=5 ##设置超时时间,如果超过5s用户没有操作,则默认启动第一个 splashimage=(hd0,0)/grub/splash.xpm.gz ###设置选择内核界面的图片 hiddenmenu password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/ ###选择内核界面,进入"a","e","c"模式需要登录的密码 title CentOS 6 (2.6.32-642.el6.x86_64) ###选择内核界面处的提示信息 root (hd0,0) ###相对于grub的根路径 kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=8ecfb3ed-37d8-43cd-a1ec-8a4be6fa5973 nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet ax_loop=100 ###内核的核心文件,如果boot没有独立分区则需要写成/boot/vmlinuz.....ro只读挂载(系统启动后会重新挂载rw) ###root=***指明根,后面的都是配置的其他额外辅助功能可省略。 ###ax_loop=100定义最大的loop设备为100个(默认8个) ###rhgb(图形) quiet(隐藏内核启动过程) 这两项去掉后会显示启动过程(默认不显示,只有按esc才能看到) initrd /initramfs-2.6.32-642.el6.x86_64.img ###虚拟文件系统,伪根,根的驱动程序 password --md5 $1$mCYby$yvu3YoVDYW9jf4M47YcM4/ ###启动该系统时需要输入的密码
p:输入密码,输入密码之后会提示"a","e","c"
a:在启动之前修改内核参数
e:编辑模式,用于编辑菜单
c:命令模式,交互式接口
o:在选择的行后面增加一行
O:在选择的行前面增加一行
d:删除选择的行
上述操作都是属于临时修改!!!
注意:输入c进入命令行模式,此时可以略过选择内核阶段,自己制定内核文件和伪根文件,步骤如下:
注意:kernel处,指明的根是文件系统的根,不是相对于grub的根。
内核选择界面更换图片的办法:
more /boot/grub/splash.xpm.gz 可以查到图片的分辨率
根据分辨率的大小,截取或查找对应的图片
linux系统中安装图片编辑器yum install ImageMagick -y
格式转换 convert-resize 640×480 -colors 14 win.jpg win.xpm
gzip win.xpm
更改grub.conf 中配置的图片名字,重启即可。
启动排错问题:
1、内核文件,虚拟文件系统文件配置文件中写错或者信息不完整导致系统无法启动。
如果出现上述kernel文件信息不完整或者错误,可按下"e"键,输入kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda3,按回车,然后回到上述界面,按"b"键,重新启动即可。
注意:上述修改属于临时修改,启动完成之后,下次启动还是存在问题,还要重新修改grub的配置文件。
2、grub.conf被误删除,导致系统无法启动。
启动后直接进入命令行模式:
按如下操作即可,由于是临时生效,因此后续还要重新编辑grub.conf 配置文件。
3、破坏第一阶段MBR 446个字节,dd if=/dev/zero of=/dev/sda bs=1 count=446,hexdump -C -v /dev/sda -n 512 确认。
重启后出现如下所示,因为启动程序被破坏,因此系统认为硬盘不可启动,直接从光盘引导,选择第三项进入安全模式。
首先/sbin/grub-install 救援模式上不存在该工具,存储在硬盘上,因此要切根,stage1不属于任何分区的属于MBR,关联硬盘设备,因此要写/dev/sda。
具体操作步骤:
方法1:
1、chroot /mnt/sysimage/
2、grub-install /dev/sda
3、exit exit
4、选择reboot
注意:有些环境中如果想把grub安装到别的硬盘上根不是boot的上级目录就要按如下写法操作:
grub-install –root-directory=DIR(boot目录的父目录,如果其父目录是根则可省略) /dev/DISK
方法2:
1、grub
2、root (hd0,0)
3、setup (hd0)
4、quit exit
5、选择reboot
4、破坏1.5阶段,dd if=/dev/zero of=/dev/sda bs=512 cxount=2 seek=1.
reboot后直接黑屏,重新启动进入光盘引导,进入救援模式,后续具体操作同第三题破坏MBR的解决办法相同。
注意:用上述第二种方法修复stage1.5要依赖于/boot/grub/*1.5*的文件,如果这个文件不存在则会修复失败,第一种方法grub-install不依赖/boot/grub/*1.5*文件。
5、删除rm -rf /boot/grub stage 2阶段并修复。
重新启动,光盘启动进入救援模式,在命令行中操作如下(不能采用问题3中的方法2 ,因为缺失1.5文件):
注意:–root-directory=/ 可以省略,此时进入/boot/grub目录中,可以看到缺少grub.conf文件
可以在在该目录下手写一份,也可以重新启动,在gurb命令行中重新输入,同问题2一样的解决办法。
注意:输入上述操作完后会进行修复,修复完成之后还要在输入一遍才能启动,启动完成后,在/boot/grub/目录下手写一份grub。conf文件。
6、删除/sbin/init程序,并恢复。
开机后进入后卡在如下画面,不支持输入命令,不能进行任何操作。
重新启动,进入内核选择界面,按"a"键,进入编辑内核参数,让bash代替init命令,具体操作如下。
回车后重新启动,将准备好的init文件还原到/sbin目录下,重新启动即可。
如果启动过程中,卡在某个程序不能正常启动,可以在内核选择界面,输入"a",进入内核编辑界面输入1,回车,进入单用户模式,用chkconfig 某程序 off ,在重新启动即可。
7、删除vmlinuz-2.6.32-642.el6.x86_64,initramfs-2.6.32-642.el6.x86_64.img 文件,重启并恢复
重启后出现的画面
再次从光盘启动进入救援模式,然后创建一个目录挂载光盘,在光盘中的isolinux目录中可以看到vmlinuz文件,将其cp到/mnt/sysimage/boot/目录下
创建/boot目录下创建initramfs-2.6.32-642.el6.x86_64.img 文件:
注意:光盘/boot目录里面vmlinuz 文件名要与/boot/grub/grub.conf配置文件的中文件名保持一致,复制完后还要修改grub.conf中文件名
方法2、
假设我们用网络启动,用光盘引导,开启网络连接,选择yes。
可以自己配置网络也可动态获取,我们选择动态获取。
进入到命令行模式后,输入ifconfig 获取ip地址后,通过scp命令从别的主机拷贝到问题主机上,重新启动即可。
8、dd if=/dev/zero of=/dev/sda bs=446 count=1
rm -rf /boot
破坏后重新启动,光盘引导进入救援模式,安装kernel包,指明安装路径,用–force 或–replacepkgs选项
用grub-install修复mbr第一阶段
进入/boot/grub/目录下,创建grub.conf 文件,重启即可。
9、删除/etc/fstab 、删除/boot/,重新启动不恢复。
进入光盘救援模式,fdisk -l 和 blkid 查看磁盘信息
根据上图根据磁盘空间大小可以分析出来sda1是boot,sda3是根,但是如果在磁盘大小比较均衡,且数目表多时,就需要将每个磁盘挂载到指定目录中,然后根据磁盘空间中的内容来确定每个磁盘。
进入根目录中,创建etc/fstab文件。
/dev/sda1 /boot ext4 defaults 1 1
/dev/sda3 / ext4 defaults 1 2
重新启动系统,重新进入救援模式,让系统帮我们挂载
在/boot/目录下可以看到缺失grub目录,因此需要通过grub-install /dev/sda来安装
最后在/boot/grub/目录下创建grub.conf 的配置文件,重新启动系统即可。
10、逻辑卷情况下,删除/etc/fstab,删除/boot/的修复方法。
光盘启动进入救援模式
lvscan 扫描逻辑卷
vgchage -ay 激活逻辑卷
mount /dev/vg0/root /mnt/sysimage 挂载逻辑卷
vi /mnt/sysimage/etc/fstab
/dev/sda1 /boot ext4 defaults 1 1
/dev/vg0/root / ext4 defaults 1 2
/dev/vg0/var /var ext4 defaults 0 0
/dev/vg0/usr /usr ext4 defaults 0 0
reboot
光盘启动进入救援模式,让系统自动挂载
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
chroot /mnt/sysimage
rpm -ivh /mnt/cdrom/Packages/kernel-2****.rpm –replace|force
grub-install /dev/sda
vim /boot/grub/grub.conf
default=0
timeout=5
title linuxkernel
root (hd0,0)
kernel /vmlinuz。。。。。root=/dev/vg0/root
initrd /intramfs……………………..
11、简易linux制作
添加一块硬盘,扫描让系统识别
分区格式化,创建/boot/ 和 /
格式化
mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdc2
挂载/dev/sdc1 到/mnt/boot目录,并将核心文件拷贝到目录中,安装grub-intall
创建/boot/grub/grub.conf
挂载根目录,并创建根目录中的文件
编辑/mnt/sysroot/etc/fstab,注意由于我要把这个硬盘当做系统来启动,因此在新的主机上面启动sdc1会变成sda1
将命令对应的二进制文件和库文件通过脚本拷贝到对应的目录中
关机,新建虚拟机,让配置好的硬盘,添加到虚拟机中启动。
CentOS 6.8-milinux.vmdk 54M
原创文章,作者:Naruto,如若转载,请注明出处:http://www.178linux.com/45913