Jul 6

[原]Asianux 4.0 的拯救模式 晴

linuxing , 15:47 , 基础知识 » 故障处理 , 评论(0) , 引用(0) , 阅读(34853) , Via 本站原创 | |
    当系统出现问题时,我们会进入拯救模式以便进行修复。但Asianux 4.0取消了NetCat(简称nc),导致网络备份文件比较麻烦。幸好,其把sshd加进入了,所以,我们可以打开SSH服务,来满足需要。

一、进入拯救模式
用光盘引导系统,在选择菜单按“R”,或选择“Rescue installed system”:
点击在新窗口中浏览此图片
还有,可以按旧方法,用Tab切换到编辑模式,然后再最后输入rescue,也行。
选择安装介质来源:
点击在新窗口中浏览此图片
激活网络:
点击在新窗口中浏览此图片
设定网卡:
点击在新窗口中浏览此图片
挂载分区:
点击在新窗口中浏览此图片
选项意思如下:
引用
Continue 可直接把本地硬盘的根分区挂载到/mnt/sysimage目录下;
Read-Only 会以只读的方法挂载本地硬盘根分区,以便备份数据;
Skip 不挂载;
Advanced 挂载SAN等外接设备。

假设您选择的是“Continue”,会提示:
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片
进入Shell状态:
点击在新窗口中浏览此图片

二、打开ssh 服务
有两种办法:
1、手动创建SSH证书
执行下面的命令:

# cd /etc/ssh/
# ssh-keygen -q -t rsa1 -f ssh_host_key -C '' -N ''
# ssh-keygen -q -t rsa -f ssh_host_rsa_key -C '' -N ''
# ssh-keygen -t dsa -f ssh_host_dsa_key -C '' -N ''

接着,你就可以启动ssh 服务了:

# /bin/sshd -f /etc/ssh/sshd_config.anaconda

结果如下:
点击在新窗口中浏览此图片
这时,就可用putty等工具直接访问。(用户名为root,不需密码)
点击在新窗口中浏览此图片

2、从本地硬盘中获取SSH的证书文件
若能直接访问本地磁盘分区,你也可以直接拷贝已有的证书:

# cd /mnt/sysimage/etc/ssh/
# cp ssh_host_* /etc/ssh/
# /bin/sshd -f /etc/ssh/sshd_config.anaconda

三、修复Grub
执行下面的命令,可对Grub进行修复:
引用
# grub
grub> find /boot/grub/stage1
find /boot/grub/stage1
(hd0,0)
grub> root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  26 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+26 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit

四、重建系统SELinux标记
Asianux 4.0 默认打开SELinux,若在配置时关闭了该服务,后来重新打开,需要对系统中的文件进行标记。
这可通过在拯救模式下,运行restorecon命令对指定的目录或文件操作。
如果文件数量很多,则建议让系统自行标记。只需在系统根目录下建立一个.autorelabel 的文件:

# touch /mnt/sysimage/.autorelabel

那么,系统再重新启动后,会自动执行打标记的动作:
点击在新窗口中浏览此图片

五、补充
如果以“Continue”模式挂载了本地磁盘根分区,那么,anaconda 会自动引用本地系统中的执行文件目录:
引用
# echo $PATH
/tmp/product:/tmp/updates:/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin:/mnt/sysimage/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/X11R6/bin:/sbin:/usr/sbin

也就是说,你可以用本地系统的命令,如nc、lsof、netstat 等:
引用
# type nc
nc is /mnt/sysimage/usr/bin/nc
# type lsof
lsof is /mnt/sysimage/usr/sbin/lsof
# type netstat
netstat is /mnt/sysimage/bin/netstat

这是比较方便的。不过,ssh 状态并不会这样做,你可以手动配置一下环境变量:
引用
# export PATH=/tmp/product:/tmp/updates:/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin:/mnt/sysimage/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/X11R6/bin:/sbin:/usr/sbin

※ 注意,若本地的执行文件有异常(如中毒等),请不要执行这操作。
Tags: , ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]