作者: foxfair (.........) 看板: 386BSD 标题: [DOC]紧急救援状况的应变措施 时间: Sun May 2 18:36:27 1999
玩 FreeBSD 的各位,有没有常常『重灌』系统呢?
如果只是因为某些设定上的疏忽,比如说设错 root 或是某个 user 的 shell 路径,或是安装某些程式结果开机以後不能使用,或是 make new kernel 以後 变得无法开机,这些问题难道就都只有『重灌』一途可以解决吗?
当然不!请记住你现在不是在用 M$ "飞窗"系统,重灌只是属於鸵鸟的那种人 才会使用的解决方法。以下提供一点小 hint 告诉你怎麽在系统出问题的时候, 做出紧急应变措施,大部分的情形下我假设你已经进入(或是该说,只能进入) 单机模式(single user mode)。 ========================================================================== Q0: Ok, 什麽是单机模式?(Single user mode) 我该怎麽进入单机模式? Hint: 1.请记住 UNIX 系统(当然包含 FreeBSD)先天的设计上是多使用工作环境, 别人可以藉由 telnet 或是 rsh 或其他的远端签入程式连线过来使用你的 机器,单机模式简单的说,系统处於最原始的状态,所有有关网路方面的 service 都还没有跑起来,file system 也还没有 mount, 只有最原始的 系统组态被读入,然後由 kernel 开机进入 command line 这样而已。这 种类似浑沌初开的原始状态,就是单机模式。 2.进入单机模式,在 FreeBSD 的方法就是当你开机看到 boot: 提示号 时,马上打 boot -s 就可以了。如果你有装 boot loader, 在 loader 里面打 boot -s 也是一样的效果。
Q1: root(or other user)shell 设错,怎麽办? (类似这样的问题还有,密码忘记了等等) Hint: 1.开机进入单机模式。 2.用 vipw 改密码或 shell 路径吧! 3.或系统提示号 # 出现以後马上用 passwd 命令更改密码,这次请把密码抄 在女朋友的背上,刻在自己的额头上,或是用任何不会再忘记或找不到的 方法强迫自己记忆。
Q2: 开机到一半结果好像硬碟有问题,没有办法 mount 某个 partition 结果 就整个停住了,怎麽办? (类似这样的问题还有,把硬碟从 master 换到 slave, 或是相反的动作,或是 /etc/fstab 档里面写错一个 slice name 等等) Hint: 1.开机进入单机模式。 2.在系统提示号 # 出现後,打 /sbin/mount / 先把 root partition mount 起来。 3.然後改 /etc/fstab. 4.如果不确定有这个 device name, 或许你该去 /dev 下利用 MAKEDEV 这个 指令做出 dev 再说。比如说你把原本放在 primary master 的硬碟搬到 slave 去,device name 应该从 wd0->wd1, 但是你看 /dev 下没有任何叫 rwd1 的 device name, 你就应该这样做:
# cd /dev # ./MAKEDEV wd1
Q3: 单机模式下,键盘按键变得好奇怪,还有方向键(上下)不能拿来 repeat 以 前的命令,怎麽办? Hint: 1.在系统提示号 # 後面打 set -E 2.可以更换 shell, 因为单机模式是使用 /bin/sh 这个 shell, 你还是可以 使用自己习惯的 shell. 直接找到 shell 所在的目录,一般来说常用的就 是 /bin/csh, /usr/local/bin/tcsh; /usr/local/bin/bash 等这几种。
Q4: 单机模式下,我要使用 /stand/sysinstall 或是 ee 等程式的时候,系统告 告诉我 Unknown terminal type, 怎麽办? (同样的问题还有,vi 不能使用,说 terminal 不对等等...) Hint: 1.set TERM=cons25 2.done.
Q5. 我的硬碟里面好像有坏轨,结果不能正常开机进入单机模式了,怎麽办? Hint: 1.进入单机模式以後, 2.用 fsck -y 命令先检查看看,如果有坏轨就用 bad144 或其他 repair 程式去扫描修复。
Q6. 我的 kernel 不能开机了,怎麽办? Hint: 1.在 boot: 提示号出现的时候,直接打 kernel.GENERIC 或是 kernel.old 用旧的 kernel 来开机。再怎麽样,kernel.GENERIC 都一定要可以用。 2.有装 boot loader 的人,可以在 loader 里面先下 load kernel.GENERIC 的命令读取这个 kernel, 然後用 boot 命令启动系统。 |