记得我第一次拿到一台生产服务器的登录凭证,终端窗口一开,满屏的英文系统输出直接把我整懵了。当时服务日志报错全是英文,我一边开翻译网页一边对照,折腾了一个多小时才定位到是一个参数拼写问题。从那次以后我养成了一个习惯:所有Linux系统,无论是服务器还是实验环境,一律装英文版,系统语言选English,locale统一用UTF-8。
这篇文章就想跟你聊聊,英文版Linux到底怎么装、装之前要想清楚什么、装完之后怎么让它既能输出英文信息又能正常显示中文、处理中文文档,以及我在这个过程中踩过的坑。不管你是第一次接触Linux的新手,还是想给团队搭一套统一规范服务器环境的运维,这篇文章应该都能给你一些可以直接抄作业的东西。
1. 为什么我装Linux时从不选中文,而是坚持英文版
1.1 被中文翻译坑过的真实场景
很多人在安装Linux时,看到语言选择界面第一反应就是选“简体中文”,觉得这样看得懂、心里踏实。这个想法在个人桌面上没问题,但一旦你打算拿Linux做服务器、做开发环境,我强烈建议你选英文。
原因特别现实:你遇到问题时的第一手信息,几乎全是英文的。系统日志、命令行报错、官方文档、GitHub上的Issue讨论,全部以英文为主。如果你装的是中文版系统,某些工具会尝试把错误信息翻译成中文,这时候问题就来了——你在网上搜“阅读权限被拒绝”,大概率搜不到任何有用的东西,但你搜“Permission denied”,结果成千上万。
我印象很深的一次,某台服务器上Java进程突然起不来,中文环境下报错显示“文件或目录不存在”,我先入为主以为配置路径写错了,检查了半天。后来切到英文环境重新跑一遍,才发现是“Permission denied”,和文件存在不存在一点关系都没有。中文翻译本身没错,但它把排查方向带偏了。
另外还有一个容易被忽略的点:很多命令行工具的输出、man手册、配置文件注释,在中文locale下依然以英文为主,只有少数工具会翻译界面文字。结果就是你装了个中文系统,屏幕上还是大半英文,反而是半中半英混在一起,搜资料时更难受。
1.2 英文版系统到底适合谁
我说坚持英文版,不是推荐所有人都这么干。得看使用场景:
- 如果你是运维、开发、数据分析师,以后要碰服务器、要写脚本、要处理线上故障,那英文版几乎是必选项。这个阶段越早适应英文,后面越省力。
- 如果你是学生,拿Linux练手学操作系统、学网络、学Docker,也建议英文版。你以后面试、啃官方文档都是英文为主,早适应早受益。
- 如果你只是想给家里长辈装一台电脑办公用,只开浏览器、看视频、用WPS,那没必要折腾英文版,中文桌面版合适得多。
- 如果你是给团队搭服务器规范,那更建议统一英文环境。团队里每人一个language设置,遇到问题复现时环境不一致,容易平白多出很多“我这儿明明能用”的破事。
至于英语水平,真不是门槛。Linux常用单词就那么几十个:directory、permission、file、install、update、remove、start、stop、restart、status、error、failed。用两周基本就熟了。我身边不少英语基础一般的朋友,用了英文版之后反而觉得比中文版好使,因为界面干净、术语统一、排查问题时定位更快。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前:镜像选型和环境准备比想象中重要
2.1 主流发行版怎么挑
英文版Linux首先要选一个发行版。这里常有人问“哪个发行版最好”,其实没有绝对答案,关键看用途。我根据实际使用经验列个对比,方便你选择:
| 发行版 | 包管理 | 稳定性 | 软件新度 | 适合场景 |
|---|---|---|---|---|
| Ubuntu Server | apt | 高 | 较新 | 云服务器、开发环境、Docker/AI生态 |
| Debian | apt | 很高 | 偏稳定 | 追求长期稳定、资源占用低的服务 |
| Rocky Linux / AlmaLinux | dnf/yum | 很高 | 偏稳定 | 企业服务器、CentOS替代方案 |
| openEuler | dnf | 高 | 中等 | 国内社区维护、政企环境部署 |
| openSUSE Leap | zypper | 高 | 中等 | 喜欢YaST管理工具的运维 |
如果你是第一次接触Linux,我推荐Ubuntu Server或者Debian。Ubuntu的资料多、遇到的问题基本都能搜到答案,Docker、Python、Nginx这些常用组件装起来也省心。Debian相比之下更“素”一点,稳定性和资源占用控制得更好,适合慢慢琢磨。
如果你是企业生产环境,以前用CentOS,那Rocky Linux或AlmaLinux是CentOS停更之后最顺手的替代品,操作习惯几乎无缝衔接。对国内团队来说,openEuler也可以关注,它的社区和生态这几年发展得很快,但整体使用量和第三方软件适配度比前面几个还是差一些,新手不建议一上来就碰。
2.2 下载、校验和U盘制作
镜像文件去哪下?如果是国外访问速度不理想,优先用国内镜像站。我这里列两个常用入口:
- 阿里云开源镜像站:https://mirrors.aliyun.com
- 清华大学TUNA镜像站:https://mirrors.tuna.tsinghua.edu.cn
进去之后找到对应发行版的目录,下载ISO文件。这里有个很多新手会跳过的步骤:校验文件完整性。镜像站页面通常会提供SHA256校验值和对应ISO放在同一目录,下载完最好核对一下,防止文件损坏或者下载不完整。Linux和macOS下用:
bash复制sha256sum 下载的镜像.iso
Windows下用PowerShell:
powershell复制Get-FileHash .\下载的镜像.iso -Algorithm SHA256
核对完校验值,再做启动盘。Windows下我一般用Ventoy或Rufus,Ventoy更省事,把U盘做成启动盘之后,以后想装什么系统,直接把ISO文件拷进去就行。Linux或macOS下可以直接用dd命令:
bash复制sudo dd if=你下载的镜像.iso of=/dev/sdX bs=4M status=progress
这里要特别提醒:of=/dev/sdX指向的是整个U盘设备,不是U盘里的某个分区(比如/dev/sdX1),写错盘符的后果是把硬盘数据清掉。操作前用lsblk确认设备名。
2.3 虚拟机安装蓝屏的真正原因
热词里出现“虚拟机安装linux蓝屏”,这问题碰到的人很多。蓝屏通常发生在VMware或VirtualBox里装Linux时,原因集中在几个点上:
- 物理机的CPU虚拟化功能没开。进BIOS/UEFI,找Intel VT-x、VT-d或者AMD-V相关选项,设为Enabled。
- 内存分配太少。图形安装界面最低建议给2GB以上,只给512MB很容易出问题。
- 镜像架构和虚拟机架构不一致。比如在ARM版Windows上装了x86_64的Linux镜像,或者反过来,启动到一半就会崩。
- 虚拟机硬盘控制器类型不对。某些Linux发行版对IDE/SATA/NVMe控制器兼容性有差异,实在启动不了就换一个控制器类型试试。
- 固件类型不匹配。新建虚拟机时选了UEFI,但镜像只支持传统BIOS引导,也会出现诡异现象。
排查顺序建议是:先看固件类型,再确认虚拟化开关,最后调整内存和硬盘控制器。其中“虚拟化没开”占比最高,尤其是刚接触虚拟机的朋友,最容易栽在这。
3. 英文版Linux安装全流程:从开机画面到第一次登录
3.1 语言和键盘布局的选择
安装引导界面一出来,通常第一屏就是选语言。这里选英文,具体到子选项一般选“English (United States)”。
键盘布局这一项很多人犯迷糊。国内标准键盘其实就是US布局,所以选“English (US)”就行,不要选“Chinese”。中文键盘布局和US布局在物理键位上没有本质区别,选Chinese反而可能让某些特殊符号位置对不上。
有人会问:安装时选了英文,以后还能改成中文吗?能。但我要说的是,服务器场景根本不需要系统界面切回中文,你真正需要的只是“系统能正常处理中文文件、中文输入、中文显示”,这个通过配置locale、字体和输入法就能做到,后面专门讲。
安装过程中,如果是新装服务器,建议不选带图形界面的选项。最小化安装或Server安装就好,省资源、省更新量、攻击面也更小。很多人对命令行发怵,实际上常用的运维操作就那么几十个命令,命令行比图形界面效率高得多,尤其适合远程SSH操作。
3.2 分区方案的取舍
分区是新手最容易纠结的一步。安装器一般会给出“Use Entire Disk”和“Manual Partitioning”(自定义分区)两个方向。
如果完全没经验,选“Use Entire Disk”自动分区最省心。但我建议你至少在自动分区基础上了解一下磁盘布局,尤其是LVM。
LVM(逻辑卷管理)简单理解就是给磁盘分区加了一层“弹性层”,可以把多个物理分区合成一个逻辑卷组,以后空间不够了可以动态扩容。听着很美好,但坏处是操作步骤多,不懂的人中途容易搞乱。我的建议是:
- 第一次装实验环境,用标准分区就行,简单直观。
- 生产环境或想长期使用的系统,用LVM,并且一定要预留逻辑卷组的空闲空间,别把VG空间全部分完。
- 不管哪种方式,推荐至少分两个区:
/boot(UEFI机器还需要一个/boot/efi),剩下全给/。 - 如果有数据目录,比如要做数据库存储、文件服务,单独分出一个数据分区挂到
/data或/home,重装系统时数据不丢。
有些人会把swap单独分一个区,这可以,但现在更推荐用swap文件代替,灵活度和维护性更好。桌面或小内存服务器给4GB左右的swap基本够用,生产环境按业务内存量评估,没有统一标准。
3.3 用户、主机名和软件集
分区之后是用户和主机名设置。主机名建议按业务取,比如web01、app01、db01。别用带空格和特殊符号的名字,会带来一堆不必要的麻烦,比如跨机器通信时主机名解析出问题。
创建用户时,安装器会让你设root密码,同时建议创建一个普通用户。这里我强烈建议你平时用普通用户登录,需要管理员权限时用sudo。直接用root操作,不是技术上不行,而是安全性差——一条rm -rf敲错目录,代价可能是一整台服务器。普通用户+sudo至少多一层确认。
软件集选择上,桌面环境建议装GNOME或标准“Server with GUI”,服务器建议最小化安装。别贪多,装完之后按需再补软件包。最小化系统加上常用的命令工具加起来也不过几百MB,跑起来比带图形界面的版本轻快不是一点半点。
3.4 首次登录后该看什么
安装完重启,进入登录界面,输入用户名密码后,第一件事不是急着装软件,而是先确认几个基本信息:
bash复制# 查看IP地址
ip addr
# 查看系统版本
cat /etc/os-release
# 查看磁盘和内存
df -h
free -h
nproc
把IP地址记下来,接下来一般都用SSH远程操作。确认系统信息和资源状态,并立刻更新软件包。Debian/Ubuntu系用:
bash复制sudo apt update && sudo apt upgrade -y
RHEL系(Rocky/Alma)用:
bash复制sudo dnf update -y
更新完再确认SSH服务状态。Ubuntu Server有时默认没装openssh-server,需要手动补装:
bash复制sudo apt install openssh-server
sudo systemctl enable --now ssh
做完这几步,系统才算初步“能用了”。
4. 英文系统不耽误中文:locale、字体与输入法的协同
4.1 locale到底是怎么工作的
很多人在英文版Linux下碰到中文乱码,第一反应是“装个中文字体”,但真正的问题往往出在locale。
locale是Linux里一组环境变量,用来定义系统使用的语言、字符集、日期时间格式、排序规则等。最核心的几个变量:
LANG:默认语言环境,覆盖所有分类。LC_ALL:强制覆盖所有分类,优先级最高。LC_CTYPE:字符分类和大小写转换,影响程序如何识别字符。LC_MESSAGES:程序输出信息使用的语言。
用locale命令可以查看当前环境,用locale -a查看系统支持哪些locale。英文版系统默认通常只有en_US.UTF-8和C等少数几种,没有zh_CN.UTF-8。这意味着系统本身能识别UTF-8编码的英文字符,但中文环境没有被“生成”出来。
要让英文系统同时支持中文显示,不需要把整个系统语言改成中文,只需要额外生成zh_CN.UTF-8这个locale。操作方法:
bash复制sudo sed -i '/zh_CN.UTF-8/s/^# //' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=en_US.UTF-8
update-locale这步把系统默认语言维持为英文,同时系统里有了zh_CN.UTF-8,中文内容就能被正确处理了。
4.2 中文字体安装与终端显示
如果你装的是带桌面的Linux,打开浏览器或编辑器看中文网页,发现字符全是方框或乱码,那就和中文字体有关。纯命令行服务器不渲染字体,一般不用装,但桌面版要装。
Debian/Ubuntu系:
bash复制sudo apt install fonts-noto-cjk
RHEL系:
bash复制sudo dnf install google-noto-sans-cjk-fonts
装完之后可以用fc-list :lang=zh看一下系统里有没有可用的中文字体。之后重启图形会话,中文就能正常显示了。
这里有个容易混淆的点:很多人用SSH连服务器时,vim里看中文字符乱码,以为是服务器缺字体。其实SSH连接的终端渲染是在你本地电脑上做的。Windows下有些终端工具默认编码是GBK,而Linux文件是UTF-8,双方编码不一致就会乱码。解决办法是把终端工具编码切到UTF-8,比如Windows Terminal、Xshell都支持全局编码设置。
如果你在服务器上用vim看中文文件,建议在~/.vimrc里加:
vim复制set encoding=utf-8
set fileencodings=utf-8,gbk
这样vim能识别更多编码格式。
4.3 让英文系统支持中文输入法
英文版系统配中文输入法,这件事的实际难度比大多数人想的小。桌面版的思路是:系统语言保持英文,输入法独立运行,需要打字时切换过来。
当前Linux桌面主流输入法框架是fcitx5和ibus。我个人更推荐fcitx5,国内用户多、配置起来直观,尤其拼音方案比ibus默认体验好一些。
Debian/Ubuntu系安装:
bash复制sudo apt install fcitx5 fcitx5-chinese-addons
装完后,在/etc/environment或用户级配置里写入如下环境变量:
bash复制export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
然后重启桌面会话,打开fcitx5的配置界面,在“Input Method”里添加“Pinyin”。默认切换快捷键一般是Ctrl+Space或者Super+Space,可以在配置里自己改。
GNOME桌面有个坑:它自带ibus,如果同时装了ibus和fcitx5,二者容易抢输入法焦点。解决办法是先禁用或卸载ibus再启动fcitx5。还可以装gnome-tweaks,在“Keyboard”设置项里把输入法切换快捷键改对。
4.4 环境变量与程序报错的关系
很多老牌程序,比如某些Java服务、编译工具,在LANG=zh_CN.UTF-8的环境下反而会出现乱码或者卡在字符集判断上。典型表现是Tomcat日志里中文变问号、某些脚本执行时报“invalid character”之类的错误。
所以我的建议是:系统默认LANG=en_US.UTF-8,同时保留zh_CN.UTF-8供需要时切换。不要图省事把整个系统切成中文locale,尤其服务器上,各种程序对中文locale的适配参差不齐,踩坑概率比你想象得高。
如果你的某个程序在英文locale下中文显示乱码,但你又确实需要它处理中文,可以在启动程序的终端里临时设置:
bash复制export LANG=zh_CN.UTF-8
这样只影响当前终端会话和从这个终端启动的程序,不会污染全局环境。调试完问题,关掉终端就恢复干净状态。
5. 装完不能直接用:第一轮部署和加固清单
5.1 网络、SSH和防火墙基础
系统装完第一轮配置,我按顺序说说。
网络方面,Ubuntu Server默认用Netplan管理,配置文件一般在/etc/netplan/00-installer-config.yaml。最简单的DHCP配置示例:
yaml复制network:
version: 2
ethernets:
ens33:
dhcp4: true
修改后执行:
bash复制sudo netplan apply
Rocky/Alma这类RHEL系发行版,可以用nmcli操作:
bash复制# 查看网卡状态
nmcli device status
# 开启网络连接
nmcli connection up ens160
SSH加固方面,新手最少要做到三件事:
- 确认SSH服务开机自启。
- 用密钥登录,而不是密码登录。生成密钥用
ssh-keygen,把公钥放进服务器的~/.ssh/authorized_keys。 - 有条件就禁止root直接登录。编辑
/etc/ssh/sshd_config,找到PermitRootLogin项,改成prohibit-password或no。
防火墙也不能漏。Ubuntu上我喜欢用ufw:
bash复制sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw enable
Rocky/Alma默认带firewalld:
bash复制sudo systemctl enable --now firewalld
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
5.2 换源:把软件源切到国内镜像
刚装完系统,第一件提升体验的事就是把软件源切到国内镜像。默认源服务器在国外,国内网络环境下下载包经常慢到怀疑人生。
Ubuntu/Debian换源,直接编辑/etc/apt/sources.list或/etc/apt/sources.list.d/下的文件,把archive.ubuntu.com替换成mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn。Ubuntu 22.04和24.04的格式略有差异,以24.04为例,阿里云源的写法:
code复制deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
改完执行sudo apt update,生效飞快。
Rocky/Alma换源,推荐直接使用镜像站提供的repo文件。阿里云镜像站有详细的替换说明,下载对应的rocky.repo或almalinux.repo覆盖/etc/yum.repos.d/下原有文件即可。
注意一点:不要同时把多个镜像源的repo文件混在一起用,很容易出现包版本依赖不一致的问题。认准一家镜像站,全部替换掉。
5.3 高频命令和常见组件安装
热词里大量出现“linux常用命令”,这里我整理一份按场景划分的高频命令速查,新手可以收藏:
| 场景 | 命令 |
|---|---|
| 查看文件/目录 | ls -lh、tree |
| 查找文件 | find /path -name "*.log" |
| 搜索文本 | grep -rn "关键词" /path |
| 磁盘占用 | df -h、du -sh * |
| 内存/CPU | free -h、top、htop |
| 进程管理 | ps -ef、kill -9 pid |
| 网络连接 | ss -tlnp、ping、curl -I url |
| 远程传输 | scp file user@host:/path、rsync -av |
| 权限操作 | chmod 755 file、chown user:group file |
装常用组件,需求最多的三个是Python、Docker和Nginx。
Python多数系统都自带,确认一下版本:
bash复制python3 --version
pip3 --version
Docker在Ubuntu/Debian上官方推荐用apt安装:
bash复制sudo apt install docker.io
sudo systemctl enable --now docker
或者用国内镜像站提供的Docker源安装,安装完成后验证:
bash复制docker run hello-world
Nginx更简单:
bash复制sudo apt install nginx
sudo systemctl enable --now nginx
装完直接访问本机IP,看到Nginx默认页面就说明成功了。这些组件对应你日常开发部署的绝大多数场景。
5.4 时区与时间同步
新装系统默认时区经常是UTC,你本地明明是下午三点,系统显示却是早上七点。日志记录、定时任务、HTTPS证书校验全部会受影响。
改时区一行命令:
bash复制sudo timedatectl set-timezone Asia/Shanghai
再用timedatectl status确认。
更重要的其实是时间同步。没有NTP,系统时间会随着运行逐渐漂移,漂移多了,分布式系统之间时间对不齐,会出现各种诡异故障。Ubuntu默认带了systemd-timesyncd,Debian系默认可能不带,需要安装chrony:
bash复制sudo apt install chrony
sudo systemctl enable --now chrony
用chronyc tracking查看同步状态。服务器时间准了,日志排查、证书校验才能正常工作。
6. 我在英文版安装上踩过的坑与排查方法
6.1 LVM分区导致的空间扩容麻烦
有一台跑Docker的Ubuntu服务器,装系统时我手动分了LVM,给/区只留了50G,当时觉得够了。结果镜像和数据卷一多,某天发现根分区使用率到了98%,服务频繁报警。
排查时先看物理卷和逻辑卷状态:
bash复制sudo pvs
sudo vgs
sudo lvs
发现卷组里还有空闲空间,但没有分配给逻辑卷。扩容逻辑卷:
bash复制sudo lvextend -L +50G /dev/你的卷组名/你的逻辑卷名
然后根据文件系统类型做最后一步。ext4用resize2fs,xfs用xfs_growfs:
bash复制sudo resize2fs /dev/你的卷组名/你的逻辑卷名
# 或者
sudo xfs_growfs /
过程不难,但如果你对LVM不熟,从零扩容时每一步都得查资料,挺吓人的。所以我的建议是:第一次装系统就老老实实自动分区,或者标准分区给根目录分大点;真要用LVM,记得预留卷组空闲空间,数据盘单独分。
6.2 中文日志乱码和vim乱码
有一次在英文版Ubuntu上部署一个Java服务,程序运行没问题,但日志里中文全部变成“????”。我先查了系统的locale,显示LANG=en_US.UTF-8,没问题。又确认了文件本身是UTF-8编码,也没问题。
最后发现是JVM启动参数里没有显式指定文件编码,中文字符在默认字符集下被转丢了。解决办法是在服务启动脚本里加上:
bash复制export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
另外一次是终端下vim看中文配置文件乱码。这次不是编码问题,是SSH终端工具Windows Terminal默认编码没切到UTF-8,在终端设置里把“Text encoding”改为UTF-8后立即解决。
经验是:遇到中文乱码,先分清是“系统层”还是“应用层”还是“终端显示层”,一层一层排除,别上来就重装系统。file命令可以快速查看文件编码:
bash复制file 你的日志文件.log
6.3 输入法装了却切不出来
在英文版Ubuntu桌面装上fcitx5和拼音,重启后按Ctrl+Space死活切不出输入法。我排查的路径是:
echo $XMODIFIERS,发现是空的,说明环境变量没加载。ps -ef | grep fcitx,fcitx5进程压根没启动。- 查看
/etc/environment,确认之前写入的变量还在。
最后发现问题出在GNOME桌面默认使用了Wayland会话,Wayland底下fcitx5的启动方式跟X11不一样。解决办法是在/etc/environment之外,再在~/.xprofile和~/.pam_environment里写同样的环境变量,并手动在桌面启动项里添加“fcitx5”开机自启。
如果你用的是GNOME,又觉得fcitx5配置折腾,可以试试直接用ibus-libpinyin,它是GNOME默认键盘框架的扩展,兼容性更好。快捷键冲突时,在gnome-tweaks里把“切换到下一个输入源”设为Ctrl+Space。
6.4 虚拟机重启后网络丢失
还有一次是Proxmox虚拟机上装了Ubuntu Server,跑得好好的,克隆了一份之后重启,SSH连不上了。到控制台一看,ip addr显示网卡名变了,原来配置的ens33变成了ens160。
原因是虚拟机克隆后,MAC地址变了,VMware的网卡命名规则随之改变,而Netplan配置里写死的接口名还是旧的那个。解决办法有两个:
一是改回旧接口名。二是把Netplan配置改成基于MAC地址匹配,而不是接口名:
yaml复制network:
version: 2
ethernets:
id0:
match:
macaddress: "00:0c:29:xx:xx:xx"
dhcp4: true
改完sudo netplan apply。生产环境做虚拟机模板和克隆时,最好提前把网络配置改成MAC匹配的方式,不然每克隆一次就要改一次配置,很容易踩坑。
我自己现在装任何服务器,都是英文环境加UTF-8基线,在此基础上再补中文字体和输入法。这套组合用下来,报错、日志、搜索资料全部对齐,不再有“中文界面对不上英文报错”的损耗。如果你还在犹豫,可以先拿虚拟机练手,装一个英文版Ubuntu Server或者Debian,按这篇文章的流程走一遍,装坏了也不心疼,正好把坑都踩一遍。等你习惯了英文提示符,再回头看中文版系统,大概就会和我一样,觉得回不去了。
