1. 装机前的“三定”:定发行版、定用途、定启动盘工具
很多人觉得Linux装机就是从官网下载个镜像、用Rufus(热词里已经出现这个工具了)写进U盘、开机按F12选启动项,然后一路Next完事。你要是只想装个能开机的Ubuntu桌面,这个流程确实够了。但“从装机开始”这四个字我理解得更重一些——它意味着这台机器从空白到能承载业务、被人远程访问、稳定运行、出问题能快速定位修复的完整链路。也就是说,装机不是终点,而是整个系统运维的起点,你在装机阶段做的每一个选择,都会直接影响后续几个月的维护成本。
所以第一步不是急着下载镜像,而是先想清楚三个问题:第一个问题,你装这个系统是要当桌面用还是当服务器用?桌面场景我会优先考虑Ubuntu LTS或者Linux Mint这类社区活跃、驱动支持完善的发行版;服务器场景我会倾向Debian稳定版或者Rocky Linux这类相对保守、更新节奏稳的发行版。第二个问题,你的硬件是什么年代的?太新的硬件需要较新内核才能正常驱动网卡和显卡,太老的硬件则需要轻量级桌面环境或者干脆不装桌面。第三个问题,你准备用这台机器练什么?是做Web服务器、搞容器化,还是学Hadoop生态,还是单纯想替代Windows做日常开发机?这三个问题的答案直接决定你选哪个分支的发行版,以及装完系统之后还要补哪些基础软件。
我个人最常给“从零开始学运维”的读者推荐的组合是这样的:如果你是初学,建议用Debian 12或Ubuntu 24.04 LTS,理由很简单——网上的资料最多,踩坑之后最容易搜到解决方案,而且包管理器apt的依赖处理能力对新手足够友好;如果你是想往企业运维方向发展,我建议至少亲手装一遍Rocky Linux 9,因为RedHat系在企业机房里的存量实在太大,很多面试题(热词里也出现了linux面试题)就是围绕yum/dnf、firewalld、SELinux来问的。两种派系的包管理器、防火墙配置、日志路径都不一样,你早晚都得会。
启动盘制作工具方面,Windows下我用得最多的是Rufus,它的好处是既能写ISO镜像,也能在写盘前直接做分区类型转换,还能校验写入完整性。Linux下我习惯用dd命令直接写盘,虽然界面不怎么直观,但对于纯Linux用户来说这是最可靠的方式。macOS下则可以用balenaEtcher。这个环节常见的坑是:明明已经把镜像写进U盘了,开机却提示找不到引导,十有八九是U盘的分区表类型和主板的启动模式不匹配——老主板用Legacy BIOS,新主板默认UEFI,Rufus在写盘的时候会问你,U盘是做成MBR还是GPT,启动模式是BIOS还是UEFI,这一步千万不能随便选。提前查一下你主板用的是UEFI还是Legacy,能省掉后面一个小时的折腾。
镜像选择上,如果你人在国内,建议优先从清华源或阿里云镜像站下载,而不是直接去官网,速度差别非常大。下载完镜像之后记得对比一下SHA256校验值,这个动作虽然多花十秒钟,但能防止下载过程中文件损坏导致安装中途报错。校验出问题的话不需要重下,重新用下载工具拉一遍文件即可。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统安装实测:分区、引导与软件源一个都不能将就
装机过程真正决定后续运维是否顺畅的环节不是“选时区”“设用户名”,而是磁盘分区和引导程序安装。为什么这么说?因为系统一旦装上跑起来,在线调整分区是一件风险很高且操作成本很大的事,你在安装阶段留下的分区规划,基本就是这台机器的长期物理布局。
以UEFI模式安装Debian 12为例,我会在分区这一步这样规划:首先,EFI系统分区(也就是ESP分区)必须留,建议大小500MB,文件系统选FAT32,挂载点选/boot/efi,这是UEFI引导的根本;其次,根分区/建议至少100GB以上,文件系统选择ext4,这是承载系统和应用的主战场;再看内存大小,内存8GB以上,swap分区可以只给8GB,如果内存16GB以上且你不准备用休眠功能,甚至可以不单独分swap,改用swap文件;最后,如果你有额外的数据盘或者打算后面跑数据库、容器镜像,那要单独分出数据分区挂到/home或/data下。注意,/boot和/boot/efi是两个不同的概念,很多新手会搞混。普通Linux发行版在UEFI模式下一般不需要单独的/boot分区,只需要/boot/efi就够了,单独再分一个/boot反而可能因为空间不足导致内核更新失败。
引导程序这一步,绝大多数桌面安装向导会默认帮你装好GRUB,但如果你是在已有Windows的机器上“双系统共存”,那就得仔细看引导菜单能不能同时识别出Windows Boot Manager。这里有个小技巧:只要Windows是UEFI引导的,GRUB后续可以通过update-grub扫描出Windows启动项,不用在安装阶段做太多干预。但如果你把Linux装在一块独立硬盘上,并想完全独立引导,那最好在安装过程中把GRUB装到那块Linux盘上,避免它污染Windows的EFI引导记录。
安装过程里还有一个细节,安装完成之后系统虽然可以启动了,但国内网络环境下默认的软件源速度往往会让你怀疑人生。Debian和Ubuntu安装到“选择软件源镜像”那一步时,要手动把默认源切换成国内镜像,比如清华源。这一步如果忘了,装完系统之后再改也不难,就是把/etc/apt/sources.list里的地址替换一遍,但umount根分区后编辑这个文件不是不能做,而是初次登录时系统可能因为等待网络超时变慢,体验会差很多。
安装完重启进入系统后,第一件事是确认网络通不通,第二件事是立即执行一次系统更新,把内核和安全补丁拉到最新。对于服务器系统来说,这一步属于“开机黄金窗口期”操作,越早做越安全,因为新装的裸系统如果不更新,可能存在已经公开的漏洞。
3. 初始化配置五件套:SSH远程、用户权限、防火墙、日志、快照
系统装完只是万里长征第一步。如果你装的是服务器版,做完下面这一整套初始化配置,这台机器才算具备“可以被运维”的基础素质。
第一件,推荐直接用SSH密钥登录而不是密码登录,这是运维老手和初学者的重要习惯差异。先在本地生成一对密钥:ssh-keygen -t ed25519 -C "comment",然后把公钥复制到服务器上:ssh-copy-id user@server_ip。等密钥验证通过之后,再修改/etc/ssh/sshd_config,把PasswordAuthentication设为no。这个动作做完后,暴力破解密码的通道就断了大半。千万不要在没有任何远程登录替代方案的情况下就关掉密码登录,不然密钥一丢你连门都进不去。我见过不止一次先把密码登录关了、发现密钥文件被误删、最后只能跑机房接显示器的案例。
第二件,新建一个日常使用的普通用户,让它拥有sudo权限,而不是一直用root操作。原因很简单:普通用户带sudo执行命令会留下完整的审计日志,运维排障时可以回溯到底是谁在什么时间做了什么;而root直连操作一旦手滑,影响面是全系统且不可追溯。创建用户的命令很简单:useradd -m -s /bin/bash username,然后passwd username设置密码,再把用户加入sudo组,不同发行版命令略有差异,Debian/Ubuntu是usermod -aG sudo username,Rocky/CentOS是usermod -aG wheel username。这一步做完,再测试一下新用户能否正常sudo,不要急着退出root会话。
第三件,把你的防火墙规则理清楚。Ubuntu/Debian默认跑的是ufw,Rocky/CentOS默认是firewalld。我的习惯是先在防火墙里显式放行22端口(或者你改过的SSH端口)再启用防火墙,否则可能出现“防火墙一开,SSH立刻断”的尴尬情况。比如ufw allow 22/tcp && ufw enable,firewalld则是firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload。此外,如果是服务器,建议把SSH默认端口从22改成高位端口,比如Port 2222,虽然这不是什么高深的安全手段,但它能显著减少日志里那些自动化扫描工具的试探记录。
第四件,配置日志轮转和时间同步。日志服务大多数发行版默认装好了rsyslog或journald,但日志文件如果不限制大小,时间长了会吃掉整个磁盘。建议检查一下/etc/logrotate.d/下面的配置,确保syslog、nginx等关键日志每周轮转、保留四周。时间同步方面,服务端一定要开NTP,否则日志时间线乱掉排查问题会非常痛苦。Debian系的systemd-timesyncd默认就配好了,Rocky系可能需要安装chrony并启用。
第五件,在机器刚装完、状态干净的时候,做一个“初始状态快照”。如果你用的是VMware或VirtualBox虚拟机,可以直接打快照;如果是实体机,或者云主机,建议用tar打包一个系统关键目录的备份到外部存储,比如tar czvf system_init_backup.tar.gz /etc /var/log。这个动作的核心理由是:一旦你后续装软件、改配置、试脚本把系统搞崩了,你有一个“装完系统刚优化好”的干净状态可以快速回退,省掉重装系统的成本。热词里反复出现“装机”“一键装机”,其实就是大家在追求这种快速恢复能力。
4. 从命令行到脚本化:高频Linux命令的运维实战用法
系统初始化完成之后,接下来就是日常运维的“手艺活”了。这里我不打算罗列一堆命令让你硬背,而是想按真实场景说几个最常用的命令组合,它们才是运维中的高频动作。
第一个场景,查看系统状态。很多新手喜欢上来就跑top,但我建议在排查问题时分两步走:第一步用uptime看系统的负载均值和运行时长,第二步再用top或htop看是哪个进程在吃资源。当负载均值明显高于CPU核数时,说明系统有性能瓶颈,然后再结合free -h看内存够不够,df -h看磁盘满没满。很多时候服务器变慢并不是CPU不够,而是磁盘空间满了导致服务写日志失败,这种问题只要看一眼df -h就能秒定位。热词里“linux运维”“linux常用命令大全”就是这么来的,命令不难,难的是知道该在什么场景用哪条命令去验证什么假设。
第二个场景,查找文件和定位日志。服务器上要定位一个问题的根源,大概率是从日志开始的。CentOS/Rocky的日志主要在/var/log/messages,Debian/Ubuntu主要在/var/log/syslog,应用日志则各有各的路径。日志排查的核心命令组合是grep + tail + awk。比如你想看nginx最近一小时有没有报错:tail -n 5000 /var/log/nginx/error.log | grep "$(date +%d/%b/%Y:%H -d '1 hour ago')",类似这种写法在实战中非常常见。另外,如果要在整个日志目录里搜某个关键字的分布,grep -r "关键字" /var/log/ | awk -F: '{print $1}' | sort | uniq -c | sort -nr可以告诉你哪个日志文件命中的次数最多,快速圈定排查重点。
第三个场景,网络连通性排查。这个场景的命令组合是ping、telnet、ss、curl四连。ping只能说明ICMP通不通,不能代表业务端口通不通;telnet ip port测TCP端口连通性;ss -tlnp看本机监听端口和对应进程;curl -v http://ip:port/直接验证HTTP服务是否正常。四步下来基本就能定位是网络不通、端口没监听还是服务本身挂了。这个排查思路在运维面试中也经常被问到,热词里的“linux服务器”“linux面试题”背后其实就是这些最基础的思路模型。
第四个场景,批量操作与自动化。单个服务器上敲命令没问题,一旦你有三台五台机器,逐台登录敲命令是效率灾难。我的建议是先把常用的操作脚本化,比如写一个bash脚本自动完成系统更新、清理临时文件、检查磁盘空间,然后借助pssh或者ansible批量执行。热词里的“rag实战”“前后端分离项目实战”虽然听起来和运维关系不大,但背后的思维是一样的:把重复动作封装成可复用流程。运维也一样,你今天在单机上敲的三条命令,明天就应该收拾成一个脚本,后天就应该变成一键安装/初始化工具。这也是为什么“cobbler装机”“一键装机”这类词会火,背后的需求就是不想反复手工操作。
5. 更稳一步:软件源、内核升级与系统安全加固清单
初始化配置做完之后,还有几个容易被忽视但影响面很广的环节,我单独拿出来讲,因为它们属于“现在不做,后面迟早要还债”的类型。
软件源配置前面已经提到了,这里补充一个常见问题:Debian系执行apt update时报“Release file is not valid yet”的错,多半是系统时间不对。先date看一眼时间,如果差得太远,用ntpdate或者timedatectl set-ntp true同步一下时间再重新update。这也是NTP配置为什么必须在早期完成的原因之一。
内核版本与驱动问题是另一处大坑。很多老旧硬件或者特别新的硬件,在安装完系统后会出现无线网卡不识别、声卡无声这类问题,本质上就是内核版本与硬件驱动不匹配。桌面版Ubuntu上这类问题尤为常见。处理方式很简单:先确认内核版本,再看硬件型号,搜索该型号在当前内核版本下的驱动状态。比如lspci | grep -i network查看网卡型号,uname -r查看内核版本。如果确认是内核太旧导致硬件驱动不支持,升级内核即可。Ubuntu上可以用sudo apt install linux-generic-hwe-22.04这类HWE内核包,Debian上则需要手动从backports源安装更新的内核。这块搜索资料时顺带说一句,关键字一定要带上你的发行版版本和内核版本,很多热词里的“linux系统安装python”“sysctl”“lsblk”之类的内容都是针对具体环境的,不建议直接照搬别人的命令而不加判断。
安全加固这块,除了前面说的SSH密钥登录、防火墙,还有两条不能少。第一条是关闭不必要的服务端口,具体做法是看ss -tlnp列出的监听端口,凡是你用不到的端口,比如莫名其妙存在的telnet、ftp、rpcbind,直接用systemd把对应服务停掉并禁用。第二条是开启fail2ban之类的暴力破解防护软件,它会监控/var/log/auth.log,对连续多次登录失败的IP自动封禁。安装很简单,apt install fail2ban或dnf install fail2ban,默认配置就能用,但建议把封禁时长从默认的10分钟调长到1小时以上。
最后再说一遍“快照”这个动作。我建议你每完成一个大功能的配置(比如搭好了Web服务、配好了数据库),就做一次快照或备份。运维工作里很多事故并不是因为某个复杂操作搞砸了,而是因为一连串本来简单的操作叠加之后,谁也没意识到状态已经变得不可回退了。而有一个干净的“上一个可用状态”在手,半夜遇到故障时心里是有底的——最坏的结果也就是我回滚,而不是重装。
6. 常见问题速查表:装机与初始化阶段的10个高频坑
这一节我把实战中最高频的10个问题整理成了速查表,每一行都是我真金白银踩出来的,方便你遇到对号入座。
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| 启动盘插上后开机不进安装界面 | 主板启动模式(UEFI/Legacy)与U盘分区表不匹配 | 进BIOS切换启动模式,或重新用Rufus按对应模式写盘 |
| 安装完成后无法联网,只有lo接口有IP | 网卡驱动未加载或DHCP未获取到地址 | ip a查看网卡名,检查驱动,或手动编辑netplan/NetworkManager配置 |
| apt/dnf update超时或极慢 | 软件源不是国内镜像 | 替换为清华/阿里云镜像源 |
| SSH连接被拒绝 | sshd未启动或防火墙未放行22 | systemctl status sshd确认状态;检查firewalld/ufw规则 |
| sudo执行时报command not found | PATH环境变量缺少/sbin目录 | 检查echo $PATH,或用绝对路径/usr/sbin/xxx执行 |
| 磁盘空间告警但不知道被谁占满 | 大日志文件或Docker镜像堆积 | du -sh /var/log/*按目录排查;journalctl --vacuum-size=200M清理journal |
| 重启后服务没自动启动 | 服务未被enable | systemctl enable --now 服务名 |
| 内核升级后无线网卡失效 | 新内核缺少对应驱动模块 | 启动时在GRUB选旧内核,确认后安装对应dkms驱动 |
| 误删了系统关键文件 | 没有备份 | 别再继续操作,从快照或备份恢复 |
| 远程执行脚本后SSH断连 | 脚本里改了网络或防火墙配置 | 使用screen或tmux执行远程脚本,避免因断连中断 |
这个表格不是让你背诵,而是建议你把它存在本地笔记里。运维工作中真正成功的不是没踩过坑,而是踩过一次之后能形成自己的“坑位记录”,下一次遇到同样问题三十秒内就能定位。我自己的习惯是把这类问题整理成个人维基,每次排查完一个案例就补一条,一年下来这玩意儿比任何命令大全都有价值。
另外,排障时最重要的一条纪律是:一次只改一个变量。很多新手遇到问题喜欢同时改权限、改配置、重启服务,结果问题解决了但不知道是哪个动作生效的,下次照样懵。一次只动一个地方,每动一次就复现一次验证一次,这样的排障虽然有笨拙感,但得到的信息最准确。
7. 再多聊两句:从“一个人的运维”到“一套可复用的流程”
写着写着还想再补充一个观点。很多人以为Linux运维的“实战”就是把命令背熟、服务装好、问题能修,其实到了后期你会发现,真正拉开差距的在于你有没有把自己的操作沉淀成一套可复用的流程。为什么热词里会出现“cobbler装机”“一键装机”“纯净玩家一键装机”这些概念?因为大家才发现,与其每次面对一台新机器都从零开始敲命令、做配置、等半天更新,不如把整个过程标准化、工具化、自动化。
从这个角度看,“从装机开始”其实是两条腿走路:一条腿是把当前这台机器的系统装好、配好、用好;另一条腿是把装机和初始化的过程总结成可复制的能力,不管以后是再来十台机器,还是这台机器坏了要重建,都能照着既定的流程快速搞定。我认为这才是这个项目标题最有价值的地方——它不只是一个单机教程,而是在教你建立一套系统运维的最小闭环。
基于这个思路,我给想进阶的读者一个非常具体的建议:把你在装机和初始化阶段做的所有手工操作全部记录下来,写成一份checklist或者bash脚本。这份脚本应该可以做到:自动配置源、自动更新系统、自动创建用户、自动设置SSH密钥登录、自动配置防火墙白名单、自动安装你常用的工具链。这样一来,你下次装机器的时候,只需要跑一次脚本,就能从“裸系统”直接跳到“可用状态”。到这个时候,你才真正从“装机用户”变成了“系统运维实践者”。
我个人在实际操作中的体会是:运维这件事没有那么多玄学,大部分问题都能在日志和文档里找到答案。真正让一个运维工程师值钱的,不是他会敲多少条命令,而是他面对未知问题时的判断路径是否清晰、他的操作是否可回滚、他总结的经验是否能复用到下一台机器上。这台从装机开始折腾的Linux服务器,就是你练习这套判断路径最好的试验场。最后再分享一个小技巧:每完成一个阶段的配置,就在终端里敲一下history,把你刚执行过的关键命令存下来,备注上当时的背景和用途,日积月累,这比任何网上下载的“linux命令大全手册”都更适合你自己。
