1. 先把版本和授权这两件事捋清楚
银河麒麟这套系统,我在过去几年里前前后后装过不下二十台机器,从早期的 V10 到 V10 SP1、SP2,再到服务器版的 SP3,踩过的坑基本都能写成一本书。很多人第一次接触银河麒麟,最容易干的事就是拿着一个从网上随便下的镜像往机器里灌,装完发现应用商店打不开、软件装不上、驱动对不上,然后就开始骂系统烂。实际上绝大多数所谓的“系统烂”,根源都在装之前没弄清三件事:你的硬件架构是什么、你拿到的镜像是桌面版还是服务器版、你的机器走的是哪种授权模式。把这三点确认清楚,后面 80% 的疑难杂症根本不会出现。
银河麒麟目前主流的几个分支,桌面操作系统 V10(含 SP1、SP2 等更新包版本)、服务器操作系统 V10(有基于 RPM 体系的版本,也有基于 DEB 体系的版本)、以及用于特定行业的定制版本。桌面版和服务器版在包管理、默认服务、图形环境上差别非常大,桌面版预装 UKUI 桌面环境和一堆图形化工具,服务器版通常是最小化安装、默认没有图形界面。你要是把服务器版的 ISO 装到办公电脑上,会发现连浏览器都要自己装,这不是系统问题,是你选错了镜像。
还有个特别常见的误解:很多人以为银河麒麟只有一个架构。实际上它支持 x86_64、aarch64(ARM64)、以及部分国产处理器平台,不同架构的软件包完全不通用。你在 x86 机器上下的 deb 包,拿到飞腾或者鲲鹏的机器上就是一堆乱码错误。所以装系统之前,第一件事永远是进 BIOS 或者用uname -m确认架构,第二件事是确认镜像文件名里那串标识到底对应哪种硬件。
1.1 桌面版和服务器版到底差在哪
桌面操作系统 V10 的定位是办公终端,默认带 UKUI 桌面、文件管理器、应用商店、控制面板、打印管理器、输入法框架这些组件,包管理体系是 DEB + APT。服务器操作系统 V10 的定位是后端服务,默认最小化安装,包管理体系根据版本不同可能是 RPM + DNF,也可能是 DEB + APT,这个必须实际进系统用cat /etc/os-release看一眼才准。我见过太多人在服务器版上敲apt install,结果提示 command not found,然后一脸茫然,其实那台机器是 RPM 体系的。
桌面版和服务器版在配置文件路径上也有差异。桌面版大量配置放在~/.config下面,UKUI 相关配置在~/.config/ukui;服务器版的网络配置如果是 NetworkManager 管理的,nmcli能用,如果是传统的 network-scripts,那就得改/etc/sysconfig/network-scripts/ifcfg-xxx。这两种方式混着改会出问题,比如用nmcli改完之后又去手改 ifcfg 文件,NetworkManager 下次启动会把你的手改覆盖掉。
我的建议是,装系统前先明确用途。如果是普通办公、开发终端,直接上桌面版,省心;如果是跑服务、做容器宿主,老老实实上服务器版,别为了图方便装个桌面版然后关掉图形界面,那样既浪费资源又容易在升级时出幺蛾子。桌面版和服务器版的内核参数、电源管理策略、默认防火墙规则都不一样,这些差异平时看不出来,一到压力测试或者长时间运行就暴露了。
1.2 关于激活和授权,说点实在的
银河麒麟是商业发行版,桌面版和服务器版都需要授权。预装在品牌整机上的机器,授权通常已经写入固件或者随机器附带授权文件,开机即用。企业批量采购的,一般会拿到官方的授权文件或者走内部授权服务,按官方文档导入即可。个人用户想体验,正规途径是去官方渠道申请试用镜像和试用授权,或者使用官方提供的社区体验版本。
这里我必须把话说重一点:网上那些所谓的“激活密钥”“永久激活工具”,不要碰。第一是合规问题,第二是安全问题,这类工具十有八九捆绑了挖矿程序或者后门,你在一个需要长期跑业务数据的系统上装这种东西,等于把大门钥匙交给陌生人。我处理过一台机器,用户装了个来路不明的激活脚本,结果系统里多了个定时任务,每隔十分钟往外发一次数据。清掉之后重新走正规授权,一切正常。省那点钱,代价可能是整个内网的安全。
授权文件导入之后怎么确认生效?桌面版一般在控制面板的系统信息里能看到授权状态,命令行可以用kylin-activation之类的工具查询(不同版本命令名可能略有差异,用compgen -c | grep -i kylin找一下就知道)。服务器版通常在安装过程中就要求输入授权信息,或者安装后用官方提供的授权管理命令导入。授权到期前系统一般会有提醒,别等到期了才发现业务中断。
1.3 架构选型对后续所有操作的影响
架构这件事值得单独拎出来讲。x86_64 和 aarch64 的差异不只是“能不能跑”,而是从软件源、驱动、到编译参数的全链条差异。举个最实际的例子,你在 x86 机器上用apt install nginx一条命令搞定的事,在 ARM 机器上如果官方源里没有对应的 arm64 包,那就得自己编译,而编译又依赖一堆开发库,这些库还得是 arm64 版本。链条一长,出问题的概率就上去了。
另一个坑是显卡和无线网卡驱动。国产平台上的显卡适配情况和 x86 完全不同,有些型号在 x86 上即插即用,到 ARM 平台上就得装厂商提供的专用驱动包,而且驱动包还分内核版本。我遇到过一次,一台飞腾平台的机器装完系统分辨率只有 1024x768,查下来是显卡驱动没匹配上,换了官方源里对应内核版本的驱动包才正常。
所以拿到一台机器,我固定的动作顺序是:uname -m看架构,cat /etc/os-release看发行版和版本号,uname -r看内核版本,lspci和lsusb看关键硬件型号。这四条信息记下来,后面无论查资料还是提工单,都能少走很多弯路。很多人反馈问题只说“银河麒麟装不上驱动”,没有这四个信息,谁也帮不了你。
2. 账号、权限、登录相关的那些事
账号和权限问题是银河麒麟使用中反馈量最大的一类。原因也很简单,Linux 的权限模型对习惯了图形化操作的用户来说确实有点门槛,而银河麒麟为了安全默认又收得比较紧。root 密码忘了怎么办、怎么让 root 能登图形界面、普通用户密码怎么改、账户名怎么改,这几个问题几乎每个运维都会碰到。我下面按实际操作顺序讲,都是我自己验证过的路径。
2.1 root 密码忘了,用单用户模式找回来
root 密码丢失是最常见也最急人的场景。银河麒麟桌面版和服务器版都基于 GRUB2 引导,所以思路是通用的:在引导阶段拦截,拿到一个 root shell,然后改密码。
具体操作是在开机看到 GRUB 菜单时(如果菜单一闪而过,开机时连续敲方向键或者 Esc 就能停住),选中要启动的内核条目,按e进入编辑模式。找到以linux或linux16开头的那一行,把行尾的ro改成rw,然后在行尾追加:
init=/bin/bash改完之后按Ctrl + X或者F10启动。这样系统会直接进入一个 bash shell,此时根文件系统是可读写的。接着执行:
passwd root按提示输入两次新密码。如果提示认证令牌操作错误或者无法写入,说明根分区还是只读的,先手动重新挂载:
mount -o remount,rw /改完密码之后,如果是启用了 SELinux 的系统(部分版本默认开启),需要创建一个标记文件让系统下次启动时重新打标签:
touch /.autorelabel然后重启:
exec /sbin/init或者直接reboot -f。重启之后用新密码登录 root 就行。
注意:这个方法本质上是物理接触即可提权,所以机房门禁和 BIOS 密码才是真正的安全边界。生产环境一定要给 BIOS 设密码并限制启动项顺序,否则任何能碰到机器的人都能这么干。
2.2 让 root 能登录图形界面
银河麒麟桌面版默认禁止 root 直接登录图形界面,这是安全策略。但有些场景确实需要,比如单机调试、老系统维护。开启方法要改两处,只改一处会出现输入了正确密码又弹回登录界面的情况。
第一处是显示管理器配置。银河麒麟 V10 桌面版一般用 lightdm,配置文件在/usr/share/lightdm/lightdm.conf.d/目录下,常见的是60-kylin.conf之类的文件名。用 root 权限编辑,在[Seat:*]段落下加上:
greeter-show-manual-login=true allow-guest=false如果这个文件是只读的或者被标记为不可修改,可以复制一份到/etc/lightdm/lightdm.conf.d/下再改,优先级更高。
第二处是 root 的家目录配置文件。编辑/root/.profile,找到类似mesg n || true这一行,改成:
tty -s && mesg n || true不改这一行的话,root 登录图形界面后可能黑屏或者一闪而过。改完之后重启 lightdm 服务:
systemctl restart lightdm登录界面就会出现“手动登录”或者用户名输入框,直接输 root 和密码即可。
提示:用完记得改回去。长期开着 root 图形登录,等于把最高权限暴露在了一个图形环境里,任何图形程序的漏洞都可能被放大。
2.3 普通用户密码和账户名的修改
改普通用户密码分两种情况。用户自己改,直接敲passwd,先输当前密码再输两遍新密码。管理员帮别人改,用passwd 用户名,这样不需要知道原密码,直接设新密码。这条命令在银河麒麟上完全通用,桌面版服务器版都一样。
改完之后有个细节要注意:如果这个用户有正在运行的图形会话,密码改了之后当前会话不会立刻失效,但下次登录必须用新密码。另外如果用户配置了密钥登录或者自动挂载加密家目录,密钥环的密码也要同步更新,否则下次登录会一直弹密钥环解锁窗口。
改账户名比改密码麻烦,因为 Linux 里用户名会散落在/etc/passwd、/etc/shadow、/etc/group、家目录名、以及各种配置文件里。正确的顺序是:
usermod -l 新用户名 旧用户名 usermod -d /home/新用户名 -m 新用户名 groupmod -n 新组名 旧组名第一条改登录名,第二条把家目录一起改掉,第三条如果同名用户组存在也要跟着改。执行前必须确保这个用户没有登录,也没有任何进程在跑,否则会报“用户正在使用中”。可以用ps -u 用户名检查,或者干脆进单用户模式操作。改完之后检查/etc/passwd里的家目录路径对不对,再看家目录属主是不是新用户名,ls -ld /home/新用户名一眼就能看出来。
还有一点很关键:如果这个用户被配置在/etc/sudoers里,或者属于某些附加组,改完名字之后这些配置不会自动更新,得手动去改。sudoers 里写的是旧用户名,改完就失效了。所以我个人的习惯是,能新建用户就新建,非必要不改名,改名的隐性成本比想象中高。
3. 软件安装与包管理实战
软件安装是银河麒麟日常使用中出现问题第二多的环节。核心原因是很多人不区分包管理体系,把 Debian 那一套和 RedHat 那一套混着用。我在下面把判断方法、常用命令、离线安装这几个高频场景拆开讲,尤其是离线装 nginx 这类刚需场景,我会给一套我自己反复用过的流程。
3.1 先判断你的系统是 DEB 还是 RPM 体系
进系统第一件事,敲:
cat /etc/os-release which apt dnf yum dpkg rpm如果apt和dpkg存在,说明是 DEB 体系,装包用apt install 包名,本地包用dpkg -i xxx.deb。如果dnf或yum存在,说明是 RPM 体系,装包用dnf install 包名,本地包用rpm -ivh xxx.rpm。银河麒麟桌面版基本都是 DEB 体系,服务器版两种都有可能,以实际输出为准。
DEB 体系的常用命令我整理了一张表,平时对着用就行:
| 操作 | 命令 |
|---|---|
| 更新软件源索引 | sudo apt update |
| 安装软件 | sudo apt install 包名 |
| 卸载软件(保留配置) | sudo apt remove 包名 |
| 彻底卸载(含配置) | sudo apt purge 包名 |
| 安装本地 deb 包 | sudo dpkg -i xxx.deb |
| 修复依赖 | sudo apt -f install |
| 查看已装软件 | `dpkg -l |
| 查看软件版本 | apt policy 包名 |
| 清理无用包 | sudo apt autoremove |
RPM 体系对应的就是dnf install、rpm -qa | grep 关键词、dnf remove这些,逻辑一样。
注意:
apt install之前一定先apt update。银河麒麟的软件源里有些包版本更新比较频繁,不更新索引可能装到旧版本,或者提示“无法定位软件包”。如果apt update报错,先看/etc/apt/sources.list里的源地址是不是可达,内网环境还要确认有没有配代理。
3.2 离线安装 nginx 的完整流程
内网机器不能上外网,这是非常典型的场景。离线装 nginx 有两条路:一条是下载 deb 包和依赖拷过去,另一条是源码编译。前者快但要解决依赖,后者慢但可控。我一般优先用前者。
第一步,在一台同版本、同架构、能上网的银河麒麟机器上准备包。最省事的做法是用 apt 的下载功能:
sudo apt update sudo apt install --download-only -y nginx下载的包会放在/var/cache/apt/archives/下面。但 nginx 的依赖不止它自己,--download-only会把依赖一起拉下来,所以这个目录里会有一堆 deb 文件。把整个目录打个包拷到目标机器:
tar czf nginx-offline.tar.gz -C /var/cache/apt/archives .第二步,在目标机器上解包并安装:
mkdir -p /opt/nginx-offline tar xzf nginx-offline.tar.gz -C /opt/nginx-offline cd /opt/nginx-offline sudo dpkg -i *.deb如果dpkg -i报依赖缺失,不要慌,先看缺哪个包。因为所有依赖都在这个目录里,很多时候是安装顺序问题,多执行一次sudo dpkg -i *.deb就能把顺序问题绕过去。实在还有缺失的,用sudo dpkg --force-depends -i xxx.deb强制装,装完再用sudo apt -f install尝试补(离线环境下这条可能会失败,所以尽量保证包齐全)。
第三步,验证和配置。装完执行:
nginx -v systemctl status nginx curl -I http://127.0.0.1能看到版本号、服务是 active、返回 200 或 403 就说明跑起来了。配置文件在/etc/nginx/,站点配置在/etc/nginx/conf.d/或者sites-available,日志在/var/log/nginx/。如果服务起不来,先看journalctl -u nginx -n 50的输出,八成是端口被占或者配置语法错误,nginx -t可以专门用来测配置语法。
如果目标机器连 apt 源都没有,纯裸机,那就走源码编译。需要提前准备gcc、make、pcre-devel、zlib-devel、openssl-devel这些开发包,同样要先离线拷过去装好。编译参数我常用的是:
./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module make && sudo make install编译这条路好处是版本自己说了算,坏处是升级要重新编译。生产环境如果机器数量多,我更建议在内网搭一个本地 apt 源,用dpkg-scanpackages生成索引,后续所有机器都从本地源装,维护成本会低很多。
3.3 应用商店、安装包提取和版本查询
银河麒麟桌面版自带应用商店,图形界面点点就能装。但商店里的软件源和命令行源是两套配置,有时候商店能搜到、命令行搜不到,或者反过来。商店对应的配置文件一般在/etc/apt/sources.list.d/下有个专门的 list 文件。商店打不开的话,先确认网络、再确认这个源文件里的地址是否可达。
有些软件只有商店里有,命令行装不了,这时候可以“提取安装包”。方法是先通过商店下载安装,然后去缓存目录找 deb 包。apt 系下载的包在/var/cache/apt/archives/,商店下载的包可能在/var/cache/kylin-software-center/之类的目录。找到 deb 之后,用:
dpkg-deb -x xxx.deb 解包目录 dpkg-deb -e xxx.deb 控制信息目录就能把内容提取出来,方便在别的机器上手动部署,或者研究它的安装脚本干了什么。
查软件版本有几个层次。查包管理器记录的版本用dpkg -l | grep 名称或apt policy 名称;查程序自身报的版本用程序名 --version;查正在运行进程对应的二进制版本,可以ls -l /proc/$(pidof 程序名)/exe看真实路径,再对路径执行--version。这三个结果不一致是常事,尤其是手动编译装过之后覆盖了系统包的情况。排查问题时以--version和实际运行路径为准。
3.4 Qt、JDK17、微信、Crossover 这些常见软件的落地
开发环境这块,Qt 在银河麒麟上建议优先用系统源里的版本,sudo apt install qtbase5-dev qtcreator之类,版本虽然不一定最新,但和系统库匹配最好。自己下官方 run 安装包也能装,但要注意它会自带一套 Qt 库,可能导致系统里出现两套 Qt 库打架,程序启动时报找不到符号。真要用官方的,装完记得配好LD_LIBRARY_PATH和QT_PLUGIN_PATH。
JDK17 的安装相对干净。x86_64 平台直接下官方的 tar.gz 包,解压到/usr/local/,然后在/etc/profile.d/下建一个jdk.sh:
export JAVA_HOME=/usr/local/jdk-17 export PATH=$JAVA_HOME/bin:$PATHsource /etc/profile.d/jdk.sh之后java -version验证。注意银河麒麟的 ARM64 平台要下对应架构的 JDK 包,下错了会报“无法执行二进制文件”。
微信在银河麒麟桌面版上要通过应用商店安装 Linux 原生版本,不要试图装 Windows 版再用兼容层跑,体验很差。装完之后有个高频需求是把聊天记录存到数据盘,因为系统盘通常不大。原生微信的设置里有文件管理路径选项,直接改到数据盘目录即可;如果没有这个选项,可以先退出微信,把原目录整体搬迁到数据盘,再在原位置建软链接:
mv ~/文档/xwechat_files /data/xwechat_files ln -s /data/xwechat_files ~/文档/xwechat_filesCrossover 这类 Windows 兼容层软件,能用,但别期待太高。Office 这类重度软件跑起来问题不少,轻量的小工具还行。安装时优先选官方适配银河麒麟的版本,版本不匹配容易在创建容器时报错。虚拟机方向,如果需要完整的 Windows 环境,用 VMware Workstation 或者 VirtualBox,装的时候要提前准备kernel-devel、gcc、make、dkms这些,否则内核模块编译不过去。Secure Boot 开着的话还要给模块签名,嫌麻烦就在 BIOS 里关掉 Secure Boot。
4. 桌面环境与文件管理疑难
UKUI 桌面环境是银河麒麟的标志性组件,日常用起来和主流桌面差别不大,但出问题的时候如果不知道怎么绕过图形界面,就会很被动。这一节集中讲桌面环境崩溃恢复、home 目录异常、字体、数据盘路径这几个高频问题。
4.1 home 目录看不到文件怎么办
“家目录里文件不见了”这个反馈我收过很多次,绝大多数不是真丢了,而是三种情况之一:权限被改坏了、文件管理器设置了隐藏、或者家目录被挂载点覆盖了。
先看权限。用ls -la ~看不到东西的时候,切到 tty(Ctrl + Alt + F2)登录,执行:
ls -ld /home/你的用户名 ls -la /home/你的用户名 | head如果属主变成了 root,那就是权限问题,用 root 执行:
chown -R 用户名:用户名 /home/用户名改完切回图形界面(Ctrl + Alt + F1或 F7)一般就恢复了。这种情况常见于误用了sudo操作家目录下的文件。
再看是不是隐藏了。文件管理器里按Ctrl + H切换显示隐藏文件,很多以点开头的配置文件平时不显示,容易让人误以为文件丢了。检查“显示隐藏文件”选项有没有被勾掉。
最后看挂载覆盖。如果家目录被单独分区或者单独磁盘挂载,而挂载失败,挂载点目录会显示为空。用findmnt /home或者mount | grep home看有没有挂载记录,再看df -h /home的可用空间是不是变成了系统盘的容量。挂载失败通常是/etc/fstab里的 UUID 写错了,或者磁盘掉线了。这种时候千万不要在家目录里新建文件,一旦挂载恢复,新建的文件会被覆盖掉,看起来就像“又丢了一次”。
4.2 ukui-panel 不见了或者卡死
ukui-panel是桌面底部的任务栏面板。它崩了之后症状是任务栏消失,窗口还能开,但没法切换、没法看时间。恢复办法很简单,开个终端(Ctrl + Alt + T,如果这个快捷键也失效,就用Ctrl + Alt + F2切 tty),执行:
ukui-panel --replace &执行完任务栏就回来了。如果想更彻底一点,先杀掉旧进程再拉起:
killall ukui-panel ukui-panel &如果每次开机都崩,那多半是配置文件损坏。把面板配置备份后删掉让它重建:
mv ~/.config/ukui/panel.conf ~/.config/ukui/panel.conf.bak killall ukui-panel ukui-panel &配置重建之后,之前自定义的面板布局会丢,需要重新拖一下,但至少能稳定用了。整个桌面环境如果都挂了,可以试试重启显示管理器:sudo systemctl restart lightdm,这一下会把当前所有图形会话断掉,所以先保存好工作。
4.3 字体文件夹在哪,怎么装字体
银河麒麟的字体目录和标准 Linux 一致,系统级在/usr/share/fonts/,用户级在~/.local/share/fonts/或者~/.fonts/(老版本支持)。装字体最简单的做法是把 ttf、otf 文件拷到用户级目录,然后刷新缓存:
mkdir -p ~/.local/share/fonts cp *.ttf ~/.local/share/fonts/ fc-cache -fv fc-list | grep -i 字体名fc-list能列出来就说明认到了。如果列不出来,检查文件权限,字体文件必须是可读的。系统级安装需要 root 权限,拷到/usr/share/fonts/下对应子目录(比如truetype),再sudo fc-cache -fv。
从其他系统迁字体文件的时候要注意授权问题,商用字体必须有合法授权才能在工作环境使用,这一点不要图省事。装完之后重启一下应用才能生效,有些程序会缓存字体列表。如果某个程序里字体显示乱码,先确认它要的那个字体名在fc-list里存在,再确认程序自己的字体配置有没有指向别的路径。
4.4 把微信文件、家目录迁到数据盘
系统盘容量小是国产整机的通病,把用户数据迁到数据盘几乎是标配操作。最规范的做法是挂载数据盘到/data,然后做软链接。假设数据盘是/dev/sdb1:
sudo mkdir -p /data sudo mount /dev/sdb1 /data为了开机自动挂载,用 UUID 写进/etc/fstab:
sudo blkid /dev/sdb1 sudo vim /etc/fstab加上一行:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2改完用sudo mount -a测试,没有报错才算写对。fstab写错会导致系统启动进 emergency mode,所以改之前先备份,改完一定测试。
然后迁移数据,比如微信文件目录:
mv ~/文档/xwechat_files /data/ ln -s /data/xwechat_files ~/文档/xwechat_files整个家目录迁到数据盘也可以,但更麻烦,涉及权限、SELinux 标签、桌面配置。我一般建议只迁大目录:文档、下载、图片、微信数据、IDE 缓存、Docker 数据这些。迁 IDE 缓存要注意软链接生效前必须先关掉 IDE,否则缓存文件句柄还指着旧路径,容易出诡异问题。
提示:软链接迁移之后,备份脚本、同步工具里的路径都要跟着改。我就吃过这个亏,备份任务还指着老路径,结果数据盘迁移之后备份一直是空的,过了一个月才发现。
4.5 chmod 777 到底能不能用
网上很多教程遇到权限问题就让你chmod -R 777,这是典型的饮鸩止渴。777 意味着任何用户都能读写执行,短期内问题消失了,长期看是给自己埋雷。Web 目录被 777 之后,只要有一个程序有漏洞,攻击者就能往里写文件并执行。可执行文件被 777 之后,任何用户都能替换它。
正确的权限方案是分类设置。目录用 755,普通文件用 644,需要执行的脚本用 755,Web 上传目录如果确实需要写权限,把它单独设成 775 并把 Web 服务用户加进所属组,而不是开 777。命令大概是:
sudo chown -R www-data:www-data /var/www/html sudo find /var/www/html -type d -exec chmod 755 {} \; sudo find /var/www/html -type f -exec chmod 644 {} \;如果只是临时排查,用完必须改回来。已经误操作过 777 的目录,最好用find批量恢复,或者从备份恢复权限。权限被改坏之后,最明显的症状就是 SSH 直接拒绝密钥登录(家目录或.ssh权限过于宽松时 sshd 会拒绝),这时候用chmod 700 ~/.ssh、chmod 600 ~/.ssh/authorized_keys、chmod 700 ~就能修好。
5. 外设、共享与网络问题
这一块的问题往往出在“系统本身没问题,配置没做对”。打印机能不被发现、Samba 共享连不上、SSH 版本低被扫描、串口设备找不到,都是配置和使用习惯的问题。我按排查顺序来讲。
5.1 打印机发现不了的排查顺序
打印机问题是银河麒麟桌面版反馈最多的外设问题。排查按这个顺序走:先确认物理连接和驱动服务,再看网络协议,最后看驱动匹配。
第一步,确认 CUPS 服务在跑:
systemctl status cups没起来就sudo systemctl start cups并sudo systemctl enable cups。CUPS 是打印服务的底座,它不跑什么打印机都加不上。
第二步,看系统有没有识别到设备。USB 打印机用lsusb看厂商和型号;网络打印机先ping 打印机IP,通了再确认打印机开了 IPP(631 端口)、LPD(515)或者 RAW(9100)。用nc -zv 打印机IP 631测端口通不通。
第三步,加打印机。图形界面在“设置 - 打印机”里点添加,或者在浏览器里开http://localhost:631用 CUPS 网页界面添加。添加时最关键的是驱动选择,能选到对应型号的 PPD 就选,选不到就试通用驱动。奔图、惠普、爱普生这些常见品牌,官方一般有 Linux 驱动包,装上之后型号列表里就有了。
如果打印机加上了但打印没反应,先把任务清空重来:
cancel -a lpstat -tlpstat -t能看队列状态和最近的任务。日志在/var/log/cups/error_log,追着看能定位到是驱动问题还是通信问题。我遇到过一台网络打印机,TCP 9100 通,但发任务没反应,最后发现是打印机那边开启了“仅接受 IPP 打印”,换成 ipp 协议添加就好了。
5.2 Samba 共享文件夹的配置要点
银河麒麟和 Windows 混用的环境里,Samba 是最常见的文件共享方式。装:
sudo apt install samba然后备份并编辑/etc/samba/smb.conf,在文件末尾加共享段:
[share] path = /data/share browseable = yes writable = yes valid users = zhangsan create mask = 0644 directory mask = 0755给 Samba 单独设密码:
sudo smbpasswd -a zhangsan这个密码和系统登录密码是两套,别混。重启服务:
sudo systemctl restart smbd nmbd sudo systemctl enable smbd nmbd网络层面,防火墙要放行 137、138、139、445 端口。Windows 那边访问用\\IP地址,如果连不上先ping,再telnet IP 445测端口。连上了但提示无权限,检查valid users里的用户名是不是和smbpasswd添加的一致,以及共享目录的本地权限用户能不能进。
注意:Windows 新版本默认可能禁用了 SMB1,而老配置里如果强制 SMB1 会连不上。在
smb.conf的[global]段里设置server min protocol = SMB2基本能解决大部分兼容问题。另外共享目录不要设成 777,用chown把属主给到相应用户再配合 Samba 用户认证就够安全了。
5.3 SSH 升级和串口设备查询
内网安全扫描经常报 SSH 版本低,要求升级。升级 SSH 是有风险的操作,因为改坏了就再也连不上去了。我的做法是:先保持当前会话不要断开,另开一个会话做操作;升级前备份/etc/ssh/整个目录;优先用官方源里的新版包,源里没有才考虑源码编译。
源码编译升级的流程大致是:装gcc make zlib-devel openssl-devel pam-devel,下载新版源码,./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam,make之后先别make install,而是把新生成的sshd二进制拷到/usr/sbin/sshd.new,然后停服务、备份旧的、替换、启动。启动前一定用sshd -t -f /etc/ssh/sshd_config检查配置语法,通过之后再重启。如果新版本和旧配置文件有参数不兼容,sshd -t会直接报出来。
串口设备查询在工控场景很常用。插上 USB 转串口线之后:
dmesg | grep -i tty ls -l /dev/ttyUSB* /dev/ttyS*dmesg里能看到设备识别和分配的设备名,通常是/dev/ttyUSB0。要看更详细的信息用:
udevadm info -a -n /dev/ttyUSB0如果每次插拔设备名都变,可以写 udev 规则按序列号固定名字。串口调试还需要权限,普通用户默认不在dialout组里,加进去:
sudo usermod -aG dialout $USER重新登录生效。然后用minicom或者screen /dev/ttyUSB0 115200测试通信。
5.4 上网受限和网络配置排查
“系统能连上但上不了网”这个描述太笼统,我一般拆成四层查:链路层、IP 层、DNS、认证。
链路层看网卡状态ip link,是否有 UP,有没有获取到 IP,ip addr看。DHCP 没拿到就sudo dhclient 网卡名手动获取一次,或者用nmcli管理。银河麒麟桌面版默认用 NetworkManager,服务器版可能是 network-scripts 或者 Netplan,先用nmcli device status判断用的是哪套。
IP 层看路由ip route,默认网关在不在,能不能ping 网关IP。能 ping 通网关但 ping 不通外网,那就是路由或者出口的问题。
DNS 层用nslookup或dig测域名解析,解析不了就检查/etc/resolv.conf。注意 NetworkManager 管理的系统里直接改/etc/resolv.conf会被覆盖,正确做法是在连接配置里加 DNS:
nmcli connection modify 连接名 ipv4.dns "223.5.5.5 114.114.114.114" nmcli connection up 连接名最后一层是认证。很多单位的内网需要客户端认证,没认证的话 IP 能拿到但流量出不去。表现就是 ping 网关通、ping 外网 IP 不通。这种情况得装单位指定的认证客户端,配置好账号密码。
6. 系统维护与日常工具
最后这一节讲几个零散但高频的点:命令速查、刻录、图片转 PDF、虚拟机、还有那个让人抓狂的“登录界面循环”。
6.1 常用命令速查表
银河麒麟的日常运维,下面这些命令基本够用。我按用途分类整理:
| 用途 | 命令 |
|---|---|
| 查发行版版本 | cat /etc/os-release |
| 查内核版本 | uname -r |
| 查架构 | uname -m |
| 查磁盘分区 | lsblk -f/fdisk -l |
| 查磁盘占用 | df -h/du -sh 目录 |
| 查内存 | free -h |
| 查进程 | `ps aux |
| 查端口占用 | ss -lntp |
| 查服务状态 | systemctl status 服务名 |
| 查日志 | journalctl -u 服务名 -n 100 |
| 查网络配置 | ip addr/ip route |
| 查已装软件 | `dpkg -l |
| 查文件权限 | ls -l/stat 文件 |
| 压测网络 | ping/mtr/curl -I |
这套命令在银河麒麟上通用,服务器版桌面版都能跑。存一份在手边,排查问题的时候能省很多时间。
6.2 刻录和图片转 PDF 这类小工具
K3B 是 KDE 系的刻录工具,在银河麒麟上能装:
sudo apt install k3b装完如果启动报缺少解码器,按提示补对应的包就行。刻录数据光盘基本是拖拽加点击,没什么难度;刻录系统 ISO 记得选“刻录镜像”模式,不要用数据模式拖文件,否则刻出来的盘不能引导。
图片转 PDF 有两个常用方案。ImageMagick 的convert最直接:
convert 01.jpg 02.jpg 03.jpg 输出.pdf但convert会把图片重新编码,画质有损、文件偏大。要求无损又要小的,用img2pdf:
sudo apt install img2pdf img2pdf 01.jpg 02.jpg -o 输出.pdfimg2pdf不重新编码,直接把 JPEG 塞进 PDF 容器,速度快、体积小。扫描件转 PDF 我强烈推荐这个。注意img2pdf只吃 JPEG 和无损格式,PNG 也支持,如果是 WebP 之类要先转格式。
6.3 虚拟机、双系统与引导
在银河麒麟上装虚拟机,VMware Workstation 和 VirtualBox 都能用,前提是把编译环境配好。装之前:
sudo apt install gcc make linux-headers-$(uname -r) dkmslinux-headers必须和当前运行的内核版本严格对应,装错了模块编译不过。如果装完报“内核模块未加载”,先sudo /etc/init.d/vmware start或者sudo modprobe vboxdrv手动加载,看报错再对症处理。Secure Boot 开启时必须给模块签名,否则加载会被拒绝。嫌麻烦就在 BIOS 里关掉 Secure Boot。
装 Windows 双系统的顺序是:先装 Windows,再装银河麒麟,让 GRUB 最后接管引导,这样它能自动扫描到 Windows 并加进菜单。反过来先装麒麟再装 Windows,Windows 会覆盖引导记录,需要用麒麟的安装 U 盘进救援模式重装 GRUB。分区上,UEFI 模式要有一个 EFI 分区,两个系统共用;传统 BIOS 模式没这个要求。磁盘顺序如果有两块盘,建议把两个系统装在各自独立的盘上,引导菜单在 BIOS 里切,这样最不容易互相干扰。
系统 U 盘制作,官方镜像用dd写入即可:
sudo dd if=kylin.iso of=/dev/sdX bs=4M status=progress oflag=sync/dev/sdX一定要确认是 U 盘设备名,写错盘就麻烦了。写完如果 BIOS 里认不到,检查是不是 UEFI 和 Legacy 模式对不上,或者换一个 U 盘重写,有些 U 盘主控在 dd 写入后会有兼容问题。
6.4 登录界面循环进不去桌面
“输完密码又弹回登录界面”这个问题很经典,原因通常有四个:家目录权限错误、磁盘满、.Xauthority属主不对、显卡驱动异常。
权限错误最常见,前面 4.1 讲过,用 tty 登录后chown -R修。磁盘满的话,df -h一看就知道,通常是/或者/home分区满了,清理日志和缓存即可:
sudo journalctl --vacuum-size=200M sudo apt clean.Xauthority属主问题:
ls -l ~/.Xauthority sudo chown 用户名:用户名 ~/.Xauthority显卡驱动异常的话,日志里会有明显报错。看~/.xsession-errors和/var/log/lightdm/下的日志。前段时间我就碰到过一台机器,装完显卡驱动之后登录循环,最后查到是新驱动的 GL 库和系统里原有版本冲突,卸载新驱动恢复默认就好了。
排查这类问题的通用思路是:先切 tty 确认能命令行登录(能登说明账号权限基本正常),再看磁盘空间,再看日志,最后才是驱动。按这个顺序走,大部分登录循环都能定位到原因。
7. 常见问题速查表
把上面这些内容压成一张表,方便遇到问题时快速定位。这张表是根据我自己和身边同事实际遇到的问题整理的,不覆盖全部场景,但能解决八成常见故障。
| 症状 | 最可能的原因 | 快速处理 |
|---|---|---|
| root 密码忘了 | 无 | GRUB 加init=/bin/bash进单用户重置 |
| root 无法登图形界面 | lightdm 限制 | 改 lightdm 配置和/root/.profile |
| 家目录看不到文件 | 权限被改 / 挂载失败 | chown修权限 / 检查findmnt /home |
| 任务栏消失 | ukui-panel 崩溃 | ukui-panel --replace & |
| 双击 deb 无反应 | 缺图形化安装器 | sudo apt install gdebi或命令行dpkg -i |
| 软件装不上 | 源不通 / 架构不匹配 | apt update,确认uname -m与包架构一致 |
| 离线装 nginx 缺依赖 | 包不全 / 顺序问题 | 同源同架构机器--download-only拉全套 |
| 登录界面循环 | 权限 / 磁盘满 / 驱动 | tty 登录查df -h、~/.xsession-errors |
| 打印机加不上 | CUPS 未跑 / 协议不符 | systemctl status cups,换 IPP 协议添加 |
| Samba 连不上 | 防火墙 / 认证 | 放行 445,smbpasswd -a加用户 |
| 硬盘不见了 | 驱动 / 分区表 / 挂载覆盖 | lsblk -f、blkid逐层确认 |
| 上网受限 | DNS / 认证 | nmcli改 DNS,装单位认证客户端 |
| chmod 777 后 SSH 拒登 | 权限过宽 | .ssh700,authorized_keys600,家目录 700 |
| 修改账户名后 sudo 失效 | sudoers 未同步 | 手工改/etc/sudoers或加新用户重建 |
我个人的习惯是,每处理完一个新问题,就往这张表里加一行。时间长了,它就成了自己的知识库,比任何文档都好用。
最后分享一个小经验。银河麒麟这类国产系统,版本迭代比较快,很多网上搜到的教程是针对旧版本的,照抄很容易踩坑。遇到问题的第一反应不要是搜教程,而是先执行cat /etc/os-release和uname -r,把版本信息拿到手再去搜,或者直接去官方文档和官方社区找对应版本的内容。我见过太多人拿着一份 V10 早期的教程去操作 SP1 的系统,结果命令路径全变了,白白折腾半天。版本信息就是排障的地图,先把地图拿到手,后面才走得顺。