1. 为什么需要手动部署Linux系统
在云计算和自动化工具大行其道的今天,手动部署Linux系统似乎显得有些"复古"。但作为一名从业十余年的系统工程师,我必须告诉你:掌握手动部署这项基本功,依然是每个Linux管理员不可或缺的核心技能。
手动部署能让你:
- 彻底理解系统启动流程和分区结构
- 根据硬件特性定制内核参数
- 灵活控制软件包选择
- 排查问题时拥有上帝视角
最近国产Linux发行版的崛起(如麒麟、统信UOS)也让手动部署有了新的应用场景。许多企业开始要求系统管理员具备从零构建系统的能力,特别是在信创环境中。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的四大准备工作
2.1 镜像选择策略
主流发行版中:
- CentOS/Rocky Linux适合企业服务器
- Ubuntu Server对新手更友好
- Debian以稳定性著称
- 国产发行版需注意硬件兼容性
关键提示:务必验证镜像SHA256校验值,我曾遇到过因镜像损坏导致安装失败的案例
2.2 硬件兼容性检查
制作硬件清单表格:
| 硬件类型 | 检查要点 | 工具推荐 |
|---|---|---|
| CPU | 架构(x86/ARM)、虚拟化支持 | lscpu |
| 内存 | 容量、ECC支持 | dmidecode |
| 存储 | 接口类型(NVMe/SATA)、RAID卡型号 | lspci |
| 网卡 | 驱动是否在内核中 | ethtool -i |
2.3 分区方案设计
经典分区方案示例:
code复制/boot 1G ext4
/ 50G xfs
/home 剩余空间 xfs
swap 内存大小的1-2倍
对于数据库服务器,建议单独划分:
code复制/var/lib/mysql 专用分区
2.4 启动介质制作
使用dd命令的完整参数:
bash复制dd if=CentOS-7-x86_64-Minimal-2009.iso of=/dev/sdb bs=4M status=progress && sync
常见坑点:
- 确认目标设备是否正确(误操作会清空数据盘)
- 完成后必须执行sync命令
- U盘建议使用USB 3.0接口
3. 详细部署流程解析
3.1 BIOS/UEFI设置要点
传统BIOS与UEFI的关键区别:
- BIOS使用MBR分区表(最大2TB)
- UEFI需要GPT分区表和ESP分区
安全启动(Secure Boot)处理:
bash复制# 查看安全启动状态
mokutil --sb-state
# 如需禁用(某些老旧硬件需要)
mokutil --disable-validation
3.2 文本模式安装详解
在虚拟机中测试时,建议使用文本安装模式:
- 启动时添加参数:
bash复制
linux text - 网络配置示例:
bash复制# 查看网卡名称 ip link # 静态IP配置 nmcli con add con-name eth0-static ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1 nmcli con mod eth0-static ipv4.dns "8.8.8.8 114.114.114.114"
3.3 软件包选择策略
最小化安装后必备组件:
bash复制# CentOS/RHEL系
yum install -y @core vim-enhanced net-tools wget
# Debian/Ubuntu系
apt install -y --no-install-recommends vim net-tools wget
开发环境推荐组合:
bash复制# 构建工具链
yum groupinstall -y "Development Tools"
# 内核开发包
yum install -y kernel-devel elfutils-libelf-devel
4. 安装后必须的20项配置
4.1 安全加固清单
-
SSH加固:
bash复制sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config systemctl restart sshd -
防火墙规则:
bash复制
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
4.2 性能调优参数
内核参数优化:
bash复制# 添加到/etc/sysctl.conf
vm.swappiness = 10
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
磁盘I/O调度器:
bash复制# 查看当前调度器
cat /sys/block/sda/queue/scheduler
# 修改为deadline(对于SSD)
echo deadline > /sys/block/sda/queue/scheduler
5. 故障排查手册
5.1 常见安装问题
-
显卡驱动问题:
bash复制# 启动时添加nomodeset参数 linux nomodeset -
找不到磁盘:
- 检查是否加载了正确的RAID卡驱动
- 尝试添加内核参数:
hpsa.hpsa_allow_any=1
5.2 系统无法启动修复
使用救援模式:
- 挂载根分区:
bash复制
mount /dev/sda2 /mnt mount /dev/sda1 /mnt/boot - chroot环境:
bash复制chroot /mnt - 重建grub:
bash复制
grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg
6. 进阶:自动化部署准备
虽然本文重点在手动部署,但为后续自动化铺路:
-
保存安装配置文件:
- Kickstart(RHEL系)
- Preseed(Debian系)
-
生成系统快照:
bash复制# 创建可克隆的模板 virt-sysprep -d vm_name
手动部署的最大价值在于:当自动化工具失效时,你依然能从容应对。上周我就遇到一个案例:某金融客户的自动化部署系统故障,最终靠手动安装及时恢复了业务系统。
