ARTICLE DETAIL

资讯详情

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

龙芯3A4000装统信UOS与银河麒麟:MIPS64双系统实战避坑

龙芯3A4000装统信UOS与银河麒麟:MIPS64双系统实战避坑 手头这台龙芯3A4000是一台退役整机4核、7A1000桥片、16GB DDR4、一块SATA固态外观还很新。我的想法很简单把它当成一台能日常用的办公机同时把统信UOS和银河麒麟两个系统都摸一遍看看在这套MIPS64平台上到底能做到什么程度。结果第一次动手就栽了——我从一台3A5000的机器上顺手拿了镜像写完U盘插上去屏幕上连引导菜单都没出风扇转得挺欢显示器一片黑。后来才反应过来3A4000和3A5000压根不是一套指令集镜像根本不通用。这篇就把我在这台机器上装统信UOS和银河麒麟的完整过程、踩过的坑、以及装完之后的一些调优经验摊开来说适合手里有龙芯整机想折腾系统的朋友也适合第一次接触MIPS64平台、被架构这个词绕晕的人。1. 先确认这台3A4000的身份档案比急着插U盘重要得多在这一类平台上装系统最容易翻车的环节不是分区、不是驱动而是镜像选错架构。x86世界里大家习惯了一个Windows镜像通吃到了龙芯这边同样的品牌、同样的桌面系统镜像是按CPU指令集分开出的装错了连报错都不给你直接黑屏。1.1 从主板丝印到 uname -m三代龙芯最容易混的地方龙芯桌面/工作站这一条线大致可以分成两个世代。3A3000、3A4000、3B4000这一批用的是兼容并扩展MIPS64指令集的核3A4000是四核GS464V主频通常在1.8GHz到2.0GHz这个区间二进制世界里的标识是mips64el。而3A5000、3A6000换成了龙芯自研的LoongArch指令集标识是loongarch64。这两套东西的机器码完全不兼容A平台的软件包放到B平台上连动态链接器都找不到。确认自己手里是哪一代有三个可靠途径。第一是看主板丝印和CPU顶盖3A4000的芯片上会直接印着型号第二是看整机厂商的出厂标签或者BIOS/固件里的型号字符串第三如果机器上已经有一个能跑的系统直接进终端敲几条命令最省事uname -m # 3A4000 上通常返回 mips64 cat /proc/cpuinfo | head -30 lscpu dpkg --print-architecture # 多数统信/麒麟版本上返回 mips64eluname -m在3A4000上返回的一般是mips64而软件包体系里用的是mips64el小端这两个词指的是同一件事的不同层面一个说指令集宽度一个说字节序看到它们不要慌。/proc/cpuinfo里的model name通常会出现Loongson-3A4000这类字样这是最直接的证据。顺便说一个我踩过的小坑有些整机是3A4000配7A1000桥片主板上还插了一块独显。你如果只看lspci里的显卡型号会误以为自己拿到的是一台x86机器加国产CPU的怪组合其实不是PCI设备扫描本来就是通用的。判断CPU架构只看CPU本身别看外设。1.2 镜像文件名里的 loongson3、mips64el、loongarch64 分别意味着什么各家发行版给龙芯平台取的名字不太统一这是新手最容易被绕晕的地方。统信和麒麟的镜像文件名里可能出现的片段有loongson3、mips64el、loongarch64、loongson64它们的对应关系大致如下文件名里的标识对应机型说明loongson33A3000 / 3A4000 / 3B4000老叫法指MIPS64这一代3A4000适用mips64el3A3000 / 3A4000 / 3B4000架构规范名和上面是同一批机器loongson64部分内核配置项里的叫法也指向MIPS64这一代不是新架构loongarch643A5000 / 3A6000新指令集3A4000上用不了判断方法很简单只要文件名里出现loongarch64你这台3A4000就可以直接跳过只要出现loongson3、mips64el、mips64方向就是对的。如果两个标识同时出现比如某些镜像会写mips64el-loongson3那更保险。装错架构的表现有三种可以拿来反向验证一是U盘插上后固件阶段就没有任何输出屏幕一直黑二是能看到引导菜单选择之后卡在加载内核的位置几秒钟后重启或者死住三是极端情况下能进安装器但装完第一次重启直接kernel panic。这三种现象都指向同一个原因——指令集不匹配跟你分区做得好不好没有任何关系。1.3 固件是PMON还是UEFI决定了你的第一步操作完全不同同样是3A4000整机固件可能有两种路子。一种是龙芯平台传统的PMON加电之后给你一个字符界面提示符是PMON靠命令行操作另一种是整机厂商定制的UEFI固件图形化设置界面和普通PC上的那套逻辑接近。这两种固件在装系统时的操作差别非常大动手前必须先确认。PMON的几个常用命令我列一下实际参数写法各家固件略有差异以你屏幕上的help输出为准PMON devls # 列出当前识别到的存储/网络设备确认U盘有没有被看到 PMON bl -d ide ... # 从指定设备引导后面的设备参数写法因固件而异 PMON set al bl -d ide ... # 把自动引导命令写进环境变量省得每次手敲PMON这套固件还有一个特点引导参数不是靠GRUB那种配置文件而是通常依赖根分区/boot目录下的boot.cfg文件里面写着内核路径和启动参数。这意味着你在做双系统、做救援的时候思路和x86上的GRUB时代不太一样需要手工维护这个文件。如果是UEFI固件那就回到熟悉的套路需要一块FAT32的ESP分区引导文件放在EFI目录下固件设置里能看到启动项列表。这一种相对省心分区表用GPT也没问题。而PMON对GPT的支持普遍不太好我遇到过识别GPT磁盘失败的情况所以在这台机器上我全程用MBR分区表/boot单独放一小块ext4在磁盘靠前的位置稳定得多。2. 制作启动盘与固件侧的准备工作架构确认完真正的动手环节才刚开始。这一步的目标很明确让固件能认出你的U盘、能读到内核、能把安装器拉起来。听起来简单但在这类平台上U盘和固件设置这两个环节能吃掉你一半的调试时间。2.1 U盘怎么写入才不会变成半截启动盘写盘工具我只推荐两种方式。第一种是Linux/macOS下的dd最原始也最可靠lsblk # 先确认U盘是 /dev/sdX别写错盘 sudo dd ifxxx.iso of/dev/sdX bs4M statusprogress convfsync sync注意of后面跟的是整块盘比如/dev/sdb不是分区/dev/sdb1写错了就把你的系统盘干掉了。convfsync和写完后单独敲一次sync是为了确保数据真正落盘这一步别省U盘拔早了会出现文件看起来写完了但引导扇区是空的这种诡异情况。第二种是图形工具Windows下用balenaEtcher或者用Rufus但要选DD模式而不是ISO模式。这里要特别提醒不要用那种把ISO解压之后复制到U盘的做法也不要选某些工具里的解包复制选项。这类做法的思路是给老式BIOS用的会把光盘镜像里的引导结构拆掉在龙芯固件上大概率认不到启动设备。写完之后建议做一次校验把U盘前几MB读出来看看引导标记在不在sudo dd if/dev/sdX bs512 count1 2/dev/null | hexdump -C | head正常情况下第一个扇区末尾能看到55 aa这两个字节。看不到的话别浪费时间插到机器上试了重写。还有一个U盘本身的选择问题老固件对USB 3.0的支持经常不完整。我手上一个USB 3.0的U盘在PMON里死活看不见换成USB 2.0的旧U盘一次就认到了。所以如果devls列不出你的U盘先别怀疑镜像换一个USB 2.0的盘、插到主板背板的USB 2.0口上再试。U盘容量8GB起步装统信或者麒麟的桌面版16GB更舒服。2.2 固件里我习惯先改的几项设置进固件设置界面PMON是命令行UEFI是图形界面开机按键常见Del、Esc、F2、F12有几项我每次都会看一遍。第一是存储控制器的模式。如果固件里有SATA模式选项选AHCI而不是IDE兼容模式后者会让系统装完后读写性能明显偏低。第二是内存频率有些整机默认跑在比较激进的频率上装系统过程中如果反复重启或者报内存错误可以把频率降一档再试装完系统稳定之后再决定要不要调回去。第三是显示输出如果主板有集显和独显两个输出口明确指定从哪个输出避免安装器起来了但是画面显示在另一个口上——这种情况特别容易被误判成黑屏死机。PMON环境下我会先跑一遍设备枚举确认三件事U盘能不能看到、硬盘能不能看到、键盘能不能输入。PMON devls PMON help键盘这条最容易被忽略。我遇到过USB键盘在PMON阶段完全没反应的情况最后是换了一个老的PS/2键盘才完成设置。所以别把键盘当成理所当然尤其是在这种平台上。2.3 外设精简与分区规划PMON对GPT的态度要提前摸清安装过程中出问题有很大一部分原因是外设太杂。我的做法是装系统的时候拔掉所有不必要的东西——独立显卡如果集显能用、USB扩展卡、多余的USB设备、打印机只留键盘、鼠标、显示器和安装U盘。等系统装完、能正常进桌面之后再一件一件往回加。这样万一出问题你能立刻知道是哪件外设引起的。分区这块我在这台3A4000上用过两套方案各有适用场景方案分区结构适合场景注意点单系统简装/boot1GB swap8GB /剩余全部只想快速跑起来看看/满了之后不好救重装必须备份数据长期使用/boot1GB swap8GB /60GB /home剩余打算长期用、可能重装重装时只格式化前两个/home留着/boot给1GB是因为MIPS内核镜像加上initramfs会比较大给512MB有时候会在升级内核时提示空间不足。swap给8GB16GB内存的机器其实用不太到但如果你打算试休眠功能swap至少要等于内存大小。我自己不用休眠8GB足够兜底。关于分区表还有一条经验在这台PMON固件的机器上我全程用MBR。有一次我按x86习惯用gdisk建了GPT表结果PMON阶段直接看不到这块盘。如果你不确定自己的固件支不支持GPT最省事的办法是先按MBR来装好了再考虑要不要折腾。3. 统信UOS在3A4000上的安装实录准备工作做完接下来是统信UOS的安装过程。整体流程和x86上的体验接近但因为平台特殊有几个环节的手感明显不一样我把关键点拆开讲。3.1 从引导菜单到安装器每个选项背后的含义U盘插好、固件指向U盘引导之后会出现引导菜单。菜单里通常有几类选项正常安装、图形兼容模式、介质校验。在3A4000这类平台上如果机器配的是7A1000的集成显示控制器正常安装一般没问题但如果你插的是某款独立显卡第一次进安装器出现花屏、分辨率异常或者干脆黑屏那就回头选图形兼容模式有些版本叫基础图形模式它能绕开一部分显卡驱动的问题。引导菜单出来之前如果卡住先做介质校验。这一步很多人跳过觉得浪费时间但在U盘写入不完全的情况下校验能帮你省掉后面半小时的无效排查。进入安装器之后的第一个选择题是语言和时区按实际需求选就行不用纠结。真正需要动脑的是分区页面。3.2 手动分区的具体切法和我给的两套方案统信UOS的安装器提供全盘安装和手动分区两个选项。全盘安装会清空整块盘适合全新的、只装一个系统的机器只要你有任何保留数据的需求就选手动分区。手动分区时安装器会以图形化的方式让你选挂载点和文件系统。我的操作顺序是这样先选中目标硬盘删掉不需要的旧分区然后依次建/boot、swap、/、/home。文件系统上/boot用ext4/和/home也用ext4理由是在这类平台上ext4的兼容性和工具链成熟度最稳出问题最好修。如果你想尝鲜btrfs的快照功能可以试但要接受工具链支持不如ext4完善这个现实。分区建完之后安装器底部一般有一个引导器安装位置的选择。在PMON这种固件上通常是把引导信息写进磁盘的前部区域选整块磁盘而不是某个分区。这一点和UEFI下选ESP分区不一样别混淆。确认分区方案之后安装器会弹一个以下操作将清空数据的确认框。这是最后一次反悔的机会看清分区列表再点。3.3 卡在进度条不动的那几次最后是怎么过的安装过程中我遇到过三次卡顿记录下来给后来的人省时间。第一次是卡在正在复制文件阶段进度条走到大概三分之二就不动了。等了二十分钟没变化只能强关。后来查明原因是U盘本身有问题——同一块盘在别的机器上写盘也偶发读错误。换了一个U盘重来一次通过。判断方法如果在复制阶段卡住先把U盘换一个USB口、换一个U盘再怀疑镜像。第二次是进度条走到90%左右停住这次换了U盘也没用。最后发现是BIOS里内存频率的问题降一档之后通过了。这个现象很像网络下载卡住但安装过程是本地读盘跟网络无关所以别去查网络。第三次是安装完成、第一次重启之后屏幕黑掉但有硬盘灯闪烁。大概率是显卡驱动没能正确接管显示。解决办法是在引导参数里临时加参数或者直接在固件里换回集显输出再启动。装好系统、能进桌面之后再去处理独显驱动的事不要在安装阶段跟显卡死磕。3.4 首次进入桌面之后必须补的几件事系统起来了不等于能用了。我每次装完都会按顺序做这几件事。第一确认系统架构和源配置然后跑一次更新dpkg --print-architecture cat /etc/apt/sources.list sudo apt update sudo apt list --upgradable源列表里确认只包含适配mips64el的源。这一步特别重要因为如果你从网上抄了一份x86的源地址贴进去apt update会拉回一堆架构不匹配的包索引后面装软件会报各种莫名其妙的依赖错误。第二字体和输入法。桌面系统自带的中文字体通常够用但如果你从事排版或者需要特定字体把ttf/otf文件丢进~/.local/share/fonts然后fc-cache -fv fc-list :langzh | head输入法一般系统自带就已经配好了如果需要额外安装注意选mips64el的包。第三个是打印机。这类系统的打印子系统走CUPS桌面环境里有图形化的打印机管理工具。网络打印机直接添加IPP地址通常就能用本地USB打印机需要确认驱动是否存在尤其是型号比较新的机器可能需要手工找PPD文件。第四Windows应用兼容层。统信有官方的兼容引擎从系统自带的应用商店里安装最省心。需要提前说明的是在3A4000这种MIPS64平台上跑Windows应用一般要在Wine之上再叠一层指令翻译把x86指令翻成MIPS64执行所以能跑起来但速度跟原生没法比。中轻度的办公类软件文档、简单聊天工具体验可以接受图形重一点的软件会比较吃力。具体某个版本支持到什么程度以你机器上应用商店里实际能装到的版本为准。最后一条是关掉不必要的开机自启项。这台机器的性能天花板摆在那把启动项精简一下开机进桌面的体感差距很明显。4. 银河麒麟V10的安装差异同样的机器不一样的手感统信跑顺了之后我腾出一块盘装银河麒麟。整体流程相似但细节差异不少这些差异恰恰是很多人第一次装麒麟时踩坑的地方。4.1 版本选择与授权凭证的准备麒麟V10这一代镜像同样按架构分版本选择逻辑和统信完全一致认准mips64el、loongson3这类标识避开loongarch64。版本号上V10下面还有SP系列的小版本不同小版本的内核和驱动版本不同对新硬件的适配程度也不一样。如果你第一版装完发现某个设备不认别急着换硬件先试试另一个小版本的镜像很可能就解决了。授权凭证从正规渠道获取这一点不展开。需要提醒的是不要用来路不明的镜像一方面是安全问题另一方面是这种来源的镜像里可能被改过源配置装完之后各种更新异常排查起来非常痛苦。4.2 安装器与分区页面的差异点麒麟的安装器和统信的界面不同但概念一一对应磁盘选择、分区方式、挂载点、引导位置。最大的坑在于自动分区的默认行为。有些版本默认的自动分区会倾向于占用整块磁盘如果你的盘上已经有统信系统点下去可能就把邻居干掉了。我在这台机器上的做法是全程手动分区一个分区一个分区地选选完之后逐行核对挂载点和容量确认没有误伤已有系统的分区。这一步花五分钟能省掉重装两个系统的两小时。还有一点是引导的处理。两个系统共存时后装的系统一般会接管引导。在PMON环境下如果新装系统的引导写得不到位可能出现装了新系统老系统进不去了。稳妥的办法是在装麒麟之前先把统信的/boot/boot.cfg备份一份出现问题时能手工加回去。4.3 麒麟侧的首启配置字体、输入法、打印麒麟桌面首次进入之后我会优先处理三样东西。字体。麒麟自带字体覆盖日常使用没问题但要装第三方字体路径和刷新命令和统信一样放进字体目录后跑fc-cache -fv。装完记得用fc-list确认能被识别到有些字体文件本身有问题装进去也不生效。输入法。桌面自带输入法一般开箱可用如果需要装额外的输入法框架同样注意mips64el架构。装完输入法要重新登录才会生效别装完就以为坏了。打印。麒麟这边有打印机管理和云打印相关的组件添加网络打印机的流程和统信类似也是走IPP协议。区别在于组件名称和菜单位置不同找的时候按打印这个关键词搜就对了。如果打印出来是乱码或者空白页多半是驱动不对换一个型号相近的PPD试试往往能凑合用。4.4 两套系统共存的引导维护双系统在这台机器上我能跑通有几个细节值得说。第一是时间。两个系统对硬件时钟的理解可能不一致一个按UTC一个按本地时间切换系统之后时间差八小时。统一一下就行sudo timedatectl set-local-rtc 1 --adjust-system-clock或者反过来让两边都用UTC关键是保持一致。第二是swap分区共用的问题。两个系统共用一块swap本身是允许的但如果你启用了休眠功能休眠镜像会写到swap里切换系统时可能把对方的数据覆盖掉。我的建议是要么干脆不用休眠要么每个系统各分一小块自己的swap别共用。第三是引导条目的维护。PMON环境下靠/boot/boot.cfgUEFI环境下靠固件启动项列表加GRUB配置。GRUB这套东西如果两个系统都装了用os-prober扫描一下另一个系统一般能自动识别出来sudo os-prober sudo update-grub扫不到的情况也常见那就手工加条目把对方的内核路径和根分区UUID写进去。5. 装完不等于能用3A4000上的驱动、性能与日常软件落地两个系统都能进桌面之后接下来的问题才是真正决定这台机器能不能用的显示、存储、软件生态。这部分我踩的坑比安装阶段还多。5.1 显示与显卡7A1000集显的能力边界7A1000桥片自带的显示控制器定位是2D显示1080p分辨率下跑桌面、看文档、浏览网页没问题视频硬解能力比较有限高码率的视频可能会靠CPU软解风扇会明显转起来。如果你想在这台机器上看高清视频建议先确认一下你的显示控制器型号再决定要不要给它加一块独立显卡。加独显的体验取决于驱动成熟度。常见的选择有两类一类是AMD的入门级独立显卡内核里有开源驱动支持在这类系统上一般能点亮另一类是国产显卡驱动通常由厂商提供deb包需要从对应渠道获取并注意架构匹配。无论哪种装完驱动之后用xrandr看一下可用模式xrandr xrandr --listmonitors如果默认分辨率不对可以用xrandr --output 接口名 --mode 分辨率临时切换。想做双屏扩展同样是xrandr的--right-of参数但前提是驱动确实支持多输出有些驱动只是把两个口镜像显示。5.2 内存、SSD与睡眠休眠的取舍SSD这块装完系统之后确认一下TRIM有没有正常工作sudo fstrim -av systemctl status fstrim.timer现代发行版一般都有自动TRIM的定时任务跑一次手动TRIM看看耗时和输出正常情况下几秒钟完成。如果报错说不支持可能是文件系统或者控制器模式的问题。内存这块16GB在这两个系统上做办公用途是绰绰有余的8GB也能用但浏览器多开标签页会吃紧。如果觉得切换应用时卡顿明显可以适当调低交换倾向cat /proc/sys/vm/swappiness sudo sysctl vm.swappiness10要持久化就写进/etc/sysctl.d/下的配置文件。另外如果机器内存偏小可以了解一下zram把一部分内存当作压缩交换空间用比直接写SSD要快但这个方案在不同内核版本上的支持程度不一样需要自己试。关于休眠我在这台机器上的结论是能不用就不用。MIPS平台上的休眠支持远不如x86成熟唤醒后花屏、外设失效的情况我都遇到过。日常用挂起或者直接关机省心。5.3 常用软件的替代清单含Docker、终端工具、数据库客户端软件生态是这类平台最现实的门槛。我列一下自己实际装过、用得住的几类重点提醒架构问题类别软件注意点办公WPS、系统自带办公组件应用商店里直接装认准架构终端WindTerm等终端工具优先应用商店官网下载要看清架构数据库客户端DBeaver官方有Linux版但龙芯版可能滞后可能要自己找包全文检索FSearch、AnyTXT类工具索引性能受磁盘影响SSD上体验明显好即时通讯企业微信、钉钉等官方Linux版更新节奏和架构覆盖不一致容器Docker镜像架构必须匹配见下文教学希沃白板类需要先确认是否有对应架构的包重点说Docker。在龙芯平台上装Docker本身不难从应用商店或者适配源里装就行真正的坑在镜像。docker pull下来的镜像如果是x86或者ARM架构的运行时会直接报exec format error字面意思是可执行文件格式不认本质就是架构不匹配。docker info docker pull 镜像名 docker run --rm 镜像名 uname -m最后那条命令是快速验证镜像架构的土办法跑起来看看它报什么架构。想跑x86镜像得配qemu-user-static加binfmt_misc这套二进制翻译环境能跑通但性能损失很大只适合做功能验证。镜像这一块尽量找官方提供多架构支持的镜像很多流行镜像都同时发布了linux/mips64le或者对应的龙芯版本别自己想当然地拉latest。关于deb包的安装有个通用规律要记住架构不对的包装的时候会直接报错。比如sudo dpkg -i 某个软件_amd64.deb # dpkg: error processing archive ... package architecture (amd64) does not match system (mips64el)看到这个报错不用怀疑人生就是包不匹配去找对应架构的版本。5.4 温度、风扇与长时间高负载的观察这台机器没有特别完善的传感器支持温度得看有没有对应的驱动。能用的话sensors cat /sys/class/thermal/thermal_zone0/temp # 单位通常是千分之一摄氏度3A4000在满载编译或者跑高码率视频的时候温度到六十多度是正常的散热器积灰会让温度明显上一个台阶。我这台到手之后拆开清了一次灰、换了一次硅脂满载温度降了差不多十度风扇噪音也小了很多。电源管理这块MIPS平台上的cpufreq支持因内核而异有些版本能看到调频策略有些版本压根没有。如果你的系统里能调日常用按需调频是性价比最高的选择不能调的话就别折腾了接受它的功耗表现。6. 按现象查因我总结的一张排错对照表装系统这件事最有价值的能力不是背步骤而是看到现象能想到原因。我把这一路遇到的现象整理成了一张对照表配合后面每个现象的展开说明使用。现象优先怀疑验证方式处理方向U盘插上完全无输出架构不对 / 固件不认USB3换USB2口、换U盘换匹配架构镜像引导菜单出来但选完卡住介质写入不完整 / 内存不稳介质校验、降内存频率重写U盘、降频安装器花屏黑屏显卡驱动换集显输出、兼容模式换引导模式复制文件阶段卡死U盘读错误换U盘/换接口换盘重装装完重启进不去引导未写入看磁盘首扇区、看boot.cfg手工补引导USB键鼠不识别固件USB支持换PS/2键盘换接口或设备时间差八小时硬件时钟基准不一致timedatectl统一RTC设置6.1 启动阶段黑屏、花屏、卡死这一类现象要分层排查不要一上来就怀疑系统。第一层是固件能不能看到设备判断依据是PMON的devls输出或者UEFI的启动项列表第二层是引导器能不能加载内核判断依据是屏幕上有没有出现任何内核输出第三层是内核能不能挂载根文件系统判断依据是有没有走到挂载root之类的提示。我的习惯是先用一个确定能用的U盘做个最小验证比如拿一个已经在这台机器上成功过的旧镜像确认机器本身没问题再去查新镜像的问题。这样能把变量控制住不然你永远不知道是机器坏了还是镜像坏了。花屏这个现象要单独说。花屏基本可以锁定在显示驱动上跟CPU、内存关系不大。处理办法就是绕开换集显输出、换兼容模式引导、或者在引导参数里临时加参数把高分辨率模式关掉。不要在安装阶段跟显卡驱动死磕先把系统装上后面再收拾它。6.2 装完重启进不去系统这个现象的典型特征是安装过程一切顺利重启之后固件直接跳过硬盘或者提示找不到可引导设备。原因通常有两个。一是引导信息没有正确写入。在PMON环境下重点看/boot/boot.cfg是否存在、内容对不对在UEFI环境下重点看ESP分区里的EFI目录下有没有对应厂商目录和.efi文件。二是引导信息写到了错误的位置。比如分区表是GPT但固件只认MBR或者引导写进了某个后续会被格式化的分区里。救援方式我一般用live U盘启动手工挂载目标根分区再修复。这套操作要在live环境里做sudo mount /dev/sdaX /mnt # 挂载根分区 sudo mount /dev/sdaY /mnt/boot # 如果有独立的boot分区 # 然后按固件类型分别处理PMON的boot.cfg或UEFI的引导文件6.3 USB键鼠与外设不认这类问题在安装阶段特别烦人因为键盘不能用你连菜单都选不了。除了前面说的换PS/2键盘这个土办法还有一个思路是尽量精简外设只留最基本的键鼠。进系统之后如果某些USB设备不认先看内核认不认lsusb dmesg | tail -50lsusb里能看到设备但系统里用不了一般是驱动或者权限问题lsusb里压根没有那是更底层的USB控制器问题可能是固件设置或者供电不足。前面板USB口供电不足的情况在这类整机上并不少见插到背板口上就好了。6.4 时间、网络与中文显示异常时间问题前面说过了两套系统共用硬件时钟时容易跑偏统一RTC基准就行。网络问题比较常见的是拿不到IP地址。这类整机上可能配有不止一张网卡板载加独立网卡系统启动时可能默认走了不是你想用的那张。排查顺序ip link show ip addr show ping -c 3 网关地址 ping -c 3 一个公网地址先确认网卡有没有被识别、有没有起来再看DHCP有没有拿到地址最后再看能不能出去。如果网卡压根没被识别那就是驱动问题需要确认这张网卡在内核里有没有支持。中文显示异常一般是字体缺失或者字体缓存没刷新前面提过的fc-cache -fv能解决大部分问题。如果个别应用里中文变成方框那是那个应用自己的字体配置问题需要在应用级别指定字体。7. 重装、找回密码与数据保全的几条老经验系统折腾到一定阶段一定会遇到想重装或者把密码忘了这两种情况。这两件事在有准备和没准备的情况下体验差距是巨大的。7.1 保留数据重装的正确姿势如果你规划分区的时候把/home独立出来了重装就非常轻松安装器里手动分区只格式化/boot和//home选保留不格式化装完之后用户数据原封不动。这是我把/home独立出来的唯一理由也是最重要的理由。除了数据还有两样东西值得提前导出。一是软件清单dpkg --get-selections ~/pkglist.txt重装之后可以拿这份清单做参考批量装回去。二是改过配置的/etc目录下的文件尤其是网络配置、源配置、打印配置这些备份一份能省掉大量重复劳动。sudo tar czf /path/to/backup/etc-backup.tar.gz /etc顺手提一句/home独立了就不要在重装时手滑格式化它。我见过有人在分区页面全选格式化把几年的资料一次清空这种事没有任何补救手段。7.2 忘记登录密码时的救援路径这类系统忘记密码的救援思路和普通Linux发行版是一致的前提是你能进引导菜单。有GRUB的情况下在引导菜单里按编辑键找到内核那一行在末尾加上rw init/bin/bash然后启动会直接进一个root权限的shell接下来重新设置密码passwd 用户名 sync reboot -f没有GRUB、只有PMON的情况就用live U盘启动然后挂载根分区、chroot进去改sudo mount /dev/sdaX /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo chroot /mnt passwd 用户名 exit需要注意的是这类系统如果开了磁盘加密上面的路子走不通得靠恢复密钥。所以装系统的时候如果选了加密密钥一定要保存到一个跟这台机器无关的地方。7.3 更新策略与源管理更新这件事上我吃过一次亏。当时为了装一个只有特定源里才有的软件我把一个不太匹配的源地址贴进了sources.list结果后续一次常规更新把整个依赖树搞乱了最后只能重装。从那之后我给自己定了两条规矩。第一条是只保留适配当前架构的源任何需要手工添加的第三方源加之前先备份sources.list用完就注释掉。第二条是重大更新之前先看清单不要闭着眼睛apt upgradesudo apt update apt list --upgradable看清哪些包要动、动了会不会影响内核和显卡驱动再决定。内核更新尤其要谨慎因为在这类平台上内核版本直接决定硬件支持程度新版内核有可能修好了某个设备也有可能弄坏了原来能用的东西。7.4 数据备份这件事我不信任何稳定的系统最后说备份。不管哪个系统我的做法都是把重要数据放在独立分区或者外接存储上系统盘只放系统和软件。条件允许的话用rsync做增量同步rsync -av --delete ~/重要目录/ /path/to/备份位置/这条命令里的--delete要慎用它的作用是让目标端和源端完全一致好处是不留垃圾坏处是你误删了源端的文件同步之后备份端也会一起删掉。稳妥一点的话不用--delete或者用带版本历史的备份方案。我在实际操作中的体会是在这类平台上折腾系统最值钱的不是某一条命令而是把变量一个一个控制住的习惯——每次只改一个条件出问题了才好回溯。另外U盘至少备两个镜像文件装完别急着删硬盘上留一份能用的旧镜像哪天系统进不去了那玩意儿就是救命稻草。
返回列表