说实话,我在运维一线碰过太多次“Linux装好就中文乱码、终端复制粘贴全变问号、脚本一跑编码直接报错”的情况了。后来我自己做系统部署时,索性全改成英文版Linux安装,再按需补中文字体和中文字符集,问题一下就少了。这篇就把“英文版Linux系统的安装”从为什么到怎么做,再到踩坑清单,一次讲完。
先说清楚一个容易误解的点:装英文版Linux,不等于把这套系统变成“不支持中文的残废系统”。英文版指的是安装界面和默认语言环境(locale)是英文,底层照样能处理中文文件、中文网页、中文输入,只是默认状态下不乱码、不依赖某些中文组件。对服务器、开发机来说,这套默认英文环境反而最干净、最稳。
1. 入手前,先搞清楚“英文版Linux”到底治什么病
1.1 一套语言环境的本质:界面、Locale 与字符集三层关系
很多人以为“英文版系统”就是把按钮和菜单换成了英文,其实系统语言这件事分三层,必须拆开看:
- 界面语言:就是你在桌面或安装器里看到的按钮、菜单、提示文字,由桌面环境和
gettext翻译文件控制。 - Locale 环境变量:决定了程序认为你使用什么语言和习惯,核心是
LANG、LC_CTYPE、LC_ALL这几个变量。 - 字符集:决定了文字在磁盘和内存里怎么存储、怎么传输。Linux 下现在基本就是 UTF-8 一统天下,但历史上还有 GBK、GB2312、Latin-1 这些老兄弟。
英文版Linux的实质,就是把第二层和第三层锚定在C.UTF-8或en_US.UTF-8上。用个生活类比:英文版像是“默认用国际通用的尺子量东西”,中文版像是“默认用市尺”,两把尺子都能量,但国际通用尺子在混合作业场景下不容易起纠纷。字符集就是那把尺子的刻度,大家统一成公制就不吵架。
1.2 什么场景优先选英文版,什么场景建议中文版
我个人的项目分配经验是这样的:
| 场景 | 推荐语言 | 原因 |
|---|---|---|
| 生产服务器、云主机 | 英文 | 日志格式统一、SSH传输低风险、脚本和配置文件的编码兼容性最好 |
| 开发机、CI/CD 构建节点 | 英文 | 编译器、包管理器、Docker 输出的信息极少出乱码,排查问题搜英文关键词更准 |
| 公司内网办公桌面 | 中文 | 非技术同事需要低学习成本,文档协作也以中文为主 |
| 个人折腾、学习环境 | 中英文都行 | 建议优先英文逼自己适应,长期收益大 |
这其中的核心经验是:服务器环境语言越纯,越不容易出现编码事故。我处理过不少线上事故,最后定位到源头都是“某台机器是中文 locale 装了个老版本 Python,日志混合编码,直接把日志采集程序干崩了”。
2. 安装前的材料准备:镜像、虚拟机与分区规划
这一步千万别省。我见过太多人直接官网下个 ISO 就开装,结果装到一半发现网卡驱动不对、分区方案太蠢、虚拟化嵌套有问题,返工成本极高。系统安装这件事,百分之六十的结果在准备工作阶段就已经决定了。
2.1 常见发行版镜像的下载与验证
英文版安装的第一步,是选一个“默认就是英文优先”的发行版镜像。主流选择就两个派系:
- Debian 系:Debian、Ubuntu、Linux Mint,包管理用
apt,社区资料最多,适合绝大多数人。 - RHEL 系:Rocky Linux、AlmaLinux、Fedora,包管理用
dnf或yum,企业生产环境更常见,行为更保守。
下载时有两个操作细节:
- 优先去官网或正规镜像站下载。国内用阿里云、清华 TUNA 镜像都行,不要随便搜索下载站里的“精简版”“一键版”,那些集成版非常容易夹带私货。
- 下载后必须校验 SHA256。镜像站一般会在同目录放一个
SHA256SUMS文件,我习惯这样验证:
# 在镜像文件所在目录执行 sha256sum ./ubuntu-24.04-live-server-amd64.iso # 然后把输出的哈希值和官方 SHA256SUMS 里的值对比 cat SHA256SUMS | grep ubuntu-24.04-live-server-amd64.iso两个哈希值一致再写入 U 盘或挂载到虚拟机,这一步能拦住绝大多数“下到残缺镜像”的问题。
2.2 虚拟机安装:VMware / VirtualBox / WSL 的区别
热词里面一堆“vmware虚拟机安装教程”“虚拟机安装linux蓝屏”,说明不少人是打算先拿虚拟机练手,这个思路完全正确。区别在于选哪种虚拟机方案:
- VMware Workstation Pro:功能全,快照和克隆好用,个人项目总之我推荐,但要注意新版对嵌套虚拟化有要求,物理机 BIOS 里要把 VT-x/AMD-V 打开,否则装完内核可能直接起不来。
- VirtualBox:开源免费,轻量,够用。最容易踩的坑是默认显存太小,桌面版 Linux 装完分辨率卡在 800x600,需要装增强功能。
- WSL(Windows Subsystem for Linux):严格说这不是“装一台完整 Linux”,而是微软实现在 Windows 里的 Linux 兼容层。好处是启动快、占资源小,坏处是网络模式和硬件访问跟真实 Linux 有差别,不适合模拟完整安装过程。
如果你是为了练手或者做项目实施,我建议至少完整走一遍 VMware 或 VirtualBox 里的安装流程,别嫌麻烦。因为你迟早会遇到“虚拟机装 Linux 蓝屏”这个知乎秒答级问题——多半就是没开 VT-x,或是下载的镜像架构和物理机不匹配。
创建虚拟机的几个基础资源我给一个及格线:
- 内存:至少 2GB,桌面版建议 4GB 起。
- CPU:至少 2 核,IDE 编译项目建议 4 核起。
- 磁盘:最小安装 20GB,装桌面加常用软件 40GB 起步。
- 网络:默认 NAT 就行,别一开始就搞桥接,容易给自己挖坑。
2.3 分区方案怎么给才顺手
分区是安装里最劝退小白的一步。我的经验是:默认的“整块盘自动分区”够用,但你要是清楚地知道自己的用途,手动分三块盘会让后续维护舒服很多。给一个服务器和开发机通用方案:
| 分区 | 大小 | 文件系统 | 说明 |
|---|---|---|---|
/boot | 1GB | ext4 | 引导分区,不大不小刚好 |
swap | 内存相同或 2GB 封顶 | swap | 内存不足时的缓冲,服务器建议保留 |
/ | 剩余全部 | ext4 或 xfs | 系统根目录,省心起见不单独分/home |
为什么我不建议单独分/home?因为笔记本和实验机上,/空间往往最先爆掉的不是数据,而是 Docker 镜像、日志、缓存包。统一放进/反而好管理,大不了迁移数据时整个盘一起迁。
对于数据盘,我的原则是绝不把数据放到系统盘。生产服务器最好挂独立的/data分区或一块数据盘,然后做软链接或者直接调整应用路径指向它。这个习惯能在系统崩溃时救你一命。
3. 实战:从安装界面到一台能用的英文系统
准备工作做完,进入正戏。我以Ubuntu 24.04 Server的英文安装过程为例详细拆解,Debian 和 Rocky 的步骤大同小异,重点在思路。
3.1 安装器中的语言选择细节
Ubuntu Server 安装器(Subiquity)启动后会有一个语言选择列表。既然目标是英文版,直接选English。
注意:这里的语言选择会影响三件事——键盘布局、安装后的默认 locale、系统菜单语言。有一回我装完发现出问题的不是系统,而是键盘布局选成了法语 AZERTY,敲命令时q和a全乱,折腾半天才找到原因。所以键盘布局记得选English (US),除非你有特殊需求。
另外两个安装器里容易忽略的选项:
- 镜像地址:如果你选了中国附近的地区,安装器会建议换到国内镜像源,选“是”。
- OpenSSH Server:只有在安装器里勾选安装 OpenSSH,装完才能直接用 SSH 登录。我反正每次必装,哪怕本地虚拟机也装,因为你迟早会需要从宿主机拖文件进去。
网络配置如果使用 DHCP 就先默认,等装完再改静态 IP。这里我吃过亏:DHCP 分配的地址在路由器重启后会变,生产服务器 SSH 配置直接失联。正确姿势是装完就立即固化 IP,要么用网络管理器命令,要么直接改 netplan 配置。
3.2 首启后的三件事:更新、加固、装常用软件
系统安装完成后,第一件事就是更新。从最小安装到能用的状态,我有一套固定动作:
# 1. 先更新软件源索引和系统包 sudo apt update sudo apt upgrade -y # 2. 装基础运维工具 sudo apt install -y curl wget git vim net-tools htop tree \ ufw fail2ban ca-certificates apt-transport-https # 3. 配置防火墙(Minimal 安装默认不放行任何端口) sudo ufw allow OpenSSH sudo ufw enable # 4. 查看系统关键信息 hostnamectl free -h df -h这套命令重要到什么程度?这么说吧,我见到的新手最常犯的错误就是“装完觉得系统能用了,其实防火墙没开、更新没跑、SSH root 登录允许开着”。后面每一条都要单独收拾。
加固里另外三个新手必做项:
- 禁用 root 密码登录:编辑
/etc/ssh/sshd_config,把PermitRootLogin改成prohibit-password,修改完sudo systemctl restart ssh。 - 创建普通用户并加入 sudo 组:
sudo adduser yourname之后sudo usermod -aG sudo yourname。 - 设置主机名:
sudo hostnamectl set-hostname dev-server-01,这个对新项目来说很有必要,不然你日后面对一大堆ubuntu主机名,根本分不清哪台是哪台。
3.3 让英文系统也能流畅显示中文内容
这句话会说三遍:英文系统和“处理中文能力”完全不冲突。中文显示只取决于两件事:系统里有没有中文字体和locale 有没有生成中文字符集。
默认最小安装的英文系统,你拿一个中文文件名的 U 盘插进去,或者开一个中文网页,大概率看到的是方块(豆腐块),这是因为没字体,不是系统“不支持中文”。解决办法非常直接:
# 1. 安装中文字体 sudo apt install -y fonts-noto-cjk fonts-noto-cjk-extra # 2. 生成中文 UTF-8 locale sudo locale-gen zh_CN.UTF-8 # 3. 刷新字体缓存 sudo fc-cache -fv装完这些,你的英文系统就能正常渲染中文网页和中文文件了。注意一点:这一步只是“能显示”,不会改变系统默认语言。系统提示、命令输出仍然是英文,这正是我们要的效果。
这里我还想多说一句:如果你打算在终端用vim编辑中文文件,建议在~/.vimrc里加上:
set encoding=utf-8 set fileencodings=ucs-bom,utf-8,gbk,gb2312,latin1 set termencoding=utf-8终端会话里LANG如果被设成zh_CN.UTF-8但终端本身不支持 UTF-8,一样会乱。所以我的调试思路是:优先盯环境变量,其次盯终端设置,两者都对了,再出问题才考虑字体。
4. 英文环境下的日常操作与终端配置
装好一台英文版 Linux 只是起点,日常维护里怎么跟它配合,才是真正决定体验的部分。
4.1 终端与 SSH 的乱码来源
在英文版 Linux 上遭遇乱码,十次里面有八次不是系统的问题,而是客户端这边的锅。
Windows 上常见的终端乱码链条是这样的:Windows 控制台或远程连接软件使用 GBK 编码发送字节,SSH 服务端按 UTF-8 解码,两边对不上,中文就成了????????。解决办法在客户端而不是服务器:
- Windows Terminal 设置里把默认编码改成 UTF-8。
- MobaXterm 的 Session 设置里,终端编码选 UTF-8。
- 如果用了旧版 Xshell 或 SecureCRT,检查
encodings配置。
你要是用 Linux 客户端连 Linux 服务器,一般不会碰到编码问题,因为两边默认都走 UTF-8。真正的麻烦出现在“Windows ↔ Linux”和“Linux ↔ 老设备”的混搭场景。
4.2 编辑器和开发环境的编码习惯
英文环境下跑开发项目,唯一需要操心的还是编码一致。我给自己定了三条规矩:
- 所有新建文件一律 UTF-8 无 BOM。BOM 这个看不见的魔音会在文件开头多塞三个字节,Python 脚本一旦带上 BOM 就可能在解释器层面报
SyntaxError。 .gitattributes里声明文本编码。团队项目里混用中英文环境的人多了,没声明编码,Git 做 diff 时容易走错路径。- 环境变量里显式设置。不要在多个地方反复改
LANG,建议统一写一处:
# 推荐写到 /etc/environment,对整机生效 LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8有读者可能会问:LC_ALL 不是不建议直接设置吗?理论上LC_ALL会覆盖所有LC_*,确实不适合日常设置。但服务器要的是“确定性压倒灵活性”,宁可用LC_ALL钉死一个值,也不要各程序各自为政。用locale命令看一眼刚才那串配置,出现两个en_US.UTF-8就说明生效了。
4.3 常用命令与网络排查清单
装完英文系统,我强烈建议把下面这组命令练熟,它们几乎是日常维护的“生命线”:
# 系统状态 uptime # 负载和运行时间 free -h # 内存 df -h # 磁盘 journalctl -xe # 查看最近的系统日志 # 网络排查 ip addr # 查看网卡和 IP ip route # 查看路由 ss -tulpn # 查看监听端口和对应进程 curl -I https://example.com # 测试网络出口连通性 # 服务管理 systemctl status <service> # 查看服务状态 systemctl enable --now <service> # 开机自启并立即启动 journalctl -u <service> -f # 追踪服务日志我处理过的最多一类问题是“服务起不来”。给新手的排查顺序是:先systemctl status看状态,再journalctl -u 服务名 -xe看日志,最后去查配置文件语法。千万别一上来就重启服务,很多问题重启完反而更难定位。
5. 安装和使用中常见的坑,我替你踩过了
这一节直接给结论。这些坑我一个一个都踩过,每一条背后都是几小时的排查时间。
5.1 安装阶段:引导失败、网卡不识别、蓝屏
引导失败:安装完提示No bootable device,九成是 BIOS 启动模式问题。确认 UEFI 模式下安装就要全程 UEFI,Legacy 就要全程 Legacy,混用必出问题。虚拟机里尤其如此,新建虚拟机时的固件类型和安装引导方式必须一致。
网卡不识别:芯片太新的笔记本或服务器,内核版本太老导致没有对应驱动。处理方式是装新版内核,或者先装一个带新内核的测试发行版确认硬件兼容性。还有一个野路子:直接在安装器里先联网更新内核,再继续装。
虚拟机安装 Linux 蓝屏:先检查你的物理机是不是开了 VT-x/AMD-V。打开任务管理器“性能→CPU”,右下角显示“虚拟化:已启用”就说明开了。如果开了还蓝屏,很可能是用了过旧的 VMware 版本碰到新 CPU,升级就完事。
5.2 使用阶段:时区、时间同步、包管理、防火墙
时区不对:生产服务器的日志时间如果不统一,排查问题时会疯掉。统一用 UTC 或统一用本地时区,看团队习惯,但一定要一致。
# 查看当前时区 timedatectl # 设置时区(这里顺手用上海做例子) sudo timedatectl set-timezone Asia/Shanghai sudo systemctl restart systemd-timesyncd时间漂移:服务器长期运行后时间会偏,这会让日志排序失效,也会让 HTTPS 证书校验莫名其妙失败。用chrony或systemd-timesyncd定期同步,我建议直接开着系统自带的时间同步服务。
包管理混乱:最常见的是有人混用apt和pip,系统 Python 环境被搞脏,之后任何依赖系统 Python 的工具全崩。我的建议简单粗暴:系统 Python 只用来跑系统工具,项目开发一律上虚拟环境或 Conda。
防火墙把自己锁外面:这绝对是我见过最多的“自己坑自己”案例。先配好 UFW 的规则,确认 SSH 端口放行了,再启用防火墙。顺序反了,下一步就是远程失联。
5.3 问题排查速查表
把常见现象、原因、解决办法直接整理成表,贴在笔记里比什么都值:
| 现象 | 常见原因 | 快速处理 |
|---|---|---|
| 中文文件名显示方块 | 缺中文字体 | apt install fonts-noto-cjk |
| 终端中文变问号 | 客户端编码非 UTF-8 | 终端编码切 UTF-8 |
| Python 脚本带 BOM 报错 | 文件开头有隐藏字节 | sed -i '1s/^\xEF\xBB\xBF//' 文件或另存为无 BOM UTF-8 |
| SSH 连不上 | 防火墙拦截或 sshd 未启动 | 先ufw status,再systemctl status ssh |
| 系统启动卡在 grub | 引导配置损坏 | 用安装介质进 rescue 模式,重装 grub |
| 磁盘快满了但不知道谁占的 | 日志或 Docker 数据膨胀 | `du -sh /* 2>/dev/null |
| 服务器时间总偏 | 时间同步服务没开 | timedatectl set-ntp yes |
5.4 数据备份与系统快照
最后补一个不能省的环节。虚拟机党有天然优势:做任何一个系统级变更前,先打一个快照。物理机党则建议养成分区级备份习惯,我常用的轻量方案是:
# 用 tar 备份系统关键目录(排除 /proc /sys /dev /tmp 这些伪目录) sudo tar czvf /backup/system-$(date +%F).tar.gz \ --exclude=/proc --exclude=/sys --exclude=/dev \ --exclude=/tmp --exclude=/backup /备份这事的价值,平时看不到,但它存在的意义就是保证你永远有机会“再来一次”。装系统、改配置、上线服务,前三件事做完了,最后一件就是“确保可以回退”。
我在实际项目中的体会是:英文版 Linux 的安装,本质上是给自己建立一个确定性更高的基础环境。中文环境本身没有错,但在多人协作、脚本自动化、日志统一采集的场景里,英文环境能少掉一大批编码相关的心智负担。最后的经验就一句:别把语言环境当成不可变的设定,它只是系统的一个参数,你要有本事随时调、随时切换,这才是玩 Linux 的正确姿势。