1. 为什么需要手动部署Linux系统?
在云计算和自动化工具盛行的今天,手动安装Linux系统似乎显得有些"复古"。但作为一名有十年运维经验的工程师,我必须告诉你:掌握手动部署这项基本功,能让你在关键时刻游刃有余。
上周我就遇到一个典型案例:某金融客户的生产环境服务器因RAID卡故障需要紧急替换,自动化部署工具的网络引导模块恰好与新款硬件不兼容。最终靠手动安装30分钟解决问题,而等待工具适配至少需要2天。这种场景下,手动安装就是救命稻草。
手动部署的核心价值在于:
- 完全掌控安装过程的每个细节
- 适应特殊硬件环境和网络限制
- 深度定制分区方案和软件组合
- 排查问题时能准确知道系统状态
- 作为自动化部署失败时的备选方案
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 准备工作:介质与硬件兼容性检查
2.1 选择合适的Linux发行版
根据2023年DistroWatch的统计,主流服务器发行版选择比例如下:
| 发行版 | 市场份额 | 适用场景 | 安装难度 |
|---|---|---|---|
| RHEL/CentOS | 38% | 企业服务器 | 中等 |
| Ubuntu Server | 29% | 云计算 | 简单 |
| Debian | 18% | 稳定优先 | 中等 |
| openSUSE | 8% | 混合环境 | 中等 |
| Arch Linux | 4% | 极简定制 | 困难 |
建议新手从Ubuntu Server或CentOS开始,它们的文档最完善。我个人的工作站常年使用Debian testing分支,兼顾稳定性和新特性。
2.2 制作启动盘的进阶技巧
虽然Rufus和Etcher很流行,但在Linux环境下我更喜欢直接用dd命令:
bash复制# 确认U盘设备路径(重要!勿选错)
lsblk
# 写入镜像(以/dev/sdb为例)
sudo dd if=ubuntu-22.04.3-live-server-amd64.iso of=/dev/sdb bs=4M status=progress
几个关键注意事项:
- bs=4M参数能显著提升写入速度
- status=progress显示进度(GNU dd特有)
- 写入完成后执行sync确保缓存写入
- 在UEFI机器上需要FAT32格式分区
警告:dd命令会无条件覆盖目标设备所有数据,操作前务必三确认设备路径!
3. BIOS/UEFI设置与引导技巧
3.1 安全启动(Secure Boot)处理方案
现代主板默认开启Secure Boot,可能导致Linux安装失败。不同厂商的禁用方法:
| 主板品牌 | 进入BIOS按键 | 菜单位置 | 额外步骤 |
|---|---|---|---|
| Dell | F2 | Boot → Secure Boot | 需先设Admin密码 |
| HP | F10 | System Configuration | 保存需F10确认 |
| Lenovo | F1 | Security → Secure Boot | 无 |
| ASUS | DEL | Boot → Secure Boot | 需Advanced模式 |
特殊案例:微软Surface设备需要先进入Windows禁用BitLocker,否则修改Secure Boot会导致数据锁定。
3.2 引导顺序的隐藏陷阱
遇到过多次这种情况:安装介质明明在首位却无法引导。原因通常是:
- 某些主板区分UEFI和Legacy引导设备列表
- USB3.0接口在BIOS模式下可能需要EHCI支持
- 快速启动(Fast Boot)会跳过部分设备检测
解决方案组合拳:
- 同时尝试UEFI和Legacy模式
- 换用USB2.0接口或Hub
- 彻底关机(非重启)后尝试
4. 分区方案设计与实战
4.1 机械硬盘 vs SSD的优化策略
根据存储介质特性,我的推荐方案:
企业级机械硬盘(RAID):
code复制/boot 1G ext4
swap 内存1.5倍
/ 50G xfs
/var 50G xfs (日志单独)
/home 剩余 xfs
消费级SSD:
code复制/boot/efi 512M vfat
swap 内存等大(休眠支持)
/ 全部 btrfs (启用压缩)
NVMe企业级:
code复制/boot 1G ext4
/ 全部 xfs (mkfs.xfs -f -i size=2048 -d su=64k,sw=4)
经验:数据库服务器务必给/var单独分区,避免日志写满根分区。曾经有个MySQL实例因为没做隔离,导致整个系统崩溃。
4.2 LVM的进阶配置
逻辑卷管理器的真正威力体现在后期扩展:
bash复制# 初始创建
pvcreate /dev/sdb1
vgcreate vg0 /dev/sdb1
lvcreate -L 50G -n lv_root vg0
# 后期扩展(无需重启)
vgextend vg0 /dev/sdc1
lvextend -L +100G /dev/vg0/lv_root
resize2fs /dev/vg0/lv_root
关键技巧:
- 初始预留部分VG空间(如10%)便于thin provisioning
- 对数据库卷使用-w y选项避免fsck等待
- 使用lvconvert --merge实现快照回滚
5. 软件包选择与最小化安装
5.1 必选的基础组件
即使是最小安装,这些包也建议勾选:
- openssh-server:远程管理
- vim-tiny:基础编辑
- net-tools:基础网络
- lshw:硬件诊断
- sosreport:故障收集
避免安装图形界面!我见过太多服务器因为装了GNOME/KDE而莫名崩溃。实在需要Web管理,可考虑Cockpit:
bash复制dnf install cockpit # RHEL
apt install cockpit # Debian
5.2 安全加固第一步
安装完成后立即执行:
bash复制# 禁用root SSH登录
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
# 配置基础防火墙
ufw default deny incoming
ufw allow 22/tcp
ufw enable
# 设置自动更新
apt install unattended-upgrades # Debian
dnf install dnf-automatic # RHEL
6. 首次启动后的关键检查
6.1 硬件兼容性验证清单
bash复制# 检查驱动加载
dmesg | grep -i error
# 网络功能测试
ethtool eth0 | grep Speed
ping -c 4 8.8.8.8
# 存储性能基准
hdparm -Tt /dev/sda
6.2 系统性能调优
根据服务器角色调整内核参数:
bash复制# Web服务器
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
# 数据库服务器
echo "vm.swappiness = 10" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 30" >> /etc/sysctl.conf
7. 常见故障排除指南
7.1 安装过程卡死分析
典型症状及解决方案:
卡在"Detecting hardware":
- 尝试nomodeset内核参数
- 检查USB端口供电是否充足
- 可能是存储控制器需要额外驱动
图形安装界面黑屏:
- 添加text参数进入文本模式
- 更换显示输出接口(如从DP换HDMI)
- 检查显卡是否在兼容列表
7.2 首次启动失败处理
急救模式常用命令:
bash复制# 检查文件系统
fsck -y /dev/sda1
# 重新安装引导
grub-install /dev/sda
update-grub
# 检查服务启动失败
journalctl -xb
8. 从手动到自动的进阶路径
掌握手动安装后,可以逐步过渡到自动化方案:
- Preseed/Kickstart:将安装选项保存为配置文件
bash复制# Ubuntu示例
auto url=http://example.com/preseed.cfg
- Packer模板:构建一致性的系统镜像
json复制{
"builders": [{
"type": "qemu",
"iso_url": "ubuntu-22.04-live-server.iso"
}]
}
- Terraform+Ansible:完整的IaC工作流
手动安装的经验会让你更理解这些自动化工具背后的原理。最近我在客户现场就用手动安装调试出了一个Ansible角色中的隐蔽分区错误,这种问题没有底层经验很难排查。
