引言

ARM 处理器已广泛地采用于不同设备内,如:智能电话、平板计算机和微型计算机/底板内。 ARM 处理器的主要优势包括:

如欲取得更得有关 ARM 结构的数据,请浏览以下连结:

为何在 ARMv7hl 底板上安装 CentOS

很多人都有兴趣在这类型平价/规模底板上运行 Linux,作为家居服务器、家用控制器、规模 vpn 端点等(未能尽录)。 虽然很多发行版本已支持这类底板,如果有人已经在服务器/工作台/手提计算机上运用 CentOS 7 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 发行版本用的内核)并不支持 armv7hl 底板/结构。(见下文 [支持底板] 部份)

已测试及获支援底板

Cubietruck

可用设备

curl http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/nvram_ap6210.txt > /lib/firmware/brcm/brcmfmac43362-sdio.txt
systemctl reboot

未测试

Bananapi

可用设备

不能应用

未测试

RaspberryPI2

可用设备

i2c

echo -e "dtparam=i2c1=on\ndtparam=i2c_arm=on" >> /boot/config.txt
echo -e "i2c-bcm2708\ni2c-dev" >> /etc/modules-load.d/i2c.conf
yum install -y i2c-tools
systemctl reboot

不能应用

未测试

RaspberryPI3

可用设备

i2c

见 rpi2 的指引

不能应用

未测试

[/RaspberryPi3 更多信息]

其他 armhfp 底板

当我们建立一个 RootFS 后,你很大机会仍能在你的 armhfp 装置上运用它。问题是我们无法测试所有底机,但要是你的底板支援基本/上游的内核,还有 uboot,你可以采用以下步骤:

在解压 Cubietruck 映像(采用基本内核的通用 RootFS)到你的 SD 卡之后,你只须进行多一个步骤。

假设你在 linux 身提电脑上进行以下步骤,而你的底板是 Bananapro:

export boardmodel="Bananapro"
export sdcard="/dev/mmcblk0"
cd /tmp
wget http://mirror.centos.org/altarch/7/extras/armhfp/Packages/uboot-images-armv7-2018.03-2.el7.noarch.rpm
rpm2cpio uboot-images-armv7-2018.03-2.el7.noarch.rpm|cpio -ivdm
dd if=./usr/share/${boardmodel}/u-boot-sunxi-with-spl.bin of=${sdcard} bs=1024 seek=8 conv=fsync,notrunc

以下是拥有 uboot 档案的 armhfp 底板清单作参考之用(来自 uboot-images-2016.09):

A10-OLinuXino-Lime A10s-OLinuXino-M A13-OLinuXino A13-OLinuXinoM A20-Olimex-SOM-EVB A20-OLinuXino-Lime A20-OLinuXino-Lime2 A20-OLinuXino_MICRO am335x_boneblack am335x_evm am335x_evm_usbspl am57xx_evm Ampe_A76 arndale Auxtek-T003 Auxtek-T004 ba10_tv_box Bananapi Bananapi_M2_Ultra 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 dserve_dsrv9703c evb-rk3229 fennec-rk3288 firefly-rk3288 highbank Hummingbird_A31 Hyundai_A7HD i12-tvbox icnova-a20-swac inet86dz iNet_86VS Itead_Ibox_A20 jesurun_q5 jetson-tk1 kc1 Lamobo_R1 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 mx6cuboxi nanopi_m1 nanopi_m1_plus nanopi_neo novena odroid odroid-xu3 omap3_beagle omap3_pandora omap4_panda omap5_uevm Orangepi orangepi_2 orangepi_lite Orangepi_mini orangepi_one orangepi_pc orangepi_pc_plus orangepi_plus orangepi_plus2e orangepi_zero origen paz00 polaroid_mid2809pxe04 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 rpi_2 rpi_3_32b Sinlinx_SinA31s Sinovoip_BPI_M2 Sinovoip_BPI_M2_Plus Sinovoip_BPI_M3 smdkv310 stih410-b2260 sunxi_Gemei_G9 tbs_a711 tinker-rk3288 trimslice turris_omnia udoo udoo_neo usbarmory UTOO_P66 vexpress_ca15_tc2 vexpress_ca9x4 wandboard warp warp7 Wexler_TAB7200 Wits_Pro_A20_DKT Yones_Toptech_BS1078_V2 zynq_microzed zynq_zed zynq_zybo

如何安装 CentOS Userland armv7hl

如何把映像解压至你的底板

第一步是下载适用于你的底板的映像。你的 SD 卡起码要有 4GB。

你可以在这里找到映像(见 [支持底板] 部份):http://mirror.centos.org/altarch/7/isos/armhfp

注意,请确定你的 SD 卡路径,因为当你以 sudo 权限执行下列指令时,用错了路径会破坏目标设备!大部份时间,路径是 /dev/mmcblk0,但敬请小心!

下载完你的底板的映像后,请将它转转到 SD 卡:

xzcat CentOS-Userland-7-armv7hl-Minimal-$RELEASE-$MODEL.img.xz | sudo dd of=$/path/to/sd/card status=progress bs=4M
sudo sync

提示: CentOS 7.2.1511 提供的 dd 版本支持 status=progress 参数。如果你采用其它版本或其它发行版本,请先确定这个参数获支持。这个参数并非必须的,它是为了方便而增设的,以便追踪 SD 卡的传输速度。bs=4M 这个参数亦是为了加快 SD 卡的传输率,因为多数 SD 卡的抹除块尺寸为 4MB||

当映像完成传输后,你便可将 SD 卡放进 arm 设备的专用插槽内,然后引导它。

映像安装后的缺省值是:

你可以利用下列指令自动设置正确时间:

yum install chrony
systemctl start chronyd

如何更改/扩大 SD 卡的主目录的尺寸

视乎你所采用的 SD 卡容量,你大概会想把主目录(/)扩大为 SD 卡的容量。 我了方便你,我们已加入 cloud-utils-growpart 这个工具,把它包装成 rpm,并收录于 armv7hl 的 Extras 软件库内。

如果你想尽用余下的容量,你只须(以 root 身份或利用 sudo 权限)执行下列指令:

/usr/local/bin/rootfs-expand

你的底板将会重新引导,装入内核/initrd,扩大分区,更改尺寸及再次开机。 完成后,你便能运用全张 SD 卡。

SElinux 状况

视乎你的底板型号,映像中的内核或许会不支持 selinux。请先检查事实是否如此([支持底板] 部份已列出)

基于这些映像的创建方法,当中的文件系统的 selinux 脉络并不正确。 这是我们决定把 selinux 设成 permissive 模式(通过 /etc/sysconfig/selinux),甚至在开机时停用 selinux(enforce=0 的开机参数)的原因

如果你想切换至 enforcing 模式,你首先要修改下列文件

完成上述步骤后(但在重新开机前!),你必须执行以下指令:

touch /.autorelabel

现在你可重新开机,而正确的 selinux 脉络将会被套用到整个文件系统上

relabel 这个程序在 SD 卡上真的可以很慢:举个例说,在拥有 4GB SD 卡的 cubietruck 上,它需时 5 分钟!

与 AltArch Arm32 群组交流

取得协助

贡献给 Arm32 群组

当见问题

我如何更新内核?

视乎你的底板,你可能采用「通用」的内核,或 raspberrypi 内核。 一般来说所有设置都已经自动设置好,不过即使你已经指向正确的软件库,请留意下列细节(视乎底板类型):

raspberrypi 2 及 3

yum update 会将内核更新,你无须做任何事情,只要重新开机便能运用新的内核

「通用」内核

在 yum 安装新版内核后,你仍要编辑 /boot/extlinux.conf 并修改内核/initrd,然后重新开机。为了协助这步骤,现在有一个可自行执行的 update-boot 脚本。这个工具能侦测已安装的最新版内核,并更新 /boot/extlinux.conf。值得注意的是 /usr/bin/update-boot 这个辅助脚本是在 centos-userland-release-7-3.1611.el7.centos.0.2.armv7hl 才开始附加,因此请在安装该套件后才执行 update-boot。

我如何在 armhfp 启用 EPEL 7?

简单来说,EPEL 没有官方的 armfhp 软件库。 但由于很多用户有此诉求,我们决定利用 centos armhfp 建设器的闲置时段重建 EPEL 7 的源代码组件(并自动跟踪它们)。 请注意这是未经质检或测试的自动建设,所产生的组件亦不获签署。 若要采用该软件库,请遵照以下步骤:

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

Translation of revision 29

zh/SpecialInterestGroup/AltArch/Arm32 (last edited 2018-03-30 09:57:55 by TimothyLee)