Contents
引言
ARM 處理器已廣泛地採用於不同裝置內,如:智能電話、平板電腦和微型電腦/底板內。 ARM 處理器的主要優勢包括:
- 低耗電量
- 低成本
- 極細尺寸
如欲取得更得有關 ARM 架構的資料,請瀏覽以下連結:
開始前的特別備註
雖然此頁內的大部份資料都適用於 CentOS 7 及 CentOS 8,當中有數個重要的分別。
- KDE 已從 RHEL 8 中移除,因此 CentOS 8 不設有 KDE 映像。
我們仍在探索 RaspberryPi 專用的內核(還有映像)應如何運作才有最大彈性及最易維護。因此 CentOS 8 只提供「通用」的內核(及映像)。
- CentOS 8 如 CentOS 7 般沒有官方 EPEL,但與 7 有所不同,我們無法內部重建,而由於建立內核所需的工具的原故,短期內亦不可能實現。這不等於我們已遺漏了這件事情:我們不斷在鑽研新的事情,並會發放最新消息。
為何在 armv7hl 底板上安裝 CentOS
很多人都有興趣在這類型平價/小型底板上運行 Linux,作為家居伺服器、家用控制器、小型 VPN 端點等(未能盡錄)。 雖然很多發行版本已支援這類底板,如果有人已經在伺服器/工作台/手提電腦上運用 CentOS x86_64,他大概會有興趣用同樣的工具管理這些小型 armv7hl 底板。 正因如此,CentOS 替代架構 SIG 決定嘗試把源碼由 CentOS 7 x86_64 移植至 armv7hl/armhfp 平台。
你也許應知道 armv7hl 平台的發行版本被稱為 CentOS Userland Linux 而不是 CentOS Linux。箇中原因是由於 CentOS 替代架構 SIG 有權加入其它套件,取代某些元件,或不建立上游發行版本的某些套件。內核就是最顯著的例子,因為 kernel 3.10.0-*(採用於 CentOS 7 x86_64 版本)及 4.18.0-x (採用於 CentOS 8 x86_64 版本) 並不支援 armv7hl 底板/架構。
獲支援的 armhfp 底板
我們現時支援以下底板種類:
RaspberryPi(2 、3 、3B+ 型號)
- 所有乎合下列要求的 armhfp 底板:
- 支援主流/上游的內核(來自 kernel.org)
- 支援上游的 uboot(未經過大量修改)
值得留意的是我們亦備有以下映像:
RaspberryPi —— 採用重建自 https://github.com/raspberrypi/linux 的內核(只供 CentOS 7)
通用 —— 採用重建自 https://www.kernel.org 的 LTS 內核
我們仍保留了 RaspberryPi 的映像,但自 CentOS 7.5.1804 起那採用上游內核的通用映像已能原生地在 R-Pi 底板上運行。(支援仍未完善,但可用性卻很高。)
要是你的裝置運用 AllWinner 晶片,你應該檢查 https://linux-sunxi.org/Linux_mainlining_effort 以便能知道進度。
如何安裝 CentOS Userland armv7hl
1. 如何把映像解壓至你的底板
第一步是下載適用於你的底板的映像。視乎你所選取的套件(即是:Minimal、GNOME 或 KDE),你必須擁有 4GB(或更大)的 SD 卡: http://isoredirect.centos.org/altarch/7/isos/armhfp
|
注意:請確定你的 SD 卡路徑,因為當你以 sudo 權限執行下列指令時,用錯了路徑會破壞目標裝置上的所有數據!這路徑很大機會是 /dev/mmcblk0,但敬請小心! |
下載完你的底板的映像後,請將它轉移至 SD 卡:
[root@host ~]# xzcat CentOS-Userland-7-armv7hl-$MODEL-$VARIANT-$RELEASE-sda.raw.xz | dd of=$/path/to/sd/card status=progress bs=4M [root@host ~]# sync
提示: CentOS 7.2.1511 提供的 dd 版本支援 status=progress 參數。如果你採用其它版本或其它發行版本,請先確定這個參數獲支援。這個參數並非必須的,它是為了方便而增設的,以便追踪 SD 卡的傳輸速度。bs=4M 這個參數亦是為了加快 SD 卡的傳輸率,因為多數 SD 卡的抹除區塊大小為 4MB |
1.1. 安裝 uBoot(無須在 RaspberryPi 底板上進行)
完成解壓通用映像至 SD 卡後,你還有一個步驟要做。 所需的指命視乎很多因素,主要包括 SoC 供應商及底板類型。
首先你必須安裝 uboot 映像:
[root@host ~]# yum install uboot-images-armv7 uboot-images-armv8
假設你是在 linux 電腦上安裝至 Bananapro(AllWinner SoC)底板:
[root@host ~]# export boardmodel="Bananapro" [root@host ~]# export sdcard="/dev/mmcblk0" [root@host ~]# dd if=/usr/share/uboot/${boardmodel}/u-boot-sunxi-with-spl.bin of=${sdcard} bs=1024 seek=8 conv=fsync,notrunc
又或者你的底板是 Beagle Bone Black(TI):
[root@host ~]# export boardmodel="am335x_boneblack" [root@host ~]# export sdcard="/dev/mmcblk0" [root@host ~]# dd if=/usr/share/uboot/${boardmodel}/u-boot-spl.bin of=${sdcard} count=1 seek=1 bs=128k [root@host ~]# dd if=/usr/share/uboot/${boardmodel}/u-boot.img of=${sdcard} count=2 seek=1 bs=384k
以下是所有擁有 uboot 檔的 armhfp 底板清單(來自 uboot-images-2018.09),以便參考:
A10-OLinuXino-Lime A10s-OLinuXino-M A13-OLinuXino A13-OLinuXinoM A20-Olimex-SOM-EVB A20-OLinuXino-Lime A20-OLinuXino-Lime2 A20-OLinuXino_MICRO a64-olinuxino am335x_boneblack am335x_evm am335x_evm_usbspl am57xx_evm Ampe_A76 arndale Auxtek-T003 Auxtek-T004 avnet_ultra96_rev1 ba10_tv_box Bananapi bananapi_m2_berry Bananapi_M2_Ultra bananapi_m64 Bananapro chiliboard CHIP Chuwi_V7_CW0825 clearfog cl-som-am57x cm_fx6 Colombus colorfly_e708_q1 CSQ_CS908 Cubieboard Cubieboard2 Cubieboard4 Cubietruck Cubietruck_plus db-mv784mp-gp difrnce_dit4350 dragonboard410c dragonboard820c dserve_dsrv9703c espresso7420 evb-rk3229 evb-rk3328 evb-rk3399 fennec-rk3288 firefly-rk3288 firefly-rk3399 geekbox helios4 hikey Hummingbird_A31 Hyundai_A7HD i12-tvbox icnova-a20-swac inet1 iNet_3F iNet_3W inet86dz iNet_86VS inet97fv2 inet98v_rev2 inet9f_rev03 inet_q972 Itead_Ibox_A20 jesurun_q5 jetson-tk1 kc1 khadas-vim Lamobo_R1 libretech_all_h3_cc_h2_plus libretech_all_h3_cc_h5 libretech-cc Linksprite_pcDuino Linksprite_pcDuino3 Linksprite_pcDuino3_Nano liteboard marsboard Marsboard_A10 Mele_A1000 Mele_A1000G_quad Mele_I7 Mele_M3 Mele_M5 Mele_M9 Mini-X mk802 mk802_a10s mk802ii MK808C MSI_Primo73 MSI_Primo81 mvebu_espressobin-88f3720 mvebu_mcbin-88f8040 mx6cuboxi nanopi-k2 nanopi_m1 nanopi_m1_plus nanopi_neo nanopi_neo2 nanopi_neo_plus2 novena odroid odroid-c2 odroid-xu3 omap3_beagle omap3_pandora omap4_panda omap5_uevm Orangepi orangepi_2 orangepi_lite Orangepi_mini orangepi_one orangepi_one_plus orangepi_pc orangepi_pc2 orangepi_pc_plus orangepi_plus orangepi_plus2e orangepi_prime orangepi_r1 orangepi_win orangepi_zero orangepi_zero_plus orangepi_zero_plus2 origen p212 p2371-2180 p2771-0000-500 paz00 pine64_plus pine_h64 polaroid_mid2809pxe04 poplar pov_protab2_ips9 q8_a13_tablet q8_a23_tablet_800x480 q8_a33_tablet_1024x600 q8_a33_tablet_800x480 qemu_arm r7-tv-dongle riotboard rock rock2 rock960-rk3399 rpi_2 rpi_3 rpi_3_32b Sinlinx_SinA31s Sinovoip_BPI_M2 Sinovoip_BPI_M2_Plus Sinovoip_BPI_M3 smdkv310 sopine_baseboard stih410-b2260 sunxi_Gemei_G9 tbs_a711 tinker-rk3288 trimslice turris_mox turris_omnia udoo udoo_neo usbarmory UTOO_P66 vexpress_aemv8a_dram vexpress_aemv8a_juno vexpress_aemv8a_semi vexpress_ca15_tc2 vexpress_ca9x4 wandboard warp warp7 Wexler_TAB7200 Wits_Pro_A20_DKT xilinx_zynqmp_zcu100_revC Yones_Toptech_BS1078_V2 zynq_microzed zynq_zed zynq_zybo
當映像完成傳輸後,你便可將 SD 卡放進 arm 裝置的專用插槽內,然後啟動它。
映像安裝後的預設值是:
- root 密碼:centos
- eth0 設定:dhcp
- selinux 狀況:enforcing
2. 如何更改/擴大 SD 卡的主目錄的大小
視乎你所採用的 SD 卡容量,你大概會想把主目錄(/)擴大為 SD 卡的容量。 我了方便你,我們已加入 cloud-utils-growpart 這個工具,把它包裝成 rpm,並收錄於 armv7hl 的 Extras 軟件庫內。
如果你想盡用餘下的容量,你只須(以 root 身份或利用 sudo 權限)執行下列指令:
/usr/local/bin/rootfs-expand
3. RaspberryPi 3B 及 3B+ 的 WiFi
CentOS 計劃未獲授權發放 RaspberryPi 3B/3B+ 的韌體。你可閱讀下列文章理解問題所在,並取得韌體和設置 WiFi。
- 首先,取得我們無法發放的兩個韌體:
- 接下來,利用 nmcli 連線到無線網絡:
4. 在 aarch64(64 位元)主機安裝 armv7hl(32 位元)虛擬電腦
你是否擁有一台 CentOS-7 的 aarch64 電腦,並需要執行一台 32 位元的虛擬電腦?……要是這樣,以下是一篇由 Fabian Arrotin 張貼的優秀網誌(他是 CentOS 小組的一位核心成員):
在 CentOS 7 aarch64 上運行 CentOS 7 armhfp 虛擬電腦
與 AltArch Arm32 群組交流
1. 取得協助
- Wiki 發行注記
- IRC:freenode.net 上的 #centos-arm
2. 貢獻給 Arm32 群組
當見問題
1. 我如何更新內核?
視乎你的底板,你可能採用通用或 RaspberryPi 專用內核。 一般來說所有設定都已經自動設置好,不過即使你已經指向正確的軟件庫,請留意下列細節(視乎底板類別):
1.1. RaspberryPi 2 及 3
yum update 將會引入新的內核,你無須做其他事情。你只要重新開機便能運用新的內核。
1.2. 通用內核
在 centos-userland-release-7-5.1804 之先,你必須執行 /usr/bin/update-boot 才能啟用新板內核及更改 /boot/extlinux/extlinux.conf。這已不再適用,而是由 grubby 自動完成。
2. 我如何在 armhfp 啟用 EPEL 7?
簡單來說,EPEL 沒有官方的 armfhp 軟件庫。 但由於很多用戶有此訴求,我們決定利用 centos armhfp 建設器的閒置時段重建 EPEL 7 的源代碼套件(並自動追蹤它們)。 請注意這是未經質檢或測試的自動建設,所產生的套件亦不獲簽署。 若要採用該軟件庫,請遵照以下步驟:
[root@host ~]# cat > /etc/yum.repos.d/epel.repo << EOF [epel] name=Epel rebuild for armhfp baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/ enabled=1 gpgcheck=0 EOF [root@host ~]#
Translation of revision 30