幾個月之前,龍芯中科剛放出可用的二進程翻譯模塊時,我寫了一篇《在龍芯3A5000上運行Windows程序》。很多朋友說那篇文章中的操作太複雜。我寫的時候,沒有覺得操作難度大,可現在回頭去看,也覺得過于繁瑣。于是重寫一篇,使用更簡單的方法達到同樣的目的。下面的視頻與本文配套,可一起食用:
實際步驟僅三步:
1. 安裝Loongnix或UOS,并更新系統;
2. 安裝 Wine 和 Q4Wine;
3. 雙擊運行 exe。
第1 步可以忽略,第3步可以忽略——僅餘一個步驟。但為了顯得文章内容豐富,下面還是詳細地說一說。
龍芯二進制翻譯技術簡介:龍芯的CPU不是x86架構(指令集),當前最新的3A5000、3B5000、3C5000……系列CPU産品都是使用的龍芯中科自主設計的LoongArch架構(指令集)。不同架構的CPU不能相互兼容二進制程序,比如在ARM的CPU上就不能直接安裝運行x86版的Windows,在使用Intel/AMD的CPU的電腦上也不能安裝ARM版本的Android。有的讀者會問:“鳳凰OS、技德OS也是Android,不就可以在電腦上安裝嗎?”那是因為它們是x86版本的Android,就可以安裝在x86架構的電腦上,但如果想要在ARM手機/平闆上運行,那它們就得提供ARM的版本。
操作系統區分CPU架構(指令集),應用程序不但區分CPU架構,還要區分操作系統,分版本發布。我們知道絕大多數應用軟件都隻有x86/Windows的版本,也有些軟件隻有Android或IOS版,或者同時發布多種架構多個平台的版本。現在越來越多的國産軟件開始發布支持國産CPU和Linux系統的版本,國産硬件和軟件助推“信息技術應用創新産業”發展。
x86架構的CPU高端型号已經有多次對我國禁售的事件, Windows、IOS、Android也都是來自美國的操作系統,随時都有被中斷供應和服務的風險。現在與技術研究和生産力相關的硬件和軟件被“卡脖子”的問題越來越不能忽視,因此建立獨立的硬件和軟件生态迫在眉睫,隻有自力更生才能保障國家各個領域和行業的安全。自力更生不是拒絕國際合作,而是要實現“以我為主”的國際合作及技術交流。海納百川、開放包容、兼容并蓄、博采衆長、實現和諧發展、和平共處。
龍芯LoongArch架構發布還不到一年,軟件生态建設以國内軟件企業為主,不到一年的時間,在桌面、服務器上的應用深度和廣度已經遠超誕生了十幾年的RISC-V,與ARM的桌面、服務器生态水平相當。然而與x86/Windows相比仍然遠遠不如,特别是黨政辦公和一些生産環境的軟件非常依賴Windows,也不能輕易轉移到龍芯/Linux平台,如果不能脫離x86/Windows環境,又如何用龍芯CPU保障信息和生産安全呢?
龍芯的解決方案就是“二進制翻譯”,通過二進制翻譯在LoongArch架構的Linux上運行x86架構的Linux/Window程序。龍芯的“二進制翻譯”方案是以專門設計的CPU硬件指令來加速二進制翻譯的過程,是硬件與軟件有機結合的産物,龍芯中科把它命名為LAT(Loongson Architecture Translator),中文名為“龍芯體系結構翻譯器”。翻譯x86應用的叫“LATX”,翻譯ARM應用的叫“LATA”,目前還隻有LATX,可以運行x86架構的應用程序。
純軟件的二進制翻譯技術早已存在,但都存在翻譯運行時效率極低的問題。有一些軟件使用了一些取巧的方法,比如在ARM架構的Linux上運行x86的程序時,x86程序調用的系統API也是x86的,但翻譯軟件不翻譯API接口内部的二進制代碼,而直接轉向為對本機系統API的調用,就能省去大量的翻譯任務。如果應用程序的大多數功能和計算是通過系統API實現,就能達到較高的運行效率,因為系統API不用翻譯。但是當遇到對系統API調用極少的代碼時,翻譯運行的效率就會低于10%,這種方式不能從根本上解決二進制翻譯效率低下的問題。
上方的截圖中,左側的終端窗口中是在3A5000/Loongnix上測試p7zip的情況,僅進行了單線程測試。
得分3121的是LoongArch64架構原生的p7zip(16.02)Linux版,得分1877的是使用LATX翻譯運行的x86_64架構的p7zip(16.02)Linux版,翻譯運行效率為60%。并不是任何軟件都是60%的翻譯運行效率,這與LATX對x86指令支持程度有關,比如AES加密就很慢,LATX還沒有對相關指令實現優化支持,程序以i386基本指令運行。也有一些測試超過60%的效率,這就是優化得較好的情況。
右下方是Unigine遊戲引擎的Benchmark程序,Unigine遊戲引擎有Linux的版本,這裡運行的就是x86_64架構的Linux版本。不過由于LATX尚不完善,Benchmark的3D動畫還不能正常顯示,但能說明LATX不隻支持命令行程序,也支持圖形化界面的軟件。我還嘗試了Mathematica這款著名的數學工具,運行時提示Qt初始化錯誤,應該是由于龍芯LATX提供的x86 Linux運行庫中暫缺Qt庫的原因。
下面的截圖是在飛騰D2000/UOS上測試測試p7zip的情況,也僅進行了單線程測試。因UOS軟件源中未提供BOX64,故翻譯運行的p7zip是32位x86版本,測試成績可能會比64位版本略低一些。
得分2381的是ARM64架構原生的p7zip(16.02)Linux版,得分657的是使用BOX86翻譯運行的x86架構的p7zip(16.02 32bit)Linux版,翻譯運行效率為28%。
龍芯當前的LATX還處于alpha測試版狀态,無論是應用程序本身的二進制代碼,還是對系統API的調用,它都全部翻譯執行,非常粗暴。我非常期待龍芯的LATX結合軟件優化方案之後的狀态,兼容并蓄、博采衆長,之後翻譯運行時的平均效率必然會更高。
注:幾天前龍芯更新的LATX 1.1.3-alpha版仍然是在粗暴地完全翻譯x86應用程序,以及應用程序使用的所有庫文件及接口。因為單純的硬件加速二進制翻譯還沒有達到最佳狀态,所以可能就沒有急于加上對系統API調用轉向、以及靜态翻譯等各種純軟件翻譯方案的優化技巧,來達到更高的翻譯運行效率。
在龍芯3A5000上使用LATX:目前在龍芯自己的Linux發行版Loongnix中和統信的UOS專業版(LoongArch)中已經内置了LATX,可以直接運行x86架構的Linux軟件。銀河麒麟我未測試,不知道是否内置,也不确定是否可以安裝LATX的軟件包。如果要運行Windows軟件,那麼還需要安裝Windows API兼容層軟件wine。wine是為Windows程序提供API接口支持,本身不具有翻譯CPU二進制指令的能力。在非x86架構的CPU上運行wine就需要前置二進制翻譯工具,例如在ARM Linux上常用的qemu、BOX86/64、exagear等,在龍芯LoongArch架構上則主要使用龍芯自己開發的LATX。
在龍芯3A5000的電腦上使用LATX,首先需要安裝Loongnix或UOS。
Loongnix安裝鏡像在“龍芯開源社區”網站下載,建議使用下圖中紅線勾出的兩個版本之一。兩個版本隻是默認的桌面環境不同,一個cartoon一個mate,我使用的是cartoon版本。安裝過程可以參考上面的視頻,本文不再贅述。
UOS專業版的安裝鏡像在“統信UOS生态社區”官網下載。打開首頁後點擊頂部的“資源中心”,再選擇“桌面專業版”,下載“統信UOS桌面專業版loongarch64”。需要注意這些鏡像下載鍊接不能用迅雷打開,請使用浏覽器自身的下載功能。UOS的安裝教材非常多,此處也不再詳述。
安裝Loongnix或UOS專業版之後,首先需要把系統更新到最新狀态。Loongnix和UOS中都有圖形界面的更新程序,也可以使用終端輸入命令來更新系統。Loongnix的“系統更新”工具是在開始菜單中,UOS的系統更新是在“控制中心”中。
命令行更新系統的操作在兩個系統上相同,隻是在UOS上需要先打開“開發者模式”。因為UOS專業版主要用于各種辦公環境,穩定易用優先,所以默認關閉了root權限,需要注冊了“開發者”帳号才能打開root權限,以避免非專業用戶因各種誤操作導緻系統或各種軟件環境被破壞。
命令行更新系統也很簡單,在桌面上點擊鼠标右鍵,在彈出的菜單中選擇“在終端中打開”,在打開的終端窗口中輸入如下命令:
sudo apt update && sudo apt upgrade -y
如果隻是想要運行x86/Linux程序,那麼在系統更新完成之後,隻需要安裝LAT。要想運行Windows程序,就要再安裝Wine。Wine也是一個x86架構的Linux程序,在系統中用了LAT之後就可以直接安裝使用。為了使用更方便,還需要安裝一個管理wine的圖形化界面工具Q4Wine。在終端窗口輸入如下命令就可以完成安裝:
sudo apt install lat wine5 q4wine
本文開始處的視頻中,在Loongnix系統中安裝的wine是wine 6.0的版本,但UOS(LoongArch)版中目前隻有wine5以及deepin-wine的5.0和6.0。如果UOS用戶沒有打開“開發者模式”,那麼可以通過應用商店安裝Q4Wine,并使用Deepin-wine。不過Q4Wine與deepin-wine可能存在一些兼容性問題,不推薦使用。
Q4Wine首次運行時,會顯示設置向導界面,主要需要配置Wine各個主程序所在的路徑:
上圖是默認的路徑,但一般wine的安裝路徑不是這個,而隻是安裝時在/usr/bin下面自動創建了符号鍊接文件來指向真實的文件路徑。因此也可以把路徑設置到真正的安裝路徑,一般是在/opt文件夾下面。例如:
/opt/wine5
/opt/wine6
/opt/deepin-wine5-stable
/opt/deepin-wine6-stable
在UOS下,還需要配置終端程序路徑,把終端程序設置為/usr/bin/deepin-terminal,如下圖所示:
其它的設置項目都可以使用默認值,直接點擊“下一步”直至完成。Q4Wine配置完成之後,就會出現下面的界面:
Q4Wine已經預設了默認的windows(wine)環境,前綴(名稱)為Default,但還沒有在硬盤上完成初始化。此時雙擊Q4Wine界面中的程序圖标,或者在Linux的文件管理器中雙擊exe文件,就會自動完成windows(wine)環境的初始化。由于Q4Wine與deepin-wine可能存在一些兼容性問題,當使用deepin-wine時,自動初始化的windows(wine)可能是一個空文件夾。需要通過應用商店安裝一個使用wine的軟件,并成功運行。然後再在Q4Wine中創建一個“新前綴”,把路徑指向到剛才軟件運行後自動創建的windows(wine)環境文件夾,這樣的文件夾是在/home/用戶/.deepin-wine/下面。
在wine提供的windows環境中,提供了一個功能精簡的“資源管理器”,可以在Q4Wine的界面中雙擊打開。從資源管理器中可以看到,C盤就是windows環境,默認映射到/home/用戶/.wine文件夾。Z盤是映射到Linux的根目錄,如果插入了U盤,就會依次自動映射為D盤、E盤。在資源管理器中,可以進行浏覽、複制、粘貼等文件操作,也可以雙擊打開文件。雙擊exe文件時就會打開運行,比較便捷。
更加便捷的方式是在Linux的文件管理器中直接雙擊打開exe,Q4Wine會自動彈出一個運行對話框:
一般不需要修改默認設置,直接點擊“是”,然後程序就會運行。可以運行綠色軟件,也可以運行安裝程序。有一些隻能全屏的遊戲,可以通過設置“虛拟桌面”使它窗口化運行。有一些Windows程序不允許同時運行多個,那麼可以在Q4Wine中創建多個“前綴”得到多個相互隔離的windows環境,在每個“前綴”中運行一個,實現多開。也有些程序使用Wine直接就能實現多開,不需要創建多個“前綴”。下面是網友在龍芯3A5000上玩網遊時的視頻截圖。
不隻遊戲,一些股票軟件在龍芯3A5000上也可以正常安裝運行,在LoongArch軟件生态建設初期可以作為原生生态的有益補充。
因為wine默認不包含Windows下的字體文件,而是使用的Linux的字體,某些程序會因為找不到字體而不能正确顯示文字。解決這個問題的方式很簡單,就是把Windows下的字體文件複制到Linux上。一般系統安裝在C盤,那麼Windows字體文件夾不是C:\Windows\Fonts。
字體可以複制到兩個地方:
1、複制到Windows(Wine)環境的Window\Fonts,默認路徑是:
/home/用戶/.wine/drive_c/windows/fonts
字體文件複制完成之後立即生效。
如果有多個Windows(Wine)環境,那麼每環境中的fonts文件夾中都需要複制字體文件。很麻煩而且浪費空間,那麼可以試試第二個方法。
2、複制到Linux系統的字體文件夾中,不但wine可以用,Linux的程序也可以用。默認路徑一般是:
/usr/share/fonts
Linux的字體文件夾下還有子文件夾,這一點與Windows不一樣。因此我們也可以創建一個子文件夾來存放來自Windows的字體文件。比如可以創建一個win-fonts文件夾,再把字體文件複制進去。現在還不算完,還需要進入文件夾運行幾個命令:
cd /usr/share/fonts/win-fonts
sudo mkfontscale
sudo mkfontdir
sudo fc-cache
如此便字體生效,一勞永逸。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!