LILO, Linux Crash Rescue HOW-TO 中译版 <!-- chapt change LILO, Linux Crash Rescue HOW-TO 中译版 --> <author>作者:Al Dev (Alavoor Vasudevan) <htmlurl url="mailto:alavoor[AT]@yahoo.com" name="alavoor[AT]@yahoo.com"><newline> 译者:黄国伟 <htmlurl url="mailto:u4561055@cc.ncu.edu.tw" name="u4561055@cc.ncu.edu.tw"> <date>v10.8, 25 Jan 2003 翻译日期:04 Feb 2003 <abstract> 这份文件探讨从 Linux 系统当机中回复的方法。 造成 Linux 系统当机的各种原因可能是 - LILO 毁损、 linux 无法开机、 硬碟主开机记录(Master Boot Record, MBR)损坏、 或是安装其他作业系统例如 Windows NT 而将 LILO 或 MBR 盖写掉所造成 linux 无法开机。 </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <sect>简介 <p> <bf> (此文件的最新版本位於 <url url="http://www.milkywaygalaxy.freeservers.com">。 您可以从那里得到版本的变动情形。) </bf> 您无法避免意外的发生;如果意外发生在 linux 系统, 这可能会损害到硬碟主开机记录 (MBR) 或是 LILO (Linux boot Loader)。 当 linux 由於硬碟故障而导致无法开机时,意外就会发生。 假如您不小心重新划分磁碟,或是在 linux 系统的电脑上安装其他作业系统, 例如:Windows 98/NT,LILO 也可能会失效。 这份文件给您一些建议、秘诀、和快速的指引来快速回复系统, 而不必费心地研读上百页有关 LILO 或 Linux 的文件。 <sect1> 小型软碟 Linux 系统 <label id="tiny"> <p> 为了回复任何作业系统如 Windows 95/NT/2000、OS/2、BeOS、或 Linux, 您可能需要装在一片软碟片的小型 linux 系统。 请参考以下所列出的小型软碟 linux 系统 - <itemize> <item> 最佳 <url name="Tomsrtbt" url="http://www.toms.net/~toehser/rb"> <item> 次佳的软碟 linux 系统 <url name="MuLinux" url="http://sunsite.dk/mulinux"> <item> <url name="Trinux" url="http://www.trinux.org"> <item> <url name="DLX" url="http://www.wu-wien.ac.at/usr/h93/h9301726/dlx.html"> <item> <url name="FloppyFW" url="http://www.zelow.no/floppyfw"> <item> <url name="Linux Router Proejct floppy" url="http://www.psychosis.com/linux-router"> <item> <url name="Tiny Linux distributions" url="http://www.txdirect.net/users/mdfranz/tinux.html"> <item> <url name="TINYLinux" url="http://tiny.seul.org/en"> </itemize> <sect1> 小型 CDROM Linux 系统 <label id="tinycdrom"> <p> <itemize> <item> Linuxcare Bootable Toolbox <url url="http://lbt.linuxcare.com"> <item> LNX-BBC <url url="http://lnxbbc.org"> <item> Tom's Root and Boot "the most GNU/Linux on one floppy disk" <url url="http://www.toms.net/rb"> <item> "Innominate-Linux-Rescue-System" - a CD-based rescue system <url url="http://innominate.org/projects/rescueCD"> <item> Irish Linux Users Group (ILUG) BBC: A bootable CD ISO <url url="ftp://ftp.blackstar.co.uk/pub/ILUG/"> <item> Lubbock: Meant to be the "Tom's Root Boot" of CDs <url url="http://lubbock.sourceforge.net"> <item> Repairlix: a networked Linux distribution/bootable system intended to fit in 12MB of media. <url url="http://repairlix.sourceforge.net"> <item> SuperRescue: a Red Hat-based bootable CD <url url="http://www.kernel.org/pub/dist/superrescue"> <item> Timo's Rescue CD Set: an easy way of generating el Torito Boot Cd's <url url="http://rescuecd.sourceforge.net"> </itemize> <sect> 当机回复<label id="crash"> <p> <sect1> 准备工作建议 <label id="tips"> <p> 在您使用下个章节的 Tomsrtbt 软碟或使用 RedHat 开机光碟 (使用救援选项) 登入之後, 您最好先备分重要的系统档案,像 /etc/fstab、/etc/lilo.conf。 如此在当机时或系统档案发生问题时是、活B□B楚{BBB硗野□满C <code> bash# cp /etc/fstab /etc/fstab.orig bash# cp /etc/lilo.con etc/lilo.c,,,.orig bash# cp /etc/hosts /etc/hosts.orig bash# cp /etc/hosts.allow /etc/hosts.allow.orig bash# cp /etc/hosts.deny /etc/hosts.deny.orig bash# cp /etc/inetd.conf /etc/inetd.conf.orig bash# cp /etc/inittab /etc/inittab.orig bash# cp /etc/networks /etc/networks.orig </code> <sect1>使用 Linux 光碟的救援模式 <p> 大部份的 Linux 发行套件像是 RedHat、SUSE、Debian, 皆有提供具有救援功能的光碟。 您应当设定电脑的 BIOS ,使电脑能以 IDE 光碟机为第一开机装置,以便使用这类光碟。 设定 BIOS 时 (在开机时按 F8 键),以光碟机为第一开机装置; 软碟机为第二开机装置;硬碟为第三开机装置。 将 Linux 光碟片放入光碟机,并重开机。 Linux 套件将会被读取。在提示符号 (prompt) 下选择「救援操作」。 在救援操作模式下,挂上 (mount) 硬碟并尝试修复它。 <code> # chroot /mnt/SYSIMAGE # df </code> 使用 chroot 後,整个系统看起来就像是从硬碟开机一样。 您可以看到硬碟上的所有分割区,并且可以修复或回复档案。 <sect1> 回复系统的快速步骤 <p> 循著这些步骤执行,以便从 LILO 或系统当机中回复。 <enum> <item> <bf>状况 1:</bf> 假如系统无法开机 - <p> 取得并建立 tomsrtbt 开机磁片 <url url="http://www.toms.net/rb">, 或 MuLinux 开机磁片 (请参考 <ref name="Tiny Linux" id="tiny">)。 并使用 tomsrtbt 开机磁片开机。 使用 fdisk 指令找出分割区(partitions)。 试著找出 root 和 boot 分割区。注意! root 分割区自己需拥有 /boot 档案。 Linux 的 root 分割区包含下列资料夹 <bf>bin</bf>, <bf>boot</bf>, <bf>etc</bf>, <bf>usr</bf>. Linux 的 boot 分割区则包含以下的资料夹: <bf>vmlinuz</bf>, <bf>boot.b</bf>, <bf>chain.b</bf>, <bf>map</bf>. 使用以下步骤找出 root 分割区: <code> bash# fdisk /dev/hda Command (m for help): m (显示指令的辅助选单) Command (m for help): p (列出硬碟分割区) Command (m for help): q bash# mkdir /test bash# mount /dev/hda1 /test bash# ls /test 您应该会看到 root 分割区显示如下 - bin fd lib mnt proc sbin usr boot dev etc home lost+found opt root tmp var </code> 如果此分割区并非 root 分割区,试试下个分割区 /dev/hda2 。 持续□试 hda3, hda4, hda5 等,直到找出 root 分割区为止。 如果您在 <bf>hda</bf> 上没有找到 root 分割区, 则重覆以上步骤寻找其他硬碟,像是 <bf>hdb</bf>、<bf>hdc</bf>、<bf>hdd</bf>等。 接下来您应找出 /boot、/usr、和 /var 分割区。 在建立新的 lilo 配置时,这些分割区的位置是必需的。 以我的系统为例,root 分割区是在 /dev/hda4: <code> bash# mkdir /rootpart bash# mount /dev/hda4 /rootpart bash# cat /rootpart/etc/fstab 阅读 fstab 的内容,并且按照 fstab 档案挂上 (mount) 分割区。像下面这样 - bash# mount /dev/hda5 /rootpart/boot bash# mount /dev/hda6 /rootpart/usr bash# mount /dev/hda7 /rootpart/var bash# mount /dev/hda8 /rootpart/opt bash# mount /dev/hda9 /rootpart/root bash# mount /dev/hda10 /rootpart/home </code> 以我的系统为例,按照 fstab 所显示,hda5 是 <bf>boot</bf>、hda6 是 <bf>usr</bf>, hda7 是 <bf>var</bf>、hda8 是 <bf>opt</bf>、 hda9 是 <bf>root</bf>、hda10 是 <bf>home</bf>、而 hda11 是 windows95 (FAT16 分割区)。 编辑 /etc/fstab (不是 /rootpart/etc/fstab) 并且加入(以下程式码□例) <code> /dev/hda4 /rootpart ext2 defaults 1 1 /dev/hda5 /rootpart/boot ext2 defaults 1 1 /dev/hda6 /rootpart/usr ext2 defaults 1 1 /dev/hda7 /rootpart/var ext2 defaults 1 1 /dev/hda8 /rootpart/opt ext2 defaults 1 1 /dev/hda9 /rootpart/root ext2 defaults 1 1 /dev/hda10 /rootpart/home ext2 defaults 1 1 /dev/hda11 /rootpart/win95part vfat defaults 1 1 在我的电脑中,hda4 为 linux 的 root 分割区、hda5 为 boot 分割区、 hda11 则为 windows 95 的 vfat 系统。 bash# mkdir /rootpart/win95part bash# mount /rootpart/win95part 使用 fsck 或 e2fsck 指令修复有问题的分割区。 bash# man fsck bash# man e2fsck </code> <p> <item> <bf>状况 2:</bf> 如果 LILO 是无效的.. <p> 依照状况 1 的步骤来排除问题。如果无法解决,则参照以下步骤。 在执行状况 1 的步骤之後,您应该已经挂载上 /rootpart 并且已经建立好 /etc/fstab 档案。 注意:在进行以下步骤时,观察 chroot 如何运作是很重要的。 chroot 所使用的 <bf>/sbin/lilo</bf> 档案的正确位置是在 <bf>/rootpart/sbin/lilo</bf>, 而<bf>不是</bf>在 /sbin!!因此请不要混淆。 <code> bash# mount -a bash# chroot /rootpart /sbin/lilo -q bash# man chroot bash# chroot /rootpart /sbin/lilo </code> 注意:使用 chroot 的新手可能会被混淆。如果 chroot 抱怨它找不到 /boot/map 档案, 这种情形实际上代表著它无法找到 /rootpart/boot/map。因为您使用 /rootpart 当作 chroot 的第一引数 (first argument),所有的化身 (references) 都指向 /rootpart。 您也可以选择直接使用 /sbin/lilo 以代替 chroot。 lilo 加选项 -r 实际上就和 chroot 指令是一样的。 <bf>强烈建议</bf>您使用 chroot,而不要使用 lilo -r, 因为使用 chroot 比较方便,且较容易找出错误。 <code> bash# man lilo bash# /sbin/lilo -r /rootpart </code> <p> <item> <bf>状况 3:</bf> 如果 LILO 是无效的.. <p> 如果使用状况 1 和状况 2 的步骤均无法解决, 假如您有使用 'mkbootdisk' 制作过开机片(於安装时或参考 'man mkbootdisk'自行建立),则使用您的开机磁片来开机并修复分割区。 mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。 (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) 或者从 <url url="http://www.bootdisk.com/"> 取得 Linux/NT/Windows/DOS/Mac 的开机磁片。 其他选择 - 找 Linux 安装光碟来使用。 每个 Linux 套件会在光碟里提供救援磁片的 image file,在 Linux 环境下,键入 "dd if=/cdrom/disks/rescue of=/dev/fd0" 来建立救援磁片。在 DOS 环境下, 使用 rawrite.exe (包含在 Linux 光碟里),键入 "rawrite image-name a:" 来建立救援磁片。 <p> <item> <bf>状况 4:</bf> 如果以上状况 1、2、3 的步骤皆无法解决问题,且您也没有开机磁片 <p> 假如您有其他 linux 系统的电脑,以 root 身份登入并且执行 - 注意:如果您编译您自己的核心(kernel)为 bzImage (例如 bzImage-2.4.4), 您应当使用以下方法对 vmlinuz-2.4.4 建立硬连结(hard link)。(注意 vmlinuz 的 z,而非 vmlinux) 如果您并未做此步骤, 则 mkbootdisk 指令可能会失败。 <code> bash# cd /boot bash# ls -l vmlinuz* bash# ln /boot/bzImage-2.4.4 /boot/vmlinuz-2.4.4 </code> 现在您已有 bzImage 和 vmlinuz,执行下列指令 - <code> bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf </code> 编辑 /etc/lilo.conf 并将您在 '状况 1' 所获得的 root 分割区格式填入;之後插入空白磁碟片并执行 - <code> bash# mkbootdisk --device /dev/fd0 2.2.12-20 (译注:2.2.12-20 为核心版本编号,请自行依照您的 linux 核心版本作改变。) </code> mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。 (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) 您必须确保将 /etc/lilo-original.conf 更改回原来的档名 /etc/lilo.conf!! 再以此开机磁片进行状况 3 的步骤。 <p> <item> <bf>状况 5: </bf> 这是最坏的情况,希望您不会走到这个地步。 状况 1 到 4 已包含了绝大多数的案例,但是如果连状况 1、2、3、和 4 的步骤都无法解决 - <p> <it><bf>第一步: </bf></it> 使用 tomsrtbt 开机磁片开机, (请参考 <ref name="Tiny Linux" id="tiny">) 挂上分割区, 并且使用以下指令备份 root 分割区至其他还有磁碟空间的分割区 - <code> 编辑 /etc/fstab 并且写入(以下的程式码□例, 您可能必须按照您的磁碟机实际状况作改变) - /dev/hda4 /rootpart ext2 defaults 1 1 /dev/hda11 /b1 vfat defaults 1 1 bash$ mkdir /rootpart; mount /rootpart bash$ mkdir /b1; mount /b1 bash$ cd / bash$ df 查看 /b1 是否有足够的磁碟空间,以便使用 tar 来备份 root 分割区。 bash$ tar cvf /b1/root-hda4.tar /rootpart </code> <p> <it><bf>第二步: </bf></it> 放入 Linux 光碟片,重开机并安装 redhat linux (译注:或安装其他 linux 发行套件) 在 /dev/hda4 (但<bf>千万不要</bf>安装任何多馀的套件, 您只需要安装 root、boot 系统,和 LILO 管理者。 也就是说,选择最小安装即可)。 安装程式也将会安装 LILO 在您的硬碟里。 现在重新启动 linux,以 root 身份登入,并且执行 - <code> bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf </code> 注意:您<bf>必须</bf>记得将 lilo-original.conf 复制回 lilo.conf!! 编辑 /etc/lilo.conf 并将您在 '状况 1' 所获得的 root 分割区格式填入;之後插入空白磁碟片并执行 - <code> bash# mkbootdisk --device /dev/fd0 2.2.12-20 (译注:2.2.12-20 为核心版本编号,请自行依照您的 linux 核心版本作改变。) bash# cp /etc/lilo-original.conf /etc/lilo.conf </code> 测试此开机磁片,检视其是否能运作, 并将第一步中利用 tar 作备分的档案 /b1/root-hda4.tar 回复。 (译注:您可使用 tar xvf 来回复。详见 tar manpage) </enum> <sect1> 预防性措施 <p> 您应当采取下列的预防性措施来处理未来可能发生的问题。 <itemize> <item> 您<bf>一定要</bf>偶尔制作救援开机磁片,且在您改变分割区时一定要制作。 插入空白磁碟片并执行 - <code> bash$ man mkbootdisk mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必须安装它。 (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) bash$ mkbootdisk --help bash$ mkbootdisk --device /dev/fd0 2.2.12-20 (译注:2.2.12-20 为核心版本编号,请自行依照您的 linux 核心版本作改变。) </code> <p> <item> 您<bf>必须</bf>将分割表设定 (partition tables setup) 备份至磁片和硬碟里。 您也应将此设定列印并贴至电脑机壳上。 <code> bash$ su - root bash# man fdisk bash# fdisk -l /dev/sda > partition_table_backup.txt </code> 如果您需要重新分割硬碟,这样做是非常有帮助的。 从列印出来的分割表资料,您将会了解分割区磁柱的起始。 回复系统时,在重新分割与格式化硬碟後,您可以利用备份资料回复原先的分割设定。 <p> <item> 您手边必须拥有 tomsrtbt 的开机磁片。详见 <url url="http://www.toms.net/rb"> (请参考 <ref name="Tiny Linux" id="tiny">) <p> <item> 您手边必须拥有 Yard 救援和开机磁片。详见 <url url="http://www.linuxlots.com/~fawcett/yard"> <p> <item> 备分 /root 与 /boot 目录。使用 Tomsrtbt 开机磁片开机, (请参考 <ref name="Tiny Linux" id="tiny">) 并且执行 <code> bash# vi /etc/fstab 加入以下数行 - /dev/hda1 /a1 vfat defaults 1 1 /dev/hdb1 /b1 vfat defaults 1 1 以我的系统为例, hda1 为 linux 之 root 分割区 '/' bash# cd / bash# tar cvf /b1/linux-root-partition-hda1.tar a1 bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot </code> </itemize> <sect1> 移除 LILO <p> 您可以使用 DOS 启动载入程式(boot loader)载入启动磁区,并以之取代 LILO。 在 MS DOS 提示符号下输入以下指令: <code> FDISK /MBR </code> 此处的 MBR 代表 "硬碟主开机记录(Master Boot Record)"。 请参考 LILO 文件,取得其他移除 LILO 的方法;这些文件通常放在 linux 系统上的 /usr/doc/lilo* (译注:或者是 /usr/share/doc/lilo*)。也请参考 'man lilo'。 <sect1> 常犯错误 <p> 在您更改 /etc/lilo.conf 之後,您<bf>必须执行 lilo </bf>,使您的改变生效。 忘了执行是 linux 初学者很常犯的错误。执行 - <code> bash# lilo -v -v -v </code> <sect> 相关网站 <p> 请参阅以下位址,可取得 LILO、Linux 救援、当机回复的相关资讯 - <itemize> <item> Mini Lilo HOWTO at <url url="http://www.linuxdoc.org/HOWTO/mini/LILO.html"> <item> Bootdisk-HOWTO at <url url="http://www.metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO/index.html"> <p> <item> Pre-made boot disks at <url url="http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/"> <item> Boot disks for Linux/NT/Windows/DOS/Mac at <url url="http://www.bootdisk.com"> <item> Tomsrtbt boot floppy disk <url url="http://www.toms.net/rb"> (请参阅 <ref name="Tiny Linux" id="tiny">) <item> Yard rescue and boot floppy disk <url url="http://www.linuxlots.com/~fawcett/yard"> <p> <item> BootPrompt-HOWTO at <url url="http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO.html"> <item> Multiboot with LILO mini HOWTO at <url url="http://www.linuxdoc.org/HOWTO/mini/Multiboot-with-LILO.html"> <item> Linux+WinNT mini HOWTO at <url url="http://www.linuxdoc.org/HOWTO/mini/Linux+WinNT.html"> <p> <item> Linux goodies main site <url url="http://www.milkywaygalaxy.freeservers.com"> 映射站如下 - <url url="http://aldev0.webjump.com">, <url name="angelfire" url="http://www.angelfire.com/country/aldev0">, <url name="geocities" url="http://www.geocities.com/alavoor/index.html">, <url name="virtualave" url="http://aldev0.virtualave.net">, <url name="50megs" url="http://aldev0.50megs.com">, <url name="theglobe" url="http://members.theglobe.com/aldev1/index.html">, <url name="NBCi" url="http://members.nbci.com/alavoor">, <url name="Terrashare" url="http://aldev.terrashare.com">, <url name="Fortunecity" url="http://members.fortunecity.com/aldev">, <url name="Freewebsites" url="http://aldev.freewebsites.com">, <url name="Tripod" url="http://members.tripod.lycos.com/aldev">, <url name="Spree" url="http://members.spree.com/technology/aldev">, <url name="Escalix" url="http://www.escalix.com/freepage/aldev">, <url name="Httpcity" url="http://www.httpcity.com/aldev/index.html">, <url name="Freeservers" url="http://aldev.freeservers.com">. <item> Vim color text editor for C++, C <url url="http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html"> </itemize> <sect> 此份文件的其他格式 <p> 此份文件是以 14 种不同的格式所发行的 - DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages, single HTML file, SGML (Linuxdoc format), SGML (Docbook format), MS WinHelp format. 此份 howto 文件是在 - <itemize> <item> <url url="http://www.linuxdoc.org"> 按下 HOWTOs 连结, 并且在网页浏览器上使用 CTRL+F 或 ALT+f 来搜寻 howto 文件名称。 </itemize> 您也可从以下的映射站找到此份文件 - <itemize> <item> <url url="http://www.caldera.com/LDP/HOWTO"> <item> <url url="http://www.linux.ucla.edu/LDP"> <item> <url url="http://www.cc.gatech.edu/linux/LDP"> <item> <url url="http://www.redhat.com/mirrors/LDP"> <item> 其他较靠近您的映射站 (网址智慧辨识,network-address-wise) 可以在此找到 <url url="http://www.linuxdoc.org/mirrors.html"> 选择一个映射站,并且进入目录 /LDP/HOWTO/xxxxx-HOWTO.html </itemize> <itemize> <item> 您可以从下列连结得到 HTML、DVI、Postscript、或 SGML 格式的 HOWTO 文件单一 tar ball 档案 - <url url="ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO/other-formats/"> 与 <url url="http://www.linuxdoc.org/docs.html#howto"> <p> <item>纯文字格式是在: <url url="ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO"> 与 <url url="http://www.linuxdoc.org/docs.html#howto"> <p> <item>Single HTML 档案格式是在: <url url="http://www.linuxdoc.org/docs.html#howto"> <p> Single HTML 档案可以使用下列指令来建立 (参见 man sgml2html) - sgml2html -split 0 xxxxhowto.sgml <p> <item>其他语言之文件翻译,像是法文、德文、西班牙文、 中文、日文等是在 <url url="ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO"> 与 <url url="http://www.linuxdoc.org/docs.html#howto"> 欢迎您帮忙翻译成其他语言的版本。 </itemize> 此份文件是以 "SGML-Tools" 工具软体所撰写的,您可以在下面的连结得到此软体 - <url url="http://www.sgmltools.org"> 您可使用以下指令编译原始档,例如: <itemize> <item>sgml2html xxxxhowto.sgml (获取 html 档案) <item>sgml2html -split 0 xxxxhowto.sgml (获取 single page html 档案) <item>sgml2rtf xxxxhowto.sgml (获取 RTF 档案 ) <item>sgml2latex xxxxhowto.sgml (获取 latex 档案) </itemize> (译注:中译版使用者请至 ftp.linux.org.tw/pub/CLDP/src 下载 zh-sgmltools-1.x-x.tar.gz 并安装之,再以 bg5sgml2html、bg5sgml2rtf、 bg5sgml2latex 或 gbsgml2html、gbsgml2rtf、gbsgml2latex 指令编译原始档。详见 SGMLtools 中文套件使用说明 <url url="http://www.linux.org.tw/CLDP/zh-sgmltools.html">) <sect1> Acrobat PDF 格式 <label id="acrobatpdf"> <p> PDF 档案可以从 postscript 档案使用 acrobat <bf>distill</bf> 或 <bf>Ghostscript</bf> 来取得。 而 postscript 档案是从 LaTex 档案先转成 DVI, 再转成 postscript 而取得。 您可以从 <url url="http://www.adobe.com"> 下载 distill。 如以下□例所示: <code> bash$ man sgml2latex bash$ sgml2latex filename.sgml bash$ man dvips bash$ dvips -o filename.ps filename.dvi bash$ distill filename.ps bash$ man ghostscript bash$ man ps2pdf bash$ ps2pdf input.ps output.pdf bash$ acroread output.pdf & </code> 或者您可使用 Ghostscript 的指令 <bf>ps2pdf</bf>。 ps2pdf 是个与 Adobe's Acrobat Distiller 产品作用相似并拥有其大部分功能的指令: 它将 PostScript 档案转换成可携式文件格式(Portable Document Format, PDF)档案。 <bf>ps2pdf</bf>是被一个包含在 Ghostscript 的指令稿 (command script) (批次档 batch file),且选择一种名叫 <bf>pdfwrite</bf> 的特殊 "输出装置 (output device)" 来执行。为了要使用 ps2pdf, 当 Ghostscript 在安装编译时,pdfwrite 装置必须要包含在 makefile 里; 详见安装 Ghostscript 的文件。 <sect1> 将 Linuxdoc 转换成 Docbook 格式 <label id="linuxdoc2docbook"> <p> 这份文件是以 linuxdoc SGML 格式所撰写。Docbook SGML 格式 较 linuxdoc 格式更强大,且拥有更多特色。 linuxdoc 非常简单且易用。我们使用 <bf>ld2db.sh</bf> 程式和一些 perl scripts 来将 linux SGML 档案转换成 Docbook SGML。 ld2db 的输出结果并非 100% 完美,您需要使用 <bf>cleanup_ld2db.pl</bf> 这个 perl script。您可能必须手动更改文件中的数行。 <itemize> <item> 从 <url url="http://www.dcs.gla.ac.uk/~rrt/docbook.html"> 或从 <url name="Milkyway Galaxy site" url="http://www.milkywaygalaxy.freeservers.com"> 下载 ld2db 程式 <item> 从 <url name="Milkyway Galaxy site" url="http://www.milkywaygalaxy.freeservers.com"> 下载 cleanup_ld2db.pl 这个 perl script。 </itemize> ld2db.sh 并非 100% 完美,您在执行以下指令时将会得到许多错误 <code> bash$ ld2db.sh file-linuxdoc.sgml db.sgml bash$ cleanup.pl db.sgml > db_clean.sgml bash$ gvim db_clean.sgml bash$ docbook2html db.sgml </code> 而您可能必须在执行完 perl script 後, 手动编辑一些小错误的地方。例如: 您可能需要 < /Para>在每个 < Listitem> 写入封闭标记 (closing tag) <sect1> 转换成 MS WinHelp 格式 <label id="mswinhelp"> <p> 您可以将 SGML howto 文件转换成 Microsoft Windows Help 档案。 首先使用以下指令将 sgml 转换成 html: <code> bash$ sgml2html xxxxhowto.sgml (获取 html 档案) bash$ sgml2html -split 0 xxxxhowto.sgml (获取 single page html 档案) </code> 然後使用 <url name="HtmlToHlp" url="http://javadocs.planetmirror.com/htmltohlpe.html">. 您也可使用 sgml2rtf,然後使用 RTF 档案以获取 winhelp 档案。 <sect1> 读取各种不同的格式 <label id="readformats"> <p> 要阅读 dvi 格式的文件,必须使用 xdvi 程式。xdvi 程式在 Redhat Linux 是存在於 tetex-xdvi*.rpm (译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织)。 您可以从控制面板(ControlPanel) | 应用程式(Applications) | 出版(Publishing) | Tex 的选单按钮开启之。 要读取 dvi 格式文件,请执行以下指令 - <tscreen><verb> xdvi -geometry 80x90 howto.dvi man xdvi </verb></tscreen> 并且使用滑鼠来重新设定视窗大小。 使用方向键、Page Up、Page Down 来导引, 您也可使用 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' 字母键 来上移、下移、置中、至下一页、回上一页等。 要关闭专家选单,请按 'x'。 您可以使用 'gv' (ghostview) 或 'ghostscript' 来阅读 postscript 格式的文件。 在 Redhat Linux 里,ghostscript 存在於 ghostscript*.rpm 套件;gv 则存在於 gv*.rpm 套件里。(译注:随不同发行套件而有所差异;请洽询您的发行套件厂商或组织) 您可以从控制面版(ControlPanel) | 应用程式(Applications) | 美工绘图(Graphics) 的选单按钮开启之。gv 远比 ghostscript 更人性化。 ghostscript 和 gv 也有其他平台的版本,像是 OS/2、 Windows 95 和 NT,您甚至在那些平台也可以观看此份文件。 <itemize> <item>您可从以下网址获得 Windows 95、OS/2、 和所有作业系统平台的 ghostscript <url url="http://www.cs.wisc.edu/~ghost"> </itemize> 要阅读 postscript 格式的文件,执行以下指令 - <tscreen><verb> gv howto.ps ghostscript howto.ps </verb></tscreen> 您可以使用 Netscape Navigator、Microsoft Internet explorer、 Redhat Baron Web browser 或任何其他的 10 种浏览器来阅读 HTML 格式的文件 您可以使用 LyX -- 一种 latex 在 X-Windows 的前端界面,来阅读 latex 格式的文件。 <sect> 版权 Copyright <p> 版权政策按照 LDP (Linux 文件计划) 为 GNU/GPL。 LDP 是 GNU/GPL 计划之一。 额外的请求为您在所有的复制文件中保留作者的姓名、电子邮件信箱位址、 和此份版权声明。假如您对这份文件进行修改或增添, 那麽请您告知此份文件的所有作者。 在这份文件上所登载的姓名为其各自所有人的所有权 <p> 原文 (如中译有误,以原文为主) <p> Copyright policy is GNU/GPL as per LDP (Linux Documentation project). LDP is a GNU/GPL project. Additional requests are that you retain the author's name, email address and this copyright notice on all the copies. If you make any changes or additions to this document then you please intimate all the authors of this document. Brand names mentioned in this document are property of their respective owners. </article>