背景
我们需要给rk3588 rock5b制作一个opencloudos的rootfs,让opencloudos能够在rock5b上面运行
制作方法
准备一个arm的打包环境,这个环境就是使用的与准备制作的rootfs的相同版本的iso安装的,这样兼容性会最好,避免架构问题,版本问题,mac m1是arm架构,正好可以安装arm版本的opencloudos操作系统
下载操作系统
首先下载一个操作系统
https://mirrors.opencloudos.tech/opencloudos-stream/releases/23/images/aarch64/OpenCloudOS-Stream-23-20240304-minimal-aarch64.iso
因为操作系统安装的时候实际上是启动了一个临时的小系统环境,然后把系统盘挂载到临时分区,通过安装包的方式构建起来一个完整的操作系统的
我们需要的也是类似的操作,这里我们构建一个rootfs,基于的是这个操作系统的iso,这个操作系统采用小的minimal iso即可,这个rootfs是越小越好,后续根据需要进行包的安装即可
把iso挂载起来,我们需要用到的是里面的rpm源
[root@buildos iso]# mount OpenCloudOS-Stream-23-20240304-minimal-aarch64.iso /media/
mount: /media: WARNING: source write-protected, mounted read-only.
安装基础的软件包
[root@buildos iso]# mkdir /rootfs
[root@buildos iso]# rpm --root /rootfs --initdb
[root@buildos iso]# rpm -ivh --nodeps --root /rootfs --package /media/Packages/opencloudos-stream-release-23-18.ocs23.noarch.rpm
[root@buildos iso]# rpm -ivh --nodeps --root /rootfs --package /media/Packages/python3-dnf-4.16.2-2.ocs23.noarch.rpm
[root@buildos iso]# rpm -ivh --nodeps --root /rootfs --package /media/Packages/dnf-data-4.16.2-2.ocs23.noarch.rpm
[root@buildos iso]# rpm -ivh --nodeps --root /rootfs --package /media/Packages/python3-3.11.6-2.ocs23.aarch64.rpm
准备本地源
[root@buildos iso]# cat /rootfs/etc/dnf/dnf.conf
[main]
gpgcheck=0
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
zchunk=False
[all]
name=all
baseurl=file:///media
修改好了后安装一些其它的包
[root@buildos iso]# dnf --installroot=/mnt/ install python3-rpm python3-gpg python3-libcomps chrony cloud-utils
[root@buildos iso]# dnf --installroot=/rootfs group list -v
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync
DNF version: 4.16.2
cachedir: /rootfs/var/cache/dnf
User-Agent: constructed: 'libdnf (OpenCloudOS Stream 23; generic; Linux.x86_64)'
repo: using cache for: all
all: using metadata from Mon 04 Mar 2024 02:27:38 PM CST.
Last metadata expiration check: 0:00:42 ago on Wed 21 Aug 2024 03:57:51 PM CST.
Available Environment Groups:
Minimal Install (minimal-environment)
[root@buildos iso]# dnf --installroot=/rootfs group list -v
安装os环境
[root@buildos iso]# dnf --installroot=/rootfs group install minimal-environment
系统安装好了以后,我们对rootfs进行一些修改
设置用户名密码
[root@buildos ~]# chroot /rootfs/
设置用户名密码
这里默认用户名密码我们设置为 root 123456
修改时区
[root@buildos media]# cp /rootfs/usr/share/zoneinfo/Asia/Shanghai /rootfs/etc/localtime
这个rootfs的大小是
[root@buildos ~]# du -sh /rootfs
1.0G /rootfs
处理fstab
[root@buildos ~]# cat /rootfs/etc/fstab
UUID=8778328d-277f-4608-a2bb-e24095c335b0 / ext4 defaults 0 0
上面的这个是从
[root@buildos mnt]# cat boot/armbianEnv.txt
verbosity=1
bootlogo=false
console=both
overlay_prefix=rockchip-rk3588
fdtfile=rockchip/rk3588-rock-5b.dtb
rootdev=UUID=8778328d-277f-4608-a2bb-e24095c335b0
rootfstype=ext4
从这个里面拿到的,如果不写这个fstab,系统启动后就是只读的
这个就是制作好的rootfs了,我们来进行替换rootfs
替换rootfs
下载并挂载操作系统
wget https://dl.armbian.com/rock-5b/Jammy_vendor_server
mv Jammy_vendor_server Armbian_24.5.1_Rock-5b_jammy_vendor_6.1.43.img.xz
[root@buildos ~]# xz -d Armbian_24.5.1_Rock-5b_jammy_vendor_6.1.43.img.xz
[root@buildos ~]# kpartx -av Armbian_24.5.1_Rock-5b_jammy_vendor_6.1.43.img
add map loop1p1 (253:2): 0 5218271 linear 7:1 32768
[root@buildos ~]# mount /dev/mapper/loop1p1 /mnt
[root@buildos ~]# rm -rf /rootfs/boot/*
替换rootfs
[root@buildos mnt]# shopt -s extglob
[root@buildos mnt]# shopt extglob
extglob on
[root@buildos mnt]# rm -rf !(boot)
[root@buildos mnt]# ll
total 4
drwxr-xr-x. 3 root root 4096 May 25 07:44 boot
[root@buildos mnt]# cp -ra /rootfs/* /mnt/
删除掉除了boot分区以外的数据
重新压缩包
[root@buildos ~]# umount /mnt
[root@buildos ~]# kpartx -dv Armbian_24.5.1_Rock-5b_jammy_vendor_6.1.43.img
del devmap : loop1p1
loop deleted : /dev/loop1
mv Armbian_24.5.1_Rock-5b_jammy_vendor_6.1.43.img Opencloudos_Rock-5b_6.1.43.img
[root@buildos ~]# xz Opencloudos_Rock-5b_6.1.43.img
[root@buildos ~]# ll -hl Opencloudos_Rock-5b_6.1.43.img.xz
-rw-r--r--. 1 root root 619M Aug 22 09:22 Opencloudos_Rock-5b_6.1.43.img.xz
[root@buildos ~]# md5sum Opencloudos_Rock-5b_6.1.43.img.xz
34c51fbe2eca560b780494a176d6d16b Opencloudos_Rock-5b_6.1.43.img.xz
刷机
获取os包
下载地址
https://github.com/zphj1987/rock5b-opencloudos/releases/download/v20240823-v1/Opencloudos_Rock-5b_6.1.43.img.xz
获取打包好的os
xz -d Opencloudos_Rock-5b_6.1.43.img.xz
解压我们打好的包
用户名root
密码123456
刷os包
下载balenaEtcher工具,这个多平台的
刷好以后尝试启动
查看系统信息
[root@localhost ~]# cat /etc/os-release
NAME="OpenCloudOS Stream"
VERSION="23"
ID="opencloudos"
ID_LIKE="opencloudos"
VERSION_ID="23"
PLATFORM_ID="platform:ocs23"
PRETTY_NAME="OpenCloudOS Stream 23"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:opencloudos:opencloudos:23"
HOME_URL="https://www.opencloudos.org/"
BUG_REPORT_URL="https://bugs.opencloudos.tech/"
[root@localhost ~]# uname -a
Linux localhost.localdomain 6.1.43-vendor-rk35xx #1 SMP Mon May 20 12:26:58 UTC 2024 aarch64 GNU/Linux
调整分区大小
[root@localhost ~]# growpart /dev/mmcblk1 1
CHANGED: partition=1 start=32768 old: size=5218271 end=5251038 new: size=122134495 end=122167262
[root@localhost ~]# resize2fs /dev/mmcblk1p1
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mmcblk1p1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 8
The filesystem on /dev/mmcblk1p1 is now 15266811 (4k) blocks long.
arm板卡的操作系统都是安装系统后再根据系统盘的大小调整的,上面的就是调整的方法
图形界面
如果需要安装图形界面的,可以自己安装一下
[root@localhost ~]#dnf group install graphical-server-environment
[root@localhost ~]# yum remove kernel-core
重启后可以进入桌面,如果桌面的控件不对,可以切换个终端,执行startx即可