BIOS(启动顺序)--》读取硬盘mbr--》加载grub--》加载vmlinuz和initramfs--》读inittab--》读fstab---》启动各个服务(按照inittab里定义的级别)--》rc.local--》如果是5级别,启动图形--->系统登录(passwd,shadow)
具体排错实例(mbr丢失如何排错):
mbr(master boot loader主引导记录,在硬盘最前面的512字节)446(启动设备)+64(分区信息)+2(结束位)
mbr丢失,现象:启动时候黑屏,左上角一个光标在闪(或者直接就进入到了第二或第三的启动顺序,由光驱或网络进入了系统安装界面)
最好使用一个虚拟机来做此实验
第一步:
dd if=/dev/sda of=/mbr.bak bs=1 count=512 --备份mbr
第二步:
把备份scp拷到别的机器或者移动存储设备(我这里使用scp拷贝到我的宿主机,过程省略)
第三步:
模拟干掉mbr
dd if=/dev/zero of=/dev/sda bs=1 count=512 --干掉mbr
做完第三步后的现象
fdisk -l 查看不到分区信息
reboot后,系统进不了,黑屏,并且一个光标在闪(BIOS里只有硬盘启动,没有光驱,网络启动的情况下才会这样。否则就进入了第二启动顺序引导)
第四步:
按前面总结的方法:先尝试单用户模式,再使用rescue模式.但现在mbr丢失的现象是grub都看不到,所以也不可能进入单用户模式了,只能使用rescue模式
第五步:
--按完continue后,这里出现了“分区表不可访问,是否重新擦除所有硬盘上的信息"的提示;所以这里按no,进入到了挽救模式;但是这里原系统没有挂载到/mnt/sysimage上,并且fdisk -l查看不到分区,ls /dev/可以看到分区名,但挂载不了;也就是说找不到以前的mbr备份,无法恢复
--注意:rhel6.5里如果按continue,会报找不到disk(因为mbr丢失的原因,其它的错误,选择continue是正常的),无法进入到挽救模式的命令行模式;可以按skip,就可以进入到命令行模式
--所以,mbr备份到U盘这种外接设备,现在就可以挂载进行恢复
dd if=/path/mbr.bak of=/dev/sda
--或者进入带网络的挽救模式,通过网络拷过来进行恢复;但要在临时系统使用scp远程拷过来,因为它本身没有ssh服务,但可以使用scp使用别人的ssh服务。
============================================================================
实践练习:
使用一个硬盘12G以上大小的虚拟机安装排错系统,桥接网络(基于rhel6.5版本):
获取服务器IP:172.16.2.9
安装名:troubleshooting
最终实现登录进系统,安装图形,无错误,还要要求能够上外网,并能被ssh连接
文件/etc/securetty
如果一个os,没有yum,没有rpm,连gcc这种都没有(表示你没办法源码编译),那么你怎么装包上去?
答案:
rpm --root=/xxx
yum --installroot=/xxx
rm -rf /root/anaconda-ks.cfg
rm -rf /bin/mount
rm -rf /usr/bin/yum
rm -rf /boot/grub/grub.conf
rm -rf /etc/fstab
rm -rf /usr/bin/nautilus
rpm -e --nodeps rpm-4.8.0-37.el6.x86_64
echo "echo 123 |passwd --stdin root &> /dev/null" >> /root/.bash_profile
echo "export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/root/bin" >> /root/.bashrc
sed -i ‘s/sda/sdb/‘ /boot/grub/device.map
sed -i ‘/^export/d‘ /etc/profile
sed -i ‘/^host/s/dns//‘ /etc/nsswitch.conf
chmod o-t /tmp
chmod 000 /
echo "* * * * * root wall ‘haha‘" >> /etc/crontab
echo "01 * * * * /sbin/init 0" >> /var/spool/cron/root
sed -i ‘12aport 222‘ /etc/ssh/sshd_config
echo "TMOUT=30" >> /root/.bashrc
echo "find me @[email protected]" >> /etc/motd
sed -i ‘/^root/s/bin/in/g‘ /etc/passwd
sed -i ‘5asleep 100‘ /etc/rc.d/init.d/network
sed -i ‘1s/yes/no/‘ /etc/sysconfig/network
sed -i ‘20s/fi/hahahaha/‘ /etc/profile
mv /lib64/libselinux.so.1 /lib64/libselinux.so.1.bak
echo "/sbin/init 6" >> /etc/rc.local
chattr +i /etc/rc.d/rc.local
chattr +i /etc/passwd
chattr +i /etc/shadow
chmod u-s /usr/bin/passwd
echo "tty2" > /etc/securetty
echo "sshd: all" > /etc/hosts.deny
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
dd if=/dev/zero of=/dev/sda1 bs=1 count=1024 seek=1024
rm -rf /root/cobbler.ks
rm -rf /root/*
#######################################################################
rhel6下vnc基本配置
方法一:
# vino-preferences --此命令打开图形界面进行配置(但这个需要公网网络稳定才能运行稳定)
方法二:
# vncpasswd --设置密码,默认保存到/root/.vnc/passwd
Password:
Verify:
# x0vncserver --PasswordFile=/root/.vnc/passwd --AlwaysShared=on --AcceptKeyEvents=off --AcceptPointerEvents=off &
原文地址:https://www.cnblogs.com/skyzy/p/9201256.html