1. 服务器装系统为什么还要走文本模式
先说结论:装银河麒麟 V10 SP1、SP2、SP3 服务器操作系统,图形安装界面确实好看,但在真实机房环境里,文本安装(命令行安装界面)才是绝大多数老运维的首选。原因不复杂——服务器不是笔记本,它大概率没有独立显卡输出到 KVM,只有一根串口线;也大概率是 arm64 架构的机架式机器,接的是一块几年前的 BMC 管理卡,虚拟光驱加载 4GB 镜像要等十分钟,图形界面一弹出来就卡成 PPT。这种时候,强制文本安装就是你唯一的出路。
文本安装本质上不是"低配版",它是 Anaconda 安装器把界面从 GTK 图形栈切换到 newt 字符界面,功能几乎不打折:分区、LVM、网络、软件包选择、root 密码、Kickstart 自动化,一个都不少,只是交互从鼠标点击变成了 Tab 键加回车。银河麒麟 V10 服务器版系列的安装器沿用的是 Anaconda 体系(SP1 偏 RHEL 7 风格,SP2、SP3 逐步往 RHEL 8 风格靠),所以inst.text这类引导参数基本通用,这也是我们后面所有操作的根基。
这篇文章面向三类人:第一次接手麒麟服务器、被图形界面卡住的运维新手;需要在批量机器上做无人值守部署的工程师;以及手头只有串口和 IPMI、连个显示器都找不到的现场实施人员。我会把引导参数怎么改、文本安装器每一屏怎么点、分区和网络怎么配、装完怎么让它默认停在命令行,以及我自己踩过的一堆坑,全部摊开讲。
2. 搞懂 SP1、SP2、SP3 在安装器上的差异
2.1 版本演进带来的引导菜单变化
银河麒麟 V10 服务器版三个 SP 版本,内核和安装器版本是有区别的。V10 SP1 的安装器更接近传统的 CentOS 7 风格,BIOS 引导走isolinux,UEFI 引导走grub2,引导菜单里你按 Tab 就能看到一个boot:提示符,直接往后面追加参数就行;到了 SP2、SP3,安装器向 RHEL 8 风格靠拢,UEFI 下按e进入编辑模式,需要在linux或linuxefi那一行的末尾追加参数,改完按Ctrl+X启动。这个差异是新手最容易翻车的地方——在网上抄了inst.text却按错了键,参数根本没进内核命令行,自然还是进图形界面。
另外 arm64(aarch64)版本和 x86_64 版本在引导上也有区别。arm64 服务器很多走的是 UEFI 固件 + GRUB,也有部分国产平台的固件会直接读取grub.cfg,编辑方式一致,但串口重定向参数要用console=ttyAMA0,115200或console=ttyS0,115200n8,具体看主板手册。我见过有人把 x86 的ttyS0直接抄到鲲鹏机器上,结果串口一片空白,还以为是镜像坏了。
2.2 安装器能力对照
把差异整理成一张表,现场排查时可以直接对号入座。需要注意的是,不同 OEM 定制版镜像可能微调过菜单文案,以下以官方通用镜像为基准。
| 对比项 | V10 SP1 | V10 SP2 | V10 SP3 |
|---|---|---|---|
| 安装器风格 | RHEL 7 系 Anaconda | 过渡版本 | RHEL 8 系 Anaconda |
| BIOS 引导菜单 | isolinux,Tab 编辑 | isolinux,Tab 编辑 | isolinux 或 grub |
| UEFI 引导菜单 | grub2,按 e 编辑 | grub2,按 e 编辑 | grub2,按 e 编辑 |
| 强制文本参数 | inst.text | inst.text | inst.text |
| 文本分区界面 | 支持 LVM/标准分区 | 支持 | 支持,按钮改用 Done |
| Kickstart 支持 | 完整 | 完整 | 完整,部分语法更新 |
| arm64 支持 | 有 | 有 | 有,适配更完整 |
2.3 什么情况下必须用文本模式
我把触发条件归成四类,你对照自己的现场判断:
- 无图形输出通道:服务器只接了串口,或者 BMC 的虚拟 KVM 分辨率上不去,图形界面直接黑屏。
- 内存不足:Anaconda 图形界面大约要 1.5GB 以上可用内存,低于这个阈值安装器会自动降级到文本模式,不如主动指定,省得等它自己判断。
- 批量部署:几十台机器靠鼠标点是不现实的,必须用 Kickstart 加文本模式跑无人值守。
- 远程带宽受限:BMC 虚拟光驱 + 图形界面传输量比文本界面大得多,跨机房操作时文本模式能省一半以上时间。
3. 进入文本安装界面的三条路
3.1 引导菜单追加内核参数(最常用)
这是最直接的办法,也是九成场景的答案。操作逻辑就是:让安装器的内核在启动时读到inst.text这个参数,Anaconda 就会跳过图形栈,直接进字符界面。
x86_64 的 BIOS 引导流程大致是这样:插好启动盘,开机按 F11/F12 调出启动菜单,选中 U 盘或虚拟光驱,看到安装引导画面后,光标停在安装项上,按Tab键,屏幕底部会出现一行可编辑的启动命令,形如vmlinuz initrd=initrd.img ...,在行尾空一格追加inst.text,回车。UEFI 引导则是选中安装项后按e,找到以linux或linuxefi开头的那一行,同样在行尾追加inst.text,然后按Ctrl+X启动。
注意:参数一定要追加在内核命令行那一行,而不是
initrd行,也不是菜单标题行。很多人改错行导致参数被忽略,却反复怀疑镜像有问题。
arm64 平台除了inst.text,通常还要一起带上串口参数,例如inst.text console=ttyAMA0,115200n8,这样输出才会走到串口终端。如果你的服务器有本地显示但显卡驱动缺失,可以再加nomodeset试试图形界面,不过既然目标就是文本安装,其实可以不加。
3.2 内存不够时的自动降级与手工触发
Anaconda 有个内置判断:可用内存低于阈值时自动切文本模式,界面上会提示类似"图形安装不可用,将使用文本模式"。这个机制在 SP1 上阈值偏低,SP3 上更严格一些。如果你不确定机器内存够不够,最稳的做法还是主动加inst.text,把主动权握在自己手里。
还有一种情况值得提:有些机器的 BMC 虚拟光驱会拦截引导,导致你看不到引导菜单。这时候可以尝试直接在 BMC 的"启动项"里设置一次性启动设备,或者用inst.text inst.vnc组合把安装界面推到 VNC,绕开本地显示问题,下一节细说。
3.3 VNC 与 Kickstart 的取舍
inst.vnc是我个人很推荐的一招。它让 Anaconda 启动一个 VNC 服务端,你在另一台机器上用 VNC Viewer 连过去,就能看到图形界面并操作。参数写法是inst.vnc inst.vncpassword=临时密码,启动后安装器会提示Please manually connect your VNC client to <IP>:1之类的信息。适合本地显示坏掉但网络通畅的场景,比文本界面点起来舒服,缺点是安装期间不能断网。
Kickstart 则是批量部署的正解。你写好ks.cfg,放到 U 盘或 HTTP 服务器上,引导参数里加inst.ks=hd:LABEL:DATA:/ks.cfg或者inst.ks=http://192.168.1.100/ks.cfg,机器开机后全自动跑完分区、装包、配网、设密码。文本安装和 Kickstart 是天然搭配,因为自动化场景本来就不需要图形。我个人的习惯是:单台机器用inst.text手工装,五台以上一律先做一份 ks.cfg 骨架,边装边补,最后固化成模板。
4. 装机前的准备工作与参数清单
4.1 镜像校验和启动盘制作
镜像下载完第一件事是校验,别嫌麻烦。官方下载页一般给的是 SHA256,你可以用sha256sum Kylin-Server-V10-SP3-xxx.iso对比一下。我遇到过下载中断导致 ISO 尾部损坏的情况,装到一半报"安装源校验失败",现场又没网重新下,非常被动。
启动盘制作分两种路线。x86_64 环境我建议直接用dd写盘,最干净:
dd if=Kylin-Server-V10-SP3-x86_64.iso of=/dev/sdb bs=4M status=progress oflag=syncarm64 环境如果是在 Linux 主机上写盘,同样用dd;如果是在 Windows 上,用 Rufus 时要选"DD 模式"而不是"ISO 模式",否则 UEFI 引导文件路径可能被改写,主板认不出。Ventoy 这类多合一工具在部分麒麟镜像上会出现引导项缺失,我个人不推荐用在正式交付环境,出问题时很难定位。
服务器侧建议优先用 BMC 的虚拟光驱直接挂载 ISO,省去 U 盘兼容性问题,尤其是国产平台对 USB 控制器兼容性参差不齐的时候。
4.2 BIOS/UEFI 侧必须确认的几件事
上电前花三分钟检查这几项,能省掉后面半小时的折腾:
- 引导模式:确认是 UEFI 还是 Legacy。两种模式装出来的分区表不一样,GPT 对 MBR,装完再切会起不来。我的建议是能 UEFI 就 UEFI,尤其是大于 2TB 的数据盘。
- Secure Boot:麒麟官方镜像一般带签名,开着也能装。但如果你后期要装第三方驱动(比如某些 RAID 卡、网卡驱动),建议装之前先关掉,或者装完再开。
- RAID 卡模式:硬 RAID 卡要确认是 RAID 模式还是 HBA 直通模式。文本安装器对某些老 RAID 卡的识别依赖驱动,如果
inst.dd没加载,安装器里看不到硬盘。 - CPU 虚拟化与超线程:不影响安装,但影响后续跑虚拟机,顺手确认。
- 电源策略:有些服务器 BIOS 默认"节能模式",安装过程大量 IO 时反而更慢,可以临时调到性能模式。
4.3 装机前必须定下来的三张表
现场最容易出问题的不是技术,是没提前规划。我习惯在装之前把这三张表写清楚:
| 规划项 | 示例 | 说明 |
|---|---|---|
| 分区方案 | /boot 1G,swap 16G,/ 100G,/data 剩余 | UEFI 需额外 300M EFI 分区 |
| 网络参数 | IP、掩码、网关、DNS | 文本安装器里手输,建议先记纸上 |
| 账号密码 | root 密码 | 弱口令会被安装器拒绝 |
分区这块多说一句。服务器场景下我推荐/boot单独分区(1GB 足够,SP3 内核文件偏大,512MB 有时紧张)、swap按内存的 1 到 1.5 倍(内存大于 64GB 时给 16GB 到 32GB 即可)、/给 100GB 左右、剩下的全部挂到数据盘目录。不建议把/home和/挤在一起,后期数据写满根分区是运维事故的经典开头。
5. 文本安装器实操全过程
5.1 引导参数的正确写法
把前面说的流程再具体化一遍。以 UEFI + x86_64 + SP3 为例:
- 开机进启动菜单,选 UEFI 下的光驱或 U 盘。
- 看到 GRUB 菜单,光标停在
Install Kylin Linux Advanced Server V10这一项。 - 按
e进入编辑,找到linuxefi /images/pxeboot/vmlinuz ...那一行。 - 在行尾追加:
inst.text,如果还要串口输出就再加console=ttyS0,115200n8。 - 按
Ctrl+X启动。
Startup 后屏幕会刷一堆内核日志,最后停在文本安装器的第一屏。BIOS 引导的写法稍有不同,按Tab后出现boot:提示符,输入vmlinuz initrd=initrd.img inst.text回车,注意这里不需要手动写inst.stage2,安装器会自动找光盘上的 stage2。
如果加了参数还是进了图形界面,先别怀疑人生,按Ctrl+Alt+F2切到第二个虚拟终端,用cat /proc/cmdline看一眼实际的内核命令行里有没有inst.text。这一招能立刻区分是"参数没生效"还是"参数生效了但安装器版本不认"。
5.2 文本安装器逐屏拆解
文本安装器的交互逻辑是:上下键移动光标,Tab 在选项和按钮之间跳,空格切换勾选,回车进入子菜单。第一屏通常是欢迎和语言选择,建议选英文,中文在部分串口终端的编码下会显示成方块,排查问题时很难受。
接下来是安装概览页,左边一列是待配置项,右边是说明。需要你逐项处理的有:
- 安装源(Installation Source):默认从本地光盘读取,如果你是通过
inst.repo指定的 HTTP 源,这里会显示地址。校验不过时先检查 ISO 完整性。 - 软件选择(Software Selection):文本模式下可以在最小安装、带 GUI、服务器、虚拟化主机等环境组之间选,也能勾选附加组件。服务器场景我一般选最小安装加必要工具组,减少后期补丁面。
- 安装位置(Installation Destination):这一项最关键,下面单独讲。
- 网络与主机名(Network & Hostname):可以配静态 IP,也可以先跳过装完再配。批量场景建议在这里就配好,省得进系统后手忙脚乱。
- Kdump:默认开启,会占用一部分内存做崩溃转储,内存紧张或对性能敏感的机器可以关掉。
- root 密码:输入两次,弱口令会被拒绝,比如
123456、password这种直接不给过,会提示"密码过于简单"。 - 创建用户(SP3 更明显):部分版本强制要求创建一个普通用户,注意和 root 密码区分开。
5.3 分区在文本模式下怎么操作
进入分区界面后,先选中目标磁盘,如果是新盘直接选"自动分区"里的"使用全部空间"也能跑,但生产环境我强烈建议自定义。文本模式的自定义分区操作路径是:选Create Custom Layout,然后用New创建挂载点,输入挂载点名称、选择文件系统类型(ext4 或 xfs)、输入大小,OK确认。
几个实操细节值得记:
- EFI 分区:UEFI 模式必须有一个挂载到
/boot/efi、类型为 EFI System Partition 的分区,建议 300MB 到 500MB。文本模式下这个类型要在文件系统选择列表里挑对,选错了装完起不来。 - swap 没有挂载点:在文本界面里,swap 分区的"Mount Point"留空,在文件系统类型里选 swap 即可,不要手贱填
/swap。 - LVM 的取舍:文本模式下可以选 LVM,好处是后期扩容方便,坏处是排障时多一层。我一般推荐服务器用 LVM,尤其是数据盘,后期加盘扩容比重新分区省事太多。
- 分区不生效:如果你点完
OK回到概览页发现分区项还是灰色,检查是不是磁盘上残留了旧分区表,可以切到Reclaim菜单把已有分区删掉再重建。
分区完成后回到概览页,Begin Installation按钮才会变亮。点下去后就是复制文件、安装软件包、生成 initramfs、装引导程序,这个过程在文本界面下只有几行进度输出,看起来有点简陋,但速度其实和图形模式差不多。
5.4 安装完成后的首次开机
装完提示重启,记得拔掉安装介质,否则又会从光驱引导。首次开机如果卡在某个服务上不动,可以按Esc看详细日志,或者等一会儿,第一次启动通常要做 SELinux 重打标签,尤其是你安装时 SELinux 保持在 enforcing 的情况下,几分钟是正常的。
登录后先做几件事:确认网络通不通(ip a、ping网关)、确认磁盘挂载对不对(lsblk、df -h)、确认 SSH 能不能连(systemctl status sshd)。这三项过了,基本可以交付了。
6. 装完让系统默认停在命令行
6.1 systemd 目标切换的基本操作
麒麟服务器版默认如果是带 GUI 的安装,会启用图形目标,开机进桌面。对服务器来说这层图形栈纯属浪费内存,我的做法是切成多用户文本目标:
systemctl get-default systemctl set-default multi-user.target第一条看当前默认目标,第二条改成文本模式,重启后生效。如果只想临时试试,不想改默认值,用systemctl isolate multi-user.target切过去,重启后还会回到原来的图形目标。反过来要恢复桌面,就systemctl set-default graphical.target。
顺带说一句,桌面组件比如ukui-panel这类进程,在服务器上关掉图形目标后基本不会启动,但如果你发现内存还是被吃掉一块,可以查一下lightdm或gdm服务是不是还开着自启,用systemctl disable lightdm关掉更彻底。
6.2 串口与远程维护通道配置
文本安装的机器,装完之后最好把串口控制台也配起来,方便以后出问题时不用抱着显示器去机房。修改 GRUB 配置,在GRUB_CMDLINE_LINUX里加上console=ttyS0,115200n8 console=tty0,然后重新生成配置文件。x86_64 一般是:
grub2-mkconfig -o /boot/grub2/grub.cfgUEFI 环境下路径可能是/boot/efi/EFI/kylin/grub.cfg,以efibootmgr -v或实际目录为准。改完还要在/etc/default/grub里确认GRUB_TERMINAL是否放开了串口输出,配置完用 BMC 的串口重定向测试一下,能看到登录提示符才算成功。
6.3 网络配置与本地源管理
银河麒麟 V10 SP2/SP3 默认用 NetworkManager 管理网络,配置静态 IP 我一般用nmcli,比手改配置文件不容易写错:
nmcli con mod ens33 ipv4.addresses 192.168.1.10/24 nmcli con mod ens33 ipv4.gateway 192.168.1.1 nmcli con mod ens33 ipv4.dns 192.168.1.1 nmcli con mod ens33 ipv4.method manual nmcli con up ens33如果 SP1 上还是传统的ifcfg-ens33风格,直接编辑/etc/sysconfig/network-scripts/ifcfg-ens33,把BOOTPROTO改成static,补上IPADDR、NETMASK、GATEWAY、DNS1,然后systemctl restart network。
内网离线环境一定要配本地源,否则装个nginx都费劲。把 ISO 挂上来做仓库:
mkdir -p /mnt/iso mount -o loop /root/Kylin-Server-V10-SP3-x86_64.iso /mnt/iso然后写一个/etc/yum.repos.d/kylin-local.repo,baseurl指向file:///mnt/iso,enabled=1,gpgcheck视镜像签名情况设为 0 或 1,yum clean all && yum makecache之后就能离线装包了。顺手把 ISO 挂载写进/etc/fstab,省得每次重启手动挂。
7. 常见问题速查与排查实录
7.1 引导参数不生效类问题
这是提问率最高的一类。核心排查手段就是切到Ctrl+Alt+F2看/proc/cmdline。如果参数在里面却没生效,说明安装器版本对参数名有差异,可以试text或直接按Esc键看能不能手动切模式;如果参数压根不在,那就是改错了行或者没保存。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 加了 inst.text 仍进图形 | 参数写错行 / 未按 Ctrl+X | 检查内核行,重启重改 |
| BIOS 下 Tab 无反应 | 该镜像用 grub 引导 | 改用按 e 编辑 |
| arm64 串口无输出 | 控制台参数错误 | 换 ttyAMA0 或 ttyS0 |
| 卡在 dracut 提示符 | stage2 定位失败 | 加 inst.stage2 指定路径 |
| 菜单都看不到 | 引导模式不匹配 | UEFI/Legacy 对调重试 |
7.2 分区与磁盘识别问题
文本安装器看不到硬盘,八成是 RAID 卡驱动没加载。SP3 对主流 RAID 卡支持较全,SP1 上老卡可能需要手动inst.dd加载驱动盘。另外要注意,如果 BIOS 里把硬盘设成了 RAID 模式但没建虚拟盘,安装器同样看不到,得先去 RAID 卡配置界面建好逻辑盘。
分区报"无法分配所请求的分区"通常是三个原因:磁盘已有旧分区表没清理、分区大小超过可用空间、EFI 分区类型选错。我的处理顺序是先Reclaim清空旧分区,再看可用空间,最后核对分区类型。写盘前最好把重要数据确认一遍,别问我为什么强调这个。
7.3 网络与显示类问题
文本安装阶段配了静态 IP 但装完发现没生效,很可能是安装器只把配置写进了安装环境,没落到目标系统——这个坑在部分 SP1 版本上出现过。稳妥做法是装完后进系统重新用nmcli配一遍,别完全依赖安装器那一步。
网卡名从eth0变成ens33、enp3s0这类,是 systemd 的可预测命名规则,不是故障。如果你有脚本硬编码了eth0,要么改脚本,要么在内核参数里加net.ifnames=0 biosdevname=0改回传统命名,但这个参数要在安装时就加上,装完再改要动 udev 规则,麻烦。
7.4 安装后异常类问题
进不去系统、卡在 grub 界面:多半是 UEFI 与 Legacy 混用,或者 EFI 分区类型不对。用救援模式进去看/boot/efi下是否有对应目录,没有就重新装引导。
root 密码忘了:可以在 grub 里给内核加rd.break,进紧急 shell 后重新挂载根分区为可写,用passwd改密码,然后touch /.autorelabel让 SELinux 重打标签,再继续启动。操作前确认机器是你有权管理的,改完记得把引导参数改回去。
SSH 连不上:先确认sshd服务状态,再看防火墙有没有放行。firewall-cmd --add-service=ssh --permanent && firewall-cmd --reload。如果是在最小安装下,openssh-server可能压根没装,用本地源装一下就行。
磁盘空间莫名被占满:查/var/log、/var/cache,还有 kdump 转储目录。麒麟服务器版默认开启 kdump,崩溃过一次就会留下一个几百 MB 到几 GB 的转储文件,删掉或者关掉 kdump 服务都能解决。
7.5 我踩过的几个真实坑
第一个坑是用 UltraISO 写盘。早期我图省事用 UltraISO 把 ISO 写到 U 盘,BIOS 模式能引导,UEFI 模式死活进不去,后来换成dd一次成功。原因就是 UltraISO 会改写引导结构,UEFI 固件认不出。从那以后我写盘只用dd,不折腾。
第二个坑是串口终端编码。中文安装界面在串口下显示乱码,我一开始以为是字体问题,折腾了半天,最后发现是终端编码设成了 GBK,改 UTF-8 就好了。后来干脆装系统时统一选英文界面,省心。
第三个坑是先配网后分区的顺序。文本安装器里如果先配了网络但 DNS 没填,后面安装器去校验网络源时会卡很久才超时。正确顺序是把安装源确认成本地光盘,网络最后配,或者配网时先把 DNS 填上。
第四个坑是弱口令被拒。装 SP3 时设了一个八位纯数字密码,安装器直接不给过,界面提示很简短,我一度以为是键盘输入问题。后来换了大小写加数字的组合才通过。密码策略在服务器版上比桌面版严格,别用生日和连续数字。
8. 一套可以复用的文本装机流程
把上面所有内容收拢成一条可执行的流水线,以后每次装机器照着走:
- 校验 ISO 的 SHA256,
dd写盘或用 BMC 挂载虚拟光驱。 - BIOS 里确认 UEFI/Legacy 模式,能 UEFI 就 UEFI,按需关闭 Secure Boot。
- 引导菜单编辑内核行,追加
inst.text,arm64 加上串口控制台参数。 - 安装器选英文界面,确认安装源,选最小安装加工具组。
- 自定义分区:EFI 500M、/boot 1G、swap 按内存定、/ 100G、剩余给数据盘。
- 配静态 IP 和主机名,设 root 密码,按需创建普通用户。
- 装完拔出介质重启,登录后检查网络、磁盘、SSH。
systemctl set-default multi-user.target切文本目标。- 配串口控制台,配本地 ISO 源,按需放行防火墙。
- 打快照或记录配置,归档这份装机记录。
最后分享一个我自己用得很顺的小技巧:把每次装机的内核参数、分区方案、nmcli命令、本地源配置全部攒在一个文本文件里,放在 U 盘根目录,名字就叫install-notes.txt。现场没有网络、没有文档、脑子一片空白的时候,这个文件能救命。装到第十台机器的时候你会发现,真正值钱的不是你会不会敲命令,而是你有没有把上一次的经验留下来。