ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

银河麒麟V10运维实战:版本架构、登录故障与离线安装排障

银河麒麟V10运维实战:版本架构、登录故障与离线安装排障 银河麒麟这套系统我从最早的桌面办公终端一路跟到服务器集群接触过的机器没有一百台也有七八十台了。踩过的坑里面真正属于系统缺陷的其实不到两成剩下八成都是版本没搞清、架构没对上、权限乱动、依赖没凑齐这几类问题。所以我把这些年攒下来的问题清单整理出来按出错原因重新分了一遍类而不是按谁问得多来排。这份东西适合三类人看刚接手麒麟终端、天天被同事问为什么装不上的运维需要在内网离线环境里把服务跑起来、但只有一台能上网机器的实施人员还有自己在家折腾、想把老电脑换成麒麟、结果卡在登录界面进不去的人。里面涉及的命令和配置我都尽量写成可以直接复制粘贴的形态涉及版本差异的地方我会明确标出来因为麒麟最坑人的一点就是——同一个命令在 V10 SP1 和 SP3 上的表现可能完全不一样。1. 先把版本和架构摸清楚八成的疑难杂症都源于此我遇到过最典型的一次事故同事拿着一台服务器版的麒麟非要用桌面版的源去装图形工具装到最后依赖全乱了只能重装。问题的根源不是他技术差而是他从来没确认过自己手上到底是哪个版本、哪个架构。1.1 桌面版、服务器版、SP 版本的区别到底在哪先把概念捋直。桌面版Desktop带图形界面、UKUI 桌面环境、应用商店面向办公终端服务器版Server默认最小化安装没有图形界面面向后端服务。两者虽然内核同源但预装组件、默认源、软件包命名策略差别很大桌面版里能apt install到的东西服务器版上经常根本不在源里。再说SP。SP 是 Service Pack 的意思V10、V10 SP1、V10 SP2、V10 SP3 是同一个大版本下的迭代。很多人问V10 和 SP1 有什么区别一句话说清内核版本、openssl 版本、GLIBC 版本、桌面环境的稳定性和硬件兼容列表都不一样。SP1 大量基于较老的基线SP2、SP3 在硬件适配上明显更好尤其是新款的国产显卡和网卡。你如果在 SP1 上折腾某个新硬件驱动怎么都不认先别怀疑自己很可能就是基线太老升级到 SP3 会省下你一整天。还有一点特别容易被忽略同一个 SP 版本内部还会有小版本号比如 SP1 后面的日期批次号。不同批次的预装软件版本会有差异这直接影响你在离线环境里凑依赖的成功率。我在做离线部署时有个死规矩——能上网的那台打包机必须和被离线部署的目标机是同版本、同 SP、同批次、同架构四个条件缺一个依赖链就有一半概率对不上。1.2 x86_64、arm64、loongarch装软件前必须确认的一件事麒麟支持的 CPU 架构至少有三类x86_64Intel、AMD、部分国产 x86、arm64/aarch64鲲鹏、飞腾等、loongarch64龙芯。这三个架构的软件包完全不能混用连 Java、Node、Qt 这种跨平台的东西都得下对应架构的包。举个最常见的场景有人从 x86 笔记本上下载了一个 deb 包拷到飞腾机器上dpkg -i报错package architecture (amd64) does not match system (arm64)。这个报错已经算友好的了至少告诉你问题在哪。更坑的是下了一个 arm64 的绿色版压缩包比如某些非官方分发的 JDK解压完运行报 cannot execute binary file: Exec format error你还以为是权限问题sudo 试了半天。记住这句Exec format error 十有八九是架构错了不是权限错了。1.3 三条命令快速摸清自己的机器底细接手一台不熟悉的麒麟机器我习惯先敲这三条命令基本就知道后面该怎么说话了。# 1. 看系统版本和 SP 信息麒麟自带命令最准 nkvers # 2. 看详细版本、许可、构建信息 cat /etc/.kyinfo # 3. 看内核和架构 uname -a补充两个备选cat /etc/os-release在多数版本上也能读到发行版信息arch或uname -m专门用来确认架构输出是x86_64、aarch64还是loongarch64。注意有些精简安装的服务器版上nkvers可能不存在。这时候直接cat /etc/.kyinfo和cat /etc/os-release组合起来看信息也够用。遇到命令不存在的报错别慌先ls /usr/bin | grep -i kylin翻一翻麒麟的私有工具命名不统一各版本会有出入。把这些信息记在本子上或者写进资产表后面不管装什么、问什么第一步都是先对版本和架构。这一步花三十秒能省掉后面三小时。2. 安装、启动与登录环节的高频故障安装和登录是最容易把人卡住的环节因为这类问题一旦出现你连图形界面都进不去只能靠命令行或者外接手段救。下面这几个场景我都实际处理过流程是验证过的。2.1 U 盘启动盘制作与 BIOS 设置踩坑记录制作启动盘这件事工具比技术重要。我的经验是优先用官方推荐或者通用性强的写入工具写入模式务必选DD 模式镜像直写而不是解压复制。很多U 盘插上没反应引导菜单里看不到 U 盘的情况本质是写入方式把 ISO 解压成了文件引导扇区没写进去。BIOS 那边要过四道关安全启动Secure Boot需要关闭或者导入信任证书、引导模式要统一UEFI 就全 UEFILegacy 就全 Legacy混着来必出问题、启动顺序要把 U 盘排前面、硬盘模式确认是 AHCI 而不是某些 RAID 选项。我碰到过一次特别典型的机器是 UEFI 模式装的系统U 盘启动盘是 Legacy 模式做的结果引导到一半直接黑屏无输出。两种模式混用就是这个下场。还有个小细节部分国产主板对 U 盘的容量和接口有讲究优先插 USB 2.0 口宁可慢点也别插前置 3.0 口。前置 USB 口供电不稳导致安装中断这个坑我至少踩过三次。2.2 忘了 root 密码单用户模式重置的完整流程这是被问频率最高的问题之一。流程本身不难难在参数写法。开机进入 GRUB 菜单后用方向键选中默认启动项按e进入编辑模式。找到以linux开头的那一行有些版本是linux16或linuxefi在行尾加一个空格然后追加rw init/bin/bash按CtrlX或F10启动系统会直接给你一个 root 权限的 bash 提示符不加载图形环境。接着# 确认根分区可写多数情况加了 rw 就已经可写 mount -o remount,rw / # 重置密码 passwd root # 如果系统启用了强制访问控制策略加个标记文件让下次启动重打标签 touch /.autorelabel # 重启 exec /sbin/init如果exec /sbin/init没反应直接reboot -f强制重启也可以但强制重启有文件系统风险能走正常流程就别偷懒。注意如果只需要进单用户模式做维护把参数换成single或者1数字一也能进入单用户维护模式但这种方式有时需要你再次输入 root 密码才能进——密码忘了的时候还是用init/bin/bash这条路更干脆。还有一点部分开启了安全增强策略的系统改完密码后可能遇到策略拦截导致行为异常。这种情况先确认策略状态具体命令各版本不完全一致用which getstatus setstatus看一下有没有对应工具有的话再决定要不要临时调整。操作完记得恢复原状态别把安全策略关着就不管了。2.3 登录界面循环跳回从 .Xauthority 到磁盘满的排查顺序输入密码屏幕黑一下又回到登录界面——这个现象我称之为登录打转。排查必须讲顺序乱查只会浪费时间。我固定的排查顺序是第一步看根分区是不是满了。这是最容易被忽略又最常见的原因。命令df -h重点看根分区和/tmp。根分区 100% 满的时候桌面会话根本创建不了。第二步看家目录属主和权限。用ls -la /home/用户名检查~/.Xauthority、~/.config、~/.cache的属主是不是本人。有人习惯性sudo跑图形程序结果家目录里一堆文件被改成 root 所有登录时写不进去就直接打转。修复很简单sudo chown -R 用户名:用户名 /home/用户名 sudo chmod 700 /home/用户名第三步看/tmp权限。正确权限必须是1777带 sticky 位命令ls -ld /tmp确认。被改成777或者755都可能出问题用sudo chmod 1777 /tmp修回来。第四步查 shell 配置文件里的语法错误。检查/etc/profile、~/.bashrc、~/.profile、~/.xprofile。有人往.bashrc里加了一行不存在的路径或者漏了引号登录时 shell 初始化失败就退回登录界面。最直接的验证办法是用CtrlAltF2切到字符终端登录如果能进基本就能锁定是图形会话相关配置的问题。第五步看日志。主要看三个地方/var/log/lightdm/下的日志、家目录下的~/.xsession-errors、还有journalctl -b -p err看本次启动的错误。日志不会骗人前四步没找到原因第五步一定能给方向。2.4 图形界面 root 登录能做但要想清楚麒麟默认禁止 root 直接登录图形界面这是有道理的。但确实有场景需要比如工控机、单机测试环境。做法是修改 LightDM 的配置# /etc/lightdm/lightdm.conf [Seat:*] greeter-show-manual-logintrue allow-guestfalse改完重启显示管理器服务登录界面就会出现手动登录或者用户名输入框可以手动敲 root。但我必须把丑话说前面日常办公我强烈不建议这么干。原因有三个。第一图形环境下以 root 身份跑浏览器、办公软件等于把整个系统的权限交给一个有网络访问能力的程序风险敞口太大。第二root 一旦误操作改了~/.config或者系统目录问题排查成本极高。第三很多麒麟版本的 UKUI 桌面组件在 root 会话下行为不稳定面板崩溃、主题错乱是常事。要用 root 权限老老实实sudo或者用pkexec这才是正道。2.5 双系统共存的引导与分区要点有些人是想把麒麟和 Windows 装在一台机器上方便切换办公软件。这里有几条硬经验。安装顺序上先装 Windows再装麒麟。反过来的话Windows 的引导程序会把 ESP 分区里的启动项覆盖掉你得手动修复引导麻烦。安装麒麟时一定要手动分区把引导装到 Windows 那个已有的 ESP 分区里千万不要格式化或者新建 ESP 分区否则 Windows 直接启动不了。分区规划上给麒麟留足空间。我的经验配比是根分区/至少 60G软件装得多就 100G/home单独分、按需求给交换分区大小参考物理内存——内存 8G 以下给 2 倍内存8G 以上给等量内存就够最大不超过 16G 意义不大。装完先备份 ESP 分区内容。用sudo cp -r /boot/efi /root/efi_bak存一份将来引导出问题有这份备份能救回来。另外提醒一句Windows 的快速启动和休眠功能会让分区处于脏状态安装前务必在 Windows 里关闭快速启动并完全关机否则麒麟安装程序可能识别不了 Windows 分区。3. 软件安装与包管理离线和在线两套打法麒麟桌面版和服务器版都基于 Debian 系用的都是apt和dpkg这一点跟常见的红帽系完全不一样。搞混了的话yum、rpm那套经验在这儿一点用没有。3.1 apt 与 dpkg 常用命令与依赖修复先把最常用的几条固定下来我基本靠这套组合走天下。使用场景命令说明更新索引sudo apt update只更新索引不装东西安装软件sudo apt install 包名自动处理依赖装本地包sudo dpkg -i xxx.deb不处理依赖可能报缺依赖修复依赖sudo apt install -f补齐缺失依赖必学查包信息apt-cache show 包名看版本、依赖、大小查依赖树apt-cache depends 包名离线打包前必用看包装了什么dpkg -L 包名列出所有安装文件查文件属于哪个包dpkg -S /path/to/file反查查已装版本dpkg -lgrep 包名删包保留配置sudo apt remove 包名想彻底删用 purge这里有个我踩过的坑dpkg -i报一堆依赖未满足的时候别急着一个一个手动装依赖先跑sudo apt install -fapt 会自动把缺的从源里补上。只有源里也没有的时候才需要手动凑。3.2 离线安装 nginx依赖链怎么一次凑齐内网环境装 nginx 是高频需求也是最容易翻车的。核心思路是在一台同版本、同架构、能上网的机器上把所有 deb 包一次性下全再整体拷过去。# 在联网的打包机上执行 # 方式一让 apt 只下载不安装包默认落在 /var/cache/apt/archives sudo apt-get install -y --download-only nginx # 方式二指定下载目录更清爽 sudo apt-get install -y -o Dir::Cache::archives/data/debs --download-only nginx # 看看到底下全了没 ls -lh /data/debs把/data/debs整个目录拷到内网机器上然后二选一# 简单粗暴全部装上apt 会自己排序解决依赖 cd /data/debs sudo apt install -y ./*.deb # 或者做成本地仓库以后这台机器就能当内网源用 cd /data/debs sudo dpkg-scanpackages . /dev/null | gzip -9c | sudo tee Packages.gz /dev/null本地仓库配好后加一个源文件echo deb [trustedyes] file:///data/debs ./ | sudo tee /etc/apt/sources.list.d/local.list sudo apt update sudo apt install -y nginx注意本地仓库方式的巨大好处是——同一台机器上装第二个、第三个软件时不用再重新凑依赖。我在做离线项目时都会顺手建一个/data/debs本地仓库后来遇到什么包缺了直接往里丢apt update一下就能装效率翻倍。另外两句心法。第一括号里带--download-only的包名一定要写完整比如nginx和nginx-full装出来的东西不一样别凭感觉。第二打包机的源要和目标机的源保持一致如果打包机用的是外网源、目标机用的是内网源同一个包名的版本可能不同装上去照样报错。3.3 deb 包图标显示异常、应用商店装不上、安装包提取这三个问题看起来无关其实都跟文件类型注册和包管理缓存有关。deb 包图标显示成空白或者通用图标这是 MIME 类型数据库和图标缓存没刷新。修复三步走# 刷新 MIME 数据库部分版本路径为 /usr/share/mime sudo update-mime-database /usr/share/mime # 刷新图标缓存 sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor # 刷新桌面数据库 sudo update-desktop-database /usr/share/applications如果是装完软件但菜单里找不到图标那多半是.desktop文件里的Icon字段指向的图标路径不对或者图标没装到/usr/share/icons/hicolor下。用ls /usr/share/applications | grep 软件名找到 desktop 文件cat出来看Icon那一行顺着路径去验证文件是否存在。应用商店装不上软件先确认网络再确认源。命令行的验证方法是sudo apt update如果 apt 能更新而商店不行那是商店自己的问题重启商店服务或者清一下它的缓存目录通常能好。如果 apt 也更新失败那就是源的问题检查/etc/apt/sources.list和/etc/apt/sources.list.d/下的配置。提取安装包这是运维常用的手段尤其是想知道某个软件到底装了哪些文件。# 1. 从已安装的包里反查文件清单 dpkg -L nginx # 2. 只下载不安装拿到 deb 文件 apt-get download nginx # 3. 解包不安装看内容非常有用 dpkg-deb -x nginx_xxx.deb /tmp/nginx_extract # 4. 缓存目录里翻apt 装过的包默认留在这 ls /var/cache/apt/archives我经常用第 3 条来抄某个软件自带的配置文件模板或者服务单元文件比满网找资料快多了。3.4 Qt、JDK 17、跨界兼容层等开发环境的落地Qt 环境源里能直接装的话sudo apt install -y qtbase5-dev qtcreator是最省事的。但要注意麒麟源里的 Qt 版本可能偏老如果你要开发基于新版本 Qt 的程序得去官方下载对应架构的在线安装器。关键点下载 Qt 安装器时一定要选 linux arm64 版本如果是飞腾、鲲鹏机器选错了就是前面说的 Exec format error。JDK 17两条路。一条是sudo apt install -y openjdk-17-jdk好处是包管理统一、升级方便缺点是版本可能不带某些商用特性。另一条是下载压缩包手动解压sudo mkdir -p /usr/local/java sudo tar -zxvf jdk-17_linux-aarch64_bin.tar.gz -C /usr/local/java # /etc/profile 里追加 export JAVA_HOME/usr/local/java/jdk-17 export PATH$JAVA_HOME/bin:$PATH # 生效并验证 source /etc/profile java -version提示把JAVA_HOME单独放一个文件更规范比如echo export JAVA_HOME... | sudo tee /etc/profile.d/java.sh这样系统升级时不容易被覆盖。Windows 应用兼容层麒麟上跑 Windows 程序主流方案是兼容层类软件。要提醒的是优先装应用商店里已经适配过的版本兼容层的适配是一个软件一个坑商店里的版本是经过验证的能省掉大量调试时间。免费版和商业版在容器完整度、字体渲染、打印支持上有差异具体以软件官方说明为准。如果只是为了跑一个绿色小工具轻量方案也能顶用但别指望它能跑大型专业软件。4. 用户、权限与账户管理这一节的内容我见过太多人一知半解害死人。权限这块搞错了轻则软件跑不起来重则系统进不去。4.1 修改普通用户密码与 sudo 授权改普通用户密码root 身份下直接用# root 给普通用户改密码不需要知道旧密码 sudo passwd 用户名 # 用户改自己的密码需要验证旧密码 passwd如果希望用户在登录时被强制改密码比如批量发放的临时账号可以设置密码过期sudo chage -d 0 用户名用户在下次登录时会被要求立即修改。sudo 授权麒麟装系统时创建的第一个用户通常已经在 sudo 组里。要新增一个管理员最标准的做法是# 加进 sudo 组Debian 系的标准做法 sudo usermod -aG sudo 用户名 # 验证组成员 groups 用户名不建议手动去编辑/etc/sudoers永远用sudo visudo因为它会做语法检查。有人直接vi /etc/sudoers手一抖写错一行sudo 直接全废还得再进单用户模式救——这个循环我见过不止一次。4.2 chmod 777 到底该不该用直说结论日常运维里chmod 777基本等同于我放弃思考了。它意味着任何用户都能读写执行这个文件安全隐患非常大。先把权限数值算清楚这是基本功r4、w2、x1三位分别对应属主、属组、其他用户。数字权限组合典型用途644rw-r--r--普通文件默认值755rwxr-xr-x可执行文件、目录默认值700rwx------家目录、私钥文件600rw-------SSH 私钥等敏感文件664rw-rw-r--组内协作文件775rwxrwxr-x组内共享目录正确做法是判断谁需要什么权限而不是一刀切。举个例子Web 目录里的文件通常属主给 root、属组给 Web 服务运行用户权限设644、目录设755就足够了。真正需要写入的只有上传目录单独设置。最重要的禁忌chmod -R千万不要乱用尤其是别对/或者/usr、/etc下手。我处理过一次事故有人在/下执行了chmod -R 777系统当场半瘫——sudo 不认了因为 sudo 要求属主是 root 且不能是全局可写SSH 不给登录了因为私钥权限太松会被拒绝。修复这种问题基本等于重装。如果你已经不小心这么干了应急思路是sudo失效的话先想办法用其他方式进 root比如前面讲的单用户模式然后对关键文件做补救但说实话成功率不高重装通常更省时间这也是为什么我一直强调这个命令要当成危险操作来对待。4.3 修改账户名和家目录的正确姿势改用户名不是改个显示名那么简单涉及用户名、用户组名、家目录路径三个东西必须一起改。# 1. 先确保该用户已经没有登录会话 # 可以先用 who 或者 loginctl 看看 # 2. 改用户名同时把家目录改名 sudo usermod -l 新名 旧名 sudo usermod -d /home/新名 -m 新名 # 3. 改用户组名如果组名和用户名相同 sudo groupmod -n 新名 旧名改完之后还要检查几处/etc/passwd、/etc/group已更新用户的登录 shell 配置正常如果这个用户配了 Samba、数据库或者某些服务的绑定账号那些地方的配置也要同步改不然服务会起不来。注意不要在有该用户活跃会话的情况下改用户名轻则会话内的环境变量全乱重则文件属主对不上号。改之前先loginctl list-sessions确认一下。5. 外设、存储与硬件识别问题这类问题最烦人的地方在于报错信息往往很含糊或者干脆没有报错就是不工作。5.1 打印机发现不了的四个层次排查打印机在国产系统上是个老大难我总结的排查顺序是从下往上的四个层次。第一层服务状态。打印服务是 CUPS先确认它在跑systemctl status cups。如果没起sudo systemctl enable --now cups。第二层物理连接与识别。USB 打印机用lsusb看有没有识别到设备网络打印机用ping 打印机IP确认网络通。这一步不通后面全是白费功夫。第三层驱动。这是最主要的原因。判断思路是优先用厂商提供的 Linux 驱动很多国产打印机厂商都会提供没有的话尝试通用驱动PCL、PostScript再不行试IPP Everywhere / Driverless方式现在支持无驱动打印的机型越来越多了。第四层端口和权限。添加打印机时端口选错比如用 USB 口却选了网络协议是常见错误。另外 USB 打印机需要用户属于lp组sudo usermod -aG lp 用户名加完重新登录生效。具体添加方式有两种图形界面在系统设置里找打印机管理命令行或者浏览器访问http://localhost:631用 CUPS 的 Web 界面添加。后者信息更全排查问题时我更喜欢用它。5.2 串口号查询与调试口配置工控和嵌入式场景经常要确认串口。命令行三板斧# 看内核识别到的串口设备 dmesg | grep -i tty # 列出串口设备节点 ls -l /dev/ttyS* /dev/ttyUSB* # 看串口驱动状态 cat /proc/tty/driver/serial拿到/dev/ttyS0或者/dev/ttyUSB0之后还要注意权限。串口设备通常属于dialout组普通用户默认没权限访问sudo usermod -aG dialout 用户名 # 重新登录后生效如果需要修改串口参数波特率等可以用sttystty -F /dev/ttyS0 115200 cs8 -parenb -cstopb。也有的版本带setserialsudo setserial -g /dev/ttyS*可以看当前配置。5.3 硬盘不见了分区、LVM 与挂载昨天还在今天硬盘不见了——这个问题的原因有好几层按顺序查。# 1. 内核层面看块设备 lsblk # 2. 看分区表 sudo fdisk -l # 3. 看 UUID 和文件系统类型 sudo blkid如果lsblk看不到盘那是硬件或者驱动层的问题检查线缆、电源、背板以及阵列卡/RAID 控制器驱动是否正常加载lspci -k看驱动绑定。如果lsblk能看到但文件系统挂不上很可能是 LVM 逻辑卷没激活这在服务器版上特别常见sudo vgscan sudo vgchange -ay # 之后再 lsblk逻辑卷应该出现了如果卷出现了但挂载点空的检查/etc/fstab里的配置是否有误。改 fstab 之前一定先sudo cp /etc/fstab /etc/fstab.bak改完用sudo mount -a验证不要直接重启——fstab 写错会导致系统起不来进紧急模式。还有一种情况是文件系统损坏需要fsck修复。这里必须强调fsck必须在卸载状态下执行对已挂载的根分区跑 fsck 是高风险操作。正确做法是用安装介质启动到救援模式对未挂载的分区做检查。5.4 数据盘规划与共享目录Samba内网文件共享基本都用 Samba。装和配的流程不复杂但有几处细节容易忽略。sudo apt install -y samba # 配置共享目录编辑 /etc/samba/smb.conf末尾追加[share] comment 部门共享目录 path /data/share browseable yes writable yes valid users smbusers create mask 0660 directory mask 0770# 创建组和目录 sudo groupadd smbusers sudo mkdir -p /data/share sudo chgrp smbusers /data/share sudo chmod 2770 /data/share # 添加 Samba 账号注意这个密码和系统登录密码是两套 sudo smbpasswd -a 用户名 # 启动服务 sudo systemctl enable --now smbd nmbd提示目录权限里的2770前面那个2是SGID 位作用是让目录里新建的文件自动继承目录的属组。共享目录不加这个位组内成员新建的文件属组会变成自己的主组其他人就访问不了了这个坑很隐蔽。另外防火墙没放行会导致能 ping 通但访问不了共享。Samba 需要放行 137、138、139、445 端口。如果只是局域网内部使用确认防火墙规则里这几个端口通就行。6. 桌面环境与日常使用细节前面几节偏硬这一节聊点日常使用里最容易被问到的琐事都是小问题但不会的时候真的很耽误事。6.1 ukui-panel 异常与 home 目录不显示文件ukui-panel是麒麟桌面的任务栏/面板组件。常见的异常是面板消失、面板卡死、面板位置错乱。最直接的处理方式是重启这个组件# 重启面板注意会有一瞬间的界面闪动 ukui-panel --replace # 如果上面不行先杀掉再拉起来 pkill ukui-panel ukui-panel 如果面板配置错乱到没法用可以尝试重置它的配置目录~/.config/ukui-panel/之类但重置前先把目录改名备份别直接删万一重置后问题更严重还能退回来。**home 目录下看不到文件**这个现象十有八九是这两个原因之一一是文件管理器设置了隐藏文件过滤按CtrlH就能切换显示隐藏文件二是用户家目录下的Desktop、Documents、Downloads这些标准目录名被改成了中文或者被删除导致文件管理器索引不到。后一种情况的检查方法# 看家目录结构 ls -la ~ # 看标准目录配置 cat ~/.config/user-dirs.dirs如果user-dirs.dirs里的路径和实际目录对不上改回来或者用xdg-user-dirs-update重新生成就行。6.2 字体安装与目录规范麒麟系统的中文字体问题说到底是缺字体和字体缓存没刷新两件事。字体放哪儿有讲究系统级放/usr/share/fonts/所有用户可见需要 root 权限用户级放~/.local/share/fonts/或者~/.fonts/只对当前用户生效。我一般把工作需要的字体放系统级保证所有账号都能用。装完必须刷缓存不然程序认不出来# 系统级字体 sudo fc-cache -fv # 验证是否生效 fc-list | grep -i 字体名关键字注意字体文件名带中文或者空格有时会导致缓存失败建议改成英文文件名再放进去。另外从别处拷来的字体文件要注意授权范围商用的注意合规。有些软件尤其是兼容层里跑的 Windows 程序对字体路径有自己的要求可能需要额外做一次映射或者拷贝到它自己的字体目录这个要具体软件具体看。6.3 图片转 PDF、刻录、以及微信文件路径迁移图片转 PDF有几个办法。图形化最简单的是用办公套件新建文档、插入图片、导出 PDF命令行推荐img2pdf无损且速度快sudo apt install -y img2pdf # 多张图合成一个 PDF按文件名顺序 img2pdf *.jpg -o 输出.pdf如果要做图文混排或者加页码还是用办公套件更灵活。ImageMagick 的convert也能干但默认可能会压缩画质需要额外指定参数。光盘刻录常用的是 K3b 这类刻录工具注意刻录速度别拉满尤其是外置刻录机选 4x 到 8x 成功率明显更高。刻录前先用校验功能验证 ISO 的哈希值。微信文件路径迁移到数据盘这是内置盘小的用户最需要的。思路是把文件存储目录指到数据盘上三种做法一是软链接最简单先把原目录里的文件拷到数据盘删掉原目录再ln -s /data/wechat_files ~/文档/xwechat_files二是绑定挂载更稳但重启要重新挂建议写进 fstab三是直接在客户端设置里改存储路径如果版本支持。第一种方案最省事我一般推荐给普通用户第二种适合运维自己折腾不容易被用户误删软链接。6.4 SSH 升级与上网受限排查SSH 升级是个高风险操作原因很简单——你很可能就是通过 SSH 连过去的。所以第一条铁律先保持一个已经登录的 root 会话不要关另开一个新会话来操作。万一新的 SSH 起不来老会话还能救你。升级方式有两种。包管理方式最安全拿到新版本的 deb 包openssh-server、openssh-client、libssl 等一整套sudo dpkg -i *.deb或者放进本地仓库apt install。源码编译方式适合源里根本没有新版本的情况流程大致是# 先装编译依赖 sudo apt install -y build-essential zlib1g-dev libpam0g-dev libssl-dev # 备份旧配置和二进制非常重要 sudo cp -a /etc/ssh /etc/ssh.bak sudo cp -a /usr/sbin/sshd /usr/sbin/sshd.bak # 编译 ./configure --prefix/usr --sysconfdir/etc/ssh --with-pam --with-zlib --with-md5-passwords make -j$(nproc) sudo make install # 配置文件语法检查后再重启 sudo sshd -t sudo systemctl restart sshd重启服务前先sudo sshd -t检查配置语法这一步能挡掉一半以上的低级失误。还要注意/etc/ssh/sshd_config里的旧配置项在新版本里可能被废弃重启前搜一下日志里的告警。上网受限的排查我习惯按这个顺序先nmcli device status和nmcli connection show看网卡和连接状态然后ip route看路由是否正确再cat /etc/resolv.conf看 DNS接着排除系统代理设置图形界面里的网络代理设置会全局影响很多程序最后看防火墙规则。我遇到过好几次能 ping 通 IP 但域名解析不了问题就出在 DNS 配错了跟网络本身一点关系没有。7. 系统授权、版本升级与镜像获取的合规路径这块内容我不打算讲任何绕过的方法原因很实在绕过的手段在麒麟上成功率极低而且会破坏系统完整性后续出问题了连官方支持都拿不到。正路反而更快。7.1 授权状态怎么查先说清楚麒麟的授权是和版本、架构、机器硬件强绑定的。同一份授权文件从 A 机器拷到 B 机器几乎肯定失效别在这上面浪费时间。查看授权状态有两条路。图形界面里搜激活或者授权相关的管理工具界面会直接告诉你当前是试用还是正式授权、剩余天数、到期时间。命令行方面各版本差异比较大我一般先翻一遍有什么工具可用ls /usr/bin | grep -i kylin ls /usr/sbin | grep -i kylin # 常见的授权管理工具名称里多带 activation 之类的关键字另外cat /etc/.kyinfo里通常也会有授权相关的信息字段值得先看一眼。如果确认是未授权或者授权过期唯一正确的方式是联系采购渠道或者官方支持补授权文件然后用系统自带的授权管理工具导入。授权文件的格式通常是特定后缀的文件导入路径各版本不完全一样以工具提示为准。提示硬件变动换主板、加网卡、改主机名可能导致授权失效这在服务器上是常见问题。我的做法是重大硬件变更前先联系渠道确认要不要重新申请授权别改完了才发现系统进不去。7.2 跨版本升级前的准备工作从 V10 升到更高版本或者从低 SP 升到高 SP我的建议是能不原地升级就不原地升级。原因有三个。第一SP 之间的组件差异很大原地升级留下的残留配置非常容易打架。第二升级中断导致系统起不来的案例我见过太多。第三升级失败后回滚的成本远高于重装加数据还原。如果确实要原地升级我的准备清单是备份/home、备份/etcsudo tar -czf etc_backup.tar.gz /etc、备份数据库 dump、记录当前所有服务的启停方式和端口、确认目标版本的源配置、留足磁盘空间至少留出当前使用量的 1.5 倍。升级完成后逐项验证服务别急着下线旧备份。7.3 镜像获取与校验镜像来源上没什么可讨论的只从官方发布的正式渠道获取。第三方站点上的整合版优化版里塞了什么你根本不知道装上去就是给自己埋雷。拿到镜像后第一件事是校验哈希值。官方一般会公布 SHA256本地核对sha256sum Kylin-Server-V10-SP3-xxx.iso比对一致再刻盘或者做启动盘。这一步几秒钟但能挡掉一半以上的安装到一半报错——很多镜像问题是下载过程中损坏导致的。下载工具方面我用命令行下载工具比浏览器稳断了还能续。8. 常见问题速查表与排查方法论前面七节是按主题讲的但实际排查时人是懵的需要一个看到症状就能定位的对照表。下面这张表是我这些年攒下来的直接按症状查。症状最可能的原因快速验证处理方向登录成功又跳回登录界面根分区满 / 家目录属主错df -h、ls -la /home/用户清理空间、chown -R修复属主dpkg 装包报依赖缺失依赖没凑齐apt install -f补齐依赖或建本地仓库程序执行报 Exec format error架构不匹配uname -m、file 程序名换对应架构的包命令找不到但明明装了PATH 未包含路径echo $PATH、which 命令修正 PATH 或改配置文件sudo 突然不能用权限被改坏ls -l /usr/bin/sudo从救援模式修复或重装硬盘识别不到LVM 未激活 / 驱动缺失lsblk、vgscanvgchange -ay、查驱动打印机添加失败驱动缺失 / 端口选错systemctl status cups换驱动、核对端口DNS 解析失败resolv.conf 配置错cat /etc/resolv.conf修正 DNS 或网卡配置共享目录别人访问不了目录未加 SGIDls -ld /data/sharechmod 2770字体装了程序不认缓存未刷新fc-listgrep 字体名SSH 升级后连不上配置语法错 / 端口变更sshd -t用保留会话回滚配置再说说方法论层面的三条心法这是我做了这么多年运维最值钱的经验。第一改配置前永远先备份而且是带时间戳的备份。我现在形成肌肉记忆了sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date %F_%H%M)。带时间戳的好处是改错三次还能回到第一版。这个小习惯救过我不下十次。第二一次只改一个变量。有人出问题了一边改网络配置一边改权限一边重启服务最后好了也不知道是哪个起的作用坏了也不知道是哪个搞坏的。正确的做法是改一处、验证一处、记录一处。第三善用日志别靠猜。journalctl -b -p err、journalctl -u 服务名 -n 100、dmesg、/var/log/下对应的日志这四个入口能解决绝大多数不知道为什么不行的问题。我发现很多人的排查方式是重启试试换个命令试试试了半小时不如花两分钟把日志读完。最后分享一个我自己一直在用的小工具思路在每台新部署的机器上建一个/root/notes目录把版本信息、df -h、lsblk、网络配置、装过的软件清单都存进去命名带日期。将来接手的人或者半年后的你自己一打开就知道这台机器的家底比翻历史聊天记录快一万倍。这个习惯我从做第三个项目开始坚持到现在是真的能省事。
返回列表