1. 麒麟V10版本认知与系统定位
1.1 先搞清楚你手里是哪套麒麟
麒麟V10看起来是一个名字,实际拿到的镜像可能千差万别。我在日常维护中见过太多人因为版本没搞对,照着网上的教程瞎操作,最后把系统搞崩的案例。所以在敲第一条命令之前,必须把版本这关过了。
麒麟操作系统主要分桌面版和服务器版两大阵营,两者的内核参数、软件包管理器、默认服务管理方式都有区别。桌面版面向日常办公场景,图形化做得更完善;服务器版面向生产环境,裁剪更精简,稳定性优先。你在终端里敲cat /etc/os-release,能看到V10的版本号,但更重要的是看下面的VARIANT_ID字段,它会直接告诉你这是desktop还是server。
再看处理器架构,这决定了你下载软件包时该选x86_64还是aarch64。麒麟V10支持多款国产芯片,包括飞腾、鲲鹏、龙芯、兆芯、海光等,你可以在终端里执行uname -m验证实际架构。如果是aarch64,那很多针对Intel编译的软件包就不能直接用,得找ARM版本的替代方案。还有SP1、SP2、SP3的迭代版本区别,SP3是最新的服务包版本,修复了大量安全漏洞和硬件兼容问题,如果条件允许,建议优先使用SP3。
我个人的习惯是装机后第一件事就执行一套信息采集命令,把系统底细摸清楚再开始干活。
cat /etc/os-release uname -a uname -m hostnamectl这几条命令输出的信息组合起来,基本就能确定你该怎么选择后续的软件源、怎么编译软件、怎么排障。永远不要跳过这个步骤,经验告诉我,百分之八十的安装失败都源于版本误判。
1.2 命令体系整体认知:从CentOS迁移过来的人怎么快速上手
麒麟V10和CentOS的渊源很深,它的命令体系对出身于Red Hat系的人特别友好。如果你之前玩过CentOS 7或者CentOS 8,那上手麒麟V10几乎是无缝切换。
基础命令层面,文件操作还是ls、cd、cp、mv、rm这一套,用户和权限管理还是useradd、usermod、chmod、chown,几乎不用额外学习成本。软件包管理工具用的是yum,底层仓库是rpm,虽然麒麟也有自己的yum源配置,但命令用法和CentOS保持一致。服务管理已经全面切换到了systemd,所以systemctl start、systemctl enable这套命令完全通用。
真正需要留意的差异点在于:麒麟默认的软件仓库里收录的软件包版本可能会比CentOS略旧,某些小众软件未必在仓库里存在;而且麒麟对中文环境和国产软硬件生态做了大量适配,这意味着系统里默认包含了更多中文字体、输入法框架和国产驱动模块。在实操的时候不要惯性思维地以为缺少某个组件就非得去源码编译,先yum search搜一下,多半能直接装上。
我在帮朋友从CentOS往麒麟迁移业务系统时,发现一个很大的便利:原来写在CentOS上的Shell脚本,放到麒麟上基本不需要改。只要是标准的bash脚本,没有依赖特殊的私有命令,运行行为是一致的。这一点对企业的国产化替代改造特别关键,意味着迁移成本可以压得很低。
2. 基础命令与日常操作实战
2.1 用户管理与权限控制:root密码忘了怎么办
运维过程中最常遇到的场景之一,就是root密码遗失。银河麒麟V10系统root密码重置这个问题,在整个热词里排名非常高。原因也很好理解,很多单位部署了麒麟之后,管理员可能半年都不登录一次,等真正要上去改配置的时候,发现密码早就不知道丢哪了。
重置密码的经典方案是进入单用户模式。麒麟V10用的是GRUB引导,开机出现GRUB菜单时快速按下e键进入编辑模式。找到linux开头的那一行,在这一行的末尾追加rd.break参数,然后按Ctrl+x启动。系统会进入一个switch_root的紧急模式命令行,接下来执行:
mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot关键点是rd.break参数会把系统停在initramfs阶段,此时根文件系统是只读挂载的,所以必须先用mount -o remount,rw /sysroot重新以读写方式挂载,否则chroot进去之后连修改密码的权限都没有。执行完passwd root之后,建议顺手创建一个/.autorelabel标记文件,强制SELinux重新标记文件上下文,防止因安全上下文错乱导致系统无法正常登录。
还有一种情况是机器启用了SELinux且策略比较严,或者在重启后卡在登录界面始终无法通过认证。这时候可以用光盘或U盘启动进入急救模式:插入麒麟V10的安装介质,在启动菜单里选择Troubleshooting,再选择Rescue a system,系统会引导你进入一个急救Shell,同样是chroot之后passwd root重设密码。这个方法比单用户模式更稳,适合GRUB配置已经被改乱的情形。
如果只是普通用户的密码忘了,操作更简单。用root登录后一条passwd 用户名就能重置,或者干脆删掉重建。但日常管理中我建议开启sudo权限给需要提权的普通用户,这样既不用把root密码到处分发,又能保留完整的审计日志。麒麟V10里把用户加入wheel组之后,编辑/etc/sudoers开启对应权限即可。
2.2 软件包管理:yum源的配置与离线安装技巧
麒麟V10系统命令实战里,yum的使用频率仅次于cd和ls。系统自带的yum源在安装完操作系统后就能直接使用,当你需要安装编译工具链、网络工具、文本编辑器时,直接yum install -y 包名就完事。但实际生产环境里有两类痛点:第一是内网环境连不上外网,第二是需要安装仓库里没有的软件。
针对第一类痛点,手工配置本地yum源或内网镜像源是标配操作。麒麟V10的yum源配置文件默认放在/etc/yum.repos.d/目录下,你可以新建一个local.repo文件,内容如下:
[local] name=Local Repository baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0然后把麒麟V10的安装光盘或ISO镜像挂载到/mnt/cdrom,就能用光盘里的软件包作为yum源了。对于离线环境,这是一个非常稳的方案。如果你有内部镜像服务器,也可以把baseurl改成http://内网IP/麒麟路径,整个机构的所有机器都能共用一套软件源。
对于仓库里没有的软件,可以先去官网下载rpm包,然后用rpm -ivh 包名直接安装。但rpm安装的痛点在于依赖关系得自己解决,装一个软件可能要手动先装五六个依赖包。更聪明的做法是:在有外网的机器上先把依赖全部下载下来,打包拷贝到内网机器上再批量安装。使用yumdownloader --resolve命令可以自动解析依赖并下载所有需要的rpm包:
yum install -y yum-utils mkdir /tmp/pkg yumdownloader --resolve --destdir=/tmp/pkg 软件包名拿到/tmp/pkg目录下的rpm文件后,在内网机器上执行rpm -ivh /tmp/pkg/*.rpm,就完成了离线安装。这个技巧在处理PostgreSQL、MinIO这些需要部署在内网环境的软件时特别有用,省去了在每台机器上折腾软件源的麻烦。
2.3 网络配置与远程管理:没有图形界面也能稳住远程连接
不少人刚装上麒麟V10桌面版,第一反应是图形化工具点点点。但真正的服务器运维场景里,远程管理靠的是命令行。拿到一台新机器,我建议第一时间固定好IP并开启SSH服务。
麒麟V10使用NetworkManager管理网络连接。检查网络状态用nmcli,这个命令远比老旧的ifconfig好用。比如查看当前所有网络连接:
nmcli connection show假设网卡名称是ens33,配置静态IP可以用:
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5 nmcli connection up ens33这套命令执行完,IP地址、网关、DNS一次搞定,比编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件要直观,而且立即生效,不用重启网络服务。
SSH服务默认可能没有启动,顺手开启并设置开机自启:
systemctl start sshd systemctl enable sshd systemctl status sshd公网或跨网段访问还要注意防火墙放行。麒麟V10默认使用firewalld,执行firewall-cmd --permanent --add-service=ssh即可放行SSH端口。修改完配置记得firewall-cmd --reload重载规则。如果连不上,就先用ping测试通了没有,再telnet IP 22测端口,逐层排查,别一开始就在配置上瞎捉摸。
3. 系统管理与故障恢复实战
3.1 服务管理与开机自启:systemd的日常用法
麒麟V10的操作系统服务,基本上都跑在systemd体系下。理解systemd,你的系统管理工作就成功了百分之六十。
启动一个服务用systemctl start 服务名,停止用systemctl stop 服务名,重启用systemctl restart 服务名,这些都很直觉。关键是开机自启的设置,很多新手装了软件发现重启后服务没起来,就是漏了systemctl enable这一步。
查看服务状态时,systemctl status输出的内容信息量很大。它会显示进程PID、占用内存、最近日志摘要,还能直接告诉你这个服务当前是active (running)还是failed状态。服务起不来的第一件事就是看这个输出,比盲目百度高效得多。
systemctl status postgresql systemctl enable postgresql systemctl disable postgresql systemctl is-enabled postgresqlsystemd还有一个强大的能力就是journalctl日志查看器。当服务报错时,直接journalctl -u 服务名 -n 50就能看到最近50行日志,追问题特别方便。
如果你想设置开机自动登录,这分两种情况。桌面版要让用户绕过登录界面直接进桌面,需要修改/etc/gdm/custom.conf:
[daemon] AutomaticLoginEnable=true AutomaticLogin=用户名服务器版要自动登录tty控制台,得新建/etc/systemd/system/getty@tty1.service.d/autologin.conf:
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin 用户名 --noclear %I $TERM修改后执行systemctl daemon-reload,重启生效。注意自动登录有安全风险,如果机器所在环境不可信,不建议开启。
3.2 磁盘与数据盘挂载:扩展存储空间的完整流程
生产环境里磁盘空间不够是常事。把新的数据盘挂载到麒麟V10系统,我习惯走一套固定的流程,不会错也不会乱。
先查看系统识别到的磁盘设备:
lsblk fdisk -l假设新磁盘是/dev/sdb,先分区再格式化再挂载。分区可以用fdisk /dev/sdb交互式操作,也可以用parted一键搞定。考虑到很多人已经习惯了fdisk,这里我直接给出fdisk的完整流程:输入n新建分区,一路默认回车,最后输入w写入分区表。
格式化文件系统时,追求性能用xfs,追求通用性用ext4:
mkfs.xfs /dev/sdb1然后创建挂载点并挂载:
mkdir -p /data mount /dev/sdb1 /data关键一步是设置开机自动挂载。编辑/etc/fstab,在末尾添加:
/dev/sdb1 /data xfs defaults 0 0建议用UUID代替设备文件名,因为设备名可能因硬件变更而漂移。获取UUID执行blkid /dev/sdb1,然后在/etc/fstab里写成UUID=你的UUID号。修改完/etc/fstab后,务必执行mount -a测试一下配置是否正确,避免因挂载配置写错导致开机卡在紧急模式。
如果你已经搭好了PostgreSQL或者MinIO这类数据密集应用,把数据目录挂载到独立数据盘上再迁移数据,是很常见的做法。操作顺序是:先停服务,拷贝数据目录,改配置文件里的路径,重新挂载,最后启动服务验证数据完整性。切记不要热迁移,文件在写入状态下拷贝过去,90%的概率会损坏数据库文件。
3.3 开机过程与启动引导修复:GRUB出问题怎么抢救
机器开不了机,对运维来说就是事故。麒麟V10的引导链路跟其他现代Linux发行版几乎一致:BIOS或UEFI加载GRUB,GRUB加载内核,内核挂载根文件系统。任何一环出错,都可能导致系统停摆。
最常见的启动故障是修改/etc/fstab时写错了挂载项,导致根文件系统无法正常挂载。症状是开机进入紧急模式,出现Welcome to emergency mode的提示。这时输入root密码进入救援Shell,执行journalctl -xb查看详细的报错日志,找到出问题的挂载项,用vim或nano修复/etc/fstab,然后reboot。
GRUB菜单丢失或者引导损坏,需要从安装光盘或U盘启动,进入急救模式后执行重装GRUB的命令。对于UEFI启动的机器:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg grub2-install /dev/sda对于传统BIOS启动:
grub2-mkconfig -o /boot/grub2/grub.cfg grub2-install /dev/sdagrub2-install会把引导程序写进磁盘的主引导记录,grub2-mkconfig负责重新生成启动菜单配置文件。如果内核更新后启动菜单里出现了多个旧内核选项,也可以用grub2-set-default来指定默认启动项,避免意外进入旧版内核。
4. 常见软件部署与生态兼容
4.1 数据库部署:Oracle 19c与PostgreSQL的实操对比
麒麟V10安装Oracle 19c和PostgreSQL,是两个完全不同的难度级别。PostgreSQL的安装比较顺滑,Oracle因为依赖库和内核参数要求严格,步骤繁琐得多。
先说我更推荐大家在中小型项目里优先考虑的PostgreSQL。麒麟V10的软件源里直接就有PostgreSQL的包,一条命令就能装上:
yum install -y postgresql-server postgresql-contrib postgresql-setup initdb systemctl start postgresql systemctl enable postgresql初始化数据库之后,默认数据目录在/var/lib/pgsql/data。在pg_hba.conf里把认证方式改成md5或scram-sha-256,在postgresql.conf里设置监听地址为0.0.0.0,重启服务就能远程访问。整个过程下来不到十分钟。真正的坑在于后期:PostgreSQL的shared_buffers参数需要根据物理内存大小调整,乱调会导致性能明显下降。我这里给个参考值——物理内存8GB的机器,shared_buffers建议设为2GB;内存32GB的,建议设为8GB。内存越大,缓存命中率越高,但也不要超过物理内存的1/4,否则操作系统本身的页缓存会不够用。
Oracle 19c单机安装就繁琐了。第一关是依赖库,麒麟V10默认仓库里缺了好几个Oracle要求的包,需要逐个yum install补齐。第二关是内核参数,Oracle要求信号量、共享内存、文件句柄数等参数达到一定阈值,必须编辑/etc/sysctl.conf添加配置:
kernel.semmsl = 321024 kernel.semmns = 1200000 kernel.shmmax = 物理内存的一半 kernel.shmall = 物理内存页数 fs.file-max = 6815744修改完执行sysctl -p生效。第三关是创建Oracle用户和安装目录,并设置环境变量ORACLE_HOME、ORACLE_BASE、PATH。这两套数据库我都踩过很多坑,总体来说如果业务没有强制要求Oracle,选PostgreSQL能少掉一半头发。但确实很多OA系统、政务系统只适配了Oracle,那也只能老实按官方文档一步步来。关键提醒是:装Oracle之前先给系统做一个快照或备份,一旦过程出错,回滚比反复调试要省时间得多。
4.2 虚拟化与桌面应用:在麒麟V10里跑Windows虚拟机
很多单位从Windows迁移到麒麟后,仍然有少数业务系统必须依赖Windows环境,这时候虚拟化是绕不开的话题。麒麟V10上跑Windows虚拟机,主流的方案是使用QEMU/KVM加Virtual Machine Manager,或者用Oracle的VirtualBox。
QEMU/KVM是内核原生支持的虚拟化方案,性能损耗最小,而且在服务器版麒麟V10上开箱即用。使用前先确认CPU虚拟化已开启:
grep -E "(vmx|svm)" /proc/cpuinfo如果有输出,说明虚拟化已开启。然后安装必要的软件包:
yum install -y qemu-kvm libvirt virt-install virt-manager systemctl start libvirtd systemctl enable libvirtd用virt-manager图形工具新建虚拟机,选择Windows镜像,分配CPU核数和内存,接下来基本上就是一路下一步。创建完成后就能在图形界面里看到Windows虚拟机的控制台,操作体验和VMware差别不大。
如果机器性能比较弱,跑全量虚拟机有点吃力的,也可以退一步考虑应用层的兼容方案。Crossover是基于Wine的Windows应用兼容层,能让一部分Windows软件直接在麒麟桌面上运行,不必装整个Windows系统。之前在热词里看到有人问Crossover免费版是否适用银河麒麟V10,我可以明确地回答:适用。Crossover提供了针对麒麟V10的deb安装包,装上之后可以直接运行一部分常用的Windows办公软件、浏览器、简单工具。免费版的功能比付费版少,比如不能创建新的容器,但应付三两个固定的软件绰绰有余。我用它跑过几款老旧的Windows管理工具,稳定性和兼容性比预期好。不过建议有个心理准备:大型软件、需要特定驱动的软件,用它基本跑不起来,这类需求还是要老实开虚拟机。
4.3 存储与桌面工具:MinIO部署与Remmina远程桌面
MinIO部署在麒麟V10上是件很轻松的事。它只需要一个可执行的二进制文件,没有额外的系统依赖。从官网下载了适合x86_64或aarch64的MinIO服务端之后,把它放到/usr/local/bin/目录下,然后启动:
minio server /data/minio --console-address ":9001"默认API端口是9000,Web控制台端口是9001。生产环境我通常把它注册成systemd服务,确保开机自启并能在崩溃后自动拉起:
[Unit] Description=MinIO Object Storage After=network.target [Service] ExecStart=/usr/local/bin/minio server /data/minio --console-address ":9001" Restart=always User=minio Group=minio [Install] WantedBy=multi-user.target写好unit文件后执行systemctl daemon-reload && systemctl enable minio && systemctl start minio就能正常跑起来。MinIO主要用途是对象存储,S3 API兼容性好,配合备份脚本或者网盘应用非常方便。我建议把MinIO的数据目录独立挂载在数据盘上,这样万一系统盘故障,数据不会跟着遭殃。
Remmina是Linux桌面很受欢迎的远程桌面客户端,支持RDP、VNC、SSH等多种协议。麒麟桌面版V10的仓库里可能没有现成的包,你需要先启用EPEL源或直接从Remmina官网下载针对麒麟的rpm包。下载后用yum install -y ./remmina包名.rpm安装,yum会自动处理依赖。装上之后连接Windows远程桌面时,就是填IP、用户名、密码,然后分辨率选个自适应模式,用起来和Windows自带的远程桌面客户端没有明显差别。
如果安装时提示依赖缺失,可以先把rpm包下载到本机,用yum localinstall代替直接rpm -ivh安装,这样yum会尝试从仓库里搜索并补全依赖。实际遇到依赖冲突的概率不高,除非你的仓库源版本和Remmina要求的版本差距太大。真遇到这种情况,最简单的办法是去GitHub上找AppImage打包版本,解压后直接运行,不需要安装过程,也几乎不依赖系统库版本。
5. 常见问题与排查技巧实录
5.1 高频报错速查表
日常使用麒麟V10的过程中,我把遇到频率最高的几个问题和对应的解决办法整理成了速查表,直接照着排查就能省不少事。
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
passwd命令提示模块未知 | PAM配置文件被改动或损坏 | 检查/etc/pam.d/passwd,恢复默认内容或从同版本机器拷贝 |
| 系统启动进入紧急模式 | /etc/fstab挂载项错误 | 输入root密码进入Shell,执行journalctl -xb查看具体错误并修复 |
yum install报仓库源错误 | yum源失效或网络不通 | 检查/etc/yum.repos.d/配置,切换可用源或配置本地源 |
| ssd服务启动失败 | 密钥权限过大或配置错误 | 修复/root/.ssh和authorized_keys的权限为600/700 |
| 图形界面无法登录 | 磁盘空间满或者PAM配置错误 | 切换到tty终端检查df -h,清理日志和临时文件 |
| 软件安装后命令找不到 | PATH环境变量未包含安装目录 | 执行export PATH=$PATH:/usr/local/bin并写入/etc/profile |
这个表里的每一个问题,我都亲眼见过至少一次。特别要说的是PAM相关的坑,你以为改动了什么配置文件,其实可能就是某个安装脚本自动覆盖了它,恢复默认配置就能解决,没必要从头把系统重装一遍。
5.2 U盘启动时的root权限问题
U盘安装麒麟V10时遇到root权限不够的情况,是新手问得非常多的问题。安装系统的时候,图形安装界面本身不需要root权限,但要手动分区或调整磁盘设置时,某些操作确实被限制了。这是因为图形安装器默认以非特权模式运行,避免误操作破坏已有数据。
解决思路很简单:在安装启动菜单界面,高亮第一个安装选项,按e编辑启动参数,在linux行末尾添加inst.shell参数,启动后就能进入带root权限的Shell环境。在里面执行fdisk、parted、mkfs等命令来预先规划分区。分区规划好之后,再回到图形安装界面重新扫描磁盘,手动挂载预先分好的区即可。
如果不想折腾命令行,也可以直接让图形安装器自动分区,安装完成之后再通过命令行去调整数据盘。系统安装完成后,你已经是root或sudoer用户,挂载、分区、扩容这些操作的权限限制就小得多了。
5.3 系统备份与恢复策略
我不止一次强调备份的重要性,每次看到有人的数据因为系统故障丢失,都觉得痛心。麒麟V10的备份思路跟其他Linux一致,最重要的是把配置文件和业务数据分开对待。
系统配置文件的数量有限但至关重要,备份/etc目录能解决绝大部分恢复场景。最简单的做法是打包:
tar -czvf etc_backup_$(date +%F).tar.gz /etc业务数据备份要具体看应用。数据库用官方工具备份,比如PostgreSQL的pg_dump、Oracle的expdp或RMAN,文件服务直接用rsync同步就够。MinIO里存的对象数据,可以用mc mirror命令把桶内容备份到另一个存储位置。
mc mirror --overwrite local/data remote/backup恢复演练一定要定期做,不要把备份当成心理安慰。我在实际经验里最深的一条教训就是:备份流程没验证过,就不能算备份有效。曾经有个项目组每周都跑备份任务,直到出事故要恢复时才发现在的备份文件全是损坏的,因为磁盘空间早就满了导致任务失败,而监控系统没有报警。所以每次备份之后,打开备份文件检查一下完整性,这个习惯真能救命。
6. 终篇:我的实操心得
麒麟V10操作系统命令实战这件事,说到底是熟能生巧。这套系统和CentOS系的高度相似性,让熟悉Red Hat体系的运维能快速迁移;而它与国产软硬件生态的深度融合,又带来了一些独有的坑和适配细节。我最深的一点感受是,不要因为它带了"国产"标签就觉得它跟主流Linux有什么本质不同。它就是Linux,就是一套内核加一套GNU工具链,遇到问题时依旧可以用经典Linux的排查方法去解决。
给刚入坑的朋友一个实在的建议:在你敲下每一条"危险命令"前,先问自己三个问题——这条命令是干什么的?它会修改哪些系统层面的东西?如果执行错了,我有没有办法回滚?尤其是在修改fstab、GRUB配置、PAM配置这些关键文件时,多留一个心眼,备份原文件,试完再下线,保证随时能恢复到可用状态。
最后分享一个小技巧:在麒麟V10上养成用history查看命令历史的习惯,特别是history | grep 命令关键字这种组合,能帮你快速回忆起某次成功的操作流程。遇到问题解决完之后,把操作命令按时间顺序记录在一个固定的笔记文件里,几个月后再遇到同类问题时翻一翻,那种"原来我当时这样干过"的感觉,比去搜索引擎找半天的效率高得多。