平台:orangepi4 rockchip rk3399 LPDDR4 4G eMMC 16G

系统:ubuntu 20.04

下载ubuntu-base

ubuntu-base是一个基础的Ubuntu系统,可以理解为最小的Ubuntu系统,本文适用所有arm/aarch64,这里我使用的是ubuntu2020.04版本

wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.3-base-arm64.tar.gz

解压:

mkdir ubuntu2020.04
sudo tar -xzvf http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.3-base-arm64.tar.gz -C ubuntu2020.04/

为系统增加dns域名地址,否则在apt-update的时候可能会报错

sudo vi vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 192.168.1.1

配置qemu

在进行制作文件系统镜像之前需要先对系统安装一些必要的工具,这时候需要用到qemu虚拟机工具,通过虚拟机工具挂载到chroot。chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。

安装qemu

sudo apt-get install qemu-user-static

通过以下脚本挂载

#!/bin/bash 
mnt () 
{ 
	echo "MOUNTING" 
	sudo mount -t proc /proc ${2}proc 
	sudo mount -t sysfs /sys ${2}sys 
	sudo mount -o bind /dev ${2}dev 
	sudo mount -o bind /dev/pts ${2}dev/pts 
	sudo chroot ${2} 
}
umnt () 
{ 
	echo "UNMOUNTING" 
	sudo umount ${2}proc 
	sudo umount ${2}sys 
	sudo umount ${2}dev/pts 
	sudo umount ${2}dev 
} 

if [ "$1" = "-m" ] && [ -n "$2" ]; 
then 
	mnt $1 $2 
	echo "mnt -m pwd" 
elif [ "$1" = "-u" ] && [ -n "$2" ]; 
then 
	umnt $1 $2 
	echo "mnt -u pwd" 
else 
	echo "" 
	echo "Either 1'st, 2'nd or bothparameters were missing" 
	echo "" 
	echo "1'st parameter can be one ofthese: -m(mount) OR -u(umount)" 
	echo "2'nd parameter is the full pathof rootfs directory(with trailing '/')" 
	echo "" 
	echo "For example: ch-mount -m/media/sdcard/" 
	echo "" 
	echo 1st parameter : ${1} 
	echo 2nd parameter : ${2} 
fi

执行挂载

sudo sh ms.sh -m ubuntu2020.04

MOUNTING
root@work-B85M-D3V:/# 

系统配置

安装必要工具

apt-get update
apt-get install python3 vim net-tools iputils-ping iproute2 isc-dhcp-client telnetd

可安装图形界面:

apt-get install ubuntu-gnome-desktop
apt-get install xubuntu-desktop

安装图形界面比较久,如果只是验证可不安装

设置密码

passwd root

根据需要修改/etc/fstab,/etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

# stock fstab - you probably want to override this with a machine specific one

/dev/root            /                    auto       defaults              1  1
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0

# uncomment this if your device has a SD/MMC/Transflash slot
dev/mmcblk0p3       /media/card          ext4       defaults  0  0

退出绑定,退出时一定要执行,否则会导致系统出错

root@work-B85M-D3V:/# exit
sudo sh ms.sh -u ubuntu20.04

制作镜像

使用以下脚本

#!/bin/bash
rm -rf rootfs.ext3
rm -rf fs
dd if=/dev/zero of=./rootfs.ext3 bs=1M count=$2
mkfs.ext3 rootfs.ext3
mkdir fs
mount -o loop rootfs.ext3 ./fs
cp -rf ./$1/* ./fs
umount ./fs
gzip --best -c rootfs.ext3 > rootfs.img.gz

我们制作一个ext3文件系统的镜像

sudo sh mkfs.sh ubuntu2020.04 4096

可根据生成的文件夹大小来调整文件系统的大小,生成成功后得到rootfs.ext3文件,将这个文件系统下载到开发板开机:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐