無標題文檔

简述 Slackware Linux 硬盘安装原理

虽然 Slackware Linux 12.1 已经出来了 ,但对于我这个懒人也懒得去折腾。前几天有台 Windows 服务器被换下,在我的忽悠下管理员答应安装 Slackware 试试看,于是揣着我心爱的移动硬盘去了冬暖夏凉的 IDC 机房。

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

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

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

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

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

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

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

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

grub> kernel (hd0,0)/bare.i
    注,Slackware 还提供了其他几个内核镜像
grub> initrd (hd0,0)/initrd
grub> boot

这样,基本的安装环境就引导完毕了。下面可以执行在安装软件包前的一系列操作。

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

# mkdir /target /iso 
    注,不要重名就可以
# mount /dev/sda1 /target 
    注,/dev/sda1 是移动硬盘的相应分区位置
        可以通过查看内核输出获得

然后在可以读取 iso 文件的前提下,再 mount 这个镜像文件到另外一个目录

# mount -o loop /target/slackware-12.1-dvd.iso /iso

切换回到 setup 安装程序(ALT + F1),指定安装源为 /iso/slackware 即可继续完成安装操作。

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

最后,有关详细的安装步骤,可以 参考 LinuxSir 上面的篇文章

PS:我的移动硬盘容量太少了,尤其是放了 Slackware 安装镜像(舍不得删)和几部「电影」(更舍不得删)以后更是捉襟见肘。哪位兄弟有实惠的移动硬盘推荐?

Slackware Linux 启动图

Slackware Linux 经典的部分之一,就是其启动脚本(有空写下注释)。看见 老外的篇文章 ,让我重新审视了其启动的详细过程。

https://friable.rocks/_/2009_11_05/1260656ecf6c.jpg

使用 Slackware 那么久,尝试着给它做点贡献。于是就有了这张启动图,可能还有很多遗漏或者错误的地方,欢迎随时指正。

最后, 大图下载在这里

回顾 /proc 目录

Linux 内核将所有的设备都抽象成文件管理。这在 Linux 开发中非常有用,比如读取和写入端口只需要文件操作就可以了。

基本上,Linux 系统下的文件类型可以划分成 普通文件、目录(是的,目录也是文件)、字符设备文件、块设备文件、符号链接文件等。具体的文件类型信息,可以 参考这里

https://friable.rocks/_/2007_11_10/1194688459.gif

很多兄弟都会发现,在根目录(「/」)下都有个名为 proc 的目录。而实际的硬盘上,却并没有此目录内容。这是因为 Linux 内核在初始化系统以后,对系统各信息生成的映射。

比如,/proc/cpuinfo 文件记录了本机的 CPU 信息。放心的 cat 一下吧,它可以认为是个文本文件。这样,无论调用哪种程序语言(当然,Javascript 可不行),只要访问这个文件的内容就可得知 CPU 信息。

类似的,比如

  1. /proc/meminfo 本机的内存信息
  2. /proc/version 内核的版本信息,甚至包含了编译日期
  3. /proc/filesystems 内核支持的文件系统列表
  4. /proc/uptime 记录了系统已经运行了多少秒
  5. ...

通过 proc 目录,还可以得知内核是否支持某项功能。比如在 proc 目录下有没 apm (「/proc/apm」)文件,即可得知内核是否支持高级电源管理等等。

最后,有关 proc 更多的内容,可以 参看这里

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章