制作U盘系统的两个主要目的:
1、以U盘为救援系统来修复有故障无法启动操作系统
修复步骤:
1)选尝试从单用户模式启动(内核和基本服务,可以参考/etc/rc.d/rc1.d/S..)
2)如果单用户模式也无法正常启动,可以考虑从光盘或者是U盘启一个linux操作系统
1)首选使用U盘
2、通过U盘系统的制作让你更了解一个主机上linux系统组成,以及启动流程
LINUX操作系统的组成:
1)内核 --完成硬件的控制或者叫调度
1、/boot/vmlinuz-`uname -r` --内核核心
2、/boot/initrd-`uname -r`.img --外挂驱动程序(临时根文件系统ramdisk)
3、/lib/modules/`uname -r` --内核的模块
2)中间层软件(库) --完成接口功能(应用软件-->接口-->内核)
3)各种应用软件 --完成各种用户功能
4)引导器(grub)
回顾LINUX启动流程:
1、加电自检(bios)
2、根据第一启动选项(硬盘)来引导系统
3、从硬盘第一个扇区(512b)找到MBR
4、grub分为三个阶段:grub stage1(mbr)-->stage1.5(grub本身和磁盘驱动)-->grub stage2(grub.conf)
5、grub.conf-->/boot/(vmlinuz/inird.img)启动内核
6、启动第一个进程init(1)
7、init-->/etc/inittab-->/etc/rc.sysinit-->/etc/rc.d/rc[0-6].d/Sxxyy-->/etc/rc.local
1)部署应用软件
1)分区格式化U盘,记U盘拥有启动功能
# fdisk /dev/sdb --分区
# partprobe /dev/sdb
# fdisk -l /dev/sdb
Disk /dev/sdb: 2063 MB, 2063597568 bytes
226 heads, 39 sectors/track, 457 cylinders
Units = cylinders of 8814 * 512 = 4512768 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 457 2013979+ 83 Linux
# mkfs.ext3 /dev/sdb1
# mkdir /mnt/usb
# mount /dev/sdb1 /mnt/usb
2)安装必要的应用软件
# rpm -qf /
filesystem-2.4.0-2 --第一需要安装的软件(生成根目录下的所有默认目录)
# mkdir /dev/shm/usb
# yum -y install filesystem --installroot=/dev/shm/usb
# yum -y install coreutils openssh-clients rpm yum net-tools bind-utils passwd vim-enhanced findutils bash util-linux --installroot=/dev/shm/usb
# cp -av /dev/shm/usb/* /mnt/usb/
3)部署内核
内核的组成:
1)vmlinuz-`uname -r`
2)initrd-`uname -r`.img
3)/lib/modules/`uname -r`
# cp /boot/xen.gz-2.6.18-164.el5 /mnt/usb/boot/
# cp /boot/vmlinuz-`uname -r` /mnt/usb/boot/
# cp -r /lib/modules/`uname -r` /mnt/usb/lib/modules/
# mkinitrd --with usb-storage /mnt/usb/boot/initrd-`uname -r`.img `uname -r`
解开initrd.img(临时根文件系统,是在系统加载根分区之前来驱动系统所需要驱动)文件
# mkdir /tmp/initrd
# cp /mnt/usb/boot/initrd-2.6.18-164.el5xen.img /tmp/initrd
# cd /tmp/initrd
# zcat initrd-2.6.18-164.el5xen.img | cpio -i
# rm -rf initrd-2.6.18-164.el5xen.img
# find . | cpio -oc >> ../initrd.img
# gzip -9 /tmp/initrd.img
# \cp /tmp/initrd.img.gz /mnt/usb/boot/initrd-2.6.18-164.el5xen.img
4)完善各类配置文件
a)完善账号和密码
# \cp -a /etc/passwd /etc/shadow /mnt/usb/etc/
b)完善U盘的自动挂载fstab
# blkid /dev/sdb1
/dev/sdb1: UUID="2a59bc5c-7c35-4632-9db7-90bea7d9daf1" SEC_TYPE="ext2" TYPE="ext3"
# cp /etc/fstab /mnt/usb/etc
# vim /mnt/usb/etc/fstab
UUID="2a59bc5c-7c35-4632-9db7-90bea7d9daf1" / ext3 defaults 1 1
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
c)加载网卡的配置文件
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /mnt/usb/etc/sysconfig/network-scripts/
# vim /mnt/usb/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.0.253
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
d)完善用户的配置文件
# chroot /mnt/usb
bash-3.2# --找不到用户配置文件
bash-3.2# cp /etc/skel/.bash* /root --为root用户创建配置文件
bash-3.2# exit
[root@instructor etc]# chroot /mnt/usb
[root@instructor /]#
5)、部署grub mbr
1)安装grub
# wget ftp://192.168.0.254:/pub/Server/grub-0.97-13.5.i386.rpm -P /tmp
# rpm -ivh --force --nodeps --root=/mnt/usb /tmp/grub-0.97-13.5.i386.rpm
2)安装mbr
# grub-install --root-directory=/mnt/usb --recheck /dev/sdb
# ls /mnt/usb/boot/grub/ --确认mbr是否已经安装好
device.map ffs_stage1_5 minix_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_5
生成grub.conf文件
# cp /boot/grub/grub.conf /mnt/usb/boot/grub/
# vim /mnt/usb/boot/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title myusb system
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=UUID=2a59bc5c-7c35-4632-9db7-90bea7d9daf1 quiet
module /boot/initrd-2.6.18-164.el5xen.img
# cp /boot/grub/splash.xpm.gz /mnt/usb/boot/grub/ --复制图片
# sync --把U盘对应的脏数据写回U盘
1、以U盘为救援系统来修复有故障无法启动操作系统
修复步骤:
1)选尝试从单用户模式启动(内核和基本服务,可以参考/etc/rc.d/rc1.d/S..)
2)如果单用户模式也无法正常启动,可以考虑从光盘或者是U盘启一个linux操作系统
1)首选使用U盘
2、通过U盘系统的制作让你更了解一个主机上linux系统组成,以及启动流程
LINUX操作系统的组成:
1)内核 --完成硬件的控制或者叫调度
1、/boot/vmlinuz-`uname -r` --内核核心
2、/boot/initrd-`uname -r`.img --外挂驱动程序(临时根文件系统ramdisk)
3、/lib/modules/`uname -r` --内核的模块
2)中间层软件(库) --完成接口功能(应用软件-->接口-->内核)
3)各种应用软件 --完成各种用户功能
4)引导器(grub)
回顾LINUX启动流程:
1、加电自检(bios)
2、根据第一启动选项(硬盘)来引导系统
3、从硬盘第一个扇区(512b)找到MBR
4、grub分为三个阶段:grub stage1(mbr)-->stage1.5(grub本身和磁盘驱动)-->grub stage2(grub.conf)
5、grub.conf-->/boot/(vmlinuz/inird.img)启动内核
6、启动第一个进程init(1)
7、init-->/etc/inittab-->/etc/rc.sysinit-->/etc/rc.d/rc[0-6].d/Sxxyy-->/etc/rc.local
1)部署应用软件
1)分区格式化U盘,记U盘拥有启动功能
# fdisk /dev/sdb --分区
# partprobe /dev/sdb
# fdisk -l /dev/sdb
Disk /dev/sdb: 2063 MB, 2063597568 bytes
226 heads, 39 sectors/track, 457 cylinders
Units = cylinders of 8814 * 512 = 4512768 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 457 2013979+ 83 Linux
# mkfs.ext3 /dev/sdb1
# mkdir /mnt/usb
# mount /dev/sdb1 /mnt/usb
2)安装必要的应用软件
# rpm -qf /
filesystem-2.4.0-2 --第一需要安装的软件(生成根目录下的所有默认目录)
# mkdir /dev/shm/usb
# yum -y install filesystem --installroot=/dev/shm/usb
# yum -y install coreutils openssh-clients rpm yum net-tools bind-utils passwd vim-enhanced findutils bash util-linux --installroot=/dev/shm/usb
# cp -av /dev/shm/usb/* /mnt/usb/
3)部署内核
内核的组成:
1)vmlinuz-`uname -r`
2)initrd-`uname -r`.img
3)/lib/modules/`uname -r`
# cp /boot/xen.gz-2.6.18-164.el5 /mnt/usb/boot/
# cp /boot/vmlinuz-`uname -r` /mnt/usb/boot/
# cp -r /lib/modules/`uname -r` /mnt/usb/lib/modules/
# mkinitrd --with usb-storage /mnt/usb/boot/initrd-`uname -r`.img `uname -r`
解开initrd.img(临时根文件系统,是在系统加载根分区之前来驱动系统所需要驱动)文件
# mkdir /tmp/initrd
# cp /mnt/usb/boot/initrd-2.6.18-164.el5xen.img /tmp/initrd
# cd /tmp/initrd
# zcat initrd-2.6.18-164.el5xen.img | cpio -i
# rm -rf initrd-2.6.18-164.el5xen.img
# find . | cpio -oc >> ../initrd.img
# gzip -9 /tmp/initrd.img
# \cp /tmp/initrd.img.gz /mnt/usb/boot/initrd-2.6.18-164.el5xen.img
4)完善各类配置文件
a)完善账号和密码
# \cp -a /etc/passwd /etc/shadow /mnt/usb/etc/
b)完善U盘的自动挂载fstab
# blkid /dev/sdb1
/dev/sdb1: UUID="2a59bc5c-7c35-4632-9db7-90bea7d9daf1" SEC_TYPE="ext2" TYPE="ext3"
# cp /etc/fstab /mnt/usb/etc
# vim /mnt/usb/etc/fstab
UUID="2a59bc5c-7c35-4632-9db7-90bea7d9daf1" / ext3 defaults 1 1
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
c)加载网卡的配置文件
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /mnt/usb/etc/sysconfig/network-scripts/
# vim /mnt/usb/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.0.253
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
d)完善用户的配置文件
# chroot /mnt/usb
bash-3.2# --找不到用户配置文件
bash-3.2# cp /etc/skel/.bash* /root --为root用户创建配置文件
bash-3.2# exit
[root@instructor etc]# chroot /mnt/usb
[root@instructor /]#
5)、部署grub mbr
1)安装grub
# wget ftp://192.168.0.254:/pub/Server/grub-0.97-13.5.i386.rpm -P /tmp
# rpm -ivh --force --nodeps --root=/mnt/usb /tmp/grub-0.97-13.5.i386.rpm
2)安装mbr
# grub-install --root-directory=/mnt/usb --recheck /dev/sdb
# ls /mnt/usb/boot/grub/ --确认mbr是否已经安装好
device.map ffs_stage1_5 minix_stage1_5 stage2 xfs_stage1_5
e2fs_stage1_5 iso9660_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
fat_stage1_5 jfs_stage1_5 stage1 vstafs_stage1_5
生成grub.conf文件
# cp /boot/grub/grub.conf /mnt/usb/boot/grub/
# vim /mnt/usb/boot/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title myusb system
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=UUID=2a59bc5c-7c35-4632-9db7-90bea7d9daf1 quiet
module /boot/initrd-2.6.18-164.el5xen.img
# cp /boot/grub/splash.xpm.gz /mnt/usb/boot/grub/ --复制图片
# sync --把U盘对应的脏数据写回U盘