LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1827|回复: 7

【毁灭小贴士】Debian 系统 chroot 急救术

[复制链接]
发表于 2008-7-5 01:53:22 | 显示全部楼层 |阅读模式
前言

这是一个小技巧,技术含量不算高,只想把前几天修理系统的一点心得分享一下而矣,四方高人请勿掷鸡蛋 :)

先决条件:
1. 网络必需正常
2. 待修理(处理)系统的 apt-get、dpkg 命令能正常使用
3. Linux LiveCD 一张作启动盘

万一受损系统不能使用 apt-get、dpkg,那麽可能要先用此法先行修理了
[color="Blue"]用 Knoppix 修理 Debian 系统

情景

办工室原有一台用作打印机服务器的 Debian 系统硬盘传输线突然坏了,引起不寻常的数据丢失,部份系统文件也损毁了,系统也无法起动。硬件修理的部份就不作描述了,主要分享的是软件修理的过程。

待修理(处理)系统分区布局如下:
sda1 /
sda2 /var
sda3 swap

修理部骤

1. 用 Linux LiveCD (如 Knoppix、Kanotix 或较新的 Sidux 之类)启动,我自己比较喜欢用较新的 Sidux 及 SystemRescueCD 等

2. 找出可用的源的 IP 地址
如源里使用 deb http://http.us.debian.org/debian/ unstable main contrib non-free

於是执行
#ping http.us.debian.org

Pinging http.us.debian.org [128.30.2.36]....

可以得出 http.us.debian.org 的 IP 地址是 128.30.2.36,在下面有机会用上的

3. 挂载待修理系统,现在是 sda1
#mount /dev/sda1 /mnt/sda1

4. 由於 /var 是独立分区,所以操作前也需要先挂载好
#mount /dev/sda2 /mnt/sda1/var
假如有其他独立分区,如法加载就行

5. 用 chroot 转到 sda1
#chroot /mnt/sda1

6. 挂载 chroot 环境下的 /proc
#mount -t proc proc /proc

7. 修改 chroot 环境下的 /etc/apt/sources.list (sda1 里的 sources.list)
在 chroot 环境下会有机会无法解释域名,因此可能需要将域名转为 IP 地址,如

deb http://http.us.debian.org/debian/ unstable main contrib non-free
改为
deb http://128.30.2.36/debian/ unstable main contrib non-free

当然,如果在 chroot 环境下可以解释域名的话,此步可以省略。

8. 更新
#apt-get update
#apt-get ....... (重裝、更新软件等)

9. 离开 chroot 环境
#umount /proc
#exit

10. 完成
#reboot 重启,再把 /etc/apt/sources.list 改回原有的域名。

好了,企鹅仔重现,大功告成。

PS:还有其他小贴士集合在此 [color="Blue"]【毁灭小贴士】集合 :)
发表于 2009-4-1 12:25:04 | 显示全部楼层
好东西没人顶?我转去了,以备后用
:cool:
回复 支持 反对

使用道具 举报

发表于 2009-4-1 14:17:09 | 显示全部楼层
mount proc 与umount proc有先后区别嘛?
我以前记得是先mount proc再chroot
另外chroot后不能mount -a了
回复 支持 反对

使用道具 举报

发表于 2009-4-1 15:10:59 | 显示全部楼层
Post by laris;1968480
mount proc 与umount proc有先后区别嘛?
我以前记得是先mount proc再chroot
另外chroot后不能mount -a了


chroot之前再进行如下操作
mount --bind /dev /XXX/dev
mount -t tmpfs shm /XXX/dev/shm
mount -t devpts devpts /XXX/dev/pts
(cat /etc/mtab > /XXX/etc/mtab 可以不要)


如果apt or dpkg 损坏可以尝试直接用ar命令来修复,前提你有ar可用

另外,问一下毁灭老大
如果我不想安某个软件包,比如defoma,那么我要如何操作才使系统不安装它?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-1 15:49:42 | 显示全部楼层
Post by laris;1968480
mount proc 与umount proc有先后区别嘛?
我以前记得是先mount proc再chroot
另外chroot后不能mount -a了


这视乎哪个系统(当前系统还是 chroot 里的系统)需要用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-1 15:54:37 | 显示全部楼层
Post by nonplus;1968517
chroot之前再进行如下操作
mount --bind /dev /XXX/dev
mount -t tmpfs shm /XXX/dev/shm
mount -t devpts devpts /XXX/dev/pts
(cat /etc/mtab > /XXX/etc/mtab 可以不要)


如果apt or dpkg 损坏可以尝试直接用ar命令来修复,前提你有ar可用

另外,问一下毁灭老大
如果我不想安某个软件包,比如defoma,那么我要如何操作才使系统不安装它?


我太久没有重装系统,好像是没有选项,一定会装的
回复 支持 反对

使用道具 举报

发表于 2009-4-1 19:29:46 | 显示全部楼层
让我来留个记号,以后好找,哈哈。
回复 支持 反对

使用道具 举报

发表于 2009-4-2 10:29:20 | 显示全部楼层
好东西是要留记号地。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表