升级你的 Linux 发行版本 mini-HOWTO Greg Louis, glouis@dynamicro.on.ca v1.11, 6 June 1996 _________________________________________________________________ 从一个 Linux 发行版本升级到另一个的提示和技巧. _________________________________________________________________ 1. 重要!!! 宣告及版权 2. 自1.1版之後的改变 3. 介绍 * 3.1 如何清除你的Linux 旧版本升级至新版本! * 3.2 为什麽有人要这麽做? * 3.3 你需要``毁掉并重新安装吗?'' * 3.4 须要花多久时间? 4. 记下你所做的每件事。 5. 对现存的资料作完全的备份。 6. 备份/etc 与其子目录至一张或多张磁片。 7. 对你想保留的档案作分开备份。 8. 为新安装准备root 和 boot 磁片。 9. 格式化磁片以做为存放暂时的kernel跟final build。 10. 禁止签入并备份/root及/home以下的档案。 11. 用新的boot和root磁片开机。 12. 用fdisk删除linux分割区并重建它们。 13. 执行新的linux安装 14. 从硬碟开机新的系统,编辑/etc/fstab 15. 将设定资料恢复至/etc及其下之子目录。 16. 设定和重建核心。 17. 回复早先所做的备份。 18. 安全回顾。 19. 将签入致能 20. 抱歉,还是要再提醒一次: 21. 感谢 _________________________________________________________________ 1. 重要!!! 宣告及版权 尝试使用本文件当作导引就对储存在你电脑上的程式及资料有潜在的危险。 你必 需亲自冒这个风险。本文件描述的过程对作者来说可行;并不保证它也同样对你 有用或你照本文件做不会对你电脑资料及/或程式产生严重破坏。你要自行决定是 否使用这里所提供的资讯,作者并不保证这样做所遭遇的伤害和不方便。 本文件 版权 1996, Dynamicro Consulting Limited, 以GNU公共版权发行(授权许可), 基本上意指你可以任意拷贝并修改,而你也不能阻止别人这麽做。 建议及问题都 可以直接给与作者,非常欢迎,特别是可以用作未来更新版本使用,特别欢迎有 关成功的升级杂复的系统之详细说明。 2. 自1.1版之後的改变 * 增加了本历史段落 * 增加了 Zolt□ Hidv□i关於mtime和ctime的建议 感谢, Zolt□! * 增加了感谢段落 3. 介绍 3.1 如何清除你的Linux 旧版本升级至新版本! 本文件的目的是提供你清除并重新安装 Linux系统所须的技巧。无论如何这不是 一个简单的手册;但希望它能提供你所想的指示,还有做事的顺序。它对我是一 项帮助,如果在我第一次升级时有人写像这样的文件的话;所以我希望它对你有 帮助,如果你须要重建一台 Linux 机器的话 然而,不要拿它当准则:你们的经验值大部分都不一样。即使本文件所提及的目 录名称跟你所用的不一样;例如,有些人用的是/usr/home而不是/home;有些人 叫它/u,还有一些人()甚至直接将他们的使用者目录放在/usr下面! 我不能确定 你所使用的系统,所以我以我所使用的名称为准。 你也要注意到我用的是Slackware安装套件,我假设你有足够的RAM跟硬碟空间来 安装linux核心原始码和建立你自己的核心。如果你的系统不同,可以不必完全听 从我的建议(我的建议不完全适用);但我仍希望你能在重建计画中找到大致对你 有帮助的遵循的方向。 3.2 为什麽有人要这麽做? 好问题! 如果可以避免,尽量不要做!(这是本导引中最重要的建议!!!)但是有些 时候你不得不做。 例如,我曾经在一颗4Gb的硬碟安装Slackware 2.0,发现它不知道硬碟可以超 过2Gb,它搞糊涂了。所以我必须升级至当时最新的Slackware 2.3。那次升级真 是一个很累的经验, 这是我写这份文件的原因之一。我几乎犯过所有可能的错误 ,幸运的是我有另一个会动的Linux机器使我免於灾难。 另一个例子是,我发现不能建立一个可运行的a.out核心於1.3系列版本,使用一 个外接的Slackware 2.3安装(另一台机器,不是我之前糟踏的那一台)。我冒险尝 试,买了Slackware 3.0的CDROM并把它转成ELF格式。这次重安装的过程比较顺利 了,有一部份要感谢前一次痛苦的经验,它提供了我现在跟你讲的大部分灵感来 源。 3.3 你需要``毁掉并重新安装吗?'' 说也奇怪,这样反而比较安全. 如果你在现存的系统上安装,可能同时存在新和 旧的二进位档,有可能你将有新旧混杂的二进位档,新的和旧的设定档,当你管 理的时候可能会一团乱。将系统清乾净,然後只放你知道并且需要的档案,激烈 但有效的得到一个乾净的系统的方法。(当然我们讨论的是安装一整个新的linux 发行版本,而不是只升级一两个套件! 避免完全重新安装的最好方法就是,精确 地,保持每个位元 -- 尤其是gcc和它的函式库还有binutils 都是最新的。如果 你现在使用的东西已经相当新了,可以维持这样需要的时候再包含进来,如果需 要随时编译新的程式码,就不需要大规模的升级了。) 如Patrick Volkerding指 出的 (他也建议升级的清除乾净程序),在一个执行a.out的系统上安装ELF是一个 引发灾难的好方法;如果你知道的够多,你就不必读这份导引了! 即使没有这麽复杂,你最好还是重头开始建立系统。 3.4 须要花多久时间? 当然,取决於你的系统有多复杂。但是我想成功的升级约花十小时於备份 (其他 的呢? -- 别问了! :),六小时重建系统直到可以登录,还有约半天时间回复比较 不重要的东西。 随时间过去,我陆续发现许多我不需要的东西。-- 我逐一的修 正他们 -- 主要的, 对於相当复杂的重建工作,二十个小时应该足够。如果你用 硬碟重安装的话也许更少,如果用磁片的话可能更久(我用CDROM)。如果你用的是 较快的pentium机器,花的时间也许更少,若是三八六的话,也许更多。你知道的 。 介绍了这麽多。一但你决定做了,这就是有关如何进行了。无论如何要毅然决然 并充满冲劲地去做,并且: 4. 记下你所做的每件事。 在你准备及实现任何改变的过程所做的记录都是非常有用的。特别重要的是在你 毁掉现存系统之前所做的备份清单。 5. 对现存的资料作完全的备份。 通常,备份最好写在循序存取设备,这样你就不用为了恢复重要的几个档案(几个 重要的档案)作完全的备份;会存在太多你不想要的档案。最好对你知道将来要完 全回复的东西做各个部分单独的备份。接下来我会列出一堆例子。 为什麽你需要 从完全的备份开始? 有两个基本的理由: 一、 万一你在安装新的系统过程中发 生灾难性的失败,你可以以较少的痛苦回到起点。 二、 不管你在安装新系统前 作了多少准备,都有很大的机会忽略一两个重要的档案。在这些情况下,从完全 备份集中回复一两个档案比没有备份的不方便好。 为了节省时间及空间,如果你有你旧版的linux发行套件,你也会想要备份那 些mtime和ctime比原来安装更新的档案。 6. 备份/etc 与其子目录至一张或多张磁片。 另一个极端是:你不用恢复这些档案(大部分,无论如何);你要和安装过程中产生 的新档案比较。为什麽? 因为新系统可能有旧系统没有的资料,或是用新的方式 表示旧资料。规约上的改变,增加新的工具,或在现存的工具上实作新的特点都 可能表示/etc下的设定档及起始档有所改变,你可能必需编辑你的旧资料至这些 档案以保留新的格式并利用这些改进。 7. 对你想保留的档案作分开备份。 这是变化最多的部分,我所能做的就是描述我在我系统上所做的,希望能作为大 略的指导。基本上,你要检视包含任何下列档案的目录 * 非标准linux安装档案或 * 比你将要新安装的linux还新的档案 并分开那些你将要继续保留的档案。 (另一个可能的策略是备份比上次linux安装具有更新的mtime及ctime的档案, 如 上所述,然後从那边开始回复。如果你这样作的话,必需考虑新的linux安装可能 会有比你所保留的还新的档案。) 在我的情况,最後我对下列每一项都做了一个.tgz的档案在备份媒体上 * /usr/lib/rn * /usr/lib/smail * /usr/lib/trn (/usr/lib的其他部分须要重新安装) * /usr/local/src * /usr/local/bin * /usr/local/lib * /usr/local/lpfont * /usr/local/man * /usr/local/sbin * /usr/local/thot (还有一些/usr/local下的档案是我不须要的) * /usr/openwin * /usr/src/lilo-17 (因为我的新Slackware还是用16的版本) * /usr/src/linux-1.2.13 (因为我要作一些个人化) * /usr/X11R6/lib/X11/app-defaults * /usr/X11R6/lib/X11/initrc (其他Xfree86的部分要重新安装) * /var/named * /var/openwin * /var/texfonts 我的机器相当的简单,因为没有spool 档案需要担心。我并没有在这上面跑news spool,而且只有两个使用者,很容易在关机前读完所有的信。否则/var/spool目 录必需在最後一刻备份。(当然,还有(新闻函式库)和网站目录!) 8. 为新安装准备root 和 boot 磁片。 有关如何做的详细资料可以在新发行版本的安装介绍中找到。 9. 格式化磁片以做为存放暂时的kernel跟final build。 你需要两片磁片,各使用一片。 以上做完後,就要进入关键时刻了,接下来的步骤会使你的系统失去生产力。 10. 禁止签入并备份/root及/home以下的档案。 这是在旧系统上所要做的最後一件事,以便保留大多数现有的使用者及root的资 料。 11. 用新的boot和root磁片开机。 12. 用fdisk删除linux分割区并重建它们。 安装手册将会解释如何作,这将毁掉旧系统。从现在起你要完全依赖早先所作的 备份的品质了。你已经被告知了! 13. 执行新的linux安装 已经有许多很好的文件说明如何做了,所以我就不再详细解释了。我们新系统自 硬碟开机说起。 接下来,确定你有做可开机的磁片,因为linux核心在安装过程将会被取代,而随 时意外都可能发生。确定你有安装发展套件及核心原始码。 14. 从硬碟开机新的系统,编辑/etc/fstab 增加你的swap分割区。然後下swapon -a这个指令。 我不知道为什麽,但 是Slackware安装不会让你这麽做,如果你的swap分割区已经存在。然後,当你开 机後rc.S手稿会试著打开swap,它无法找到fstab档案中的分割区也无法致 能swapping。 这个步骤可以修正它。 15. 将设定资料恢复至/etc及其下之子目录。 如上所述,你不能只是拷贝所有旧档案到/etc 下之後,就期望能正常运作。有些 档案你可以这样作;例如/etc/XF86Config (只要你还是用相同版本的Xfree86 -- 还有相同的显示硬体 -- 在你新linux安装里和旧的linux安装一样)。 然而, 最重要的,在你做任何拷贝之前还是使用diff去比较新旧档案。特别要注 意/etc/rc.d下的档案有无重大的改变。可能需要手动编辑旧的设定档,而非拷贝 旧的rc手稿档备份。所有都作完後,重新开机。 16. 设定和重建核心。 即使你不一定绝对要编一个支援你硬体的核心,仍然值得作一个不含你机器没有 的不必要的杂乱的驱动程式的核心。详细的资料,参考Kernel HOWTO。首先将重 建的核心放在磁片上;如果开机顺利,再将它放在硬碟上,如果你用lilo的话, 重新跑一次lilo,然後重开机。 17. 回复早先所做的备份。 有些二进位档可能必需从原始码目录安装;例如,我必需对lilo这麽做,因为我 的版本比Slackware安装中的还新而且保留/sbin下的档案并不麻烦。你要检查回 复的程式并且确定设定档,程式库等等都存在且正确。某些情况下,你可能需要 照特定顺序恢复东西;你应该在备份过程就作笔记,不是吗? ;-) 18. 安全回顾。 检查档案及目录权限以确定存取权限不致太严格或太宽松。我发现Slackwarep倾 向於比我喜欢的还开放的环境,所以我将如/bin及其他类似的目录下的二进位档 权限从755改为711,甚至把像.../sbin一类的目录下的改为700。 如果你在继续 一个档案伺服器,还是需要特别留心;但是,如果你正在执行档案伺服器,你可 能已经想到了:) 19. 将签入致能 你的机器已经启动并且运行了,接下来的一段时间,还有一些细节要整理;但还 有很多事情要作。享受它吧! 20. 抱歉,还是要再提醒一次: 使用本资料,你得自负风险! (见本文一开始不承诺那一段。) 21. 感谢 感谢to Zolt□ Hidv□i对此mini-HOWTO内容的贡献。