U盘系统与排错系统

制作U盘系统的两个主要目的:

1、以U盘为救援系统来修复有故障无法启动操作系统

修复步骤:

1)选尝试从单用户模式启动(内核和基本服务,可以参考/etc/rc.d/rc1.d/S..

2)如果单用户模式也无法正常启动,可以考虑从光盘或者是U盘启一个linux操作系统,首选使用U

2、通过U盘系统的制作让你更了解一个主机上linux系统组成,以及启动流程

LINUX操作系统的组成:

     内核 SHELL 应用程序 文件系统

内核

  核心文件    vmlinuz

  临时根文件  initrd(initramfs)

  内核的库    /lib/modules/`uname -r`

SHELL(bash|csh|ksh)

应用程序(基本的命令coreutils|配置文件setup)

# rpm -qf /bin/ls

coreutils-8.4-19.el6.x86_64

 

# rpm -qf /etc/passwd

setup-2.8.14-16.el6.noarch

 

文件系统 filesystem

# rpm -qf /

filesystem-2.4.30-3.el6.x86_64    

用户登录系统----对系统操作(filesystem) ------ 用户接口(应用程序) ----命令(SHELL[命令解释器]) ----- 调用库文件(api)---对内核发出指令 ----- 内核接口(*.ko) ----硬件(磁盘|内存|CPU|显卡)

回顾linux启动流程

 

RHEL5 基于init方式 <串行启动>

RHEL6 基于init+systemV <并行启动>

                                   -----grub1

RHEL7 基于systemd方式 (引导器grub2)

第一部分   MBR

BIOS --- HD ---- 512MBR(bootloder引导记录446+DPT分区表4*16+checksum2)

 

第二部分   引导器 GRUB <加载MBR>

GRUB组成

 stage1   引导表MBR

 stage2   grub.conf

 stage1_5 (grub.exe本身,驱动包括磁盘,raid卡,文件系统,挂载/boot stage2grub.conf)

bootloder --装载--stage1 ---- stage2(grub.conf)---menu.lst ---- stage1_5 ---DPT --- 挂载boot分区

root (hd0,0) ---挂载/dev/sda1

 读取内核的核心文件vmlinuz

 读取临时操作系统  initramfs

第三部分  启动第一个独立进程init

init ---> /etc/inittab ---> rc.sysinit ---mount -a /etc/fstab ---- 读取runlevel ----- /etc/rc.d/rcX.d --- /etc/rc.local

      K关闭 S启动

部署U盘系统

 1 清空U盘的分区表

[root@i ~]# umount /media/* -l

[root@i ~]# dd if=/dev/zero of=/dev/sdb bs=500 count=1

 

 2 格式化U盘为ext4格式 将U盘定义第一个分区为可引导分区

[root@i ~]# fdisk -cu /dev/sdb

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First sector (2048-15646719, default 2048):

Last sector, +sectors or +size{K,M,G} (2048-15646719, default 15646719):

 

Command (m for help): a

Partition number (1-4): 1

Command (m for help): p

Disk /dev/sdb: 8011 MB, 8011120640 bytes

247 heads, 62 sectors/track, 1021 cylinders, total 15646720 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1   *        2048    15646719     7822336   83  Linux

 

Command (m for help): w

3 安装文件系统 <基础的目录 /bin /home /var>

[root@i ~]# mkdir /mnt/usb/

[root@i ~]# mount /dev/sdb1 /mnt/usb/

新建内存目录

[root@i ~]# mkdir /dev/shm/usb

[root@i ~]# yum -y install filesystem --installroot=/dev/shm/usb/

4 安装应用程序与SHELL

coreutils openssh-clients rpm yum net-tools bind-utils passwd vim-enhanced findutils bash util-linux lvm2 util-linux-ng

[root@i ~]# yum -y install coreutils openssh-clients rpm yum net-tools bind-utils passwd vim-enhanced findutils bash util-linux lvm2 util-linux-ng --installroot=/dev/shm/usb/

将数据写入到U

[root@i ~]# cp -av /dev/shm/usb/*  /mnt/usb/

5 安装内核

[root@i ~]# cp  /boot/vmlinuz-2.6.32-279.el6.x86_64  /mnt/usb/boot/

[root@i ~]# cp /boot/initramfs-2.6.32-279.el6.x86_64.img /mnt/usb/boot/

[root@i ~]# cp -av /lib/modules/2.6.32-279.el6.x86_64/ /mnt/usb/lib/modules/

查看/boot/initramfs-2.6.32-279.el6.x86_64.img 是否有usb驱动器

[root@i ~]# lsinitrd /mnt/usb/boot/initramfs-2.6.32-279.el6.x86_64.img  |grep usb-storage

-rwxr--r--   1 root     root       128264 Jun 14  2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/usb/storage/usb-storage.ko

6 安装Grub

 --安装grub软件

[root@i ~]# rpm -ivh ftp://192.168.0.254/pub/rhel6/dvd/Packages/grub-0.97-77.el6.x86_64.rpm --root=/mnt/usb/ --nodeps

Retrieving ftp://192.168.0.254/pub/rhel6/dvd/Packages/grub-0.97-77.el6.x86_64.rpm

warning: /mnt/usb/var/tmp/rpm-tmp.1gHYSb: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

Preparing...                ########################################### [100%]

   1:grub                   ########################################### [100%]

 

 --安装grub驱动程序  grub-install

[root@i ~]# grub-install --root-directory=/mnt/usb/ --recheck  /dev/sdb

grep: /mnt/usb//boot/grub/device.map: 没有那个文件或目录

mv: 无法获取"/mnt/usb//boot/grub/device.map" 的文件状态(stat): 没有那个文件或目录

Probing devices to guess BIOS drives. This may take a long time.

Installation finished. No error reported.  ---安装成功 没有错误报告

This is the contents of the device map /mnt/usb//boot/grub/device.map.

Check if this is correct or not. If any of the lines is incorrect,

fix it and re-run the script `grub-install'.

(fd0)/dev/fd0

(hd0)/dev/sda

(hd1)/dev/sdb

[root@i ~]# ls /mnt/usb/boot/grub/

device.map     fat_stage1_5  iso9660_stage1_5  minix_stage1_5     stage1  ufs2_stage1_5    xfs_stage1_5

e2fs_stage1_5  ffs_stage1_5  jfs_stage1_5      reiserfs_stage1_5  stage2  vstafs_stage1_5

 

 新建grub.conf

[root@i ~]# cp /boot/grub/grub.conf /mnt/usb/boot/grub/

 

[root@i ~]# blkid  /dev/sdb1

/dev/sdb1: UUID="a0f87eaa-205f-4e35-99bf-f9b806359caf" TYPE="ext4"

 

[root@i ~]# vim /mnt/usb/boot/grub/grub.conf

default=0

timeout=5

splashp_w_picpath=/boot/grub/splash.xpm.gz

title My Usb System From Hugo

        root (hd0,0)

        kernel /boot/vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=a0f87eaa-205f-4e35-99bf-f9b806359caf selinux=0

        initrd /boot/initramfs-2.6.32-279.el6.x86_64.img

 

完善配置文件与系统

/etc/fstab

/etc/passwd|group|shadow

[root@i ~]# vim /mnt/usb/etc/fstab

UUID="a0f87eaa-205f-4e35-99bf-f9b806359caf"  /  ext4 defaults 0 0

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

 

设置root用户为空密码登录

[root@i ~]# sed  -i s/root:x:/root::/ /mnt/usb/etc/passwd

 

定义环境变量

[root@i ~]# cp /etc/skel/.bash* /mnt/usb/root/

[root@i ~]# chroot /mnt/usb/

[root@i /]# exit

exit

定义主机名

[root@i ~]# vim  /mnt/usb/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=usb.hugo.edu

 

[root@i ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0  /mnt/usb/etc/sysconfig/network-scripts/

[root@i ~]# vim /mnt/usb/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

IPADDR=192.168.0.100

NETMASK=255.255.255.0

ONBOOT=yes

[root@i ~]# sync  --同步数据

[root@i ~]# umount /mnt/usb/

---测试 重启设备 从U盘引导启动

 

--------------------------------------------------------------------------------------------------

 

Trouble Shotting  排错系统

LINUX操作系统的组成:

1kernel

2、中间件软件

3、应用软件

 

级别一:应用软件运行有问题

解决:看日志(debug


级别二:启动问题(需要非常熟悉启动流程)

LINUX的系统级别模式:

1、正常模式(35

2、单用户模式

3、从第三方介质启动一个救援系统,通过这个系统来修复损坏系统

 

什么是救援模式:

从第三方介质启动操作系统,用于维护硬盘中已经损坏的操作系统。

 

什么情况下使用救援模式:

原系统无法正常启动,单用户模式也无法启动,这时可以考虑从网络或者光盘中启动救援系统。

如果单用户模式能使用就使用单用户模式。

 

进入救援模式的方法:

1、从安装光盘启动在安装系统的介面输入:linux rescue

2、从网络启用救援模式:label_name(相应的系统标签), tab键之后加上 “linux rescue” 这个参数

3、从U盘启动一个救援系统

 

+++++++现象+++++++

****故障出现在第一部分*******

1.MBR丢失,启动系统停滞不前

 a.从网络启动救援系统: 标签 linux rescue

 b.找出原来分区结构

 c.修复主引导记录(mbr)

  第一种方法修复mbr

grub-install --root-directory=/mnt/linux --recheck /dev/sda

  第二种方法修复mbr

grub

grub> root (hd0,0)

grub> setup (hd0)

 

****故障出现在第二部分********

2.出现grub>停滞不前 (mbr已经引导完毕将启动权限交给grub,grub.conf丢失)

  a.从救援模式重启后,手工配置grub来引导操作系统

  b.手动引导grub ,进入系统之后 新建grub.conf文件

  c.进出救援模或者单用户模式重建grub.

 

****故障出现在第三部分********

1>初始化过程中配置文件或者命令丢失

/etc/fstab文件丢失

mount命令丢失

 a 进入救援模式(修复fstab文件|修复mount命令)

2> 反复重启

检测

/etc/inittab

/etc/rc.d/rc.sysinit

/etc/rc.local

3> 管理员没密码/普通用户无法登录:

a.进入单用户模式

b.修改密码

c. init 5

4> 配置文件的权限基于目录的权限

/tmp

 

======================================

 1> 从网络引导 进入Rescue模式

 2> 通过查看分区表fdisk -l 以及挂载分区 df -h

 

判断结论: MBR丢失?

 查看系统的MBR表是否完整

 dd if=/dev/sda of=./mbr bs=512 count=1

 hexdump mbr  

--不完整

 

修复MBR

2种方式

 可以使用光盘的救援模式

 setup模式(stage1|stage2|stage1_5存在)

grub> root (hd0,0)

grub> setup (hd0)

 

 

 U盘的救援模式

 grub-install模式  (stage1|stage2|stage1_5不存在)

1) 先安装grub软件

2) 挂载boot分区与根分区(LVM)

 

 挂载根分区的lv的时候 发现不了lvm

激活vg

 vgchange -ay VGNAME

 

mkdir /mnt/root/

mkdir /mnt/root/boot

mount /dev/mapper/vol0-root /mnt/root

mount /dev/sda1 /mnt/root/boot

 

3) grub-install

grub-install --root-directory=/mnt/usb/ --recheck  /dev/sdb

修复grub.conf

 

 

进入U盘系统 重新定义grub.conf

 

mkdir /mnt/root/

mkdir /mnt/root/boot

mount /dev/mapper/vol0-root /mnt/root

mount /dev/sda1 /mnt/root/boot

 

 

vim /mnt/root/boot/grub/grub.conf

default=0

timeout=5

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz

title RedHat 6.3 Os

        root (hd0,0)

        kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/xxx

        initrd /initramfs-2.6.32-279.el6.x86_64.img

 

--------------------直接进入单用户模式修复

修复init 信息  

/etc/inittab /etc/rc.d/rc.sysinit  /etc/fstab  /etc/rc.local

 

 丢失mount命令

进入U盘系统  修复mount命令

 

 丢失配置文件 /etc/fstab

 

 系统不断重启

 /etc/inittab -- 无级别

 rc.sysinit   -- 追加reboot

 /etc/rc.local  --reboot

 

 管理员密码锁定

 /etc/passwd /etc/group   权限

 

 tmp目录的权限