置到驅(qū)動(dòng)配置)
1. 為什么要在華為擎云W515上折騰銀河麒麟V10華為擎云W515 PGUV-WBY0這臺(tái)機(jī)器本質(zhì)上是一臺(tái)面向政企辦公場(chǎng)景的國(guó)產(chǎn)臺(tái)式機(jī)核心平臺(tái)是麒麟990aarch64架構(gòu)也就是ARM64出廠預(yù)裝的是統(tǒng)信UOS或者銀河麒麟桌面操作系統(tǒng)V10。很多人拿到這臺(tái)機(jī)器之后的第一反應(yīng)是我能不能重裝一個(gè)干凈的系統(tǒng)或者我想把系統(tǒng)盤換成NVMe固態(tài)重新裝一遍麒麟V10。這個(gè)需求在信創(chuàng)運(yùn)維圈子里非常普遍尤其是單位批量采購(gòu)之后IT管理員需要統(tǒng)一鏡像、統(tǒng)一分區(qū)、統(tǒng)一賬號(hào)策略原廠預(yù)裝的那套東西往往不滿足內(nèi)網(wǎng)合規(guī)要求。我自己前前后后在這臺(tái)機(jī)器上裝過(guò)不下十遍銀河麒麟V10從桌面版SP1到服務(wù)器版SP3都試過(guò)踩過(guò)的坑包括U盤引導(dǎo)不認(rèn)、NVMe識(shí)別不到、顯卡驅(qū)動(dòng)缺失導(dǎo)致花屏、WiFi模塊AX211沒(méi)有固件等等。這篇文章就是把這些經(jīng)驗(yàn)完整地?cái)傞_講從準(zhǔn)備工作到分區(qū)方案從引導(dǎo)修復(fù)到驅(qū)動(dòng)補(bǔ)全再到裝完之后必做的基礎(chǔ)環(huán)境配置Python、Git、Docker、MySQL這些一次性說(shuō)清楚。適合誰(shuí)看如果你是單位里負(fù)責(zé)信創(chuàng)設(shè)備維護(hù)的IT或者是自己搞了一臺(tái)W515想折騰的愛好者再或者你是剛接觸aarch64平臺(tái)、習(xí)慣了x86那一套想轉(zhuǎn)過(guò)來(lái)的開發(fā)者這篇內(nèi)容都能直接拿去用。我不講虛的每一步都是實(shí)機(jī)驗(yàn)證過(guò)的參數(shù)和命令你可以直接抄。需要提前說(shuō)明的是W515這個(gè)型號(hào)有幾個(gè)子版本PGUV-WBY0是其中比較常見的一個(gè)配置CPU是麒麟990 8核內(nèi)存標(biāo)配8GB或16GB硬盤一般是256GB NVMe SSD加1TB HDD的組合。不同批次的BIOS版本可能有差異引導(dǎo)相關(guān)的選項(xiàng)位置會(huì)略有不同但整體邏輯是一致的。2. 裝系統(tǒng)之前的整體思路和方案選型2.1 桌面版還是服務(wù)器版先想清楚用途銀河麒麟V10分兩條產(chǎn)品線桌面操作系統(tǒng)V10和服務(wù)器操作系統(tǒng)V10。這兩個(gè)不是簡(jiǎn)單的有沒(méi)有圖形界面的區(qū)別內(nèi)核版本、軟件源、預(yù)裝組件都不一樣。桌面版面向辦公場(chǎng)景預(yù)裝了WPS、奇安信瀏覽器、微信Linux版等服務(wù)器版面向后端服務(wù)默認(rèn)沒(méi)有圖形界面軟件源里更多的是Nginx、MySQL、Docker這類服務(wù)端組件。W515作為一臺(tái)桌面級(jí)設(shè)備絕大多數(shù)人裝的是桌面版。但如果你打算把它當(dāng)一臺(tái)ARM開發(fā)服務(wù)器用比如跑Docker容器、做CI/CD構(gòu)建節(jié)點(diǎn)那服務(wù)器版SP3反而更合適因?yàn)樗能浖锤蓛魕um源里的aarch64包更全。我個(gè)人的建議是辦公用途選桌面版SP1開發(fā)/服務(wù)器用途選服務(wù)器版SP3不要試圖在桌面版上硬搭服務(wù)器環(huán)境依賴沖突會(huì)讓你很頭疼。2.2 鏡像從哪來(lái)怎么校驗(yàn)銀河麒麟的ISO鏡像獲取渠道這里不展開重點(diǎn)說(shuō)校驗(yàn)。aarch64的鏡像和x86的鏡像文件名很像下載的時(shí)候一定要看清楚文件名里帶不帶aarch64或者arm64字樣。下載完之后必須做兩件事一是核對(duì)SHA256值二是確認(rèn)ISO里的引導(dǎo)文件架構(gòu)。# 校驗(yàn)SHA256 sha256sum Kylin-Desktop-V10-SP1-Release-2107-arm64.iso # 掛載ISO查看引導(dǎo)文件架構(gòu) mount -o loop Kylin-Desktop-V10-SP1-Release-2107-arm64.iso /mnt ls /mnt/EFI/BOOT/ # 應(yīng)該能看到 BOOTAA64.EFI 而不是 BOOTX64.EFI看到BOOTAA64.EFI就說(shuō)明這是ARM64的引導(dǎo)文件方向?qū)α?。如果看到的是BOOTX64.EFI那這個(gè)鏡像根本引導(dǎo)不了W515別浪費(fèi)時(shí)間。2.3 U盤制作工具的選擇邏輯x86時(shí)代大家習(xí)慣用UltraISO或者Rufus但在aarch64平臺(tái)上這些工具做出來(lái)的U盤經(jīng)常引導(dǎo)失敗。原因是W515的UEFI固件對(duì)U盤分區(qū)表比較挑剔MBR分區(qū)單一FAT32分區(qū)的組合最穩(wěn)。我實(shí)測(cè)下來(lái)用dd命令直接寫ISO到U盤的成功率最高其次是Ventoy。# 確認(rèn)U盤設(shè)備名千萬(wàn)別寫錯(cuò) lsblk # 假設(shè)U盤是 /dev/sdb sudo dd ifKylin-Desktop-V10-SP1-Release-2107-arm64.iso of/dev/sdb bs4M statusprogress sync注意dd命令的of參數(shù)后面一定是整盤設(shè)備如/dev/sdb不是分區(qū)如/dev/sdb1寫錯(cuò)了會(huì)覆蓋你本機(jī)的硬盤數(shù)據(jù)。Ventoy的好處是可以一個(gè)U盤放多個(gè)ISO但W515的BIOS對(duì)Ventoy的兼容性因版本而異有些批次需要把Ventoy的啟動(dòng)模式從Normal改成GRUB2才能識(shí)別。如果你追求一次成功直接用dd。3. BIOS設(shè)置與引導(dǎo)環(huán)節(jié)的關(guān)鍵細(xì)節(jié)3.1 進(jìn)BIOS和必須改的幾個(gè)選項(xiàng)W515開機(jī)按F2或者Del進(jìn)BIOS具體看屏幕提示。進(jìn)去之后有幾個(gè)選項(xiàng)必須調(diào)整否則U盤引導(dǎo)根本出不來(lái)Secure Boot改成Disabled。麒麟V10的引導(dǎo)程序雖然支持安全啟動(dòng)但自制U盤往往沒(méi)有簽名開著Secure Boot會(huì)直接跳過(guò)U盤引導(dǎo)項(xiàng)。Boot Mode確認(rèn)是UEFI模式不要用Legacy。USB Boot確保Enabled。Boot Order把USB設(shè)備調(diào)到第一位或者開機(jī)按F12手動(dòng)選引導(dǎo)設(shè)備。改完之后按F10保存退出。這里有個(gè)坑有些批次的W515在保存BIOS設(shè)置后會(huì)自動(dòng)重啟兩次第一次黑屏?xí)r間比較長(zhǎng)別以為死機(jī)了等它自己走完。3.2 U盤引導(dǎo)卡住或者黑屏怎么辦這是最常見的問(wèn)題。現(xiàn)象是選了U盤引導(dǎo)之后屏幕左上角一個(gè)光標(biāo)閃或者直接黑屏沒(méi)有任何輸出。原因通常有三個(gè)第一個(gè)是U盤制作方式不對(duì)前面說(shuō)了用dd重做。第二個(gè)是BIOS里的顯示輸出設(shè)置問(wèn)題W515如果接了獨(dú)立顯卡或者用了轉(zhuǎn)接頭引導(dǎo)階段的顯示輸出可能走的是板載接口把顯示器換到板載HDMI或者VGA口試試。第三個(gè)是ISO本身的問(wèn)題有些第三方修改版鏡像的引導(dǎo)配置被改過(guò)換官方原版鏡像。還有一個(gè)比較隱蔽的情況U盤是USB 3.0的插在機(jī)箱前面的USB口上引導(dǎo)失敗換到機(jī)箱后面的USB 2.0口就正常了。這個(gè)和UEFI固件的USB控制器初始化順序有關(guān)不是U盤壞了。3.3 引導(dǎo)參數(shù)的手動(dòng)調(diào)整如果引導(dǎo)菜單出來(lái)了但選擇Install之后卡住可以在引導(dǎo)菜單界面按e編輯引導(dǎo)參數(shù)在linux那一行末尾加上nomodeset acpioffnomodeset是禁用內(nèi)核模式設(shè)置解決顯卡驅(qū)動(dòng)導(dǎo)致的引導(dǎo)黑屏acpioff是關(guān)閉ACPI解決某些固件ACPI表不兼容導(dǎo)致的卡死。這兩個(gè)參數(shù)是臨時(shí)生效的裝完系統(tǒng)之后不需要保留。實(shí)測(cè)下來(lái)W515上nomodeset用得比較多因?yàn)轺梓?90集顯的驅(qū)動(dòng)在安裝器階段加載有時(shí)候會(huì)出問(wèn)題。4. 分區(qū)方案設(shè)計(jì)與安裝過(guò)程實(shí)操4.1 分區(qū)方案怎么定W515通常是256GB NVMe加1TB HDD。我的建議是系統(tǒng)裝在NVMe上HDD單獨(dú)掛載做數(shù)據(jù)盤。NVMe上的分區(qū)方案掛載點(diǎn)建議大小文件系統(tǒng)說(shuō)明/boot/efi512MBFAT32EFI引導(dǎo)分區(qū)必須/boot1GBext4內(nèi)核和initramfs/60-80GBext4系統(tǒng)根目錄/home剩余空間ext4用戶數(shù)據(jù)swap內(nèi)存的1-2倍swap休眠需要如果你打算把微信的文件存儲(chǔ)路徑改到數(shù)據(jù)盤這是熱詞里很多人關(guān)心的那HDD可以單獨(dú)分一個(gè)區(qū)掛載到/data然后在微信設(shè)置里把文件管理路徑指到/data/wechat。這樣系統(tǒng)重裝的時(shí)候聊天記錄不會(huì)丟。提示麒麟V10的安裝器自帶分區(qū)工具但它的自動(dòng)分區(qū)邏輯有時(shí)候會(huì)把EFI分區(qū)設(shè)得太小只給100MB后面內(nèi)核更新多了會(huì)爆。手動(dòng)分區(qū)的時(shí)候EFI至少給512MB。4.2 安裝過(guò)程中的選項(xiàng)說(shuō)明安裝器走到分區(qū)那一步選手動(dòng)分區(qū)或者自定義分區(qū)。創(chuàng)建分區(qū)的時(shí)候注意設(shè)備名NVMe硬盤在Linux下是/dev/nvme0n1分區(qū)是/dev/nvme0n1p1這種格式別和SATA的/dev/sda搞混。時(shí)區(qū)選Asia/Shanghai鍵盤布局選Chinese這些沒(méi)什么好說(shuō)的。用戶創(chuàng)建環(huán)節(jié)建議創(chuàng)建一個(gè)普通用戶root密碼單獨(dú)設(shè)置。麒麟V10默認(rèn)不允許root直接登錄圖形界面這是安全策略別去改它。安裝類型如果讓你選最小安裝還是完整安裝桌面版選完整安裝服務(wù)器版選最小安裝然后按需裝組件。完整安裝大概占用15-20GB空間最小安裝5GB左右。4.3 安裝完成后的首次啟動(dòng)安裝完成提示重啟拔掉U盤讓系統(tǒng)從硬盤引導(dǎo)。第一次啟動(dòng)會(huì)走一遍初始化配置設(shè)置用戶名、密碼、網(wǎng)絡(luò)這些。如果重啟之后直接進(jìn)了BIOS或者提示找不到引導(dǎo)設(shè)備說(shuō)明EFI引導(dǎo)項(xiàng)沒(méi)寫進(jìn)去需要手動(dòng)修復(fù)。修復(fù)方法是用U盤再次引導(dǎo)進(jìn)Live環(huán)境然后# 查看EFI分區(qū) lsblk # 掛載EFI分區(qū) mount /dev/nvme0n1p1 /mnt # 查看是否有EFI引導(dǎo)文件 ls /mnt/EFI/ # 如果沒(méi)有kylin目錄手動(dòng)創(chuàng)建引導(dǎo)項(xiàng) efibootmgr -c -d /dev/nvme0n1 -p 1 -L Kylin V10 -l \EFI\kylin\grubaa64.efiefibootmgr這個(gè)命令在Live環(huán)境里可能沒(méi)有需要先apt install efibootmgr或者用grub-install重新安裝引導(dǎo)。5. 裝完系統(tǒng)之后必做的基礎(chǔ)環(huán)境配置5.1 軟件源配置和系統(tǒng)更新麒麟V10默認(rèn)的軟件源指向官方倉(cāng)庫(kù)內(nèi)網(wǎng)環(huán)境下需要換成單位自己的鏡像源。桌面版用的是apt基于Debian服務(wù)器版用的是yum基于RPM。這個(gè)區(qū)別很重要?jiǎng)e搞混了。# 桌面版查看源 cat /etc/apt/sources.list # 服務(wù)器版查看源 cat /etc/yum.repos.d/kylin.repo換源之后先更新緩存# 桌面版 sudo apt update sudo apt upgrade -y # 服務(wù)器版 sudo yum makecache sudo yum update -y注意aarch64的軟件源和x86的不通用換源的時(shí)候一定要確認(rèn)源地址里帶aarch64或者arm64路徑否則會(huì)報(bào)找不到包或者架構(gòu)不匹配。5.2 Python環(huán)境和包管理麒麟V10桌面版自帶Python 3.7或者3.8服務(wù)器版SP3可能自帶3.9。但系統(tǒng)自帶的Python不要?jiǎng)雍芏嘞到y(tǒng)工具依賴它。開發(fā)用的Python用Miniconda或者Anaconda單獨(dú)裝。# 下載aarch64版的Miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh # 安裝完成后初始化 source ~/.bashrc conda create -n dev python3.10 conda activate devpip安裝包的時(shí)候如果遇到編譯錯(cuò)誤大概率是缺少aarch64的開發(fā)庫(kù)。比如裝mysqlclient需要libmysqlclient-dev裝Pillow需要libjpeg-dev這些用apt或者yum提前裝好。5.3 Git安裝與配置sudo apt install git -y # 桌面版 sudo yum install git -y # 服務(wù)器版 git config --global user.name Your Name git config --global user.email youremail.com # 生成SSH密鑰 ssh-keygen -t ed25519 -C youremail.com cat ~/.ssh/id_ed25519.pubaarch64上的Git沒(méi)什么特殊的地方源碼編譯和x86一樣。如果單位用的是內(nèi)網(wǎng)GitLab記得配置http.sslVerify false如果用的是自簽證書。5.4 Docker安裝服務(wù)器版SP3的源里可能自帶Docker但版本比較老。建議用官方腳本裝curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl enable docker sudo systemctl start docker # 把當(dāng)前用戶加入docker組 sudo usermod -aG docker $USERaarch64的Docker鏡像和x86不通用拉鏡像的時(shí)候要確認(rèn)鏡像支持arm64。很多官方鏡像都有多架構(gòu)manifestDocker會(huì)自動(dòng)選擇但一些小眾鏡像只有amd64版本跑起來(lái)會(huì)報(bào)exec format error。5.5 MySQL安裝服務(wù)器版可以直接yum裝sudo yum install mysql-server -y sudo systemctl enable mysqld sudo systemctl start mysqld # 獲取臨時(shí)密碼 grep temporary password /var/log/mysqld.log # 安全初始化 mysql_secure_installation桌面版的話麒麟V10的apt源里MySQL版本可能比較老建議用官方aarch64的deb包或者直接用MariaDB替代。6. 常見問(wèn)題排查與避坑經(jīng)驗(yàn)6.1 WiFi模塊AX211/AX210不識(shí)別這是W515用戶反饋?zhàn)疃嗟膯?wèn)題之一。AX211和AX210是Intel的WiFi 6模塊aarch64平臺(tái)上的驅(qū)動(dòng)支持要看內(nèi)核版本。麒麟V10 SP1的內(nèi)核是4.19對(duì)AX211的支持不完整需要手動(dòng)裝固件。# 查看WiFi設(shè)備是否被識(shí)別 lspci | grep -i network # 查看內(nèi)核日志 dmesg | grep -i iwl如果lspci能看到設(shè)備但dmesg報(bào)firmware not found就需要把iwlwifi-ty-a0-gf-a0-*.ucode這些固件文件放到/lib/firmware/目錄下。固件文件可以從Intel的Linux固件倉(cāng)庫(kù)獲取注意要下載對(duì)應(yīng)內(nèi)核版本的。提示如果實(shí)在搞不定WiFi直接用USB網(wǎng)卡或者有線網(wǎng)口別在這上面耗太久。W515板載有線網(wǎng)卡是Realtek的麒麟V10自帶驅(qū)動(dòng)插上網(wǎng)線就能用。6.2 顯卡驅(qū)動(dòng)和顯示異常麒麟990集顯在麒麟V10上的驅(qū)動(dòng)支持整體還行但有些批次會(huì)出現(xiàn)花屏、分辨率不對(duì)、外接顯示器不識(shí)別的問(wèn)題。先確認(rèn)內(nèi)核模塊加載情況lsmod | grep -i drm # 查看顯示輸出 xrandr如果分辨率選項(xiàng)里沒(méi)有你顯示器的原生分辨率可以手動(dòng)添加modeline。花屏問(wèn)題通常是顯存分配或者刷新率不匹配在/etc/X11/xorg.conf里指定一下驅(qū)動(dòng)參數(shù)。6.3 root密碼重置這是熱詞里高頻出現(xiàn)的問(wèn)題。麒麟V10進(jìn)單用戶模式重置root密碼的流程開機(jī)在GRUB菜單按e編輯引導(dǎo)參數(shù)在linux行末尾加init/bin/bash或者single按CtrlX引導(dǎo)進(jìn)入shell后根分區(qū)默認(rèn)是只讀的先重新掛載mount -o remount,rw / passwd root # 輸入新密碼 # 如果開了SELinux需要更新 touch /.autorelabel exec /sbin/init注意麒麟V10服務(wù)器版默認(rèn)開了SELinux重置密碼后如果不做autorelabel下次啟動(dòng)可能進(jìn)不了系統(tǒng)。6.4 常見問(wèn)題速查表問(wèn)題現(xiàn)象可能原因解決方法U盤引導(dǎo)黑屏顯卡驅(qū)動(dòng)/ACPI加nomodeset acpioff找不到NVMe硬盤BIOS設(shè)置/內(nèi)核驅(qū)動(dòng)檢查BIOS里NVMe是否Enabled裝完重啟進(jìn)BIOSEFI引導(dǎo)項(xiàng)丟失efibootmgr手動(dòng)添加WiFi不識(shí)別固件缺失手動(dòng)放入ucode文件apt/yum報(bào)架構(gòu)錯(cuò)誤源地址不對(duì)換成aarch64源Docker鏡像跑不起來(lái)鏡像架構(gòu)不匹配確認(rèn)鏡像支持arm64微信文件路徑改不了權(quán)限/路徑不存在先創(chuàng)建目錄再改設(shè)置7. 裝完之后的一些個(gè)人體會(huì)這臺(tái)W515我用了大半年麒麟V10桌面版SP1的穩(wěn)定性整體可以日常辦公、寫代碼、跑Docker都沒(méi)問(wèn)題。但有幾個(gè)地方要有心理預(yù)期一是aarch64的軟件生態(tài)確實(shí)不如x86豐富有些閉源軟件只有amd64版本比如某些版本的Navicat、IDEA的部分插件二是內(nèi)核版本偏老新硬件的驅(qū)動(dòng)支持需要自己折騰三是系統(tǒng)更新有時(shí)候會(huì)引入新的兼容性問(wèn)題生產(chǎn)環(huán)境建議鎖定版本不要盲目升級(jí)。如果你打算在這臺(tái)機(jī)器上做開發(fā)我的建議是盡量用開源工具鏈Python、Node.js、Go、Rust這些在aarch64上都有原生支持體驗(yàn)和x86差別不大。數(shù)據(jù)庫(kù)方面MySQL和PostgreSQL都有aarch64版本DBeaver也有aarch64的deb包。IDE的話VS Code有arm64版本PyCharm需要下載aarch64的tar.gz包手動(dòng)解壓。最后分享一個(gè)小技巧裝完系統(tǒng)之后第一時(shí)間做個(gè)全盤鏡像備份用dd或者clonezilla都行。aarch64平臺(tái)重裝一次系統(tǒng)加上環(huán)境配置至少兩三個(gè)小時(shí)有個(gè)備份能省很多事。尤其是驅(qū)動(dòng)和固件折騰好之后備份下來(lái)下次直接恢復(fù)不用再來(lái)一遍。