指南:從安裝到KVM虛擬化與大模型推理)
作為常年折騰服務(wù)器系統(tǒng)的人我最近花了不少時間把openEuler從零到一認(rèn)真過了一遍。這系統(tǒng)在信創(chuàng)和云計算圈子里討論度越來越高但網(wǎng)上系統(tǒng)性的實操文檔其實不算多大多是官方手冊的搬運真正踩過坑才知道哪里疼。這篇筆記把我從下載ISO到裝出帶圖形界面的ARM虛擬機、從配YUM源到源碼編譯升級OpenSSH、再到跑通Qwen3 8B/27B大模型推理的全過程整理出來給同樣想上手openEuler的朋友一份能直接照著做的參考。先交代我的實驗環(huán)境主力機是一臺x86_64工作站另外借了一臺鯤鵬920的ARM服務(wù)器。openEuler對x86和ARM都有良好支持但很多細(xì)節(jié)的坑在ARM上更明顯我會把兩個架構(gòu)下的差異單獨標(biāo)出來。這篇文章適合剛接觸openEuler的運維、正在做國產(chǎn)化替代評估的架構(gòu)師以及想在自己機器上跑大模型推理的AI應(yīng)用開發(fā)者。1. 為什么是openEuler定位與選型邏輯1.1 openEuler到底是什么openEuler是一款開源的操作系統(tǒng)發(fā)行版由開放原子開源基金會孵化華為等廠商是主要貢獻者。很多人喜歡拿它跟CentOS、Ubuntu比其實從技術(shù)路線上看openEuler和CentOS Stream更接近——兩者都基于RPM生態(tài)體系內(nèi)核策略偏向企業(yè)級穩(wěn)定性但openEuler走了完全獨立的社區(qū)演進路線。它的核心競爭力在于對多架構(gòu)尤其ARM、高性能計算和云原生場景做了大量針對性優(yōu)化比如它內(nèi)置的iSulad輕量容器運行時、A-Ops智能運維框架這些都是其他發(fā)行版里要自己折騰半天才能湊齊的東西。我決定深入研究它有三個現(xiàn)實原因第一身邊不少做國產(chǎn)化替代的朋友都在用它服務(wù)器端已經(jīng)能看到實際生產(chǎn)部署第二openEuler的版本節(jié)奏和對新硬件的跟進速度比想象中快24.03 LTS版本已經(jīng)能很好地支持新一代ARM服務(wù)器第三它兼容大量RPM系生態(tài)CentOS上積累的經(jīng)驗?zāi)芷交w移過來學(xué)習(xí)成本比想象中低。1.2 和CentOS、Ubuntu的關(guān)鍵差異維度openEulerCentOS 7/StreamUbuntu Server包管理dnf/yumyum/dnfapt默認(rèn)文件系統(tǒng)ext4/xfsxfsext4內(nèi)核策略企業(yè)級穩(wěn)定 高性能優(yōu)化跟隨上游跟隨上游 HWEARM架構(gòu)原生重點支持支持但非優(yōu)化重點支持較好容器生態(tài)iSulad Docker兼容層Docker為主Docker/containerd中文資料官方Gitee倉庫與社區(qū)中文豐富網(wǎng)絡(luò)資料多但官方英文為主官方文檔英文為主對于中文用戶openEuler最友好的地方其實是社區(qū)和文檔——很多問題在官方Gitee倉庫的issue區(qū)和論壇里能直接搜到中文解答這對排查問題的效率提升是巨大的。另外它的EasySoftware倉庫openEuler便捷安裝軟件平臺聚合了大量軟件包這也是熱搜詞里出現(xiàn)openeuler easysoftware的原因。2. 安裝openEuler從ISO到跑起來2.1 選擇合適的版本與鏡像openEuler目前主要維護兩條長期支持版本線22.03 LTS和24.03 LTS。我的建議是生產(chǎn)環(huán)境選22.03 LTS SP系列成熟穩(wěn)定學(xué)習(xí)實驗直接上24.03 LTS因為24.03對新硬件兼容性更好工具鏈也比較新而且默認(rèn)Python是3.11后面跑AI相關(guān)工具省很多事。下載鏡像時務(wù)必注意架構(gòu)x86_64機器下載x86_64的ISOARM服務(wù)器下載aarch64版本。別下錯了ARM的ISO在x86機器上裝不了反過來也一樣。openEuler官網(wǎng)提供標(biāo)準(zhǔn)ISO、軟件包ISO和極簡ISO三種形式學(xué)習(xí)用標(biāo)準(zhǔn)ISO就夠了里面自帶Anaconda安裝器。2.2 虛擬機安裝的關(guān)鍵步驟如果你打算在VMware或VirtualBox里裝openEuler有幾點和裝Windows完全不同。第一步創(chuàng)建虛擬機時操作系統(tǒng)類型不要選Other Linux 5.x直接選CentOS 7 64位或Red Hat Enterprise Linux 7 64位這類兼容模板這樣VMware Tools的安裝路徑最順。磁盤大小建議至少分配20GB內(nèi)存2GB以上否則安裝界面會非???。第二步從ISO引導(dǎo)后會進入GRUB菜單。openEuler默認(rèn)進入圖形化安裝界面但如果虛擬機顯存配置不夠或遠(yuǎn)程安裝會退回文本模式。文本模式一樣能完成安裝只是分區(qū)和軟件選擇的交互邏輯略有不同。新手建議在VMware里給足顯存并開啟3D加速走圖形界面更直觀。第三步磁盤分區(qū)。openEuler的Anaconda支持自動分區(qū)實驗環(huán)境直接選自動配置分區(qū)即可。但我強烈建議手動建立三個分區(qū)/boot500MB、swap內(nèi)存大小或4GB、/剩余全部。這樣后續(xù)調(diào)整磁盤、排查引導(dǎo)問題時都會省很多事。注意如果要在物理機的NVMe硬盤上裝openEuler盡量用最新24.03版本。老版本內(nèi)核和部分NVMe控制器有兼容性問題具體表現(xiàn)為安裝中途突然識別不到磁盤這個坑在論壇里出現(xiàn)過多次。2.3 ARM架構(gòu)服務(wù)器的安裝差異在鯤鵬等ARM服務(wù)器上安裝openEuler流程和x86基本一致但有三個區(qū)別值得注意引導(dǎo)方式通常強制UEFI安裝完成后不要亂改啟動項順序否則會出現(xiàn)grub丟失BIOS里要確認(rèn)ACPI和硬件虛擬化選項已開啟后續(xù)跑KVM虛擬化要依賴這里ARM版的軟件倉庫包名與x86略有差異比如有些包在x86叫xxx.x86_64ARM叫xxx.aarch64配置YUM源時對應(yīng)即可。我實測發(fā)現(xiàn)ARM服務(wù)器上openEuler安裝速度明顯比x86快尤其是編譯類操作因為鯤鵬920的核心數(shù)通常比較多。但這也帶來一個副作用編譯大項目時內(nèi)存占用非常夸張ARM服務(wù)器如果內(nèi)存低于16GBswap會瘋狂抖動編譯速度反而慢下來。開swap分區(qū)時建議給到內(nèi)存的1.5倍以上或者干脆用zram。3. 裝完系統(tǒng)后必做的三件事3.1 配置YUM源不配源什么都裝不了openEuler裝完系統(tǒng)第一件事就是配置YUM源否則連tree這種基礎(chǔ)工具都裝不上。官方默認(rèn)源在公網(wǎng)環(huán)境下能用但速度不穩(wěn)定尤其是訪問高峰時段。如果你在公司內(nèi)網(wǎng)通常建議直接使用內(nèi)網(wǎng)鏡像源或者用官方鏡像站。我實測下來最穩(wěn)的方案是使用openEuler官方鏡像站對應(yīng)版本的源。具體操作# 備份原始repo文件 mkdir -p /etc/yum.repos.d/backup cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/backup/ # 編輯源配置 vim /etc/yum.repos.d/openEuler.repo以24.03 LTS x86_64為例核心repo文件內(nèi)容如下[openEuler_24.03_LTS] nameopenEuler_24.03_LTS baseurlhttps://mirrors.openEuler.org/openEuler-24.03-LTS/ enabled1 gpgcheck0 [openEuler_24.03_LTS_extras] nameopenEuler_24.03_LTS_extras baseurlhttps://mirrors.openEuler.org/openEuler-24.03-LTS/extras/ enabled1 gpgcheck0把gpgcheck設(shè)成0主要是省去導(dǎo)入公鑰的麻煩生產(chǎn)環(huán)境建議設(shè)1并導(dǎo)入官方GPG Key。配置完成后執(zhí)行dnf clean all dnf makecache第一次makecache會下載大量元數(shù)據(jù)耐心等一會。然后dnf install -y vim tree net-tools測試一下源是否正常。這里有個經(jīng)驗之談如果公司網(wǎng)絡(luò)有防火墻dnf下載超時是很常見的事。排查方法很簡單先用curl -I測試源地址是否連通再用dnf repolist確認(rèn)repo是否被識別。90%的源問題都是這兩個原因還有10%是baseurl路徑寫錯了注意不同版本目錄的拼接規(guī)則。3.2 安裝圖形界面從命令行到桌面openEuler默認(rèn)安裝是純命令行的但很多初學(xué)者還是希望有個圖形界面能更直觀。安裝圖形環(huán)境其實就一條命令dnf groupinstall -y Server with GUI或者更細(xì)粒度地安裝GNOMEdnf install -y gnome-desktop gnome-session gdm裝完后設(shè)置默認(rèn)啟動級別為圖形模式systemctl set-default graphical.target reboot我在實測中發(fā)現(xiàn)openEuler的GNOME版本比CentOS 7新不少24.03帶的GNOME是40版本界面風(fēng)格更現(xiàn)代化自帶的應(yīng)用也夠用。如果你用的是VMware虛擬機裝完圖形界面后建議立即安裝VMware Tools否則分辨率鎖在800x600拖拽文件也不支持體驗會差很多。3.3 VMware Tools的安裝實現(xiàn)自適應(yīng)分辨率與拖拽VMware Tools是熱搜詞里被問到很多的一個點。在openEuler上安裝VMware Tools關(guān)鍵是先裝好編譯依賴dnf install -y gcc make kernel-devel kernel-headers perl然后在VMware菜單里選擇安裝VMware Tools掛載光盤后執(zhí)行mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdrom tar zxf /mnt/cdrom/VMwareTools-*.tar.gz -C /tmp /tmp/vmware-tools-distrib/vmware-install.pl安裝腳本會一路詢問全部回車用默認(rèn)值即可。裝完后vmware-toolbox-cmd可用來查看分辨率、執(zhí)行窗口縮放等操作。注意如果虛擬機內(nèi)核升級過VMware Tools的內(nèi)核模塊可能失效表現(xiàn)為vmtoolsd進程報錯、分辨率突然變回小窗口。這時需要重新運行vmware-install.pl讓它重新編譯內(nèi)核模塊。這個問題在使用VirtualBox的用戶那邊同樣存在思路是一致的。4. 進階實戰(zhàn)一源碼編譯升級OpenSSH4.1 為什么要升級OpenSSH很多生產(chǎn)環(huán)境的openEuler初始自帶的OpenSSH版本較舊而安全掃描、等保合規(guī)審計經(jīng)常要求SSH版本升級到指定版本以上。按RPM包方式升級可能遇到依賴沖突源碼編譯是可控性最高的方案。不過我現(xiàn)在要說清楚源碼升級SSH屬于高風(fēng)險操作稍有不慎就會在遠(yuǎn)程環(huán)境里把自己鎖在外面建議提前做好帶外管理準(zhǔn)備。4.2 源碼編譯的完整步驟先查看當(dāng)前版本ssh -V然后按以下流程操作# 安裝編譯依賴 dnf install -y gcc make zlib-devel openssl-devel pam-devel krb5-devel # 下載源碼包 cd /opt wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz tar zxf openssh-9.6p1.tar.gz cd openssh-9.6p1 # 預(yù)編譯配置 ./configure --prefix/usr --sysconfdir/etc/ssh --with-ssl-dir/usr/lib64 --with-pam --with-zlib # 編譯安裝 make -j$(nproc) make install這里有幾個細(xì)節(jié)必須注意configure前務(wù)必確認(rèn)openssl-devel裝好了而且版本匹配OpenSSH 9.6需要OpenSSL 1.1.1以上--prefix/usr會讓二進制覆蓋到系統(tǒng)路徑避免出現(xiàn)兩個ssh版本并存的混亂狀態(tài)編譯前務(wù)必備份原有ssh配置cp -r /etc/ssh /etc/ssh.bak升級后要檢查/etc/ssh/sshd_config里的PermitRootLogin是否保留了你原本的配置源碼編譯默認(rèn)配置可能重置這個值。重啟服務(wù)systemctl restart sshd systemctl status sshd如果SSH服務(wù)起不來多半是配置文件權(quán)限問題。源碼編譯安裝后/usr/bin/sshd的權(quán)限可能不對需要chmod 0755 /usr/bin/sshd chmod 0600 /etc/ssh/ssh_host_*_key這個坑我踩過一次排查了很久才發(fā)現(xiàn)是ssh_host_ed25519_key權(quán)限變成了0644sshd直接拒絕啟動。另外提醒一句升級完成后新開的終端別急著關(guān)先在另一個窗口測試ssh localhost能通再關(guān)閉舊會話這是保命的操作習(xí)慣。4.3 升級失敗后的回滾方案無論如何升級前請備份# 備份原始o(jì)penssh rpm列表 rpm -qa | grep openssh /root/openssh-rpm-backup.txt # 如果新版本不工作用dnf重新安裝原版 dnf reinstall -y openssh-server openssh-clients源碼編譯最大的風(fēng)險在于卸載不干凈——make install覆蓋了系統(tǒng)文件但dnf reinstall時RPM并不知道這些文件被改了可能報沖突。解決辦法是先make uninstall如果有uninstall目標(biāo)或者手動刪除新版本文件后再reinstall。這個操作強烈建議在維護窗口執(zhí)行畢竟SSH斷了就真的斷了。5. 進階實戰(zhàn)二libvirt-daemon-kvm虛擬化5.1 在openEuler上搭建KVM虛擬化環(huán)境熱搜詞里ARM架構(gòu)openEuler服務(wù)器使用libvirt-daemon-kvm虛擬化是個非常典型的企業(yè)場景——在鯤鵬服務(wù)器上用openEuler做宿主機跑KVM虛擬機承載各種業(yè)務(wù)。這個組合在企業(yè)里已經(jīng)很常見了。安裝核心組件dnf install -y qemu-kvm libvirt-daemon libvirt-daemon-driver-kvm virt-install systemctl enable --now libvirtd驗證KVM是否可用ls -l /dev/kvm virsh version/dev/kvm存在說明內(nèi)核KVM模塊已加載。ARM架構(gòu)上這里有個常見問題如果BIOS沒開啟虛擬化擴展/dev/kvm不會出現(xiàn)需要進BIOS打開相關(guān)選項。鯤鵬服務(wù)器上這個選項通常在Advanced - Virtualization下。5.2 創(chuàng)建第一臺虛擬機virt-install是創(chuàng)建虛擬機最方便的工具。以安裝一個openEuler ARM虛擬機為例virt-install \ --name openEuler-vm1 \ --memory 4096 \ --vcpus 4 \ --disk path/data/kvm/openEuler-vm1.qcow2,size50,formatqcow2 \ --os-variant openeuler \ --network networkdefault \ --cdrom /data/iso/openEuler-24.03-aarch64.iso \ --graphics vnc,listen0.0.0.0幾個參數(shù)的經(jīng)驗值--vcpus建議不要超過宿主機物理核心數(shù)ARM服務(wù)器通常核多分配4-8核做實驗比較合適--disk的size是虛擬大小qcow2格式按需占用物理空間不用擔(dān)心一開始就占50GB--os-variant先執(zhí)行osinfo-query os | grep openEuler確認(rèn)有對應(yīng)選項沒有就選linux2023之類兼容值。如果一切順利通過VNC客戶端連上宿主機的IP加端口號即可看到安裝界面。注意VNC監(jiān)聽默認(rèn)只允許本機連接要遠(yuǎn)程訪問必須設(shè)置listen0.0.0.0并配置防火墻放行端口默認(rèn)從5900開始挨個遞增。5.3 宿主機網(wǎng)絡(luò)橋接配置默認(rèn)的NAT網(wǎng)絡(luò)default讓虛擬機通過宿主機上網(wǎng)但外部無法直接訪問VM。學(xué)習(xí)階段無所謂生產(chǎn)環(huán)境需要把虛擬機網(wǎng)絡(luò)橋接到物理網(wǎng)卡# 創(chuàng)建橋接接口 nmcli con add con-name br0 ifname br0 type bridge nmcli con mod br0 ipv4.addresses 192.168.1.10/24 nmcli con mod br0 ipv4.method manual nmcli con up br0然后把物理網(wǎng)卡比如ens3橋接到br0上。ARM服務(wù)器上網(wǎng)絡(luò)接口命名通常從ens0或enp189s0f0開始先ip addr看一下實際名字再操作。橋接配置錯是最容易導(dǎo)致宿主機斷網(wǎng)的建議在IPMI或帶外管理可用的情況下操作否則一旦斷網(wǎng)可能要去機房救。6. 進階實戰(zhàn)三部署Qwen3 8B/27B大模型6.1 openEuler作為AI推理平臺的可行性openEuler不是典型的AI發(fā)行版但它的內(nèi)核和CUDA兼容性做得不錯在x86_64加上NVIDIA GPU的環(huán)境里配合Ollama或vLLM可以跑當(dāng)前主流的大模型。ARM架構(gòu)這邊就別指望本地GPU大模型了目前openEuler在ARM服務(wù)器上對GPU和CUDA生態(tài)的支持還比較薄弱純CPU推理27B模型速度非常慢實際意義不大。所以這部分主要針對x86_64加NVIDIA GPU的機器。6.2 基于Ollama的一鍵部署如果只想快速跑通Qwen3 8BOllama是最省事的方式# 安裝Ollama curl -fsSL https://ollama.com/install.sh | sh # 啟動服務(wù) systemctl start ollama # 拉取并運行模型 ollama run qwen3:8b第一次運行會自動下載模型權(quán)重8B大概5GB網(wǎng)速不夠的話耐心等一下。Ollama會自動檢測GPU并用CUDA加速實測在RTX 4090上8B模型生成速度快得像翻頁。27B版本ollama run qwen3:27b27B量化版大約15GB權(quán)重如果GPU顯存只有16GB會有一部分層跑到CPU上速度明顯下降但依然可用。想完全GPU運行建議至少40GB顯存也就是A100或雙卡4090。如果只有單卡24GB顯存我實測會有一部分層offload到CPU生成速度大致在每秒10-20 token左右日常對話還能接受批量跑任務(wù)就有點煎熬了。6.3 基于vLLM的高并發(fā)部署如果是給團隊做API服務(wù)Ollama不是最優(yōu)解vLLM的吞吐量更高支持高并發(fā)推理pip install vllm python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-8B \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --port 8000注意在openEuler上用pip裝vLLM前最好用conda或venv隔離環(huán)境因為vLLM依賴的CUDA工具鏈相對較新和系統(tǒng)Python包可能會打架。環(huán)境變量CUDA_VISIBLE_DEVICES可以用來控制多卡調(diào)度。提示openEuler的Python默認(rèn)版本在24.03 LTS是3.11vLLM要求Python大于等于3.8沒問題。但pip安裝的vLLM自帶wheel對GCC版本敏感如果編譯過程報錯先裝gcc-toolset-13并激活對應(yīng)環(huán)境再重試。7. 學(xué)習(xí)過程中的高頻坑位與最終心得7.1 高頻問題速查表問題現(xiàn)象原因解法dnf makecache超時網(wǎng)絡(luò)訪問源不通換鏡像站或檢查防火墻安裝界面不顯示顯存不足調(diào)高虛擬機顯存或改用文本模式/dev/kvm不存在BIOS未開虛擬化進BIOS開VT-x/AMD-Vsshd啟動失敗配置或密鑰權(quán)限錯誤chmod 0600密鑰文件檢查sshd_configVMware Tools進程異常內(nèi)核升級后模塊失效重跑vmware-install.plVNC連不上防火墻未放行firewall-cmd --add-port5900/tcp大模型推理OOM顯存不足降低gpu-memory-utilization或換小模型7.2 我對openEuler的整體評價經(jīng)過這段時間的系統(tǒng)學(xué)習(xí)我的直觀感受是openEuler確實是服務(wù)器操作系統(tǒng)里工程完成度非常高的一個它不是Linux發(fā)行版的簡單換皮而是從內(nèi)核到用戶態(tài)都做了不少落地的企業(yè)級優(yōu)化。比如A-Ops智能運維能自動分析故障日志iSulad容器運行時比Docker更輕這些特性在企業(yè)批量部署時價值會放大。但從學(xué)習(xí)角度看openEuler最大的門檻依然是生態(tài)很多第三方軟件的官方文檔只寫了Ubuntu或CentOS的命令你需要在openEuler上多一步轉(zhuǎn)換工作比如把apt換成dnf把某些依賴包的名稱做映射。好在openEuler兼容RPM系大部分CentOS的軟件源地址和包名可以復(fù)用走完一遍下來反而能加深對Linux底層機制的理解。我個人建議的學(xué)習(xí)路徑是先裝系統(tǒng)練基礎(chǔ)操作再配YUM和圖形界面掃清常用功能障礙然后通過編譯OpenSSH理解源碼包和RPM的關(guān)系之后用KVM虛擬化建立運維視角最后才是大模型這種應(yīng)用層嘗試。這樣從底層到上層每個環(huán)節(jié)都親手碰過后面不管轉(zhuǎn)運維還是轉(zhuǎn)AI工程心里都有底。最后分享一個我踩過的坑在openEuler上不要輕易用dnf remove卸載內(nèi)核相關(guān)包——它的依賴關(guān)系在某些SP版本里校驗不嚴(yán)可能把關(guān)鍵驅(qū)動一起卸掉導(dǎo)致重啟后網(wǎng)卡消失。真要清理內(nèi)核用dnf remove --noautoremove指定包名并確保有備用手段可以救急。Linux這條路上備份永遠(yuǎn)比技巧重要。