1. 作业场景与整体规划1.1 这次作业到底在练什么先说下背景。这次作业是红帽Linux课程里边的第二次实操作业前后持续了一周左右。第一次作业主要是熟悉红帽系统的安装界面和基本分区这次则更进一步要求在红帽5.8系统上完成一套从镜像获取、虚拟机部署、系统安装、基础配置到服务验证的完整流程。说实话作业题目本身不长但做下来会发现每个环节都埋着坑绝对不只是“点几下下一步”那么简单。红帽5.8这个系统版本有点特殊。它不是最新的RHEL但很多企业里老业务系统还在用它。内核是2.6.18系列服务管理方式还停留在System V init阶段没有systemd那些新概念。用现在的眼光看可能觉得很“老古董”但恰恰是这套东西能把Linux底层原理讲明白。之后再切到CentOS 7、RHEL 8这些新版本时你会发现很多概念都是相通的只是命令变了、管理方式变了。作业的核心需求可以拆解成四块一是红帽镜像的准备与校验重点在于理解ISO文件结构和引导流程二是在虚拟机中完整走一遍安装流程理解分区和软件包选择对后续使用的影响三是安装完成后的基础配置包括网络、主机名、yum源、用户权限等四是针对常见故障做排查比如引导项丢失、依赖库缺失、服务起不来等问题。每一块都是实际运维工作中高频遇到的内容。1.2 为什么还要在虚拟机里装老版本有同学会问现在都什么年代了直接装个RHEL 9不香吗作业指定用5.8这个选择其实是有讲究的。老版本系统对硬件要求低512MB内存加10GB磁盘就能跑得很流畅特别适合在没有高性能服务器的情况下练习。更重要的是老版本没有那么多自动化工具辅助很多操作必须手动完成这反而是练基本功的好机会。以yum源配置为例RHEL 5.8默认没有注册的话需要手动挂载ISO并编写repo文件。这个过程要理解baseurl的路径指向、gpgcheck的作用、清理缓存和生成缓存的差异。换到新版本上虽然dnf和yum用法相似但因为系统里可能预置了很多配置学生反而容易忽略底层逻辑。所以老版本更像是“素颜版”能看清每个组件长什么样。我实际装的时候用了VMware Workstation也可以选择VirtualBox两者差别不大。关键是虚拟机配置不能太随意尤其是内存和磁盘分配会影响后续安装选项的可用性。这一点后面详细说。2. 红帽镜像准备与虚拟机环境搭建2.1 镜像文件的获取与校验思路第一个实操环节是拿到红帽5.8的ISO镜像。这里需要说清楚作业中使用的通常是教学评估版本从红帽官方开发者站点或学校内部实验平台获取。拿到的是一个约3到4GB的DVD ISO文件文件名形如rhel-server-5.8-x86_64-dvd.iso。光拿到文件还不够必须要校验完整性。常见做法是计算SHA256值然后和官方公布的值做对比。这一步别嫌麻烦我见过不止一次因为镜像下载不完整导致安装中途报错的案例。比如安装到一半卡在“Reading package information”或者“Running post-installation scripts”阶段很多人以为是硬件问题最后发现就是镜像文件哈希对不上。校验方法很简单在Linux环境或者Windows环境都有对应工具# Linux环境 sha256sum rhel-server-5.8-x86_64-dvd.iso # Windows PowerShell环境 Get-FileHash .\rhel-server-5.8-x86_64-dvd.iso -Algorithm SHA256拿到哈希值后和官方公布值对比。如果一致再继续下一步不一致就重新下载不要抱有侥幸心理。2.2 虚拟机参数如何规划创建虚拟机时我推荐的配置是内存1GB到2GB处理器1到2核磁盘20GB网络模式用NAT。这组参数不是随手填的每一项目后都有原因。内存方面RHEL 5.8的图形安装界面比较吃资源512MB虽然能进但会很卡尤其后面跑一些编译任务更明显。建议至少给1GB有条件就给2GB这样装完系统跑起来也顺畅。处理器给1到2核就够老系统对多核支持有限给多了实际也用不上。磁盘给20GB是有讲究的。RHEL 5.8默认安装大约占用2.5GB空间但很多实验要做LVM逻辑卷扩容、搭yum源缓存、编译源码包、装额外的软件包这些都需要磁盘空间。如果只给10GB等到做磁盘扩容实验时会非常尴尬。我见过有同学分区时手动把/home割了很大空间出来结果/var只有2GB装了几个依赖包后直接满了后面的作业完全没法继续做。网络模式建议选NAT而不是桥接。NAT模式下虚拟机通过宿主机共享IP访问外网不用管IP分配问题对于只需要本地网络环境做练习的场景最省心。如果选了桥接还得考虑学校机房或公司网络里有没有DHCP服务、IP是否冲突、是否需要配置代理等问题纯属给自己找麻烦。创建完虚拟机后把ISO镜像挂载到虚拟光驱。VMware里设置方式是在“CD/DVD”选项中选择“使用ISO映像文件”浏览定位到下载好的红帽镜像。设置好之后不需要急着开机先确认启动顺序里光驱排在硬盘前面否则又会从空白硬盘启动卡在找不到操作系统的界面。2.3 镜像文件烧录格式的一个小知识点这里补充一个容易被忽略的冷知识。ISO镜像有两种常见的引导方式一种是一整张DVD的完整镜像另一种是精简过的boot ISO。完整DVD镜像里包含了软件包仓库安装系统时可以直接从光盘读取包不需要额外配置网络源。boot ISO只包含引导程序和安装器安装过程中需要手动指定软件包来源。作业要求用红帽镜像完成安装所以我强烈建议使用完整的DVD ISO。这样做有一个附带好处系统安装完成后这张ISO还能继续物尽其用作为本地yum源来使用。后面配置软件安装环境、安装wget、vim、gcc等工具时就会感谢当初没用boot ISO的决定了。3. 红帽5.8系统安装全流程拆解3.1 安装启动与语言选择一切准备就绪后启动虚拟机。看到红帽的引导界面时有多个选项可以选。直接回车是图形模式安装也可以输入linux text进入文本安装模式。对新手来说图形模式更友好但如果你的虚拟机内存分配很低或者想要体验更原汁原味的安装流程文本模式也是一种选择。我个人实际做作业时用的图形模式主要是为了观察分区界面和软件包选择界面的布局逻辑。安装开始的第一个选择是语言。系统语言和键盘布局通常选English即可不要选中文。为什么因为后续很多操作、日志信息都是英文的如果安装界面用了中文遇到问题时反而会因为术语对应不上而卡壳。键盘布局保持默认的US English不需要改。接下来的几个界面依次是磁盘分区方式、时区设置、root密码设置。这里重点说一下磁盘分区。3.2 磁盘分区到底该怎么选分区方式是整个安装过程中最值得琢磨的地方。红帽5.8提供了几种方式Remove all partitions清除所有分区、Use existing free space使用空闲空间、Create custom layout自定义布局。作业场景下我建议直接选自定义布局。虽然系统有默认的LVM自动分区选项看起来省事但对新手来说反而无法理解系统怎么划分磁盘的。自定义布局是理解Linux目录结构和LVM机制最直接的方式。我当时的分区策略是这样的分区/逻辑卷大小挂载点文件系统说明/dev/sda1200MB/bootext3引导分区存放内核和grub/dev/sda24GB/ext3根分区系统核心文件/dev/sda32GBswapswap交换分区剩余空间11.8GB分配给LVM作为物理卷和卷组后续创建逻辑卷这里为什么把LVM卷组空着而不是直接分配给某个目录因为作业后半段有一个重要实验是LVM逻辑卷的动态扩容。如果安装时把所有空间都直接分配给了/后面再想体验LVM扩容就得加硬盘从零开始建费时费力。所以我在卷组里先建了一个5GB的逻辑卷挂载到/home剩下约6.8GB存留在卷组里备用后续要用lvextend扩展时就有操作空间。手动分区过程中的一个小提示在自定义分区界面里创建逻辑卷时会经历三个层级——先创建物理卷PV再创建卷组VG最后创建逻辑卷LV。这个顺序一定不能乱。选项位置在“LVM Volume Group”和“Add”按钮附近。如果之前没接触过LVM建议放慢速度看一下每个步骤的界面变化这是理解LVM概念最好的时机。3.3 软件包组选择装这些就够了软件包的选择是安装过程的另一大重点。红帽5.8默认会带一组软件包但远远不够后续作业使用。在“Software Installation”界面里有按功能划分的软件包组选项常见的有Desktop Environments、Development Tools、System Tools等。建议至少勾选以下几类Development Tools包含gcc、make等编译工具链System Tools包含一些系统管理和监控工具Administration Tools包含系统配置图形工具如system-config-network、system-config-lvm等Editors包含vim等文本编辑器这里有个容易踩的坑如果空间不够系统会在安装过程中弹出依赖错误提示。我们前期分配了20GB磁盘并且给根分区留了4GB正常情况下不会有问题。但如果你手欠把根分区只给了1.5GB那到软件包安装阶段大概率会卡住或者自动跳过部分包。这也就解释了为什么前面强调分区不能太抠。软件包依赖规则在RHEL 5.8中已经处理得很智能了自动勾选了某些需要的依赖包。但如果选得太少比如只选了一个Minimal那系统装完后甚至连ifconfig都没有。没有ifconfig想配IP就得用ip命令或者直接改网卡配置文件对新手来讲难度直接上一个台阶。安装过程大约需要20到40分钟视虚拟机性能和选择的软件包数量而定。中途不要强制关机否则下次启动时会发现引导不完整或者软件包数据库不完整。3.4 安装完成后的第一次重启安装完成后系统会提示重启。重启时记得在虚拟机设置里把启动顺序改成硬盘优先或者直接把光驱里的ISO镜像断开连接否则虚拟机会再次从光盘引导进入安装界面。这一条看起来很简单但几乎每次都会有人在群里问“怎么又进安装界面了”。重启进入系统后看见的是图形登录界面或者命令行登录提示取决于你之前有没有选择安装图形桌面。如果安装了图形桌面登录后只能看到基本的桌面环境。如果没装桌面直接就是一个黑底白字的命令行登录界面。到这里红帽5.8系统本身算是装完了但作业只完成了一半。系统安装成功只代表有了一个壳要让这个系统真正用于后续的实验和学习还得做基础配置。这里我强烈建议你在第一次登录时就用root账号后面的很多操作需要root权限省得一会儿sudo一会儿su的折腾。4. 系统初始化配置实操记录4.1 网络参数配置手工修改还是命令配置新安装的系统默认网卡是down状态需要手动启用。RHEL 5.8的网卡名通常是eth0可以使用ifconfig -a查看。如果没有输出说明网卡根本没被识别或者没有激活。配置网络有两种思路。第一种是用setup命令打开文本图形化配置界面选择Network configuration然后配置eth0的IP、网关、DNS。第二种是直接修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0。两种方式原理相同但更推荐手动改文件因为生产环境里很多时候没有图形化工具只能靠编辑配置文件完成网络设置。改配置文件的操作如下vi /etc/sysconfig/network-scripts/ifcfg-eth0把内容改成DEVICEeth0 BOOTPROTOstatic ONBOOTyes IPADDR192.168.137.100 NETMASK255.255.255.0 GATEWAY192.168.137.1 DNS1192.168.137.1注意几个关键点。ONBOOTyes一定要设置否则每次重启网卡都不会自动启用。BOOTPROTO要改成static或者none不要保留dhcp。如果虚拟机用的是NAT网络模式网关一般设置成宿主机虚拟网卡的IP在VMware里通常是192.168.137.1这样一个地址。不同版本可能不同可以用ip route之类的方式确认。改完后执行service network restart重启网络服务。如果没有报错用ping命令检查一下连通性。先ping网关再ping外网地址。作业环境里如果无法访问外网ping不通外网是正常的只要局域网内通了就行后面配yum本地源根本不依赖外网。4.2 主机名与本地解析的联动关系配置完IP后接着设置主机名。RHEL 5.8中主机名配置文件是/etc/sysconfig/network当前会话中的临时修改可以使用hostname命令。顺手修改/etc/hosts把主机名和IP的对应关系写进去。这个动作看似多余但很多服务在启动时需要反解主机名如果/etc/hosts里没有对应记录服务可能启动缓慢甚至失败。比如后面作业里要搭建的sshd服务和crond服务日志里如果出现“unable to resolve host”的警告多半就是/etc/hosts配置不全。别问我为什么知道这个问题我当年排查了一个晚上。4.3 本地yum源的配置方法因为红帽系统如果没有订阅使用网络源会很麻烦所以作业最推荐的方案是把安装时用的ISO镜像挂载成本地yum源。这样做的好处是基础软件包基本都能找到速度还快不占用外网带宽。先把镜像挂载到指定目录mkdir -p /mnt/cdrom mount -t iso9660 -o loop /dev/cdrom /mnt/cdromRHEL 5.8的DVD镜像里软件包存储在/mnt/cdrom/Server目录下。这个路径很关键如果你找错了yum源就会配置失败。然后在/etc/yum.repos.d/目录下新建一个repo文件注意这个目录下可能有其他repo文件干扰最好全部移走只保留自己创建的。cd /etc/yum.repos.d/ mv *.repo /tmp/ vi local.reporepo文件内容如下[Server] nameRed Hat Enterprise Linux 5.8 Server baseurlfile:///mnt/cdrom/Server enabled1 gpgcheck0这里解释几个参数。baseurl指向的是Server目录而非挂载根目录这是新手最容易犯的错误。gpgcheck0表示不检查GPG签名因为本地ISO镜像不需要签名校验而且如果设置为1但没导入红帽公钥所有安装操作都会报错。之后清理缓存生成缓存yum clean all yum makecache执行完yum makecache后如果能看到一堆Server仓库的metadata信息说明yum源配好了。此时可以装一个软件包验证比如yum install -y vim-enhanced。能正常安装就说明大功告成。配置ISO开机自动挂载也是值得做的一步。在/etc/fstab中添加一行/dev/cdrom /mnt/cdrom iso9660 defaults,loop 0 0不然重启后镜像不会自动挂载yum源又在重启后完全失效。每次手动mount不是不可以但事情多了总会忘记。4.4 必装工具与基础安全项完成上述配置后还要把这些基础工具补齐。按经验系统初始化后第一件事就是用yum把常用的网络排查和编辑工具装好。比如lsof、tcpdump、net-tools、bind-utils、telnet虽然老但排查端口很方便。如果后续作业里需要编译内核模块或者写C程序gcc、make、kernel-devel、kernel-headers也都装好。安全方面iptables默认是开启的。很多服务如FTP、HTTP配好后外部访问不了多半就是防火墙阻挡了。本地实验环境可以直接清空规则并保存iptables -F service iptables saveSELinux如果不想花时间去研究规则建议直接修改/etc/selinux/config把SELINUXenforcing改成SELINUXdisabled重启后生效。不过如果作业本身要求研究SELinux千万不要图省事直接禁用那相当于把送分题扔了。5. 典型故障与排查心得5.1 引导项丢失或启动卡住的问题装系统过程中很多同学都遇到过拔掉光驱镜像后开机直接提示“Operating System not found”。这种情况通常是启动顺序设置不当虚拟机的BIOS里硬盘不在第一启动项或者GRUB引导程序没安装到硬盘主引导记录。排除顺序问题后如果还是找不到系统可以重新挂载ISO进入rescue模式修复GRUB不过在RHEL 5.8上还涉及grub-install和grub.conf的配合修复思路和后来版本差别不大。具体来说用光驱引导系统后在安装界面输入linux rescue进入救援模式选择原系统挂载到/mnt/sysimage然后执行chroot /mnt/sysimage grub-install /dev/sda grub在GRUB命令行里执行root (hd0,0) setup (hd0) quit这样可以重建引导信息。如果还记得内核文件路径也可以直接检查/etc/grub.conf里的配置是否正确确认root (hd0,0)指向的分区确实包含/boot目录下的vmlinuz和initrd文件。5.2 yum安装时报Could not resolve host这个问题多半不是网络配置本身错了而是DNS指向问题。检查/etc/resolv.conf里的nameserver是否配置确认路由是否带了默认网关。如果本地源通过file://方式访问理论上完全不需要外网DNS。但很多人犯的毛病是写repo文件时用了baseurlhttp://mirror.site/...而不是file://或者挂载的本地路径。这个问题的直接现象就是执行yum install时报错Couldnt resolve host或Could not resolve host。解决办法是检查repo文件。如果确实要用网络源先确认system能ping通外网并且DNS解析没有遗漏。但在作业中最稳妥的还是切回本地源方式毕竟ISO文件就在手边。5.3 安装软件报依赖缺失RHEL 5.8年代软件包依赖问题比现在严重得多。你装一个包告诉你说需要libc.so.6(GLIBC_2.7)但其实系统里的glibc版本偏低。这种问题通常说明repo源里的包版本不一致或者你在32位和64位包之间混着装了。排查时首先用yum deplist 包名查看依赖关系确认这个包需要哪些文件和版本。其次用rpm -q glibc查当前系统里的实际版本。如果确实需要升级glibc就需要到ISO镜像的Server目录里找对应版本手动安装但要特别小心glibc升级导致系统崩溃的风险。个人建议不要轻易升级glibc优先寻找合适版本的软件包。5.4 服务启动失败排查思路RHEL 5.8中服务通常使用service 服务名 start启动。启动失败时第一件事不是看配置文件而是看日志。这里是老规矩应用日志在/var/log/下比如/var/log/messages里能看到大部分问题的线索。也可以使用tail -f /var/log/messages边启动服务边观察输出很多时候直接就能看到拒绝连接、权限不足等关键报错。ssh服务如果起不来多半是/etc/ssh/sshd_config被改坏了比如Port参数设成了一个已被占用的端口或者主机密钥文件权限不对。检查/var/log/secure也能看到详细告警。知道日志怎么排查远远比会背命令重要。6. 作业完成后可以顺手做的扩展实验6.1 LVM逻辑卷扩容系统的原有分区和卷组结构在安装阶段已经预留了空间所以后续练习LVM扩容几乎没有阻碍。查看当前卷组剩余空间用vgdisplay看到Free PE数量非零就行。扩展逻辑卷流程如下lvextend -L 2G /dev/VolGroup00/LogVol_home resize2fs /dev/VolGroup00/LogVol_home这个操作在实际运维中常用来解决磁盘空间不足问题不值钱但实用。要注意的是RHEL 5.8的ext文件系统扩容不需要卸载分区可以直接在线操作。缩容则不建议在生产环境操作风险不小练习时也别拿关键分区当小白鼠。6.2 搭建一个局域网内文件共享服务第二次作业之后紧接着要接触的内容大概率是网络服务搭建。可以提前用vsftpd搭一个FTP服务器练手。先yum install -y vsftpd然后关掉防火墙限制修改/etc/vsftpd/vsftpd.conf允许匿名访问再把/var/ftp/pub设成可写权限。整个过程能串联起用户权限、文件系统权限、网络监听、防火墙策略等多个知识点。6.3 抓包分析一次完整的TCP三次握手如果已经装了tcpdump可以用它抓一次远程连接过程的包。开两个终端一个执行tcpdump -i eth0 port 22另一个执行ssh localhost观察报文中SYN、SYN-ACK、ACK的交互。这项操作本身非常简单却能把网络课本上的概念落到实地。比干背三次握手状态转换表有用一万倍。7. 这次作业我体会最深的三件事重新走了一遍红帽5.8的安装配置流程如果要总结几条最值得分享的经验我觉得是这几条第一做系统实验永远不要追求一步到位而是应该一步步理解每个参数是在调什么为什么这么调第二日志是系统给你的第一手线索遇到故障不要乱猜学会看/var/log下的各类文件排查速度会快很多第三磁盘规划眼光要放长远作业不是装完系统就结束了后面还有一连串实验等着用空间。最后再提醒一个细节装完系统并完成基础配置后在虚拟机里做一次快照给快照起一个类似“base-configured”的名字。这样后面不管做什么实验搞挂了系统都能快速回滚到这个干净状态。这一招在后来的课程作业里帮我省了无数次重装系统的时间真的是非常划算的习惯。