<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/vnd.wap.wml; charset=utf-8"/>
<meta http-equiv="Cache-Control" content="no-cache"/></head>
<card title="简述 Slackware Linux 硬盘安装原理 - Gracecode.com">
<p>虽然 <a href="http://www.slackware.com/index.html" title="http://www.slackware.com/index.html">Slackware Linux 12.1 已经出来了</a>，但对于我这个懒人也懒得去折腾。前几天有台 Windows 服务器被换下，在我的忽悠下管理员答应安装 Slackware 试试看，于是揣着我心爱的移动硬盘去了冬暖夏凉的 IDC 机房。</p>

<p>服务器没有光驱（有我也不会用），加上硬盘安装是最快的，所以没有理由不用硬盘安装。在硬盘安装 Slackware 之前，先说说本人对于 Slackware 包机制的理解。</p>

<p>众所周知，Slackware 的包机制其实就是 tgz 压缩包。其实按照我个人的理解，如 installpkg 这样的程序也就是个 Shell 脚本，软件的安装除了在 /var/packages 下生成已安装的软件版本以外，就不会生成别的东西；删除某个包也是类似的操作，脚本根据文件列表删除文件，作其他任何的修改。</p>

<p>如此的包机制，是不会校验某个软件的库依赖机制的。但就是因为这点，Slackware 在保持 了系统足够 KISS 的同时，把更多的工作交给了用户。这也意味着为什么 Slackware 不适合新手的原因，因为他们不知道将要安装的包需要哪些运行库。</p>

<p>言归正传，从 Slackware 的包管理机制就可以理解 Slackware 的安装过程。首先它会从安 装光盘引导各基本的内核，通常是 /isolinux/kernel 然后此内核载入 initrd 文件，引导 系统并提供给用户 Shell 接口。顺便提一下，<a href="http://busybox.net/" title="http://busybox.net/">Busybox</a> 是个好东西，目前 Slackware 安装环境中的大部分程序都是它的映射。</p>

<p>然后，在引导完基本的安装环境以后，用户执行一系列的操作（分区、格式化、配置），最后安装脚本（注意，不是程序），开始最漫长的一步，就是解压缩软件包至指定的安装路径，这就是我们通常所说的安装软件包。最后是配置相应的服务等等，这并没有不同的地方。</p>

<p>似乎废话有点多，根据上述所言硬盘安装最重要的两个步骤就是：如何去引导安装环境，以及去何让脚本知道软件包的位置。解决这两步，硬盘安装基本上就没有什么大的问题了。</p>

<p>首先，我们解决如何引导安装环境。默认的 Slackware 系统还是交给 lilo 引导（“迂腐”的 Volkerding ），个人更喜欢使用 grub 。根据上述的环境，我已经有了现成的 Windows 系统，所以先下载了份 grub for DOS ，然后让 Windows 引导 grub ，再让 grub 引导内核。</p>

<p>这里需要两个文件从 iso 镜像中解压出来，一个就是内核，这个当然不用说；还有一个就是 initrd，它包含了安装环境需要的脚本等等。grub 引导完毕以后，指定内核和 initrd 文件，然后引导（详细步骤在参考文档中指出）。</p>

<pre>grub&gt; kernel (hd0,0)/bare.i
    注，Slackware 还提供了其他几个内核镜像
grub&gt; initrd (hd0,0)/initrd
grub&gt; boot</pre><p>这样，基本的安装环境就引导完毕了。下面可以执行在安装软件包前的一系列操作。</p>

<p>安装软件包前需要制定软包的位置，在 选择安装源（<tt>Source Media Selection</tt>）这个步骤中，我选择 <tt>Install from a pre-mounted directory</tt> ，手工指定安装路径。当然，再次之前得把这个 iso 文件给 mount 进来。</p>

<pre># mkdir /target /iso 
    注，不要重名就可以
# mount /dev/sda1 /target 
    注，/dev/sda1 是移动硬盘的相应分区位置
        可以通过查看内核输出获得</pre><p>然后在可以读取 iso 文件的前提下，再 mount 这个镜像文件到另外一个目录</p>

<pre># mount -o loop /target/slackware-12.1-dvd.iso /iso</pre><p>切换回到 setup 安装程序（ALT + F1），指定安装源为 /iso/slackware 即可继续完成安装操作。</p>

<p>至于引导器方面，如果没有用多系统，个人认为 lilo 已经能够满足日常的应用了。grub 有更多的选择，但是有时会有不必要的安全问题，请根据实际情况选择。</p>

<p>最后，有关详细的安装步骤，可以<a href="http://www.linuxsir.org/bbs/thread277353.html" title="http://www.linuxsir.org/bbs/thread277353.html">参考 LinuxSir 上面的篇文章</a>。</p>

<p>PS：我的移动硬盘容量太少了，尤其是放了 Slackware 安装镜像（舍不得删）和几部“电影”（更舍不得删）以后更是捉襟见肘。哪位兄弟有实惠的移动硬盘推荐？</p>


<p>
<a href="http://www.gracecode.com/wap/">Gracecode.com</a> |
<a href="http://www.gracecode.com/wap/d/1571 ">Permalink</a>(<a href="http://www.gracecode.com/Archive/Display/1571 ">xHTML</a>) |
<a href="http://www.gracecode.com/Trackback/Recieve/1571/ttc7p6">Trackback</a> |
<a href="http://rss.gracecode.com">Rss</a>
</p>
</card>
</wml>