linux系统启动,进程管理及故障排错

系统启动和内核管理及故障排错

Linux系统排错

Centos6
一个操作系统大致可以由内核加根文件系统中的二进制文件和各种库组成
CentOS 6 grub 安装
安装grub:
(1) grub-install 安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot目录下
grub-install --root-directory=DIR /dev/DISK
(2) grub
grub> root (hd#,#)
grub> setup (hd#)
配置文件:

[root@centos6|~]#cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0   #允许有多个内核启动项 0默认第一个
timeout=5   #选择等待时间 为5秒
splashimage=(hd0,0)/grub/splash.xpm.gz #壁纸
hiddenmenu #菜单
title CentOS 6 (2.6.32-754.el6.x86_64) #标题
	root (hd0,0)=sda1 
	kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=7200b002-eaae-4686-9446-32d5ff1aa524 rd_NO_LUKS
    #以上为内核文件 只读挂载 root=根挂载磁盘的UUID(重要)
    rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-754.el6.x86_64.img   #启动相关(重要)

两个菜单的配置方法

[root@centos6|data]#cat grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-754.el6.x86_64)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=UUID=7200b002-eaae-4686-9446-32d5ff1aa524 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-754.el6.x86_64.img

title CentOS 6.6 
 root (hd0,0)
	kernel /vmlinuz-2.6.32-754.el6.x86_64 ro      root=UUID=7200b002-eaae-4686-9446-32d5ff1aa524 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
	initrd /initramfs-2.6.32-754.el6.x86_64.img

故障排错

1,移动/boot/grub/grub.conf 文件

[root@centos6|~]#mv /boot/grub/grub.conf /root
[root@centos6|~]#reboot

root=/dev/sda2 根分区挂载点
支持Tab键补全
输入grub> kernel /vmlinuz-2.6.32-754.el6.x86_64 root=/dev/sda2
    grub> initrd /initramfs-2.6.32-754.el6.x86_64.img
    grub> boot

2,破坏第一阶段

dd if=/dev/zero of=/dev/sda bs=1 count=446#磁盘的前446扇区写入0
hexdump -C -n 512 /dev/sda #查看
破坏重启后直接弹出光盘启动界面
选择第三项救援模式
重要命令:
 grub-install 会自动修复1,1.5,2阶段的相关文件
 grub-install --root-directory=DIR /dev/DISK
1.切根
chroot /mnt/sysimage/
2,ls #查看是否成功显示文件则成功
3, grub-install /dev/sda #修复磁盘扇区
4, exit    #退出两次 
5,exit
6,选择reboot项重启
7,修复grub文件
grub> kernel /vmlinuz-2.6.32-754.el6.x86_64 root=/dev/sda2
grub> initrd /initramfs-2.6.32-754.el6.x86_64.img
grub> boot

3,第一第二阶段都破坏

rm -rf /boot/grub #删除grub下的所有文件
dd if=/dev/zero of=/dev/sda bs=1 count=446   #并破坏磁盘扇区
1,切根
chroot /mnt/sysimage/
2,ls #查看
3,grub-install /dev/sda #恢复磁盘扇区 
4,同步命令 #为了把缓存中的命令写入磁盘这里执行下列命令多次
 sync
 sync
 sync
5,vim /boot/grub/grub.conf # 手写配置文件以下为格式
default=0
timeout=5
title CentOS 6 
kernel /vmlinuz-2.6.32-754.el6.x86_64 root=/dev/sda2
inird /initramfs-2.6.32-754.el6.x86_64.img
6,reboot重启

cpio -ivt 预览压缩文件
file跟文件 查看文件格式

如果是启动文件中文件次序换了

进入启动界面
e
更改文件次序

4,当删除 /boot/initramfs-2.6.32-754.el6.x86_64.img文件后

1 救援模式
2 切根
3 #执行下列命令
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
sync
sync       #写入缓存
sync
4 reboot

5, 删除了boot目录

boot主要有内核 grub initrd 三大类文件

rm -rf /boot/
进入救援模式
#1切根
chroot /mnt/sysimage/
#2先挂载光盘
mount /dev/sr0 /mnt
#3找到内核文件 
ls /mnt/ioslinux
#4把内核文件复制到boot目录下
cp /mnt/ioslinux/vmlinux /boot/ 
#5执行下列命令
mkinitrd initramfs.img $(uname -r)#创建 ramdisk文件这个文件是硬件的驱动程序
grub-install /dev/sda #生成grub文件
#6手写grub.conf文件
vim /boot/grub/grub.conf 
default=0
timeout=5
title CentOS 6 
kernel /vmlinuz-2.6.32-754.el6.x86_64 root=/dev/sda2
inird /initramfs-2.6.32-754.el6.x86_64.img

6, 删除了/boot和/etc/fstab

因为不知道哪个是根,只能一个一个试,直到找到根文件位置
 #1
 fdisk -l   #列出所有硬盘
 mkdir /mnt/root  #先挂载到一个文件夹这里以/mnt/root为例 
 mount /dev/sda1 /mnt/root #先挂第一个目录下
 ls /mnt/root           #查看没有
 umount /mnt/root       #取消挂载 
mount /dev/sda2 /mnt/root  #再挂第二个
ls /mnt/root                 #是根 
#2手写fstab配置文件        
vi /mnt/root/etc/fstab      
/dev/sda

你可能感兴趣的:(内核,linux,init,运维)