linux 启动错误排查
2017-05-24 18:24
190 查看
-- troubleshooting 排错 winPE --光盘或u盘启动盘 产生一个PE系统(类似内存的临时系统) 系统排错 rescue 模式 (挽救模式) 类似windows winPE模式 ========================================================================= 问题一: 如果你的linux的root密码忘记了,怎么办? 答案: 使用单用户模式(系统启动级别为1)进行系统修改 在启动系统时,在grub选择界面按e,然后去第二行(也就是kernel开头的那行)再按e,去最后加一个数字1或者single单词。然后回车,按b 进入到1级别系统是不需要登录的,现在就可以password修改新的root密码,再重启用新密码正常登录了 这里也可以把/etc/passwd的第一行第二列的x去掉,然后重启就可以不用密码root登录了,再把x加回去,原密码又生效了(可以用此方法去同桌电脑做坏事) 问题二 如何防止别人用单用户模式进入我的linux系统 答案: grub加密 方法一:在安装系统时,直接设置 方法二: 安装没有设置,装完也可以再设置 # grub-md5-crypt --用此命令自定义一个密码,会产生一个密码字符串 Password: Retype password: $1$WgBpF/$eWCjkPXtaN6brJXcjeAEw0 # vim /boot/grub/grub.conf --然后加上password --md5 密码字符串在如下位置 default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz password --md5 $1$WgBpF/$eWCjkPXtaN6brJXcjeAEw0 title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=a907082e-7fa0-4547-acc1-86fafa58b512 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img 扩展一个小错误 default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=a907082e-7fa0-4547-acc1-86fafa58b512 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet password --md5 $1$WgBpF/$eWCjkPXtaN6brJXcjeAEw0 --加在这里是不能防别人进行单用户的,因为这一行是只能用密码锁住以下的行,所以这里并没有锁着kernel这一行 initrd /initramfs-2.6.32-431.el6.x86_64.img 注意:grub加密可以用rescue破解(因为rescue模式是使用与原系统无关的临时系统) ==================================================================================== 排错的一般思路:建议先可以尝试使用单用户排错,如果不行(有些错误甚至会造成单用户模式都进不了),再使用rescue模式(这个模式一定可以进,因为是使用与原系统无关的临时系统) 问题:怎么进入rescue模式 答案:因为我们要产生一个临时系统,所以一定需要系统iso镜像(需要把此iso做成光盘引导或u盘引导或网络引导);或者更简单总结一句话:就是能进入到安装系统第一步界面,选择Rescue installed system 问题:进行rescue模式后如何排错? 答案:一句话:进行这个临时系统后,想办法把原来错误系统挂载到临时系统,按需求进行修改排错 具体挂载实现方法主要有下面两种 方法一: 如果正常情况下,会把你要修复的系统的整个根目录(包含下级所有子目录)mount到临时系统的/mnt/sysimage目录下 chroot /mnt/sysimage 再去修改(或者不chroot) 这是不chroot,在临时系统上修改错误系统的/etc/fstab vi /mnt/sysimage/etc/fstab --这里的vi命令是临时系统的 这是chroot,在错误系统里修改它的/etc/fstab chroot /mnt/sysimage vi /etc/fstab --这里的vi是原错误系统的 exit 方法二: 有些情况下,没有mount到/mnt/sysimage fdisk -l 查看所有分区 然后自己手动建立目录用来挂载排错 例mkdir /aaa --一定要手动新建的目录,否则不能挂载 mount /dev/sda1 /aaa 在/aaa目录下排错就可以了 ==================================================================================== 系统简单启动过程: 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 @_@" >> /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/*
相关文章推荐
- 通过dump内存中printk的__log_buf地址查看Linux启动部分的错误
- 一个linux启动Eclipse不成功出现的错误
- linux red hat 5 启动错误
- Linux下用eclipse启动tomcat时端口被占用错误
- linux配置文件错误,无法启动进入系统 centos 6.21 Disconnected from system bus
- linux在启动时会出的错误(待解决)
- linux下tomcat服务的启动、关闭与错误跟踪
- Kernel panic - not syncing: Attempted to kill init(linux内核启动错误-arm)
- Tiny6410开发板linux启动错误 /init: line 102: can't open /r/dev/console: no such file 的解决方法
- linux 启动设备时出现 Stale NFS file handle 错误 解决方法
- Linux Eclipse 启动错误
- Linux启动时出错:Linux "could not open default font 'fixed'."错误解决
- Linux安装启动Domino的"Please edit your shell's DISPLAY environment variable..."错误
- Linux HA群集启动错误
- Linux启动错误:request_module: runaway loop modprobe binfmt-464c 的解决
- linux安装完mysql后启动错误
- Linux下环境变量错误,无法正常启动的解决方法
- /etc/fstab文件编辑错误卖到无法正常启动Linux
- Tiny6410开发板linux启动错误 /init: line 102: can't open /r/dev/console: no such file 的解决方法
- 使用fsck命令修复linux文件系统错误【避开引起系统崩溃,启动不了的"-a"选项】