使用 Linux 进行系统管理教学
系统管理是任何计算机系统的重要组成部分。然而,大多数大学不教授系统管理。那么人们在哪里学习如何成为系统管理员呢?基本上,他们必须自学。下一个合乎逻辑的问题是:是什么使人们能够学习如何进行系统管理?我们的答案是:系统管理需要对操作系统 (OS) 和网络如何运行有基本的理解。然而,与传统的计算机科学操作系统或网络课程(教授低级(即编程)细节)不同,系统管理只需要理解理论和基础知识。例如,您不必了解页表布局即可理解如何安装和配置交换空间。
在 Grand Valley State University,我们开发了一门课程,该课程教授操作系统和网络基础知识,同时使用系统管理作为潜在的主题。我们的学生是信息系统专业的学生,他们原本永远不会了解操作系统和网络的原理。在本课程中,我们涵盖了操作系统主题,例如用户、组、文件共享和进程,以及网络主题,例如应用层协议、传输层和网络设备配置。
该课程有两个组成部分:传统的讲座,我们在其中教授操作系统和网络的概念和原理,以及实验室,学生能够在实验室中将讲座中 Concepts 学习到的概念应用于“真实世界”环境。我们的其他论文(请参阅“资源”)讨论了课程的组织。我们在此处的目的是展示如何使用 Linux 来支持课程的实验室。
探索性操作系统 (EOS) 实验室由 24 台配备 128MB RAM、10GB 硬盘、软驱和 Zip 磁盘的 Pentium III 组成。每台机器都运行 Red Hat 6.2。该实验室是一个生产环境——它是大多数 CS 和 IS 专业以及几位教员的主要帐户。因此,该实验室不是一个纯粹的研究实验室。真实的人每天都在使用该实验室。由于我们的实验室不是专门的研究实验室,因此每个学期向 24 名学生组成的团队提供 root 访问权限是不可能的。但是,学生需要超级用户访问权限才能执行即使是最基本的系统管理职责。
我们的解决方案是利用每台机器上的 100MB Zip 磁盘为每位学生提供专用的 Linux 发行版。每位学生在 Zip 磁盘上创建一个启动软盘和一个根文件系统。通过这种设置,学生可以插入两个磁盘并重新启动机器。然后,学生拥有一个完全属于他们自己的工作 Linux 发行版,并且他们能够自行管理。在这种环境中,学生可以执行当天的实验室实验。完成后,他们只需关闭机器,取出软盘和 Zip 磁盘并重新启动。然后系统以正常的 EOS 实验室配置启动。
目前,软盘启动盘内核基于 2.2.13 内核,并且不需要特殊的内核源代码修改。但是,我们确实以两种特殊方式配置内核(使用 make xconfig)。首先,我们将内核配置为 SCSI 仿真(CONFIG_CHR_DEV_SG 和 CONFIG_SCSI 设置为 true)。我们有 IDE Zip 磁盘并在 SCSI 仿真下运行它们,因为 IDE 驱动程序似乎无法很好地处理大文件。
我们的第二个配置修改是禁用对硬盘的所有访问。请记住,我们通常在实验室中运行标准的、多用户 Red Hat 系统。如果我们不禁用对硬盘的访问,学生可以启动他们的 Zip 磁盘,挂载硬盘并拥有完全的自由来进行更改(例如更改 root 密码)。我们通过将两个配置变量设置为 false 来禁用硬盘访问,CONFIG_BLK_DEV_IDE 和 CONFIG_BLK_DEV_HD_IDE。
其他内核配置选项启用网络设备,启用 SysV init 等。配置内核后,我们只需编译它。有关更多信息,请参阅 Kernel how-to。
将内核安装到软盘上是通过在软盘上创建一个新的 ext2 文件系统(使用 mke2fs)并将内核复制到软盘的根目录来完成的。软盘还需要一个引导块(cp /boot/boot.b /mnt/floppy)和一个特殊的 LILO 配置,如下所示
boot=/dev/fd0 map=/mnt/floppy/map install=/mnt/floppy/boot.b prompt compact timeout=50 image=/mnt/floppy/vmlinuz label=linux root=/dev/sda1 read-only
我们的 LILO 配置使软盘可启动,并将 /dev/sda1 指定为根磁盘。回想一下,我们将运行 SCSI 仿真,因此 /dev/sda1 是 Zip 磁盘。
然后我们运行 /sbin/lilo -C /mnt/floppy/lilo.conf 以安装新的 LILO 映像。
根磁盘基于 Slackware v7.0。我们选择 Slackware 主要是因为它对安装的软件包提供了精细的控制,这使我们能够轻松地将发行版安装到 100MB Zip 磁盘上。对于我们的系统管理课程,我们安装了以下软件包:a、ap 和 n。以下是命令
# fdisk /dev/sda create a single ext2 partition that covers the entire Zip disk # mke2fs /dev/sda1 make a file system on the Zip disk # mount /dev/sda1 /mnt/zip mount the Zip disk # cd /mnt/zip # tar -zxvf /tmp/slackware/a1/aaa_base.tgz # sh install/doinst.sh # rm -rf install
对每个所需的软件包重复最后三个步骤。
不幸的是,由于空间不足,我们不得不遗漏某些软件包。最值得注意的是,提供 C/C++ 的 d 软件包和提供内核源代码的 k 软件包被排除在外。我们希望将来使用更大的可移动磁盘来解决这个问题。Lineo 是一家专门从事嵌入式 Linux 的公司,它提供了一种替代方案,可以缩小标准 Linux 发行版的大小,以便将标准 UNIX 实用程序放入一个小空间中。BusyBox 是一个开源项目,它将许多常见 UNIX 实用程序的微型版本组合到一个小型可执行文件中(请参阅“资源”)。
学生在学期的第一个实验室中创建自己的启动盘和根磁盘。但是,他们对 Linux 的了解不足以在没有大量手把手指导的情况下完成此操作。因此,我们创建了一个流程,学生只需运行几个命令即可创建启动盘和根磁盘。具体来说,我们创建工作启动盘和根磁盘的映像。创建映像是使用以下命令完成的
dd if=/dev/fd0 of=floppyimage dd if=/dev/sda1 of=zipimage
使用这种方法,学生只需使用 dd 将映像转储到相应的设备,使用以下两个命令
dd if=floppyimage of=/dev/fd0 dd if=zipimage of=/dev/sda1
使用 Linux 教授系统管理对我们来说效果非常好。使用 Zip 磁盘允许每个学生获得管理自己系统的实践经验,而不会干扰硬盘上的“真实”系统,也不会干扰其他学生。尽管 Zip 驱动器只有 100MB,但事实证明它足以创建一个包含所有必要组件的工作系统。
我们强烈认为,如果没有 Linux,我们的实验室是不可能实现的。由于其开源性质,我们能够自定义发行版,以便完整的系统可以安装在一个 Zip 磁盘上。此外,我们还能够自定义内核,使我们的生产系统免受学生篡改。
我们使用生产实验室环境作为专用系统管理实验室的方法唯一剩下的问题是,必要的重启会中断机器的远程用户。我们通过明确标识不受这些重启影响的机器,并鼓励远程访问用户避开带有 Zip 磁盘的实验室机器来解决这个问题。
您可以在课程网站(请参阅“资源”)上找到讲义、实验作业和其他软件。

