rpm and kickstart
 The RPM Way
 不会有互动事件
 可以适用在所有软件,如kernerl和其他额外的软件都可以以rpm的形式
 不需要安装前面的版本才能安装后面的版本
 RPM Packge manager
 RPM components
 local database /var/lib/rpm
 rpm and related executables
 package files
 primary functions
 install/remove
 query
 verify
 build
 installing and removing software
 Primary RPM options:
 install: rpm -i,–install 没有旧版本就会安装,如果有旧版本,会同时留下新旧版本,通常用在kernel的安装
 upgrade: rpm -U,–upgrade 没有旧版本就会安装,如果有旧版本就会删除旧版本,安装新版本,用在安装应用软件,旧版本没有必要留下来或不会再用的情况下.甚至有的应用程序只允许留下一个版本
 freshen: rpm -F,–freshen 如果没有旧版本就不会安装,如果有旧版本删除旧版本,留下新版本,一般用在更新现有的系统.
 erase: rpm -e,–erase 删除
 output options:-v -h 显示安装进度的配合选项
 iostat 需要安装sysstat-5.0.5-1.i386.rpm
 支持url,ftp安装如:ftp:// http://
 rpm -Uvh ftp://192.168.0.254/pub/sysstat-5.0.5-i.i386.rpm
 updating a kernel PRM
 don’t use rpm -U,rpm -F,旧版本会删除掉,我们不能确定新版本能用,建议留下旧版本,安装新版本后就会在grub.conf里添加一个kernel,也就是说可以使用rpm更新内核。
 rpm -ivh kernel-version.arch.rpm
 boot new kernel to test
 revert to old kernel if problems arise
 rpm -e kernel-oldversion if no problems
 rpm queries
 installed package options:
 rpm -qa lists installed packages
 rpm -qf filename shows owning package 显示档案是哪个套件安装的
 rpm -qf /bin/gzip
 rpm -qi package_name general information 套件信息
 rpm -qi gzip
 rpm -ql package_name lists files in package 列出套件里包含哪些档案
 rpm -ql gzip
 uninstalled package options:
 rpm -qip package_file.i386.rpm 显示未安装的套件档案的信息
 rpm -qlp package_file.i386.rpm 显示未安装的套件档案包含哪些档案
 rpm verification
 installed rpm file verification
 验证rpm套件有没有被修改过
 rpm -Va 验证所有安装的档案有没有修改过,跟rpm database比较
 rpm -V package_name 验证某一个档案有没有被修改过,跟rpm database比较
 rpm -Vp package_file.i386.rpm 验证某个跟rpm包进行比对
 signature verification BEFORE package install
 在安装档案之前可以验证这个档案有没有经过redhat签署
 其实redhat在发布rpm的套件时会在其中签署一个GPG的签章
 rpm --import RPM-GPG-KEY 导入gpg指纹档,记录各个rpm档案的签署资料
 rpm --qa gpg-pubkey 查询gpg有没有导入成功
 rpm --checksig package_file.i386.rpm 查询某rpm档案有没有经过redhat签章
 看到OK就是经过签章的.
 other rpm utilities and features
 rpm2cpio 将rpm格式的档案转换成cpio类型的档案,rpm的档案是有root才有权限使用,转换后就可以让给普通用户使用了.转换后比较大
 rpm2cpio sysstat-5.0.5-1.i386.rpm > sysstat.cpio
 可以使用cpio -it < sysstat.cpio 导入进来。
 执行完以后可以查询cpio里有哪些档案,里面都是以相对目录存储,一般我们解开cpio的档案建议新建一个文件夹并拷贝进去
 cpio -id < sysstat.cpio
 rpmdb-redhat 记录rpm相依性套件
 system-config-packages
 automatic dependency resolution
 如何自动安装相依性的套件
 1要使用rpmdb-redhat这个软件的资料库
 2所有相依性的rpm必须放在同一个目录
 3加上–aid参数
 如:rpm -ivh abc.rpm --aid
 red hat network(RHN)
 提供red hat e-paper
 警告我们哪些套件需要更新
 red hat update agent
 using kickstart to automate installtion使用kickstart自动安装redhat linux
 使用kickstart自动安装,需要安装此套件
 kickstart %packages
 要安装的套件
 kickstart %pre %post
 安装之前和之后要执行的scripts
 network installation server
 必须通过网络,可以通过NFS,FTP,HTTP的方式。
 必须将redhat的安装光盘全部拷贝到服务器上。
 架设好网络安装服务器后,把第一张光盘插入客户端启动,把ks.cfg拷贝到软盘
 启动后输入linux ks=floppy
 user administration
 user policy considerations
 有多少人会使用,是不是要限制事件或地点
 密码多久要更改一次
 是否限制CPU和memory
 是否限制硬盘空间
 the user account database - /etc/passwd
 档案里存储了系统账户资料,每个用户占用一行
 less /etc/passwd
 按v进入编辑模式
 chfn更改用户finger
 这个文件权限rw-r–r–
 passwd的用户名后面的x去掉后次用户登录就不需要密码了
 shell是/sbin/nologin,那么此用户不能登录系统但是可以登录本机的ftp
 shell是/bin/false,那么此用户仅可以收发邮件。
 adding a new user account
 useradd username
 系统实际上去编辑
 /etc/passwd,/etc/shadow,/etc/group
 create and populate home directory
 set permission and ownership
 set account password using passwd
 /etc/skel默认的用户/home文件,文件几乎一样,不同的是ownership不一样
 使用newusers建立大量用户,编辑aaa,依照passwd格式填写
 vi aaa
 user4 user4:503:503::/home/user4:/bin/bash
 user5 user5:504:504::/home/user4:/bin/bash
 newusers aaa
 使用newusers建立用户的时候只会建立home目录而不会复制skel的内容
 user private groups(UPG)
 在建立账户的同时,为这个账户建立一个同名的私有组,并把这个帐号加入到这个私有组来.所有以此账户建立的文件的组权限都会有这个私有组.防止此账户新增的档案不属于任何一个群组。
 group administration
 entries added to /etc/group
 groupadd
 groupmod
 groupdel
 modifying /deleting accounts
 修改用户资料
 修改/etc/passwd
 使用命令usermod
 更改用户home
 mkdir /home/test-6
 chown test6:test6 /home/test-6
 usermod -d /home/test-6 test6
 后面跟新的家目录
 usermod -G group1 test6 把用户加入到其他群组
 usermod -g group2 test6 更改用户主要群组
 usermod -L test6 锁定test6账户,实际上是更改/etc/shadow密码字段前加!
 如果是!!表示这个用户还未设置密码
 usermod -U test6 解除锁定
 删除用户
 手动方式编辑/etc/passwd,/etc/shadow,/etc/group,/var/spool/mail/username
 命令方式userdel -r test6,使用userdel命令不会删除/etc/group里test6组的内容,可以使用groupdel test6
 password aging policies 
 默认情况下,密码永远不会过期
 为安全考虑,可以强制多长时间修改一次密码
 更改/etc/login.defs设置默认用户密码有效期
 也可以使用chage [option] user变更密码时间相关参数
 chage -l user6查看账户密码信息
 chage -I 3 user6 密码过期几天后锁定用户帐户,默认是-1。
 login shell scripts
 /etc/profile
 /etc/profile.d/*.sh
 ~/.bash_profile
 ~/.bashrc
 /etc/bashrc
 non login shell scripts
 ~/.bashrc
 /etc/bashrc
 /etc/profile.d/*.sh
 
switching account
 syntax
 su [-] [user]
 su [-] [user] -c command 如果只要以某个用户身份执行某个命令
 允许暂时切换成别的账户工作,默认情况下,不指定是root
 su
 su -
 [-] 是切换到新的用户,并开启一个login shell,如果不加-,只是切换到新用户,开启一个no login shell
 sudo
 让一般的用户可以执行只有root才可以执行的指令
 可以在/etc/sudoers文件里定义某一个特定的账户可以执行某一个特定的只有root可以执行的指令
 an effective user id of 0
 group id of root’s group
 /etc/sudoers没有定义的账户使用sudo时,会通知root
 vi sudoers只读方式
 visudo sudoers 编辑
 network users
 我们可以把用户资料集中存储在网络上一台服务器上,资料包括:UID,default shell,home directory,group memberships,and so on,可以是NIS或LDAP服务器
 vi /etc/nsswitch.conf
 paaswd
 shadow
 group 
 authentication configuration
 system-config-authentication GUI界面
 如果在命令后加–nox 会开启文字界面
 authconfig命令直接使用文字界面
 支持一下几种认证服务器:
 (local files),NIS,LDAP,Hesiod,Winbind
 支持认证方式:
 (NSS),Kerberos,LDAP,SMB,winbind(MS AD)
 NIS configuration(配置NIS服务器验证用户身份)
 Must install ypbind and ypserver and portmap RPMs
 run system-config-authentication
 enable NIS to provide user information
 specify NIS server and NIS domain name
 keep default authentication
 what does this actually do?
 four text-based configuration files are changed
 /etc/sysconfig/network NISDOMAIN
 /etc/yp.conf NIS server for NIS domain
 /etc/nsswitch.conf use NIS
 /etc/pam.d/system-auth shadow NIS
 LDAP configuration 
 Must install nss-ldap and openldap RPMs
 Run system-config-authentication
 enable ldap to provide user information
 specify server,the search base DN and TLS
 enable LDAP to provide authentication
 The purpose for using authentication tool
 four text-based configuration files are changed
 /etc/ldap.conf
 /etc/openldap/ldap.conf
 /etc/nsswitch.conf
 /etc/pam.d/system-auth
 file ownership
 every file has both user and group “ownership”
 a newly create file will be owned by:
 the user who create it
 the current primary group of that user
 sgid directories may change this behavior
 the chown command can be used by root to change ownership
 linux file permission
 access levels
 u user
 g group
 o other
 access modes
 w write
 r read
 x execute
 flags indicate access mode for each access level
 file mods is a concise collective of flags’values expression
 d directory
 - file
 sudi /sgid executables
 
默认情况下,用户执行一个可执行文件的时候会以自己的身份执行,但是设置了SUID或SGID的时候,用户分别会以用户所有者身份和所属组身份执行
 the sticky bit
 如果使用者在一个目录上有write权限的话,那么不论在文件上有哪些权限,也不管文件的所有者是谁,使用者都可以删除掉目录里的档案,但是如果在目上设定了sticky权限后,那么在这个目录里的档案只有档案的所有者可以删除自己的档案.
 the setgid access mode
 默认情况下,使用者在目录里建立的档案会属于预设的群组,但是如果在这个目录上设置了SGID权限的话,那么,使用者在这个目录里建立的档案都会属于这个目录所属的群组
 default file permission
 当我们建立文件或目录是,系统会把所有权限放开给所有人,但是还要经过umask的计算
 non-system user’s umask 002
 files will have permission of 664
 directories will have permissionm of 775
 support user private groups
 system user’s umask 022
 /etc/bashrc里定义了umask
 有个判断的语句,判断用户与所属组是否一致,一致为022,不一致022
 access control lists(ACLs)
 Grant RWX access to files to multiple users or groups
 ACLs 可以针对某些特定的使用者或者是组来设定对某一个特定文件或一个特定目录的权限
 vi fstab
 LABEL=/ / ext3 default,acl 0 0
 getfacl /opt 查看目录的acl设置
 setfacl 设定acl
 setfacl -m u:user1:r-x /project1
 在project1目录上为user1开放r和x权限
 printing and administration tools
 CUPS Overview
 common unix printing system
 支持*.html *.pdf *.jpg…等格式
 CUPS configuration files
 /etc/cups/cupsd.conf
 /etc/cups/printers.conf
 lpadmin
 system-config-printer
 cups web界面形式
 CUPS queue management
 system-config-printer
 system-config-printer-tui
 http://localhost:631
 cron
 可以让系统在指定的时间去做某个工作
 man crontab
 man 5 crontab
 蓝色是一组,红色是一组,中间是or的关系
 
日期和星期之间是or连接的
 crontab的任务是在背景中执行的,比如echo命令也是不会显示在终端上的,执行完毕后会发一封邮件给root
 controlling access to cron
 /etc/cron.allow
 /etc/cron.deny
 限制哪些人可以使用cron
 
system crontab files
 /etc/crontab
 系统里的crontab文件,系统所使用的crontab存在以上这个文件里。
 02 4 * * * root run-parts /etc/cron.hourly
 使用root身份执行/etc/cron.hourly目录下所有的脚本
 /etc/cron.hourly
 /etc/cron.daily
 /etc/cron.weekly
 /etc/cron.monthly
 system cron job: tmpwatch
 /etc/cron.daily/tmpwatch
 系统每天都会执行这个scripts
 man tmpwatch 清除系统很长时间没有存取的档案
 默认情况下tmpwatch会判断文件的atime,查看是否要清除这个文件。
 system cron job: logrotate
 /etc/cron.daily/logrotate 压缩并邮寄系统的log文件
 可以通过/etc/logrotate.conf来设定logrotate
 默认情况下每周压缩备份系统log,保存在/var/log/messages
 system logging
 系统里有2个服务负责系统日志的记录,
 syslogd负责记录应用过程序产生的log,
 klogd负责记录kernel产生的log
none<debug< info<notice<warning<error<critical<alert<emerg
none :不记录日志
 debug:调试信息,系统进行调试时产生的日志,不属于错误日志,不需要过多关注。
 info: -般的通知信息,用来反馈系统的当前状态给当前用户。
 notice :提醒信息,需要检查一下程序了,不理会可能会出现错误。
 warning:警告信息,当出现警告时,你的程序可能已经出现了问题,但不影响程序正常运行,尽快进行处理,以免导致服务宕掉。
 error :错误信息,出现这一项时,已经挑明服务出现了问题,服务都无法确认是否能正常运行。
 critical :比较严重的错误信息,服务已经宕了,可能已经无法修复。
 alert :警报信息,需要立即采取行动,不仅是服务宕了,还会影响系统的正常后动。
 emerg :紧急信息,系统可能已经不能使用了,如果不能解决,就重新装机吧。
syslogd和klogd依据/etc/syslog.conf里面的设置来判断是否要记录及记录什么等级的log
 系统log在/var/log里分类存储
 syslog configuration
 /etc/syslog.conf
 mail.* - /var/log/mailog “-是现将mail的log存储在ram的buffer里,等到一定数量后再存储到硬盘,通常log档案很大时才使用这样的方式。
 *.emerg * 任何程序产生emerg级别的log后显示给所有的用户,*代表所有用户
 local7.* /var/log/boot.log 记录系统引导时产生的log
 如果想把log传输到其他服务器上去的话,修改/etc/syslog.conf
 authpriv.* @server1
 还必须在server1上设置可以接受其他服务器传过来的log
 vi /etc/sysconfig/syslog
 SYSLOGD_OPTIONS=”-r -m 0”
 tape drives
 (DAT:digital autdio tape DDS:digital date storage DLT:digital linear open)
 /dev/stN
 如果系统检测到有scsi的tape设备的话,会放到以上的目录。
 /dev/[n]stN
 没有自动回带的scsi tape设备 
 man st
 /FILES
 /dev/st* : the auto-rewind SCSI tape devices
 /dev/nst* : the non-rewind SCSI tape devices
 man mt
 mt是控制磁带机的磁头的
using tar
 用来把一个目录或文件打包并压缩成一个档案
 man tar
 tar -czvf /var/home.tar.gz /home
 tar -tf /var/home.tar.gz
 tar xzf home.tar.gz
 using dump/restore
 dump可以备份ext2/3 格式的文件系统,也就是可以备份整个分区
 dump 可以不同级别的备份。
 A level 0, full backup, guarantees the entire file system is copied (but see also the -h option below).A level number above 0,incremental backup,tells dump to copy all files new or modified since the last dump of a lower level. The default level is 9
 0是全备份,incremental backup备份上次备份以来变化的数据,,dump根据levels来判断上次备份时间,备份最近一次比此次level低的数据。
通常会02143来备份,是为了容易恢复文件。
 dump -0 -u -f ~/backup /dev/sda1
 -f是指定要备份到哪里,如/dev/st0 (a tape drive),/dev/rsd1c (a floppy disk drive), an ordinary file, or - (the standard output)
 -u dump的level是靠/etc/dumpdates来记录的,-u是要更新dumplevel里面的记录。
 using cpio
 可以从打包好的档案里复制里面的内容,也就是解压缩打包好的档案,或者是向打包好的档案里添加内容
 -i Run in copy-in mode,copy-in模式是从一个打包好的档案里复制里面包含的内容,也就是解压一个打包好的档案。
 -o Run in copy-out mode,copy-out是把其他的答案复制到一个大包好的档案里面去,也就是把档案打包。
 -t 列出一个打包好的档案里包含哪些文件。
 find /test/ | cpio -o > test.cpio
 使用cpio打包test档案。
 cpio -it < test.cpio
 查看cpio里面的内容
 cpio -id < test.cpio
 解压档案,必须解压到没有原始档的目录,也就是说没有重名的文件夹。
 remote backups
 usrname@hostname:/path
 tar -czvf root@example1:/var/home.tar.gz /home 把本地的home备份到远程主机
 dump -0uf root@example1:/var/home.dump /home把本地的home备份到远程主机
 the X window system
 Xorg:the X11 server,X是一种协议,用来定义图形化的基本功能和通讯方式 。
 X11(binary code)负责和底层的硬件输入输出设备通讯的程序
 X Server
 X Client
 Xorg Server Configuration
 通常在安装完成后系统会自动执行x server的设定工具
 in runlevel 3:system-config-display可以开启Xserver的设定工具
 可以用runlevel确定runlevel
 X window in runlevel 3
 在runlevel 3中是怎么启动X window
 startx
系统先判断有无~/.xinitrc,如有执行这个档案的设置,再执行/etc/X11/xinit/xinitrc.d/*下的脚本;如无则执行/etc/X11/xinit/xinitrc档案设定,默认情况下是没有~/.xinitrc的。当脚本执行完毕后,检查有无~/.Xclients,如有执行里面设置,再执行desktop设定,如无则执行Xclients
 X window in runlevel 5
 在runlevel 5的环境中怎么启动X window的
remote x sessions
 该怎么使用远端X Server的服务
 使用ssh -Y 192.168.8.100
 root@192.168.8.100’s passwd:
 last login:Thu Oct 20 16:39:50 2008 from ns.domain.com
 [root@example ~]xterm #在远端提示字符下输入要使用的图形界面程序如xclock或xterm
 advanced filesystem management
 software RAID configuration
raid5 xor运算得到一个值
 software RAID用分区模拟硬盘实现RAID
 在硬盘上分相同大小的2个分区,标签为fd,fdisk /dev/sdb 增加2个partition
 mdamd -C /dev/md0 -l 0 -n 2 /dev/sdb2 /dev/sdb3
 cat /proc/mdstat
 mke2fs -j /dev/md0
 mkdir /raiddata
 ls -l /raiddata
 mount /dev/md0 /raiddata/
 ls -l /raiddata/
 df -h
 software RAID recovery
 mdamd /dev/md0 -f /dev/sdb2 模拟onsdb2坏掉
 mdamd /dev/md0 -a /dev/sdb2 增加一个新的分区到rai里。
 converting LVM1 to LVM2
 Logical Volume Manager
 PV—VG—类似格式化,得到PE(Virtual Disk)—划分LV以后才能存资料
 使用lvm的好处是可以动态扩大lv
 vgconvert -M2 vg0 把lvm1转化为lvm2
 creating logical volumes
 新建2个分区,变更分区类型:8e
 w退出,提示重启生效,也可以使用partprobe命令
 pvcreate /dev/sdb5 #把分区转换成PV
 pvcreate /dev/sdb6 #把分区转换成PV
 vgcreate vg1 /dev/sdb5 /dev/sdb6 #创建vg1
 lvcreate -L 30M -n lv01 vg1 #建立30m的名为lv01的lv。
 ls -l /dev/vg1/
 mke2fs -j /dev/vg1/lv01 #格式化lv01对应的logic volume
 mkdir /lvmdata
 ls -l /lvmdata
 mount /dev/vg1/lv01 /lvmdata
 vi /etc/fstab
 resizing logincal volumes
 放大LV
 lvextend -L +20M /dev/vg1/lv01
 df -h
 放大后还没有格式化,所以用df -h查看lv01还是30M
 ext2online /dev/vg1/lv01 #用ext2online格式挂载的文件系统
 df -h
 放大VG
 建立新的分区,修改分区类型8e,partprobe
 pvcreate /dev/sdb7 #创建pv
 vgextend vg1 /dev/sdb7 #扩大vg1
 vgdisplay vg1 #使用vgdisplay查看是否扩大了vg1
 删除VG
 先删除掉lv,删除lv先umount,umount /lvmdata
 df -h
 lvremove /dev/vg1/lv01 #删除lv01
 vgremove vg1 #删除vg1
 vgdisplay vg1 #提示vg1不存在,证明vg1已经被删除掉了
 the linux quota system
 磁盘配额
 可以在每个文件系统上使用配额,根据用户,组设定限制内容。
 必须在挂载文件系统是加上不同的参数:usrquota grpquota
 可以限制blocks数量(硬盘空间)和indoes数量(建立文件和目录的数量)
 soft limit(临时超过配额)
 grace period(多长时间,默认一周)
 hard limit #grace period过后就会变成hard limit
 必须在fstab里加入相应的参数
 在需要加配额的目录后加入defaults后加usrquota或grpquota
 vi /etc/fstab
 mount -o remount /home
 quotacheck -c /home #扫描home目录,并把资料存放到这里。
 ls -l /home
 目录里多个了aquota.user
 quotaon /home
 使用user1登录
 dd if=/dev/zero of=big bs=1M count=6
 ls -lh
 使用root
 edquota user1
 开启user1用户quota的配置
 修改后保存退出
 su - user1
 quota
 ls -lh
 dd if=/dev/zero of=big1 bs=1M count=3
 dd if=/dev/zero of=big2 bs=1M count=3
 ls -lh
 edquota -p user1 user2
 把user1的配置复制给user2
 repquota -a
 troubleshooting
 troubleshooting
 排除故障的原则
 当出项问题时只会出现症状,而不会告诉我们问题出在哪里
 所以尽量收集症状的信息来定义系统发生了什么问题
 还要定义好系统里有哪些功能是正常的
 相关信息收集完毕后才可能假设问题的原因是什么
 我们可以根据log文件来查看到底是不是这个原因造成的问题
 如果必须修改设置才能排除问题的话,在修改之前最好把原来的件备份起来
 things to check:x(当x window发生问题时)
 不要在runlevel 5下排除故障
 重启进入runlevel 3下排除
 system-config-display看能不能打开x设置的工具,如果不行的话,问题可能在显卡
 使用X -probeonly来检查显卡,使用/etc/X11/xorg.conf配置来测试能不能启动x server,并把日志记录在/var/log/Xorg.0.log
 如果显卡没有问题的话,看一下/home和/tmp目录是不是满的。
 df -h /home
 df -h /var
 检查xfs服务有没有启动
 service xfs status
 things to check:networking
 hostname resolution
 dig hostname
 ip configuration
 ifconfig
 default gateway
 route -n
 correct kernel modules for NIC
 cat /etc/modprobe.conf
 device activation 重启
 ifdown eth0
 ifup eth0
 order of the boot process开机发生问题的时候排除故障流程
 bootloader configuration
 GRUB
 kernel
 有没有正确的载入内核
 panic
 开机时发生panic的话则是表示根目录没有挂载成功
 检查/sbin/init和/etc/inittab
 检查根目录是否损坏
 /etc/rc.d/rc.sysinit没有执行成功的话
 有可能/bin/bash有损坏或/etc/fstab设置有误
 检查/etc/rc.d/rc
 及/etc/rc.d/rc?.d/目录里面的scripts有没有问题
 filesystem corruption
 文件系统故障通常是不正常关机导致的
 首先unmount the filesystem
 fsck -y
 比如/home系统有问题
 umount /home
 ls /home #目录必须是空的才能确认/home被卸载了
 fsck -y /dev/sda2 #/home对应/dev/sda2
 mount /dev/sda2 /home
 ls /home
 recovery run-level
 single user mode
 runlevel 1 进入方法:a键修改启动菜单,ro root=LABLE/ 1
 runlevel S 进入方法:开机出现welcome to red hat enterprise linux es
 press ‘I’ to enter interactive startup
 会一个一个提示要不要启动某项服务
 runlevel emergency 进入方法:/etc/fstab设置错误的时候就会进入或文件系统 损坏。emergency模式下命令要用绝对路径才能找到
 some /etc/rc.sysinit也就是nologin模式
 rescue mode
 当根目录所在的文件系统损坏或boot loader遭到破坏的时候
 boot from CDROM
 可以使用第一张光盘引导,或把里面的boot.iso烧录到光盘上
 或者可以把里面的diskboot.img拷贝到USB key中
 使用以上方式启动后才可以使用命令进入到rescue mode
 rescue mode会尝试找到根目录所在的文件系统并把根目录挂载到/mnt/simage目录里
 模拟MBR损坏的时候:
 dd if=/dev/zero of=/dev/sda bs=446 count=1 #破坏MBR,重启后只出现一个光标
 修改setup,用光驱启动,放入第一张光盘,在boot:提示符下输入
 linux rescue
 尝试找到根目录,并挂载到/mnt/sysimage
 按照提示完成进入sh-3.00#
 输入grub-install /dev/sda
 会提示找不到命令,这是因为dev在根目下面,而根目录挂载到/mnt/sysimage目录去了,所以使用chroot /mnt/sysimage/命令在使/mnt/sysimage目录当成根目录
 然后使用命令grub-install /dev/sda
 exit #退出change root机制
 exit #退出 rescue mode
 模拟当根目录所在的文件系统出问题的时候:
 根目录所在的文件系统损毁不一定是真的文件系统损毁,有可能是系统找不到根目录。
 vi /etc/grub/grub.conf破坏grub设置
 比如删除kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet这一行,这样系统在开机的时候就找不到根目录



















![[oeasy]python0043_八进制_oct_octal_october_octave](https://img-blog.csdnimg.cn/img_convert/5122264eb7a1275ed77fbedddfa20c19.png)