環境
操作系統:openEuler 開放歐拉 23.09
適用架構:ARM64(鯤鵬 920、飛騰 FT-2000/4、D2000)
簡介
在 ARM64 平臺的優麒麟中,ExaGear 安裝完成後,會提供一個 AMD64 平臺的 Ubuntu 運行環境。不過由於這個運行環境的系統鏡像爲最小化安裝,因此需要補充一些設置。
安裝 ExaGear
請參考《ExaGear 二進制動態翻譯》https://my.oschina.net/chipo/blog/5176302
啓動 ExaGear
sudo exagear
更新倉庫
yum update
如果遇到錯誤:Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
請執行如下操作。
退出 ExaGear
exit
編輯 Apt 配置文件。
sudo nano /opt/exagear/images/ubuntu-2004-x86_64/etc/apt/apt.conf.d/70debconf
修改或加入以下兩行。
APT::Cache-Limit "1000100100";
APT::Cache-Start "100100100";
重新啓動 ExaGear。
sudo exagear
清空 Apt 緩存
apt clean
更新 Apt 緩存
apt update
安裝 Nano
apt install nano
修改軟件倉庫的地址
Ubuntu 官方倉庫的下載速度相對較慢,建議修改至鏡像站。
方法 1
sed -i 's?//archive.ubuntu.com/?//mirrors.tuna.tsinghua.edu.cn/?g' /etc/apt/sources.list
sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
方法 2
nano /etc/apt/sources.list
替換命令 ctrl + \,將 archive.ubuntu 替換爲 mirrors.huaweicloud,然後將 security.ubuntu 也替換。
保存命令 ctrl + o,退出命令 ctrl + x。
系統升級
如果搭建遊戲運行環境,建議把 CentOS 從 7 升級到 8 然後安裝 Lutris 。
準備工作¶
-
首先需要安裝EPEL倉庫:
yum install epel-release -y
-
安裝yum-utils工具:
yum install yum-utils -y
-
解析RPM包:
yum install rpmconf -y rpmconf -a
注意,這裏 rpmconf -a
有一些交互問答,採用默認選項。
-
清理所有不需要的軟件包:
package-cleanup --leaves package-cleanup --orphans
安裝dnf¶
-
需要首先安裝CentOS 8的默認包管理器 dnf
yum install dnf -y
-
然後移除yum包管理器:
dnf -y remove yum yum-metadata-parser rm -Rf /etc/yum
升級CentOS 7到CentOS 8¶
-
現在執行CentOS 7升級到CentOS 8前需要線升級從:
dnf upgrade -y
-
然後安裝CentOS 8的release軟件包:
#dnf -y install http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-repos-8.2-2.2004.0.1.el8.x86_64.rpm \ #http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.2-2.2004.0.1.el8.x86_64.rpm \ #http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.2-2.2004.0.1.el8.noarch.rpm dnf -y install http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-linux-repos-8-2.el8.noarch.rpm \ http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-linux-release-8.3-1.2011.el8.noarch.rpm \ http://mirrors.163.com/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-2.el8.noarch.rpm
-
升級EPEL倉庫:
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
-
在升級了EPEL倉庫後,移除所有臨時文件:
dnf clean all
-
刪除CentOS 7的舊內核core:
rpm -e `rpm -q kernel`
-
移除衝突的軟件包:
rpm -e --nodeps sysvinit-tools
-
然後執行CentOS 8升級:
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
報錯:
Running transaction check Error: transaction check vs depsolve: (gcc >= 8 with gcc < 9) is needed by annobin-8.78-1.el8.x86_64 rpmlib(RichDependencies) <= 4.12.0-1 is needed by annobin-8.78-1.el8.x86_64 (annobin if gcc) is needed by redhat-rpm-config-120-1.el8.noarch rpmlib(RichDependencies) <= 4.12.0-1 is needed by redhat-rpm-config-120-1.el8.noarch To diagnose the problem, try running: 'rpm -Va --nofiles --nodigest'. You probably have corrupted RPMDB, running 'rpm --rebuilddb' might fix the issue. The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executing 'dnf clean packages'.
不過,此時 cat /etc/redhat-release
已經顯示是 CentOS Linux release 8.1.1911 (Core)
所以我們需要解決這個軟件依賴的衝突問題:
-
升級gcc(升級以後gcc版本是8.3.1):
dnf upgrade gcc -y
但是升級以後報錯依舊,看起來是因爲依賴 rpm-4.14.2-26.el8_1.x86_64
才能完成。
參考 dnf upgrade and dnf update fails 這是因爲升級CentOS 7到8時候broken了7系統導致的。
檢查發現當前系統使用的 rpm 版本還是el7使用的 rpm-4.11.3-43.el7.x86_64
,似乎是這個版本沒有滿足要求,所以先升級rpm:
dnf upgrade --best --allowerasing rpm
但是上述會遇到很多文件衝突:
file /usr/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc from install of platform-python-setuptools-39.2.0-5.el8.noarch conflicts with file from package python3-setuptools-39.2.0-10.el7.noarch file /usr/lib/python3.6/site-packages/rpmconf/__pycache__/__init__.cpython-36.opt-1.pyc from install of python3-rpmconf-1.0.21-1.el8.noarch conflicts with file from package python36-rpmconf-1.0.22-1.el7.noarch
這是因爲,CentOS 7 的軟件包 python36-rpmconf
到 CentOS 8改成了 python3-rpmconf
,所以由於包名字不同,所以沒有對應進行升級,導致了文件衝突。注意類似和rpm相關到依賴不能直接卸載否則會導致rpm無法正常工作,所以改成刪除 python36-rpmconf
包信息但是不實際刪除文件:
rpm -e --justdb python36-rpmconf-1.0.22-1.el7.noarch rpmconf-1.0.22-1.el7.noarch rpm -e --justdb --nodeps python3-setuptools-39.2.0-10.el7.noarch #rpm -e --justdb --nodeps python3-pip-9.0.3-7.el7_7.noarch rpm -e --justdb --nodeps python3-pip-9.0.3-8.el7.noarch #rpm -e --justdb --nodeps iptables-1.4.21-34.el7.x86_64 rpm -e --justdb --nodeps iptables-1.4.21-35.el7.x86_64 rpm -e --justdb --nodeps vim-minimal
備註
CentOS 7到CentOS 8中,有包名字修改的有:
python36-rpmconf => python3-rpmconf python3-setuptools => platform-python-setuptools vim-minimal (CentOS 7) 和 vim-common (CentOS 8)衝突
備註
rpm -e --justdb --nodeps vim-minimal
會遇到卡死問題,實際上此時是rpm的數據庫損壞了,需要強制殺掉 kill -9
這個卡住的rpm命令,然後執行一次 rpm --rebuilddb
修復,再繼續進行安裝。
-
然後重新執行一次升級rpm:
dnf upgrade --best --allowerasing rpm
備註
在 How to Upgrade Centos 7 to 8 的comments中,stafwag提出解決方法是刪除 gcc 和所有 devel 軟件包:
rpm -qa | grep -i devel | xargs -n 1 dnf remove -y
但是我驗證這個方法沒有成功,所以還是採用我自己摸索出來的方法。
-
然後再次執行CentOS 8升級就可以成功:
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
-
安裝CentOS 8的新Kernel Core:
dnf -y reinstall kernel-core
備註
這裏比較奇怪,雖然 /boot
目錄下沒有 vmlinuz-4.18.0-147.8.1.el8_1.x86_64
文件,顯示內核並沒有安裝成功。但是系統提示我 kernel-core
已經安裝,所以我採用的是 reinstall
指令。
-
最後安裝CentOS 8最小化包:
dnf -y groupupdate "Core" "Minimal Install"
備註
這裏會提示需要安裝的 rsyslog 和 syslog-ng 衝突(原因是原先CentOS 7安裝的是syslog-ng,雖然升級到了CentOS 8版本,但是和CentOS 8的rsyslog衝突),所以我先卸載syslog-ng,然後再重新執行上述CentOS 8最小化包安裝:
rpm -e syslog-ng-3.23.1-1.el8.x86_64
-
現在可以檢查CentOS版本信息:
cat /etc/redhat-release
備註
注意,上述步驟中每一步都需要仔細檢查是否正確執行,千萬不能跳過失敗都步驟,否則會導致升級錯亂失敗。
到目前爲止,已經完成了CentOS 7升級到CentOS 8的過程。
添加優麒麟的軟件倉庫(可以略過)
自動添加。
從以下地址下載 KeyRing 的 deb 包後安裝即可。
http://archive.ubuntukylin.com/ukui/pool/main/u/ukui-keyring/
http://archive.ubuntukylin.com/ukui/pool/main/k/kylin-software-keyring/
更新倉庫
apt update
更新系統
apt full-upgrade
將當前用戶添加到 sudoer
如果 sudo 不生效,請執行以下步驟。
獲取 /etc/sudoers 文件的寫權限
# chmod u+w /etc/sudoers
編輯配置文件
# nano /etc/sudoers
在 % sudo ALL = (ALL:ALL) ALL 這一行下邊加入自己的用戶名,比如 user。
user ALL=(ALL:ALL) ALL
保存退出。
修改 /etc/sudoers 文件屬性爲只讀。這時就可以使用 sudo 命令了。
sudo chmod -w /etc/sudoers
添加中文支持
安裝 locales 用來設置語言支持。
apt install locales
運行 LOCALE 命令檢查當前的 LOCALE 環境
locale
然後進行配置,命令爲:
dpkg-reconfigure locales
這裏的配置按鍵
- 空格鍵是 “選擇”
- TAB 鍵是 “切換”
- Enter 鍵(回車鍵)是 “確認”
注意
這裏,粗心的人如果沒看清楚界面上的使用說明,就會被小坑一把,如果直接按了回車鍵,就跳到了默認語言設置頁面,導致配置中文失敗。
對於我們來說,選擇以下幾種編碼已經夠用:
- en_US.UTF-8 UTF-8
- zh_CN GB2312
- zh_CN.GB18030 GB18030
- zh_CN.GBK GBK
- zh_CN.UTF-8 UTF-8
回車鍵,轉跳至默認語言設置頁面
在設置默認編碼時選擇:zh_CN.UTF-8
回車鍵確認,出現下方
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_CN.GB2312... done
zh_CN.GBK... done
zh_CN.UTF-8... done
Generation complete.
出現 Generation complete. 即表示生成完成。
時區
我們把時區改到中國使用的東 8 區。
apt install tzdata
如果已經安裝了 tzdata 則執行以下命令。
dpkg-reconfigure tzdata
選擇 “Asia”、“Shanghai”。
地理位置同樣選擇 “Asia”。
字體
如果缺少字體,遇到中文顯示就會亂碼,因此要安裝至少一種中文字體。
dnf install google-noto-sans-cjk-ttc-fonts google-noto-serif-cjk-ttc-fonts
WineHQ
apt install wine wine-stable winetricks zenity
詳細的使用方法請參考《Wine 的使用指南》,https://my.oschina.net/chipo/blog/5178667
Lutris
如果搭建遊戲運行環境,建議把 Ubuntu 從 20.04 升級到 22.04 然後安裝 Lutris 。
apt install lutris
參考文獻
《升級 CentOS 7 到 CentOS 8》https://cloud-atlas.readthedocs.io/zh-cn/latest/linux/redhat_linux/centos/upgrade_centos_7_to_8.html